通行密钥不是陷阱
摘要
Scott Helme 推翻了《通行密钥是个陷阱》一文的论点,解释了同步式通行密钥并不会向网站提供证明信息(attestation),且证明机制并不会暴露操作系统或浏览器信息,TOTP 反而是更容易被钓鱼的倒退方案。
暂无内容
查看缓存全文
缓存时间: 2026/10/14 16:04
# 通行密钥不是陷阱 来源:https://scotthelme.co.uk/passkeys-are-not-a-trap/ 一篇名为《通行密钥是陷阱\\. 不要使用它们\\.》(https://nonfunctional.substack.com/p/passkeys-are-a-trap-do-not-use-them?utm_source=scotthelme.co.uk)的文章在过去几天里广为流传,在 Hacker News 上排名相当靠前,也有很多人把它发给我,带着一种“这是真的吗?”的疑问\\. 这篇文章是写给“非技术背景的互联网用户”的,其核心建议是停止使用通行密钥,重新使用 TOTP 验证码和密码\\. ### 论点 这篇文章似乎提出了一个核心主张:通行密钥支持一种叫作证明(attestation)的机制,让网站能够要求提供关于通行密钥由什么生成的加密证明\\. 作者将其称为“隐藏的旋钮”,并认为网站会逐渐将它调高,直到你只能在经过批准的操作系统上使用经过批准的软件登录,不允许任何修改,不允许使用 LineageOS,也不允许分享你的 Netflix 密码\\. 再加上 uBlock Origin、FIDO 联盟的成员名单以及英国提出的图像扫描方案,最终得出的结论就是:通行密钥“在设计上并不优先考虑你的利益”\\. 这是一个很有说服力的故事\\. 只是它与这些技术的实际运作方式并不相符\\.\\.\\. ### 你的通行密钥不提供证明 大多数人使用的通行密钥是同步通行密钥,存储在 iCloud 钥匙串、Google 密码管理器、1Password、Bitwarden 或你选择的其他软件中\\. 这些通行密钥根本不会向网站提供证明声明,即使网站提出请求,返回的也是`none`\\. 我之所以知道这一点,是因为我编写了一个开源通行密钥库 (https://scotthelme.co.uk/open-sourcing-passkeys-php-a-security-focused-webauthn-library-for-php/?utm_source=scotthelme.co.uk),并将其开放给所有人使用\\. 如果某个面向普通用户的网站明天决定只接受带有证明的通行密钥,它会立即将自己几乎所有用户拒之门外\\. 哪个网站会这么做?况且,面向普通用户的网站所遵循的指导意见,*多年来*一直都是连证明请求都不要发起\\. ### 证明并不是你以为的那样 这篇文章将证明描述为能够证实“正在使用经过批准的通行密钥管理器、操作系统和固件”,这根本不是真的\\. 当 WebAuthn 证明存在时,它会通过验证器的`AAGUID`向网站表明验证器的品牌和型号,并由厂商提供的证书链予以佐证\\. 它完全不会说明你的操作系统、浏览器、扩展程序、手机是否已 root 或越狱、固件版本,甚至连设备是什么颜色都不会说明\\. ### 关于 YubiKey 的建议 这是最让我惊讶的部分\\. 对于希望获得更强安全保障的人,文章推荐使用 YubiKey 这样的硬件安全密钥,因为它“避免了操作系统范围的证明”\\. YubiKey 恰恰是*会*提供证明的验证器\\. 每个 YubiKey 出厂时都带有 Yubico 签发的证明证书,而企业证明机制的存在,正是为了让组织能够要求使用经过批准的硬件密钥\\. 我仍然会向任何想使用 YubiKey 的人推荐它,它们很出色,我自己也在用,但如果你担心的是证明机制,那么这篇文章自己的建议反而会把你推向证明,而不是让你远离它\\! ### TOTP 是一种倒退 这篇文章将 TOTP 推崇为“已经”很出色的解决方案\\. TOTP 确实比仅使用密码更好,但它有一个很大的弱点:你可能把验证码输入错误的网站,问问我的好友 Troy Hunt 就知道了 (https://www.troyhunt.com/a-sneaky-phish-just-grabbed-my-mailchimp-mailing-list/?utm_source=scotthelme.co.uk)\\. Evilginx 这样的钓鱼工具包会充当中间人,实时将你的密码和验证码转发给真正的网站,然后拿走你的会话\\. 这并非理论上的风险,而是当今大量账户被接管的实际方式,我们也有证据证明这一点\\. 这正是通行密钥所解决的问题\\. 通行密钥与创建它的域名绑定,因此你的浏览器根本不会在`examp1e\\.com`上使用你为`example\\.com`创建的通行密钥\\. 没有需要读出的验证码,也没有用户可能操作出错的环节\\. 作者甚至在附录中承认了这一点,表示通行密钥与域名绑定,能够抵御中间人攻击,但仍然告诉读者不要使用它们\\. 用一种可能遭受钓鱼攻击的凭据替换一种能够抵御钓鱼攻击的凭据,实在是非常糟糕的取舍\\.\\.\\. ### 你应该怎么做 继续使用通行密钥\\!只要网站提供通行密钥,就使用它,并将其存储在你信任的密码/通行密钥管理器中\\. 如果你希望能够迁移自己的凭据,就选择支持这一功能的服务商\\. 如果你担心证明机制逐渐渗透到普通用户的登录流程中,那么确实值得大声反对\\(如果这种情况真的发生的话\\)\\. 但它尚未发生,最大的服务商也不支持它,而你现在为了等待这种情况而回避通行密钥,并不能保护你免受任何威胁,只会让你暴露在钓鱼攻击的风险之下\\. ### 来源 我在这个领域有一些经验:我创建了 WhyNoPasskeys\\.com (https://whynopasskeys.com/?utm_source=scotthelme.co.uk),用来追踪互联网上通行密钥的普及情况\\. 我为自己的 SaaS 公司开发并部署了通行密钥支持\\. (https://scotthelme.co.uk/launching-passkeys-support-on-report-uri/?utm_source=scotthelme.co.uk) 我们构建了自己的通行密钥库,并对其进行了安全审查\\. (https://scotthelme.co.uk/bringing-in-the-experts-having-our-passkeys-implementation-security-tested/?utm_source=scotthelme.co.uk) 我写过《在你的网站上使用通行密钥时的安全注意事项》 (https://scotthelme.co.uk/security-considerations-when-using-passkeys-on-your-website/?utm_source=scotthelme.co.uk)\\. 我写过《通行密钥入门:通行密钥及其工作原理简介》 (https://scotthelme.co.uk/passkeys-101-an-introduction-to-passkeys-and-how-they-work/?utm_source=scotthelme.co.uk)\\. 我将我们的通行密钥库开源 (https://scotthelme.co.uk/open-sourcing-passkeys-php-a-security-focused-webauthn-library-for-php/?utm_source=scotthelme.co.uk),供所有人使用\\. 我对通行密钥的实现做过广泛的安全测试 (https://scotthelme.co.uk/passkeys-permissions-policy-and-bug-hunting-in-1passwords-webauthn-wrapper/?utm_source=scotthelme.co.uk)\\. 我公开承认过通行密钥不使用证明机制所带来的局限 (https://scotthelme.co.uk/xss-is-deadly-for-passkeys-the-hidden-risk-of-attestation-none/?utm_source=scotthelme.co.uk)\\. 我认为最重要的是说明:只要能用,我就会使用通行密钥,因为它们目前是我们保护账户的最佳手段\\. 而且,它们不是陷阱\\. 你喜欢这篇文章,或觉得它有帮助吗?☕️ 可以考虑请我喝杯咖啡 (https://donate.stripe.com/4gMeVd3xm0sOcRzexF93y00),表示感谢\\!🔔 订阅免费通知 (https://scotthelme.ghost.io/#/portal/signup),在我发布文章时收到提醒\\!🤩 成为会员 (https://scotthelme.ghost.io/#/portal/signup),支持我的内容\\!标签:通行密钥 (https://scotthelme.co.uk/tag/passkeys/)
相似文章
通行密钥证明陷阱
一篇博客文章及其引发的讨论认为,通行密钥内嵌了 FIDO 认证证明机制,这可能会逐步使网站得以剥夺用户对自身凭据的控制权;而苹果公司的 Ricky Mondello 则反驳称,认证证明机制明确并非为面向大众消费者的身份验证而设计。
Passkeys 是一个陷阱,请勿使用
一篇评论文章批评 passkeys 是一种「陷阱」,认为它们削弱了用户对自身登录凭证的控制权,并指出 FIDO Alliance 由大科技公司、政府和银行等利益方主导,缺乏消费者权益代表。
Passkey 更糟糕
作者讲述了遭遇的一次精心策划的钓鱼攻击:攻击者伪造了 Google 登录页面、Apple 的 passkey 提示,以及他们的 Bitwarden 分支密码管理器——最终在其已被入侵的 Google 账户上添加了一个新的 passkey。作者认为,passkey 和浏览器扩展检测 API 反而让钓鱼攻击变得更加严重。
我不喜欢通行密钥
这篇文章批评通行密钥,认为尽管它们在防范网络钓鱼方面具有安全优势,但引入了个人风险,如账户锁定和设备丢失,使得与企业环境相比,它们不太适合个人用户。
XSS对通行密钥是致命的:无证明的隐藏风险
本文解释了一个单一的XSS漏洞如何能够在证明设置为'none'的情况下破坏通行密钥的抗钓鱼能力,允许攻击者注册自己的通行密钥并实现持久账户接管。文章呼吁关注这一被忽视的威胁并提出了防御措施。