第8篇: 无密码认证(FIDO/WebAuthn)
第8篇:告别密码?FIDO与WebAuthn技术如何引领无密码认证
在过去的几篇文章中,我们深入探讨了密码存储的强化策略和多因素认证(MFA)的重要性。然而,即便有MFA的加持,密码本身固有的弱点——易被猜测、易被钓鱼、需要记忆——始终是安全和用户体验的一大痛点。用户因密码疲劳而设置弱密码,或在多个网站重复使用密码,都为攻击者留下了可乘之机。
于是,一个大胆而变革性的理念应运而生:告别密码,迈向无密码认证(Passwordless Authentication)。而引领这场变革的,正是FIDO联盟(Fast IDentity Online Alliance)及其核心标准WebAuthn。
1. 密码的“原罪”与无密码认证的召唤
为什么我们需要告别密码?密码的“原罪”主要体现在:
- 安全性弱点: 钓鱼攻击、中间人攻击、键盘记录器、暴力破解、字典攻击等,都以窃取或猜测密码为目标。即使有MFA,也仍需用户输入密码这一环节。
- 用户体验差: 用户需要记住大量复杂且独特的密码,导致密码疲劳、忘记密码、账户锁定,严重影响用户体验和生产力。
- 管理成本高昂: 企业在密码重置、账户解锁等客服支持上投入巨大资源。
无密码认证旨在消除对传统密码的依赖,通过更安全、更便捷的方式验证用户身份,从而提升整体安全态势和用户体验。
2. FIDO联盟:推动无密码认证的行业巨擘
FIDO联盟(Fast IDentity Online Alliance) 成立于2012年,是一个开放性行业协会,旨在解决强认证技术之间缺乏互操作性,以及用户在创建和记住多个用户名和密码时遇到的问题。其愿景是构建一个全球互操作的、基于标准的、无密码的认证生态系统。
FIDO联盟发布了一系列开放标准,其中最核心的是:
- FIDO UAF (Universal Authentication Framework): 旨在实现无需密码,即可通过指纹、面部识别、语音等生物识别技术进行强认证。
- FIDO U2F (Universal Second Factor): 旨在为现有密码认证添加一个强大的第二因素,通常通过物理安全密钥实现。
- FIDO2: 这是FIDO联盟的最新且最全面的规范集合,它集成了FIDO UAF和U2F的优势,并通过WebAuthn和CTAP协议,实现了在Web和应用程序上进行原生、跨平台的无密码认证。
3. WebAuthn:无密码认证的Web标准
WebAuthn(Web Authentication) 是FIDO2标准的核心组成部分,它是由FIDO联盟与W3C(万维网联盟)合作发布的Web标准。这意味着WebAuthn是所有现代Web浏览器都应支持的API,使得任何网站都能原生集成强健的FIDO认证功能。
简单来说,WebAuthn允许Web应用程序通过浏览器的内置功能与用户设备的认证器(Authenticator)进行交互,以实现安全、便捷的无密码登录或多因素认证。
4. WebAuthn/FIDO的工作原理:公钥密码学的魔法
FIDO和WebAuthn认证的核心是公钥密码学(Public-Key Cryptography),而非共享秘密(如密码)。这与传统密码认证有本质区别,也正是其强大的安全基石。
核心组件:
- 用户(User): 希望登录或进行认证的个人。
- 客户端/浏览器(Client/Browser): 用户使用的设备和浏览器(支持WebAuthn API)。
- 认证器(Authenticator): 存储用户私钥并进行加密操作的设备。可以是:
- 平台认证器: 内置在设备中(如笔记本电脑的指纹传感器、手机的Face ID),私钥安全存储在硬件安全模块(如TPM、SE)中。
- 漫游认证器: 可插拔的外部设备(如USB安全密钥,即FIDO U2F密钥),私钥存储在密钥内部。
- 依赖方(Relying Party, RP): 提供服务的网站或应用程序(需要集成WebAuthn)。
注册(Registration)流程(绑定设备):
sequenceDiagram participant RP as 依赖方 (Relying Party) participant Client as 客户端 (浏览器) participant Authenticator as 认证器 (如指纹识别器/USB Key)
RP->>Client: 1. 用户请求注册
Client->>RP: 2. 请求注册挑战 (Challenge)
RP->>Client: 3. 发送注册挑战 (Challenge)
Client->>Authenticator: 4. 请求创建凭据 (传递 Challenge)
Authenticator-->>Authenticator: 5. 用户授权 (如触摸认证器/指纹/PIN)
Authenticator-->>Authenticator: 6. 生成新的密钥对 (公钥/私钥)
Authenticator->>Client: 7. 返回凭据信息 (Credential) 和Attestation
Client->>RP: 8. 提交凭据信息 (Credential) 和Attestation
RP-->>RP: 9. 验证 Attestation 和凭据信息
RP-->>RP: 10. 保存用户公钥和凭据ID
RP->>Client: 11. 注册成功
- 用户意图: 用户访问网站RP,选择注册或启用无密码登录。
- RP生成挑战: RP生成一个随机的加密挑战值(Challenge),并将其发送给客户端。
- 客户端与认证器交互: 浏览器调用WebAuthn API,将挑战值发送给用户的认证器。
- 认证器生成密钥对: 用户的认证器在本地安全地生成一对新的公钥/私钥对。
- 私钥: 永远不会离开认证器,安全存储在其中。
- 公钥: 与用户ID和挑战值一起,由认证器用私钥签名。
- 返回签名公钥: 认证器将签名后的公钥和相关元数据(如认证器ID)返回给浏览器,浏览器再发送给RP。
- RP验证并存储公钥: RP使用自身持有的FIDO联盟根证书来验证认证器提供的签名的有效性,确认公钥的真实性。验证成功后,RP将此公钥与用户账户关联并安全存储。
认证(Authentication)流程(无密码登录):
sequenceDiagram participant RP as 依赖方 (Relying Party) participant Client as 客户端 (浏览器) participant Authenticator as 认证器 (如指纹识别器/USB Key)
RP->>Client: 1. 发送认证请求 (包含挑战 Challenge)
Client->>Authenticator: 2. 请求用户进行认证 (传递 Challenge)
Authenticator-->>Authenticator: 3. 用户授权 (如指纹、PIN)
Authenticator-->>Authenticator: 4. 使用私钥对 Challenge 签名
Authenticator->>Client: 5. 返回签名结果 (Assertion)
Client->>RP: 6. 提交签名结果 (Assertion)
RP-->>RP: 7. 使用预先注册的公钥验证签名
RP->>RP: 8. 验证成功
RP->>Client: 9. 登录成功,授予访问权限
- 用户意图: 用户访问网站RP,选择无密码登录。
- RP生成挑战: RP根据请求登录的用户账户,生成一个新的随机挑战值。并将该挑战值(以及认证请求所需的其他参数)发送给客户端。
- 客户端与认证器交互: 浏览器调用WebAuthn API,将挑战值发送给认证器。
- 认证器签名: 认证器收到挑战值后,使用其内部存储的私钥对该挑战值进行签名。
- 返回签名: 认证器将签名结果返回给浏览器,浏览器再发送给RP。
- RP验证签名: RP收到签名后,使用此前存储的该用户的公钥来验证签名。
- 如果签名验证成功,证明用户确实拥有对应的私钥,即验证了用户的身份。
- 登录成功: RP确认用户身份,完成登录。
5. FIDO与WebAuthn的显著优势
- 抵抗钓鱼攻击(Phishing Resistance): FIDO认证过程中,私钥不会离开认证器,挑战值与网站域名绑定。这意味着即使是钓鱼网站也无法获得正确的挑战值并诱骗认证器进行签名,从而彻底杜绝了绝大多数钓鱼攻击。这是其相比密码+MFA的最大优势之一。
- 增强安全性: 私钥存储在硬件安全模块中,受到防篡改保护。即使设备被恶意软件感染,私钥也不易被窃取。
- 极大提升用户体验: 用户无需记忆和输入密码。只需通过指纹、面部识别、PIN码或轻触硬件密钥即可登录,登录过程更加流畅、快捷。
- 跨平台兼容性: WebAuthn作为W3C标准,得到了主流浏览器(Chrome, Firefox, Edge, Safari)和操作系统(Windows Hello, macOS Touch ID, Android Biometrics)的广泛支持,实现了真正的跨平台无缝体验。
- 保护用户隐私: 不同的网站会生成不同的密钥对,服务提供商无法追踪用户在其他网站的活动。
- 降低运营成本: 减少因用户忘记密码或账户锁定而产生的客服和IT支持成本。
总结
FIDO联盟和WebAuthn标准正在革新我们数字身份的验证方式,推动从“密码时代”向“无密码时代”的过渡。通过巧妙地利用公钥密码学和强大的硬件安全认证器,它们提供了卓越的抗钓鱼能力、更高的安全性以及极佳的用户体验。对于企业和开发者而言,积极采纳FIDO/WebAuthn技术,不仅能够显著提升用户账户的安全性,也能极大地优化用户登录体验,是构建未来IAM系统的必然趋势。