FIDO/WebAuthn
本文约需 2 分钟阅读
FIDO (Fast IDentity Online) 和 WebAuthn 是为实现不依赖密码的身份验证而制定的国际标准规范。通过将 FIDO Alliance 制定的技术规范与 W3C 作为 Web 标准推荐的 WebAuthn API 相结合,可以从浏览器和应用程序中使用基于公钥密码的身份验证。它对钓鱼攻击具有结构性的抵抗力,作为解决密码泄露这一根本问题的技术,正在整个行业中推广采用。
FIDO Alliance 的成立与规范的演进
2012 年,以 PayPal 和 Lenovo 为中心成立了 FIDO Alliance。当时密码重复使用和大规模信息泄露事件接连不断,密码身份验证的局限性已经变得明显。Alliance 首先在 2014 年公开了两项规范。 UAF (Universal Authentication Framework) 实现了通过生物识别的无密码登录, U2F (Universal 2nd Factor) 实现了通过 USB 安全密钥的双因素身份验证。
2018 年迎来了重大转折点。作为 FIDO2 项目, W3C 的 WebAuthn API 和 FIDO Alliance 的 CTAP (Client to Authenticator Protocol) 得到了标准化。WebAuthn 是浏览器端的 API 规范, CTAP 是与认证器 (安全密钥或生物识别设备) 之间的通信协议。这两者的结合使得可以从 Web 浏览器直接使用硬件认证器。此后自 2022 年起,作为通行密钥将 FIDO2 认证信息进行云同步的机制得到普及,成为普通用户也能轻松使用的技术。
基于公钥密码的认证流程
FIDO/WebAuthn 的认证以质询-响应方式工作。在传统的密码认证中会将“秘密字符串”发送到服务器,但在 FIDO 中私钥绝不会离开设备。
这种方式的决定性优势在于服务器端只保存用户的公钥。即使服务器遭到入侵,从公钥反推私钥在计算上也是不可行的,因此数据泄露不会直接导致认证信息被滥用。
抗钓鱼机制 - 来源验证
FIDO/WebAuthn 之所以能强力抵抗钓鱼,最大的原因在于认证时会自动进行来源 (域名) 验证。认证器会以密码学方式将发起认证请求的域名包含在签名中。即使攻击者在伪造网站 (例如 examp1e.com) 上要求用户认证,正规网站 (example.com) 的认证信息也无法在伪造网站的来源上使用。即使用户被骗访问了伪造网站,由于在认证器层面就会检测到欺诈,钓鱼攻击在结构上无法成立。这在探讨通行密钥迁移的挑战时也是一项重要优势。
与通行密钥的关系
通行密钥是 FIDO2/WebAuthn 的一种实现形态。技术上是相同的基于公钥密码的认证,但通行密钥与传统 FIDO2 不同之处在于可以通过云将认证信息同步到多台设备。传统的 FIDO2 安全密钥与物理设备绑定,因此丢失时的恢复是一个难题。通行密钥解决了这一问题,通过 iCloud 钥匙串和 Google 密码管理器实现了无缝的设备间同步。与生物识别认证相结合,用户体验也大幅提升。
支持状况与实务考量
截至 2025 年, Chrome 、 Safari 、 Firefox 、 Edge 等主要浏览器均已支持 WebAuthn API。在操作系统层面, Windows Hello 、 macOS / iOS 的 Touch ID / Face ID 、 Android 的生物识别都可作为 FIDO2 认证器使用。在企业部署中,将 YubiKey 等硬件安全密钥作为多因素认证手段采用的案例正在增加。FIDO2 安全密钥相关书籍 (Amazon)也可作为实现的参考。
作为实务上的注意事项,引入 WebAuthn 还需要服务器端的配合。需要实现生成质询、保存公钥、验证签名的逻辑,推荐利用相关库 (如 SimpleWebAuthn 、 py_webauthn 等)。此外,掌握加密的基础知识,尤其是理解公钥密码的原理,在排查问题时会很有帮助。同时了解生物识别认证的风险和两步验证的基础,就能看清认证设计的整体面貌。
这篇文章对您有帮助吗?