精心设计的密码管理器不依赖身份验证来确保其安全性;相反,他们依赖加密。因此,解锁密码管理器数据库甚至不涉及单因素身份验证,更不用说多因素身份验证了。
密码管理器如何使用 Yubikey
这意味着当涉及到安全性主要基于本地或端到端的东西时,通常用于加强身份验证过程的那种东西(YubiKeys 非常擅长)扮演着本质上不同的角色加密。大致有三种方法,但每种方法的细节都是如此。
1.安全剧院
在某些情况下,明显的第二个因素是纯粹的安全剧院。可以做一些对用户来说看起来像 2FA 的事情,但任何值得担心的攻击者都可以轻松规避。多年来,我们(在我工作的 1Password 公司)一直在抵制巨大的客户压力。
让我们忽略这个选项。如果用户最终使用较弱的主密码或没有像其他方式那样保护他们的主密码,它对任何人都没有任何好处,并且有很大的潜在危害。也就是说,如果人们削弱了他们密码管理器安全性的弱点,因为他们觉得受到戏剧性 2FA 的保护,他们就会大大削弱他们的有效安全性。
2.在一些认证组件上
尽管许多密码管理器可以离线使用,而不需要对某些远程服务进行身份验证,但在设置新设备以使(至少)数据同步工作时通常需要身份验证组件。2FA 可以添加到该身份验证组件中,即使它只是用户安全性的一小部分。
顺便说一句,这就是我们使用 1Password 所做的事情。如果启用 2FA,则在设置新设备时需要它。希望通过将其限制在此范围内,我们不会让用户相信他们可以使用较弱的主密码逃脱,或者 2FA 神奇地保护他们免受获取本地加密数据的攻击者的侵害。
3.作为静态密钥的供应商
解密数据需要一个密钥,并且派生该密钥需要用户持有的秘密(通常是他们的主密码,也许还有其他东西)。这里的困难是密钥派生函数(KDF)必须是确定性的(因为它必须每次都派生相同的密钥)。
但是像 Yubikey 这样的东西的美妙之处在于它可以在不泄露秘密的情况下证明它的知识。它们被设计为以挑战-响应方式工作,其中每个挑战都是随机的,使得每次响应都是独一无二的;然而,每一个正确的回答都证明了一个秘密的知识。这就是使这些东西在身份验证上下文中真正出色的原因。但这在密钥派生期间是无用的。
因此,让 Yubikey 吐出一个静态机密就是以放弃其最重要的安全功能的模式操作设备。这是可行的(因为 Keepass 显然正在使用它,并且我们的一些用户已经操纵了类似的东西),但它确实没有提供 Yubikey 通常提供的安全保证。
尽管这不是纯粹的安全场景(有一些真正的收益),但用户仍然很可能会高估安全收益,从而削弱他们应该更强的安全部分(主密码)。
合理吗?
所以回到最初的问题。使用 (3) 中描述的 Yubikey 是否合理?只要您了解它的作用和不保护您的作用(并且这些与 Yubikey 通常保护您的作用不同),使用它并不是不合理的。)
然而,在 1Password,我们认为密码管理器鼓励 (3) 是不明智的,因为安全优势似乎不值得人们对安全属性的误解所带来的安全威胁。但是,我非常理解客户对这种事情的压力。我也明白,理性的人可能会得出不同的结论。