1. 课程导入

课程导入 学习卡片

在过去的二十多年里,密码几乎等同于“账号安全”。但现实是:弱密码、撞库、钓鱼、短信验证码劫持、OTP 中间人攻击,让“知道一个秘密”这种认证方式越来越难以支撑高价值业务。WebAuthn 与 Passkey 的出现,并不是简单地把密码换成一个更长的字符串,而是把认证的信任根从“共享秘密”迁移到“非对称密钥对 + 设备持有 + 用户生物识别或本地 PIN”。理解这一转变,是学习本课程的第一把钥匙。

一、核心定义:WebAuthn、Passkey 与 FIDO2 的关系

WebAuthn(Web Authentication)是 W3C 与 FIDO 联盟共同推动的 Web 标准 API,它让浏览器和操作系统能够以标准化方式调用认证器(Authenticator),完成基于公钥密码学的注册与登录。FIDO2 则是一个更大的技术集合,包含 WebAuthn 与 CTAP2(Client to Authenticator Protocol 2)。可以这样理解:FIDO2 是目标与协议框架,WebAuthn 是浏览器侧的 API 规范,CTAP2 是浏览器/系统与外部认证器之间的通信协议。

Passkey 是 WebAuthn 能力在产品和用户体验层面的落地形态。它通常指可同步的 FIDO 凭据(Synced Passkey),私钥由平台密钥链(如 iCloud Keychain、Google Password Manager、Windows Hello/微软账户)加密同步,用户可以在多台设备上使用同一 Passkey。与之相对的是设备绑定凭据(Device-bound Credential),私钥不出安全芯片,安全性更高但跨设备体验较弱。课程中我们会反复区分这两类凭据,因为它们的风险模型、恢复策略和合规要求完全不同。

一句话理解:WebAuthn 是“浏览器如何调用认证器”的标准;Passkey 是“用户如何无密码登录”的产品化凭据;FIDO2 是二者背后的整体协议体系。

二、发展背景:为什么现在必须学 WebAuthn

从时间线看,FIDO U2F 在 2014 年解决了“第二因素”问题,但注册和登录流程仍依赖密码。2019 年 WebAuthn 成为 W3C 正式推荐标准,2022 年 Apple、Google、Microsoft 联合推动 Passkey,2023 年后主流浏览器与操作系统全面支持。推动力来自三方面:一是钓鱼攻击规模化,传统 OTP 难以防御实时中继;二是移动设备普及,生物识别成为最自然的用户验证方式;三是监管与合规压力,如支付、金融、政务场景对“抗钓鱼认证”的要求不断提高。

对开发者而言,这意味着认证不再只是后端比对哈希。你需要理解挑战值(Challenge)、来源(Origin)、RP ID、用户句柄(User Handle)、认证器数据(Authenticator Data)、证明(Attestation)等概念,并能在注册、登录、恢复、注销全生命周期中做出正确决策。

三、学习目标与整体课程框架

本课程共 30 章,目标不是让你“会调一个 API”,而是让你具备设计、实现、审计和演进 Passkey 认证策略的能力。完成课程后,你应当能够:

  • 解释 WebAuthn 注册与登录的完整密码学流程,并识别常见实现错误;
  • 根据业务场景选择 Synced Passkey 或 Device-bound Credential,并设计降级与恢复策略;
  • 在服务端正确生成 Challenge、校验 Origin/RP ID、验证签名与计数器;
  • 设计多设备、多平台、多账号体系下的 Passkey 绑定与迁移方案;
  • 识别并防御钓鱼、重放、中间人、凭据填充等攻击;
  • 制定从密码 + OTP 到 Passkey 的渐进式迁移路线图。

课程整体分为六个模块:基础与标准(第 1–5 章)、注册与登录流程(第 6–11 章)、服务端实现与安全校验(第 12–17 章)、Passkey 产品化与恢复策略(第 18–22 章)、攻击面与防御实战(第 23–27 章)、企业落地与演进路线(第 28–30 章)。每一章都围绕“原理—流程—代码—案例—复盘”展开。

模块核心问题实战产出
基础与标准WebAuthn/Passkey/FIDO2 是什么,解决什么问题术语表、信任模型图、选型清单
注册与登录流程Challenge、Attestation、Assertion 如何流转可运行的注册/登录时序与接口设计
服务端实现与安全校验如何正确校验签名、Origin、RP ID、计数器服务端校验代码与测试用例
产品化与恢复策略多设备、多平台、账号恢复如何设计Passkey 生命周期状态机与恢复流程
攻击面与防御钓鱼、重放、MITM、降级攻击如何防威胁模型与防御检查表
企业落地与演进如何从密码迁移到 Passkey 并持续运营迁移路线图与灰度发布方案

四、实战路线图:从零到可上线的 Passkey 认证

为了避免“学完标准却不知道从哪下手”,我们给出一条贯穿课程的实战路线。你可以把它当作项目里程碑:

  1. 环境准备:搭建支持 HTTPS 的本地开发环境,准备浏览器与认证器(平台认证器或安全密钥)。
  2. 最小注册闭环:实现 navigator.credentials.create() 调用,服务端生成 Challenge 并保存公钥凭据。
  3. 最小登录闭环:实现 navigator.credentials.get() 调用,服务端校验签名与 Challenge。
  4. 安全加固:校验 Origin、RP ID、UV/UP 标志、签名计数器,处理异常与重放。
  5. 产品化:支持多设备 Passkey、账号恢复、凭据管理、降级登录。
  6. 攻击演练:模拟钓鱼、重放、MITM、降级攻击,验证防御有效性。
  7. 灰度上线:设计 A/B 测试、监控指标、回滚策略与用户引导。

学习建议:每学完一个模块,回到这条路线图,确认自己能在代码或架构图中指出对应环节。不要只读不练,Passkey 的很多坑只有在真实浏览器与真实认证器上才会暴露。

五、常见误区与复盘

在正式进入技术细节前,先纠正几个高频误区,能帮你少走弯路:

  • 误区一:Passkey 等于“无密码”。Passkey 可以替代密码,但很多系统仍保留密码作为降级或恢复手段。是否彻底移除密码,取决于业务风险与用户覆盖。
  • 误区二:WebAuthn 只是前端 API。WebAuthn 的安全边界一半在前端,一半在服务端。Challenge 生成、Origin 校验、签名验证、凭据存储都在服务端,任何一环出错都会导致严重漏洞。
  • 误区三:Synced Passkey 一定比 Device-bound 差。两者是权衡:Synced 提升可用性与跨设备体验,Device-bound 提升抗提取能力。正确做法是按场景分层,而不是一刀切。
  • 误区四:接入 WebAuthn 就能防钓鱼。WebAuthn 天然抗钓鱼的前提是正确校验 Origin 与 RP ID。如果服务端忽略这些校验,钓鱼站点仍可能诱导用户完成认证。

复盘提醒:在后续章节中,每当你实现一个接口,都要问三个问题:Challenge 是否一次性且不可预测?Origin 与 RP ID 是否严格匹配?凭据与用户、设备的绑定关系是否清晰?这三问能挡住大多数低级但致命的错误。

现在,你已经掌握了本课程的坐标系:WebAuthn 是标准,Passkey 是产品形态,FIDO2 是协议体系;学习目标是具备设计、实现与审计能力;实战路线图从最小闭环走向安全加固与灰度上线。接下来,我们将从认证器的信任模型与密码学基础开始,逐步拆解每一个环节。