因素分类与认证保证级别
NIST SP 800-63 将数字身份认证分为三个保证级别(Authenticator Assurance Level, AAL),每个级别对因素的组合方式提出了不同的要求:
AAL1:单因素认证即可。仅要求某种形式的认证(如密码),适用于低风险应用。安全性等同于「知道一个秘密就能登录」。
AAL2:双因素认证。要求使用两类不同的认证因素,且其中至少一类必须是抗重放(replay-resistant)的。TOTP 和 SMS OTP 属于 AAL2,因为它们虽然是共享秘密(shared secret)但通过时间窗口/单次使用提供了抗重放保护。但 NIST SP 800-63B 在 2020 年修订版中明确限制 SMS OTP 的使用——虽然未完全禁止,但将其标记为「受限」(restricted),要求组织在使用 SMS 时评估 SIM 卡交换、VoIP 劫持等风险。
AAL3:硬件加密认证。要求使用基于硬件密码学模块的认证器(如 FIDO2 安全密钥),私钥不可被软件提取,且认证器本身具备防篡改(tamper-resistant)能力。FIDO2 Level 2 安全密钥(如 YubiKey 5 FIPS 系列)符合 AAL3 要求。
这一分层体系直接指导了企业 MFA 策略的制定:面向消费者的 SaaS 服务通常部署 AAL2(TOTP + 可选安全密钥);面向金融、医疗、国防领域的组织应要求管理员和特权账户至少达到 AAL3。
一个常见的架构错误是将「生物特征+密码」视为 MFA 部署在移动端。实际上,设备端生物识别(如 Touch ID/Face ID)在 FIDO2 框架中的角色是「用户验证」(User Verification)而非独立的认证因素——它解锁设备上存储的私钥,但网络认证的整体安全性仍依赖于私钥(持有因素)+ Origin 绑定。真正将生物特征作为独立认证因素需配合活体检测(Liveness Detection)和模板匹配,且因生物特征的不可撤销性需额外的隐私保护措施(参见"生物特征认证"词条)。