Skip to content

FIDO2 与 WebAuthn

FIDO2 是当前最先进的在线身份认证标准。它让你用一个小小的硬件设备代替密码,安全地登录网站和应用。本文将帮助你理解 FIDO2 的工作原理,以及 YuerKey 如何支持它。

什么是 FIDO2

FIDO2 是由 FIDO 联盟(Fast IDentity Online Alliance) 制定的开放标准。FIDO 联盟是一个行业组织,成员包括 Google、Apple、Microsoft、Amazon 等科技巨头,致力于推动更安全、更便捷的在线身份认证。

FIDO2 由两个部分组成:

简单来说:

  • WebAuthn(Web Authentication API):是浏览器提供的接口,让网站可以调用安全密钥进行认证。由 W3C(万维网联盟)制定。
  • CTAP2(Client to Authenticator Protocol 2):是浏览器和安全密钥之间的通信协议。定义了"浏览器怎么跟你的 YuerKey 对话"。

你不需要理解这两个组件的技术细节。只要知道:当你在浏览器中使用安全密钥登录时,WebAuthn 和 CTAP2 在幕后协同工作,确保整个过程安全顺畅。

注册流程:把安全密钥绑定到账户

以在 Google 账户上注册安全密钥为例,整个过程只需几秒钟:

第 1 步:发起注册

你登录 Google 账户,进入"安全性"设置,点击"添加安全密钥"。此时 Google 服务器会生成一段随机数据(称为"质询"),通过浏览器发送给你的设备。

第 2 步:浏览器请求安全密钥

浏览器收到 Google 的请求后,通过 WebAuthn API 调用你的 YuerKey。浏览器会显示一个对话框,提示你"请插入并触摸你的安全密钥"。

第 3 步:你在设备上确认

YuerKey 的屏幕亮起,显示确认提示——"是否注册 google.com?"。你按下设备上的确认键,授权这次操作。

第 4 步:设备生成密钥对

得到你的授权后,YuerKey 在设备内部生成一对新的密钥:

  • 私钥:安全存储在设备中,永远不会离开
  • 公钥:发送给 Google 服务器保存

同时,设备会记录下这个公钥对应的网站域名(google.com),将它们绑定在一起。

第 5 步:注册完成

Google 服务器收到公钥并保存。从此,这把安全密钥就与你的 Google 账户绑定了。

认证流程:用安全密钥登录

注册之后,每次登录时的认证过程同样简单:

第 1 步:发起登录

你在 Google 登录页面输入用户名(如果是两步验证模式,还需要输入密码)。Google 服务器生成一段新的随机质询数据。

第 2 步:浏览器请求安全密钥

浏览器提示你插入安全密钥。

第 3 步:设备验证域名

YuerKey 收到请求后,首先检查发起请求的网站域名(google.com)是否与之前注册时绑定的域名匹配。如果域名不匹配(比如你被骗到了钓鱼网站 g00gle.com),设备会直接拒绝——这就是防钓鱼的核心机制。

第 4 步:你在设备上确认

域名验证通过后,YuerKey 屏幕显示"是否登录 google.com?",你按下确认键。

第 5 步:设备签名并返回

YuerKey 使用存储在设备中的私钥对质询数据进行数字签名,并将签名结果发回给 Google 服务器。

第 6 步:服务器验证签名

Google 服务器用之前保存的公钥验证签名。签名正确——证明你确实持有对应的私钥——登录成功。

整个过程私钥从未离开设备。 即使有人监听了通信过程,拿到的也只是一次性的签名数据,无法用于其他场景。

Passkey 无密码登录

什么是 Passkey

Passkey(通行密钥)是基于 FIDO2 技术的无密码登录方案。传统的安全密钥使用方式是"密码 + 安全密钥"(两步验证),而 Passkey 直接跳过密码这一步——你只需要安全密钥(或手机、电脑上的生物识别)就能完成登录。

对比项传统两步验证 (2FA)Passkey 无密码登录
需要密码?需要先输入密码不需要密码
需要安全密钥?需要需要
防钓鱼?
用户体验密码 + 插入设备 + 确认插入设备 + 确认
密码泄露风险密码仍可能泄露没有密码,无从泄露

哪些服务已支持 Passkey

截至目前,以下主流服务已支持 Passkey 无密码登录:

  • Google:个人账户和 Workspace
  • Apple:Apple ID 和 iCloud
  • Microsoft:个人账户和 Azure AD
  • GitHub:代码仓库登录
  • Amazon:购物账户
  • PayPal:支付账户
  • 1Password / Dashlane:密码管理器
  • Cloudflare:开发者服务

更多服务正在不断加入。你可以在 passkeys.directory 查看完整的支持列表。

U2F 兼容

U2F(Universal 2nd Factor,通用第二因素)是 FIDO 联盟在 FIDO2 之前制定的第一代安全密钥标准。许多早期支持安全密钥的服务(如 Dropbox、Facebook 等)最初只支持 U2F。

YuerKey 完全兼容 U2F 协议。这意味着:

  • 那些只支持 U2F 的旧服务,YuerKey 可以正常使用
  • 对于同时支持 FIDO2 和 U2F 的服务,YuerKey 会自动使用更先进的 FIDO2 协议

你不需要关心一个服务用的是 U2F 还是 FIDO2——YuerKey 会自动处理兼容性。

YuerKey 的 FIDO2 能力

YuerKey 实现了完整的 FIDO2 协议栈,支持 CTAP2.1 规范中的高级特性:

支持的签名算法

算法说明用途
ES256 (ECDSA P-256)最广泛支持的算法几乎所有 FIDO2 服务都支持
Ed25519高性能椭圆曲线签名新一代推荐算法
RS256 (RSA PKCS#1 v1.5)传统 RSA 算法兼容旧系统

CTAP2.1 高级特性

  • 凭据管理(Credential Management):直接在设备上查看和管理已注册的所有凭据,不需要逐个登录网站去检查
  • Large Blobs:在设备上存储较大的数据(如证书),某些高级场景需要用到
  • HMAC-Secret 扩展:支持派生对称密钥,可用于本地磁盘加密等场景
  • 企业认证(Enterprise Attestation):满足企业环境中对设备来源认证的需求
  • 最小 PIN 长度策略:企业可以强制要求用户设置足够长的 PIN

这些高级特性在日常使用中不一定都会用到,但它们确保 YuerKey 在企业部署和高级安全场景中同样胜任。