WebAuthn 信任链坍缩
摘要 FIDO2/WebAuthn 为无密码认证筑起了坚固的防线,其认证器认证声明通过 X.509 证书链将用户公钥与硬件安全模块绑定。然而,证书路径验证这一经典 X.509 弱点依然潜伏于此:认证声明支持多种格式,部分格式对证书链的深度、签名算法和扩展验证存在容错空间;更危险的是,若攻击者在制造或固件更新阶段向认证器注入私钥,便可伪造认证声明,使恶意硬件通过安全校验,伪装成符合 FIPS 140‑2 的安全元件。 认证声明 WebAuthn 注册与认证声明 当用户向依赖方(Relying Party)注册一个 FIDO2 认证器时,认证器会生成一对公私钥,并将公钥连同认证声明(attestation)一起返回。 认证声明的目的是向依赖方证明: 公钥确实由真实的认证器生成; 认证器具有声称的安全属性(例如,密钥存储在安全元件中); 认证器的型号和制造商可被验证。 依赖方通过验证认证声明中的证书链或签名,来决定是否信任该认证器。这一步骤是 WebAuthn 信任模型的第一道关口。 四种认证声明格式 WebAuthn 规范定义了四种认证声明格式,其信任根各异: 格式 信任根 证书链 说明 Packed 认证器制造商 CA 证书 可选(X.509 链或自签名) 最常见,支持多种算法 TPM TPM 制造商证书 是(TPM EK/AIK 证书链) 基于 TPM 2.0 的远程证明 Android Key Android 安全硬件证书 是(Android Keystore 证书)…