NEE's Blog

为什么不应该用 Passkeys 加密用户数据

February 28, 2026

本文翻译自 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,请:

  1. 在你的支持网站上添加一个信息页面,解释你如何将 Passkeys 用于身份认证之外的用途
  2. 在 Relying Party Passkey Endpoints 的 Well-Known URL(prfUsageDetails)中列出该页面
  3. 在用户启用时提供尽可能多的预先警告

关键要点

  1. Passkeys 的核心价值是防钓鱼身份认证,不应该被”超载”用于加密
  2. PRF 扩展的风险在于它将用户数据与 Passkey 绑定,而用户删除 Passkey 时完全不知情
  3. 凭据管理器应该在删除 Passkey 时提供更明确的警告
  4. 如果必须使用 PRF,开发者需要提供充分的信息和警告机制

感谢阅读!

(感谢 Matthew Miller 审阅本文并提供反馈)

comments powered by Disqus