跳至正文
老丹的足迹 —— 代码写给机器,游记写给自己,感悟写给时间
老丹的足迹 老丹的足迹
老丹的足迹 老丹的足迹
  • 首页
  • 示例页面
  • 首页
  • 示例页面
老丹的足迹 老丹的足迹
老丹的足迹 老丹的足迹
  • 首页
  • 示例页面
  • 首页
  • 示例页面

FIDO2 协议详解:从设计原理到安全证明

FIDO2(Fast Identity Online 2)是FIDO联盟与万维网联盟(W3C)于2018年联合推出的无密码认证开放标准,旨在用公钥加密技术彻底取代存在安全隐患的传统密码。

一、FIDO2的演进背景

1.1 FIDO 1.0的局限

FIDO联盟成立于2013年,2014年发布FIDO 1.0标准,包含两个协议:

  • UAF(通用认证框架):支持无密码体验,用户可通过生物识别或PIN直接认证,但缺乏标准化导致跨平台集成困难。
  • U2F(通用第二因素):提供双因素认证,使用物理安全密钥作为第二因素,但无法完全替代密码,且依赖专用硬件限制了推广。

1.2 FIDO2的突破

FIDO2在FIDO 1.0基础上做出关键改进:

  • 消除对密码的依赖:支持完全无密码的单因素认证
  • 标准化Web API:通过W3C制定的WebAuthn规范,浏览器可原生支持
  • 扩展认证器类型:从物理安全密钥扩展到设备内置的生物识别模块

截至2024年,全球超过150亿用户账户可使用FIDO2认证,主流操作系统(Windows、macOS、Android、iOS)和浏览器(Chrome、Firefox、Safari、Edge)均已支持。

二、FIDO2的核心组成

FIDO2由两个紧密耦合的协议组成,它们分工明确但协同工作:

2.1 WebAuthn(Web认证)

WebAuthn是W3C制定的标准Web API,定义了网站(依赖方)如何通过浏览器与用户设备上的认证器交互。其核心功能包括:

  • 注册阶段:网站向认证器发送质询,认证器生成新的公钥凭证对,用认证私钥签名后返回公钥给服务器存储
  • 认证阶段:网站发送质询,认证器使用存储的凭证私钥签名,服务器用公钥验证

WebAuthn支持五种证明(Attestation)类型,其中最常用的是None模式(不提供设备特定信息,所有认证器都支持)和Basic模式(使用共享批次认证密钥标识设备型号)。

2.2 CTAP(客户端到认证器协议)

CTAP由FIDO联盟制定,定义了客户端(浏览器/操作系统)与认证器(安全密钥/设备生物识别模块)之间的通信协议。包含两个版本:

  • CTAP1:FIDO U2F的重新命名,仅支持双因素认证场景,不支持PIN或生物识别的用户验证
  • CTAP2:支持用户验证(PIN/生物识别),可实现单因素无密码认证

CTAP支持USB、NFC、蓝牙等多种物理传输方式。

2.3 CTAP 2.2的新特性

2024年发布的CTAP 2.2版本引入多项重要增强:

特性功能描述价值
持久PIN/UV认证令牌允许应用复用PIN认证,避免重复提示改善用户体验
PIN复杂度策略硬件级强制执行更长的PIN满足NIST SP 800-63B合规要求
thirdPartyPayment扩展支持跨域安全支付确认满足PSD2等支付监管标准
PRF/hmac-secret-mc提供与凭证绑定的作用域密钥支持加密本地存储或应用数据

三、协议工作原理

3.1 核心密码学机制:通行密钥(Passkey)

FIDO2基于公钥密码学,核心是“通行密钥”概念:

  1. 密钥生成:用户设备生成一对非对称密钥——公钥和私钥
  2. 公钥注册:公钥发送给网站服务器存储,与用户账户绑定
  3. 私钥保护:私钥保存在设备安全区域(如安全芯片/TEE),永不离开设备
  4. 认证流程:
  • 服务器发送随机质询
  • 设备提示用户验证(指纹/PIN/安全密钥触摸)
  • 设备用私钥签名质询
  • 服务器用公钥验证签名

3.2 两种通行密钥类型

FIDO2支持两种密钥管理方式,在便利性与安全性之间提供不同选择:

同步通行密钥(Synced Passkeys):

  • 通过云服务(Apple iCloud钥匙串、Google密码管理器等)在多设备间同步
  • 便利性高,但安全性依赖云服务商
  • 适用于日常账户登录

设备绑定通行密钥(Device-bound Passkeys):

  • 私钥锁定在单一设备硬件安全模块中,无法导出
  • 最高安全级别
  • 适用于金融数据、企业知识产权等敏感场景

四、安全模型与形式化分析

4.1 学术安全分析

学术界对FIDO2进行了严格的形式化安全分析。Barbosa等人于2021年发表了首个FIDO2可证明安全分析,涵盖WebAuthn和CTAP2两大组件。

WebAuthn安全性证明:

  • 在哈希函数抗碰撞、签名方案不可伪造的假设下,WebAuthn被证明安全
  • 模型定义了“密码学认证协议”(PIA)安全类,要求注册/认证会话唯一配对

CTAP2安全缺陷识别:

  • 研究发现CTAP2在强敌手模型下只能证明较弱安全性
  • 指出了一个关键问题:CTAP2依赖未认证的Diffie-Hellman密钥交换
  • 研究者提出了替代协议sPACA,可提供更强安全性和更好性能

4.2 CTAP 2.1的安全改进

Bindel等人(2022)对CTAP 2.1和WebAuthn 2进行了更精细的安全分析:

主要贡献:

  • 建立了更细粒度的安全模型,涵盖算法协商、用户操作、令牌绑定等实际特性
  • 证明了CTAP 2.1相比CTAP 2.0具有更强的隔离性(“爆炸半径”更小)
  • 首次为WebAuthn的None证明模式、用户验证、用户存在性、令牌绑定提供了安全保证

后量子安全:

  • 研究表明,若使用后量子安全的KEM和数字签名实例化,FIDO2可抵抗量子攻击
  • 文章建议采用NIST推荐的后量子混合方案

降级攻击防护:

  • 研究识别了FIDO2在特定威胁模型下的降级攻击风险
  • 提出了简单的协议改进可增强降级防护能力

五、实体角色与交互流程

FIDO2涉及三个主要实体:

  1. 认证器(Authenticator):如YubiKey、设备指纹模块,负责生成凭证、签名质询
  2. 客户端(Client):浏览器、操作系统或应用程序,充当认证器与依赖方之间的媒介,并负责验证依赖方身份(通过RpIdHash)
  3. 依赖方(Relying Party):网站或在线服务,验证认证过程

注册流程:依赖方生成质询→客户端转发至认证器→认证器生成密钥对,使用RpIdHash绑定特定依赖方→返回公钥和证明→依赖方存储公钥

认证流程:依赖方发送质询→客户端绑定RpIdHash→认证器查找对应私钥(若RpId不匹配则拒绝)→签名返回→依赖方验证签名

六、总结与未来展望

FIDO2通过将安全性建立在私钥永不离开设备和域绑定两大原则上,从根本上防御了网络钓鱼、服务器数据库泄露、中间人攻击等常见威胁。学术界的可证明安全分析确认了其核心协议的安全性,同时CTAP 2.1和CTAP 2.2的持续演进正在修复早期版本的设计缺陷,并引入后量子密码学准备。随着全球150亿+账户的支持和主流生态的全面接纳,FIDO2正稳步推动互联网迈向“去密码化”的未来。

作者

老丹

关注我
其他文章
上一个

从“保险柜”到“钥匙扣”:硬件安全模块(HSM)的平民化之路

下一个

Botan:深入解析现代C++密码学工具包

关于博主

    老丹是一名C/C++后台开发工程师,信奉“无抽象不设计,无性能不生产”。

  • 技术栈:Modern C++、Linux环境编程、多线程/并发、网络编程等。
  • 信条:能用constexpr解决的问题绝不拖到运行时,能靠RAII避免的泄漏绝不写析构。
  • 正在填坑:从解封装到渲染的C++全链路实现,正在驯服FFmpeg与H.264/H.265。
  • 输出原则:这里的每一段代码都经过-Wall -Wextra -Werror -O2的洗礼。

近期文章

  • Linux系统的安全基石:深入理解可插拔认证模块(PAM) 2026年7月27日
  • vsftpd 完全指南:从核心原理到Docker容器化部署 2026年7月27日
  • 互联网的”导航”安全卫士:深入解读DNSSEC 2026年7月27日
  • Ubuntu DNS 配置完全指南 2026年7月27日
  • 在 Ubuntu 中使用 Certbot 的操作指南 2026年7月27日

文章分类

  • C/C++开发 (13)
  • Docker容器 (3)
  • Linux工具包 (10)
  • Linux服务配置 (33)
  • Linux系统 (10)
  • OpenWrt路由 (2)
  • Shell脚本 (3)
  • 安防技术 (4)
  • 数据安全 (30)
  • 网络协议 (17)
  • 计算机理论 (22)
联系我们:📍 地址:中国·广东省深圳市   |   ✉️ 邮箱:support@tanglinux.com   |   💬 QQ:870866607
版权所有:老丹的足迹粤ICP备2026061170号-1       公安备案图标 粤公网安备44030002013274号