WebAuthn 是 FIDO2 标准的身份验证层。它不依赖用户记忆的密钥,而是使用非对称密码学。在注册期间,用户的认证器(硬件密钥、安全飞地、TPM 等)生成一对私钥-公钥,其作用域限定在信赖方域。浏览器将公钥和认证数据发送到服务器,服务器将其存储为凭据记录。私钥永远不会离开用户的设备。
身份验证流程
登录时,服务器发出随机挑战。浏览器将此挑战转发给认证器,认证器验证用户存在(例如按钮按压),可选地执行用户验证(PIN、生物识别),并使用存储的私钥对挑战进行签名。服务器使用先前注册的公钥验证签名,并确保认证器的签名计数器已递增,以防止克隆密钥。
通行密钥
通行密钥通过实现跨设备可用性来扩展 WebAuthn 凭据。操作系统通过端到端加密的云存储同步凭据。通行密钥可以使用设备的本地身份验证方法(Touch ID、Face ID、Windows Hello、Android 生物识别)解锁,并跨浏览器和设备使用。这消除了记忆或输入任何内容的摩擦,同时保持硬件支持的安全性。
相较于密码的优势
- 抗钓鱼 – 认证器将每个凭据绑定到特定来源;钓鱼网站无法诱骗它为不同域签署挑战。
- 无共享密钥 – 没有密码数据库,凭据泄露风险大大降低。即使服务器的凭据存储被攻破,攻击者只能获得公钥。
- 更好的用户体验 – 用户只需确认生物识别提示或触摸安全密钥。跨设备通行密钥消除了密码重置和输入错误。
- 强多因素 – WebAuthn 可以通过单一手势满足"您拥有的东西"(认证器)和"您是/知道的东西"(生物识别或 PIN),以最小的努力实现强 MFA。
- 抗重放和凭据填充 – 挑战一次性使用,私钥不能跨服务重复使用,阻止重放攻击和凭据填充。
