两个密码比两因素身份验证提供更好的安全性?

信息安全 密码 多因素
2021-08-12 04:00:39

在评估1Password 的新 Teams 服务时,我注意到对多因素身份验证的支持非常奇怪。

被问及缺乏 MFA 时,他们回答

我们使用帐户密钥与主密码相结合,以实现优于两因素的安全性。 https://teams.1password.com/security/

该页面说:

安全专家建议使用多种身份验证因素:“你知道的东西”,比如你的密码,和“你拥有的东西”,比如手机上的身份验证器应用程序。

Account Key 将这个想法提升到了一个新的水平。它不仅通过我们的服务器对您进行身份验证;它还在加密数据方面发挥着直接作用。这很重要,因为它可以成倍地增强您的主密码。而且由于它永远不会通过网络发送,因此您的帐户密钥无法被重置、拦截或逃避。

“帐户密钥”本质上是为您生成的第二个密码。当您注册 1Password Teams 服务时,您会收到一份“紧急工具包” PDF,您需要将其打印出来。它包含帐户密钥,甚至鼓励您写下您的主密码。

帐户密钥存储在浏览器的本地存储中。如果您从新设备登录,您必须在输入密码后手动输入帐户密钥。

据我所知,这种方法比真正的两因素身份验证要差得多。攻击者:

  • 获取您的印刷应急包
  • 获取 PDF 的副本
  • 可以 MITM 您与 1password.com 的连接吗
  • 在您的计算机上安装恶意软件
    • 它可以从本地存储中窃取帐户密钥,或者
    • 输入时观察(连同您的主密码)

...拥有对极其敏感的帐户进行不受限制、持续、远程和不可检测的访问所需的一切。

与真正的双因素身份验证相比:辅助密钥安全地存储在单独的设备上。

  • 单独获取主密码无济于事;攻击者需要拥有验证器设备。
  • 即使您使用受感染的设备/连接登录,攻击者也不会获得对您帐户的持续访问权限。认证设备生成的一次性密码 (TOTP) 对以后的访问毫无用处。

我在这里想念什么?

4个回答

啊营销。(他们甚至为这个愚蠢的东西注册了商标)

这里的问题在于他们确实没有正确比较事物。他们混合了呼叫者的身份验证和您的秘密数据的保护,将它们混在一起,然后将这种混杂与仅与第一部分相关的东西进行比较,然后提出一个大胆的声明,如果你扭曲逻辑,这可能是正确的只是有点太多了。这有点像混合冰淇淋和坚果,并称它比蔬菜更健康,因为坚果使冰淇淋更健康(如果你从中得到的唯一收获是好的类比很难......)。

但实际上,这并不比 2FA 好,因为它实际上并没有引入单独的因素,只是现有因素的另一个实例(你知道的)。它比单个密码稍微好一点,但是如果我可以窃取您的密码,我可能只需稍加努力就可以窃取您的另一个密码。

如果使用来自 localStorage 的密钥在浏览器上解密密码,它可能会更好地保护您的密码(它可能会这样做,因为他们提到了 WebCrypto 标准,而且它似乎不支持 IE)。

话虽如此,应急工具包的目的不是为了安全,而是在紧急情况下可供您使用。这适用于您绝对需要访问的碎玻璃场景。如果你得到这个,那么无论如何它的游戏都结束了。

另一方面,就目前而言,真正的 2FA 也可能无法解决您的所有攻击。如果您仍然可以 MITM 浏览器和服务器,那么您可以获得用户密码和帐户密码甚至 2FA 码(对用户的请求失败,使用密码和 2FA 码然后窃取机密)。

[披露:我为 1Password for Teams 的制造商 AgileBits 工作]

不同的威胁,不同的防御

正如正确指出的那样,帐户密钥与传统的 2FA 不同。事实上,我将在几周后在剑桥的 PasswordsCon 上讨论这个问题。

要记住的最重要的事情是帐户密钥的目的与 2FA 的目的不同。它的目的是在我们的服务器受到威胁时防止密码破解尝试。

我们的服务器存储您的 SRP 验证程序并存储您的加密私钥 如果攻击者掌握了其中任何一个(违规、内部攻击、授权),他们可能会尝试针对其中任何一个运行主密码猜测程序。帐户密钥的目的是使此类针对仅服务器的妥协的密码破解尝试不可行。

请注意,传统的 2FA 概念并没有为服务器泄露提供任何防御措施,并且在某种程度上它们鼓励使用较弱或重复使用的密码,它们会使服务器泄露的后果变得更糟。在某些情况下,2FA 就像在这扇门上放了两把锁:

没有栅栏的大门。 标牌上写着“必须锁定大门”

帐户密钥被盗

还请注意,帐户密钥很容易从客户端计算机上窃取。在 iOS 上,我们可以使用 iOS 钥匙串进行一些保护,但在桌面上,特别是在浏览器客户端上,这些很容易被机器上的用户权限抢走。显然,我们想要一种更好的方法来保护这些,但是通过巨大的努力来混淆只是为了让混淆很容易被破解并不是真正的解决方案。

结合最好的安全属性

将主密码与帐户密钥结合起来的想法是

  1. 主密码(仅存储在您的脑海中)很难窃取,但很容易猜到。
  2. 帐户密钥(存储在您的设备上的 128 位熵)很难猜测,但很容易从客户端设备中窃取

所以这意味着攻击者必须做件事。特别是,这意味着服务器漏洞并没有为攻击者提供足够的信息来发起密码破解攻击。

帐户密钥您拥有的东西。它是在您的计算机上生成的

只有您拥有您的帐户密钥,它永远不会离开您的设备。

你说

您会收到一份“应急包”PDF,您打算打印出来。它包含帐户密钥

我不确定您所说的“已发送”是什么意思,但这并不意味着通过电子邮件发送,因为该页面明确指出密钥永远不会离开您的计算机,除非您将其写下来或将其复制到另一台计算机上。

虽然我不确定我是否会说这是比更常见的 2 因素身份验证 (2FA) 实现更好的解决方案,但它们正确地指出没有您的帐户密钥就无法解密您的密码。这意味着即使有人获得了您的主密码和您的密码数据库,他们仍然无法解密它。更常见的 2FA 只会阻止您登录网站,一旦获得密码数据库,就不需要完成解密。

至于 1Password 鼓励

你写下你的主密码

这是许多人的观点,Bruce Schneier] 2可能是最著名的。但它也受到Digital Inspirations华盛顿邮报LifeHacker的提倡。我想说这是否是一个好的解决方案仍有待商榷,但这绝对不是一个轻率的想法。

我看到帐户密钥的一个问题是,每次将其复制到另一台计算机时,都会增加它被暴露的风险。例如,使用基于 2FA 的移动应用程序,您只需要担心您的移动设备。也就是说,您确实倾向于随身携带移动设备,因此它可能不如您存储帐户密钥的某些计算机集合安全。

我在这里想念什么?

威胁模型。

具有同步功能的密码管理器的威胁模型是完全信任客户端和对服务器的零信任或最小信任这与常规 Web 应用程序的威胁模型有很大不同,后者需要服务器和客户端都信任。

在密码管理器的威胁模型中,一旦您在保险库中的密码被泄露,游戏就已经失败了。如果客户端被入侵,你就已经输了。一旦客户端受到威胁,您必须​​更改所有系统中的所有密码,而必须使用新帐户密钥创建新密码库是相对较小的项目。

2FA 的问题在于它是一种“身份验证”形式。像 2FA 这样的身份验证系统主要是为了保护服务器(而不是用户!)免遭未经授权的使用。在正常服务的情况下,服务器持有大量有用的信息和服务,未经授权的使用服务器是主要的威胁类型;但在密码管理器的情况下,同步服务器只保存加密的 blob,这对于还没有只有用户和客户端知道的解密密钥的攻击者来说根本没有用。

在传统密码管理器的威胁模型中,您必须假设攻击者已经拥有您的加密密码库;当这个模型被带到支持同步的密码管理器时,你必须假设同步服务器是恶意的。当考虑到这种威胁模型时,2FA 不会添加任何有用的安全值,因为 2FA 不能用作加密方案的一部分。