定义
Passkey 是基于 FIDO2 / WebAuthn 协议的无密码登录方式。注册时,设备本地生成一对非对称密钥:公钥上传服务端,私钥用 Secure Enclave / TrustZone 这种硬件级别的安全区保护,永远不离开设备。
登录时,服务端发一个 challenge,设备用私钥签名后返回,服务端用公钥验签。整个过程没有"6 位数"这种可以被转发的中间产物 —— 这是 Passkey 抗钓鱼的核心。
触发签名的动作是生物识别(Face ID / Touch ID / 指纹)或 PIN —— 这只是用来"解锁本地私钥",不是把生物特征发到服务端。
跨设备同步
Passkey 跟传统 YubiKey 最大的差别是:可以跨设备。Apple 用户的 Passkey 通过 iCloud Keychain 端到端加密同步到所有 Apple 设备;Google 账户的 Passkey 通过 Google Password Manager 同步到 Android 和 Chrome;Windows 11 Hello 也支持。
这意味着丢一台手机不会让你登不上账户 —— 但也意味着 Passkey 的安全等级跟你的"云账户安全"绑定。Apple ID 用了短信 2FA 的话,Passkey 的下限就被那个短信 2FA 拉低了。
抗钓鱼原理
FIDO2 协议的验签里包含一个 origin 字段 —— 浏览器会把当前页面的域名塞进签名挑战里。如果你在 binnance.com(钓鱼站)触发 Passkey,签出来的内容跟 binance.com 的公钥对不上,服务端直接拒绝。
这跟 TOTP 的"6 位数转发"完全不同。TOTP 可以被实时中继 —— 钓鱼站拿到 6 位数立刻填进真站,真站不知道这个数是从哪里来的。但 Passkey 的签名带域名标签,地址错一个字母就过不了校验。
限制和注意点
第一 · 云账户安全是下限。Apple ID 和 Google 账户本身必须用强密码 + 硬件 2FA。
第二 · 备份机制。绑 Passkey 时同时绑一支 YubiKey 或留一份恢复码,设备全丢的极端情况要能进得去。
第三 · 旧 2FA 先并行用一周再删。Binance / Coinbase / Apple ID 都允许 Passkey 与传统 2FA 并存。
完整推演:2FA 的真相 · 为什么短信不安全。