将 2FA 令牌与密码一起存储在 1password 中是否安全?

信息安全 密码 多因素 账户安全
2021-08-31 02:12:04

我正在使用 1password 并且我已经看到 1password 允许您将 2FA 令牌存储在存储密码的同一位置。

我不喜欢将所有东西都放在同一个地方,就像有人窃取我的 1password 密码一样,它可以访问我的帐户并获取密码和安全令牌。实际上,我将 Google Auth 用于 2FA 和 1password 用于密码。

将它们分开以提高安全性是个好主意吗?这有什么意义吗?

4个回答

我为 1Password 工作,当我们介绍该功能时,我就写过这个问题

答案取决于您真正希望从基于时间的一次性密码 (TOTP) 中获得哪些安全属性。TOTP 的“第二个因素”是它提供的几个安全属性之一,在许多情况下它可能是最不重要的。不要误以为这一切都属于“2FA”一词,好像这是您从这些计划中获得的唯一安全利益。

TOTP 的安全优势(与典型的密码使用相比)

因此,我将列出您使用 TOTP 获得的一些安全属性,并将它们与典型的密码使用进行对比。

  1. 身份验证期间不传输长期机密使用 TOTP,您可以在注册时获得仅传输的长期机密(通常是 QR 码)。长期秘密在实际使用时不传输。(这与通过网络传输密码的典型密码用法不同,因此取决于其他保护措施,例如 TLS)。这也意味着长期机密不能被网络钓鱼(尽管数字代码可以。)

  2. 长期的秘密是猜不透的长期机密是在您首次注册时由服务器生成的,因此它是根据服务的随机性标准生成的。同样,这与人工创建密码的典型密码使用不同。

  3. 长期的秘密是独一无二的。您最终不会在各种服务中重复使用相同的 TOTP 长期机密。同样,这与人们重复使用密码的典型密码使用不同。

  4. 哦耶。如果出于某种原因对您很重要,您会将长期秘密放在“您拥有的东西”上。

在大多数部署 TOTP 的情况下,这样做是因为属性 #2(不可猜测性)和 #3(唯一性)。事实上,当 Dropbox 首次在其服务中引入 TOTP 时,他们阐明了其原因是为了帮助保护重复使用密码的用户。

在长期机密的唯一性和不可猜测性之后,下一个最重要的好处(对大多数人来说)是长期机密不会被传输。这使得在受感染的网络上捕获变得更加困难。

TOTP 为我们提供的安全属性中最不重要的可能是第二个因素。我并不是说它没有任何好处,但对于大多数人使用 TOTP 的情况,它可能是最不重要的。

与使用密码管理器形成鲜明对比。

在上面我列出了 TOTP 的四个安全属性,并将它们与典型的密码使用进行了对比。但是现在让我们考虑一下正在充分利用密码管理器的人。如果您为某个站点或服务使用了密码管理器4,您将为该站点随机生成(因此无法猜测)密码,并且您将拥有该站点的唯一密码。因此,就这两个安全属性而言,使用 TOTP 并没有真正增加很多。

如果我们查看属性 #1(未传输长期机密),即使您使用密码管理器,TOTP 仍然提供一些额外的安全性。然而,使用密码管理器确实减少了被钓鱼的机会,因此 TOTP 的收益虽然是真实的,但并不像不使用密码管理器的人那么大。

唯一剩下的是#4。如果这两个因素确实是您重视 TOTP 的原因,那么请不要在 1Password 中长期保密。但对于大多数人来说,TOTP 的价值来自于拥有一个强大而独特的、永远不会传播的长期秘密。

查看实际的安全属性

我建议您评估您从 TOTP 中真正得到的东西(而不是陷入整个 2FA 修辞中),然后考虑权衡。我敢打赌,如果像 TOTP 这样的东西被称为“唯一秘密身份验证”而不是“双因素身份验证”,这个问题就永远不会出现。

拥有第二个身份验证因素的全部目的是在第一个因素(密码)已经失败的情况下保护您。因此,将 2FA 令牌存储在存储密码的同一位置会大大降低它们的效率。

再加上密码管理器(正确使用,为每个帐户随机生成单独的密码)已经保护您免受 2FA 令牌所做的许多相同威胁(如暴力破解和撞库攻击)的事实,我开始质疑为什么如果您要以这种方式存储令牌,那么您将完全不用 2FA。

也就是说,在某些情况下,恶意方可以从您的密码管理器中窃取单个密码,而不会损害整个密码数据库:

  1. 您不要在网络钓鱼网站上使用自动填充并输入密码(尽管 HOTP/TOTP 令牌只会通过限制入侵的持续时间来提供帮助;与 U2F/WebAuthn 令牌不同,它们实际上不能防止网络钓鱼)
  2. 您的连接受到 MITM 的破坏(尽管如此,2FA 也不会真正拯救您;我还发现,一个足够关心安全性以支持 2FA 的网站不太可能不实施 HTTPS)
  3. 懒惰的黑客/恶意软件作者,他们只关心窃取密码,而不是登录会话或密码数据库
  4. 攻击者以某种方式入侵您的电子邮件帐户并使用它来重置您的密码(通常无法通过电子邮件重置 2FA 令牌)

如果您不担心密码数据库被泄露的可能性,并且我上面列出的威胁向量听起来合理且严重到值得您每次登录时都必须输入 2FA 代码的额外步骤,然后去为了它。否则,您可能希望将 2FA 代码与密码数据库分开存储,或者完全放弃使用基于 HOTP/TOTP 的 2FA 令牌,转而使用提供更好保护的 U2F 或 WebAuthn 令牌。

我建议将 2FA 代码保留在 1Password 上,因为 Google Auth 应用程序没有数据备份(除非您有 root 和外部备份工具,例如 Titanium Backup)。在您的情况下,丢失手机意味着丢失您拥有的所有 2FA 验证码。如果您不想将 2FA 存储在 1Password 上,请将其存储在另一个支持云备份的应用程序上。

您将稍微提高安全性,因为任何攻击者都需要破坏 2 个应用程序,但您会创建另一个故障点。如果是 GoogleAuth 应用程序,丢失您的手机可能会将您锁定在某些帐户之外。

我会创建一个安全、长且唯一的密码,并且只使用一个密码管理器。

嗯,简单的答案是肯定的。尽管我们对密码管理器充满信任,但深入练习体面是个好主意。您拥有 2FA 的原因是添加额外的安全层来增加密码。如果将相同的密码与第二个因素一起存储,它将无法达到目的。安全性比任何事情都更基于原则。