无密码身份验证:WebAuthn 与 FIDO2
探索 W3C WebAuthn 标准和 FIDO2 通行密钥,了解身份验证的未来
无密码身份验证:WebAuthn 与 FIDO2 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
FIDO2 架构
FIDO2 是 W3C Web Authentication 规范(WebAuthn)与 FIDO Alliance 的客户端到认证器协议 2(CTAP2)的统称。二者共同定义了一个使用公钥密码学、并绑定到依赖方来源的完整无密码认证系统。
认证器类型
FIDO2 支持两类认证器。平台认证器内置于设备中:Apple 设备上的 Touch ID 和 Face ID,以及 Windows 上的 Windows Hello。漫游认证器是外部硬件令牌:YubiKey、Google Titan Key 和 Feitian 密钥。它们都使用公钥密码学,并生成认证声明。
注册:创建凭据
在 WebAuthn 注册期间,认证器会为依赖方生成一对新的非对称密钥。公钥会发送到服务器并存储起来。私钥永远不会离开认证器。认证声明可以证明认证器的类型,以及密钥是在认证器硬件内部生成的。
认证:凭据断言
在 WebAuthn 认证期间,服务器会向客户端发送质询。认证器使用存储的私钥,对质询、依赖方 ID 和客户端数据一起进行签名。服务器使用存储的公钥验证签名。在整个过程中都不会传输共享机密。
来源绑定可防止网络钓鱼
WebAuthn 断言中的依赖方 ID 通过密码学方式绑定到请求页面的来源(域)。如果来源与注册时的来源不同,认证器会拒绝为该断言签名。这使 WebAuthn 从设计上具备抗网络钓鱼能力:虚假的钓鱼网站无法完成认证。
驻留密钥与真正的无密码认证
可发现凭据(以前称为驻留密钥)存储在认证器本身,并按依赖方 ID 建立索引。这支持真正的无密码流程:用户出示认证器,从设备中存储的凭据里选择自己的账户,然后无需输入用户名或密码即可完成认证。
用户验证与用户存在性
WebAuthn 区分用户验证(UV)和用户存在性(UP)。用户存在性只要求用户触摸或轻触认证器。用户验证还要求输入 PIN 或完成生物识别检查,以证明特定用户本人在场。高安全性应用应要求在认证时使用 UV。
CTAP2 协议
CTAP2 定义了客户端(浏览器或 OS)与外部漫游认证器之间通过 USB、NFC 或 BLE 进行通信的协议。它规定了创建凭据、生成断言和管理认证器所需的命令。CTAP2.1 增加了凭据管理和始终使用 UV 等功能。
通行密钥:同步凭据
通行密钥是可发现的 WebAuthn 凭据,会通过平台供应商的加密云服务在用户的各台设备之间同步(Apple 使用 iCloud 钥匙串,Google 使用密码管理器,Windows 使用 Windows Hello for Business)。通行密钥通过跨设备可用性提供无密码认证,将安全性与用户对密码所期待的便利性结合起来。
通行密钥用户体验流程
典型的通行密钥认证流程如下:用户访问网站并点击“使用通行密钥登录”。浏览器会显示该网站可用的通行密钥。用户通过生物识别(Face ID、Touch ID 或 Windows Hello)完成认证。浏览器为质询签名并发送断言。整个流程只需几秒钟,无需输入密码。
WebAuthn 与传统认证的比较
传统密码:容易遭受网络钓鱼、可以重复使用、可从数据库泄露中被破解。OTP 代码(TOTP):可能在实时攻击中被钓取。SMS 代码:可能遭受 SIM 交换,也可能被钓取。WebAuthn/通行密钥:通过来源绑定抵抗网络钓鱼,没有可供窃取的服务器端机密,每个网站都独一无二,私钥受到硬件保护。WebAuthn 是当今可用的、得到广泛部署的最强认证机制。
WebAuthn 与密码对比检查
与密码或 TOTP 代码不同,WebAuthn 的哪项属性使其从根本上能够抵抗网络钓鱼攻击?
课程回顾:FIDO2 与 WebAuthn
FIDO2 将 WebAuthn(W3C)与 CTAP2(FIDO Alliance)结合起来,提供抗网络钓鱼的无密码认证。平台认证器(Touch ID、Face ID)和漫游认证器(YubiKey)使用绑定到依赖方来源的公钥密码学。通行密钥在此基础上增加了跨设备同步功能。WebAuthn 提供了当今可广泛使用的最强认证安全性。
常见问题解答
「无密码身份验证:WebAuthn 与 FIDO2」课时是免费的吗?
是的 — 「无密码身份验证:WebAuthn 与 FIDO2」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「无密码身份验证:WebAuthn 与 FIDO2」这节课中我会学到什么?
探索 W3C WebAuthn 标准和 FIDO2 通行密钥,了解身份验证的未来 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「无密码身份验证:WebAuthn 与 FIDO2」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 密码身份验证的根本问题
- SRP:安全远程密码协议
- PAKE 协议及其属性
- 无密码身份验证:WebAuthn 与 FIDO2