一、FIDO 简介

FIDO 是一组基于公钥密码学的身份认证标准,用来减少登录对密码的依赖。企业目前主要采用 FIDO2。它由浏览器接口 WebAuthn 和终端到认证器的通信协议 CTAP 组成。服务端保存公钥,私钥留在用户设备中;登录时设备使用私钥签名,服务端用公钥验签。

认证器分为平台认证器和跨平台认证器。平台认证器集成在终端内部,通过操作系统调用;跨平台认证器通过 USB、NFC 或蓝牙与客户端通信。两类认证器都由 WebAuthn 暴露给浏览器或应用,并通过 CTAP 与外部认证器交换指令。

二、FIDO 适用场景

FIDO 可用于无密码登录,也可作为敏感操作前的步进认证。普通账号可使用平台认证器,高权限账号通常应使用独立硬件密钥,并配置认证器类型、用户验证要求和凭据注册策略。

三、FIDO 原理

FIDO 的工作机制可以分为注册和认证两个阶段。

sequenceDiagram
    %% 注册阶段
    box rgba(225, 245, 254, 0.5) 注册阶段:建立公钥关系
    participant User as 用户设备
    participant Browser as 浏览器<br/>(WebAuthn)
    participant Auth as 认证器
    participant Server as 服务端
    end
    
    User->>Browser: 1. 开始绑定
    Browser->>Auth: 2. 生成挑战值
    User->>Auth: 3. 本地验证 (生物特征/PIN)
    Note over Auth: 4. 生成公私钥对<br/>(私钥保存在本地)
    Auth->>Browser: 5. 返回公钥
    Browser->>Server: 6. 发送公钥至服务端
    Note over Server: 7. 保存公钥

    %% 认证阶段
    box rgba(243, 229, 245, 0.5) 认证阶段:验证身份
    participant User2 as 用户设备
    participant Browser2 as 浏览器<br/>(WebAuthn)
    participant Auth2 as 认证器<br/>(含私钥)
    participant Server2 as 服务端<br/>(含公钥)
    end

    User2->>Browser2: 8. 登录请求
    Browser2->>Auth2: 9. 传递挑战值 + Origin信息
    User2->>Auth2: 10. 本地验证 (生物特征/PIN)
    Note over Auth2: 11. 私钥对挑战值和Origin签名
    Auth2->>Browser2: 12. 返回签名
    Browser2->>Server2: 13. 发送签名结果
    Note over Server2: 14. 验证 Origin 是否匹配<br/>使用公钥验证签名有效性
    Server2-->>User2: 15. 身份确认成功

注册阶段的目标是建立公钥关系。用户首次为某个系统绑定 FIDO 凭据时,业务系统生成一次性的挑战值并发送给浏览器,浏览器调用本地认证器创建新凭据,认证器在用户完成本地验证后生成一对公钥和私钥,并将公钥返回给业务系统。至此,服务端保存公钥,私钥保留在本地。

认证阶段的目标是验证用户是否仍然掌握对应私钥。用户后续登录时,业务系统生成新的挑战值,浏览器调用与当前站点匹配的凭据,认证器在用户完成本地验证后使用私钥对挑战值和上下文数据签名,业务系统再使用已保存的公钥完成验签。由于挑战值每次都不同,历史认证结果不能直接重放。

FIDO 的关键安全能力来自来源绑定。浏览器会根据当前访问站点生成来源标识 Origin,并把它与挑战值一起交给认证器处理。这样生成的签名只能在对应站点通过校验,钓鱼站点即便转发真实系统的挑战值,也无法把结果用于真实站点。

四、优点

FIDO 的抗钓鱼能力来自来源绑定。密码、短信验证码和通用动态口令只证明用户提交了正确数据,很难确认数据提交给了哪个站点。FIDO 把站点来源纳入认证过程,钓鱼页面得到的结果无法拿到真实站点使用。

服务端保存公钥,无需保存可直接用于登录的共享秘密。数据库泄露后,攻击者拿到公钥也不能完成签名,这能降低撞库和凭据批量滥用的风险。

使用体验也更简单。FIDO 可以调用终端上的指纹、人脸、PIN 或硬件密钥,用户不用反复输入密码和动态口令。

五、与 UKey、SSH 公钥认证有什么区别

传统 UKey 多数建立在公钥基础设施(PKI)之上,依赖证书链、有效期、吊销、驱动和中间件,适合证书认证、签章、双向认证和已有 PKI 的场景。FIDO 更强调 Web 登录中的原生集成和抗钓鱼能力,服务端重点管理公钥与凭据。企业要提升用户登录安全时可以选择 FIDO;需要证书链和传统密码基础设施时,UKey 仍有明确用途。

SSH 公钥认证与 FIDO 在底层逻辑上相似,都是服务端保存公钥、客户端持有私钥、认证时由私钥完成签名。区别在于,SSH 传统私钥通常以文件形式保存在终端,本地防护要求更高;FIDO 私钥通常保存在安全硬件或受保护执行环境中,并引入了来源绑定和本地用户验证机制。SSH 更适合命令行远程登录,FIDO 更适合 Web 登录和统一身份入口。

与传统指纹 Key 相比,FIDO 的差别主要在于服务端能否获得清晰的用户验证证据。很多传统指纹 Key 只是在本地完成指纹解锁,服务端看到的仍然是证书签名结果。FIDO 体系中,用户验证状态可以进入认证证据链,因此在双因素和合规解释上通常更容易成立。

六、等保、密评等符合性分析

FIDO 与双因素认证的关系

FIDO 能否满足等保的双因素认证要求,核心取决于认证过程中涉及的认证因子类型。在多因子认证的定义中,认证因子分为三类:所知(用户知道的秘密)、所持(用户持有的设备或令牌)和所有(用户的生物特征)。形成真正的多因子认证,必须同时使用其中两类或以上的证明。

从 FIDO 的实现方式看,它提供的因子组合具体包括:

第一层是所持因子。FIDO 凭据的私钥保存在认证器中,认证器可以是 USB 安全密钥,也可以是 Windows Hello、iOS Secure Enclave 等平台认证器。登录依赖这个物理对象或受保护的硬件环境。

第二层是生物特征或 PIN。启用本地用户验证(User Verification,UV)后,认证器会在签名前要求用户完成下列一种验证:

  • 指纹、人脸或虹膜识别(所有因子)
  • PIN 码输入(所知因子)
  • 窗口生物认证(所有因子)

启用 UV 的 FIDO 认证可以形成“所持 + 所有/所知”的组合。能否满足具体系统的多因子认证要求,还要结合认证器能力、策略配置和测评口径判断。

等保合规要求

在等级保护场景中,管理员、运维人员和远程访问等对象通常需要更强的身份鉴别。配置正确的 FIDO 可以提供所持因子与生物特征或 PIN 的组合,并通过公钥密码机制保护认证过程:

  1. 密码算法保护:FIDO 使用 ECDSA 或 EdDSA 等公钥密码算法,此过程涉及私钥签名和公钥验签;
  2. 挑战-应答机制:每次认证时服务端生成不可预测的挑战值,认证器使用私钥对挑战和上下文数据进行加密签名,确保认证过程包含密码学保护;
  3. 来源绑定:浏览器将当前访问站点的来源信息纳入签名内容,使签名与访问目标绑定,技术上由密码学保证的来源验证机制实现。

在相关系统中部署 FIDO 时,应确认以下事项:

  • 明确启用用户验证(User Verification),不能只确认用户在场(User Presence);
  • 保留完整的认证策略、日志记录,证明每次登录都完成了两层验证;
  • 配置降级路径控制,即当 FIDO 不可用时的备选方案;
  • 对管理员、运维人员和远程访问入口等关键角色优先应用 FIDO 双因素认证。

密评合规分析

在密评场景中,关注重点会转向密码算法和全链路适配情况。FIDO 的评估重点通常包括:

  1. 密码算法合规:FIDO 认证器使用的签名算法(如 ES256、RS256)是否与国家密码政策相符;如果要求国密算法,则需评估认证器是否支持国密SM2、SM3、SM4 等算法;
  2. 链路完整性:浏览器、客户端、认证器和服务端是否能够完整透传密码学保护,特别是在 HTTPS 通道、认证器通信和签名验证各环节;
  3. 服务端验证:服务端验证组件是否正确实现了公钥验签,是否正确处理签名中的来源绑定和时间戳信息;
  4. 密钥管理:私钥在认证器中的保存和使用是否符合密码管理规范,是否包含密钥导入、导出、吊销等生命周期管理能力。

国密适配与 PKI 分工

从实际工程边界看,面向互联网和通用办公系统,FIDO 的工程成熟度和安全收益通常更突出;面向严格国密要求且已有成熟 PKI 基础设施的场景,传统国密证书体系通常具有更高确定性。对于既要提升登录安全、又要兼顾合规的场景,较稳妥的做法通常是让 FIDO 与 PKI 分工协作:使用 FIDO 承担用户登录和高风险操作的强认证,使用国密证书体系承担机器身份、系统间通信和电子签章等场景。

七、全球与国内的产业化落地全景

FIDO2 在 2013 年到 2017 年完成早期技术验证,2018 年到 2021 年逐步进入浏览器和操作系统,2022 年以后开始规模化部署。欧美市场更多受平台生态和政策推动,国内落地还要处理既有认证体系与国密适配问题。

国外推进更快。2018 年标准成熟后,FIDO2 先进入浏览器和操作系统生态;2021 年后,美国联邦零信任政策持续推进,2022 年 OMB M-22-09 明确要求采用抗钓鱼多因素认证;同一时期,苹果、谷歌、微软集中推动 Passkey。到 2023 年和 2024 年,FIDO2 已同时进入消费者账号体系和政企统一身份平台。

国内起步略晚。2020 年前后,头部互联网企业开始把 FIDO2 用于内部零信任接入和高权限操作确认;2022 年以后,随着终端生态成熟和国密适配产品增多,金融、央国企、政务等行业开始试点;到 2024 年至 2026 年,市场已进入重点行业加速落地阶段。国内推进较慢的主要原因,是既有认证体系存量较大,同时还要兼顾等保、密评和国密适配要求。

从行业看,互联网和大型科技企业最早成熟,金融行业近几年推进最快,政府和关键行业仍以试点和分阶段落地为主。医疗、制造、能源等行业则更多把 FIDO2 用在共享终端登录、远程运维入口和高风险访问控制上。

当前常见场景包括员工办公与运维访问、消费者无密码登录、高价值交易确认,以及共享设备和特权访问控制。零信任项目通常先从内部强认证和高危操作提权做起。

国内多数企业更适合分阶段落地:先覆盖统一身份入口、远程接入、特权账号和关键操作复核,再逐步扩展到其他业务系统。

结语

FIDO2 把登录凭据从服务端共享秘密改为本地私钥证明,并加入用户验证和来源绑定。它适合统一身份入口、远程访问、特权账号和高风险操作确认。机器身份、证书治理或严格密码合规仍需要 PKI 等机制配合,不能指望一套登录协议包办所有身份问题。