本文翻译自 Why You Shouldn’t Use Passkeys to Encrypt User Data,原载于 Hacker News。
为什么今天写这篇文章?
因为我深切担心用户会丢失他们最珍贵的数据。
在过去一两年里,我看到许多大大小小的组织实现了 Passkeys(这很棒,谢谢你们!),并使用 PRF(Pseudo-Random Function,伪随机函数)扩展来派生密钥以保护用户数据,通常是用来支持端到端加密(包括备份)。我也看到不少有影响力的人士和组织在推广使用 PRF 来加密数据。
目前我看到已实现或推广的主要用例包括:
- 加密消息备份(包括图片和视频)
- 端到端加密
- 加密文档和其他文件
- 加密和解锁加密货币钱包
- 凭据管理器解锁
- 本地账户登录
为什么这是问题?
当你让一个用于身份认证的凭据同时承担加密功能时,丢失该凭据的”影响范围”会变得不可估量地大。
想象一个叫 Erika 的用户。他们被要求在最喜欢的消息应用中设置加密备份,因为他们不想丢失消息和照片——尤其是那些已经离世亲人的照片。应用提示 Erika 使用 Passkey 来启用这些备份。
界面上没有任何提示强调这些备份现在与他们的 Passkey 紧密绑定在一起。 即使有说明文字,Erika 和大多数用户一样,通常不会仔细阅读每个对话框,更不可能指望他们一年后还记得这个技术细节。
几个月后,Erika 决定清理一下凭据管理器。他们不记得为什么消息应用会有一个特定的 Passkey,于是删除了它。
一年后:他们换了新手机,设置消息应用。因为凭据管理器里已经没有 Passkey 了,应用没有提示使用 Passkey。相反,他们通过手机号验证恢复了账户。然后他们被引导进入”恢复备份”流程,应用提示输入 Passkey。
由于 Passkey 已经不存在了,系统告知他们无法访问备份的数据。
再见,回忆。
用户删除 Passkey 时会看到什么?
以下是用户删除 Passkey 时看到的几个例子:
- Apple Passwords: 删除时几乎没有警告
- Google Password Manager: 删除时几乎没有警告
- Bitwarden: 删除时几乎没有警告
用户怎么可能理解他们可能正在删除已故亲人的照片、加密的房产契约,或者他们的数字货币?
我们不能、也不应该期望用户知道这一点。
PRF 的正当用途
看到这里,你可能会问:那 PRF 为什么会被加入 WebAuthn?
确实有一些非常合理且更持久的 PRF 用例,特别是在支持凭据管理器和操作系统方面。
一个带有 PRF 的 Passkey 可以让你的凭据管理器(存储你所有其他 Passkeys 和凭据的地方)解锁变得更快、更安全。凭据管理器有完善的机制来保护你的保险库数据,包括多种方法:主密码、设备专属密钥、恢复密钥、社交恢复密钥等。丢失用于解锁凭据管理器的 Passkey,很少会导致保险库数据的完全丢失。
我的呼吁
PRF 已经在 WebAuthn 客户端和凭据管理器中实现了,覆水难收。我的呼吁是:
对更广泛的身份认证行业:请停止推广和使用 Passkeys 来加密用户数据。我恳求你们。让 Passkeys 成为其最擅长的东西——防钓鱼的身份认证凭据。
对凭据管理器:请在用户删除带有 PRF 的 Passkey 时优先添加警告(并在可用时显示 RP 的信息页面)
对使用 Passkeys 的网站和服务:如果你在了解这些担忧后仍需使用 PRF,请:
- 在你的支持网站上添加一个信息页面,解释你如何将 Passkeys 用于身份认证之外的用途
- 在 Relying Party Passkey Endpoints 的 Well-Known URL(
prfUsageDetails)中列出该页面 - 在用户启用时提供尽可能多的预先警告
关键要点
- Passkeys 的核心价值是防钓鱼身份认证,不应该被”超载”用于加密
- PRF 扩展的风险在于它将用户数据与 Passkey 绑定,而用户删除 Passkey 时完全不知情
- 凭据管理器应该在删除 Passkey 时提供更明确的警告
- 如果必须使用 PRF,开发者需要提供充分的信息和警告机制
感谢阅读!
(感谢 Matthew Miller 审阅本文并提供反馈)