4. 多因素认证与无密码工程

多因素认证(MFA)的本质不是“多输一次密码”,而是让攻击者即使拿到密码,也无法仅凭一个可复制的秘密完成登录。零信任强调“永不信任、持续验证”,MFA 正是把身份验证从一次性口令升级为多证据组合的关键控制点。理解 MFA,需要先区分三类证据:你知道的(密码、PIN)、你拥有的(手机、硬件密钥)、你是什么(指纹、人脸)。不同 MFA 方案的差异,本质上就是“拥有类证据如何被证明”的差异。

三类主流 MFA 方案对比

TOTP(基于时间的一次性密码)依赖共享密钥与时间同步。服务端与客户端在注册时约定一个 Base32 密钥,之后每 30 秒用 HMAC-SHA1 对“时间步长”计算一次 6 位数字。它的优点是离线可用、兼容性极好;缺点是密钥一旦泄露即可被克隆,且用户仍可能被钓鱼页面实时转发验证码。推送认证把“拥有”证据转移到已注册的手机应用上,服务端向设备发送挑战,用户在应用内点击“批准”。它体验好,但存在 MFA 疲劳攻击——攻击者反复推送,诱导用户误点。FIDO2/WebAuthn 则用非对称密钥替代共享秘密:注册时设备生成密钥对,私钥永不离开安全芯片,公钥交给服务端;登录时服务端发随机挑战,设备用私钥签名,服务端用公钥验签。由于签名绑定源站域名,钓鱼站点无法复用,因此 FIDO2 是目前抗钓鱼能力最强的方案。

三类 MFA 方案的证据流与抗钓鱼能力 TOTP 共享密钥 注册:共享 Base32 密钥 K = JBSWY3DPEHPK3PXP 客户端:HMAC-SHA1(K, T) T = floor(unixtime / 30) 输出 6 位动态码 示例:482913(30 秒有效) 风险:密钥可克隆 钓鱼可实时转发验证码 抗钓鱼:弱 推送认证 注册:设备绑定用户身份 设备令牌 + 推送通道 服务端下发挑战 含上下文:IP、位置、应用 用户在应用内批准/拒绝 可叠加生物识别确认 风险:MFA 疲劳攻击 反复推送诱导误批准 抗钓鱼:中 FIDO2 / WebAuthn 注册:设备生成密钥对 私钥留安全芯片,公钥上传 服务端发随机挑战 challenge + rpId + origin 设备用私钥签名 签名绑定域名,不可跨站复用 服务端公钥验签 私钥不出设备,无共享秘密 抗钓鱼:强

条件访问策略:让认证强度随风险浮动

MFA 不应是“一刀切”。条件访问(Conditional Access)把认证决策变成“如果……那么……”的策略:如果用户从公司管理设备、可信 IP 访问低敏感应用,则允许单因素;如果从新设备、异常地理位置访问财务系统,则强制 FIDO2 硬件密钥。策略的输入通常包括用户/组、设备合规状态、位置、应用敏感级别、登录风险评分。输出则是允许、拒绝、要求 MFA、要求合规设备或限制会话。一个可落地的策略示例:

策略名称:财务系统高风险访问
条件:
  用户组 = finance-team
  应用 = finance-erp
  设备 = 非托管 或 不合规
  位置 = 非可信网络
访问控制:
  要求认证强度 = 抗钓鱼 MFA(FIDO2)
  要求设备合规 = 是
  会话时长 = 1 小时
  若失败 → 拒绝并记录风险事件

这里的关键是“认证强度”要可度量。业界常用 AAL(Authenticator Assurance Level)描述:AAL1 单因素,AAL2 多因素,AAL3 硬件密钥加抗钓鱼。条件访问策略应把应用敏感级别映射到最低 AAL,而不是笼统要求“开 MFA”。

无密码部署:从试点到规模化

无密码不是“取消所有认证”,而是用 FIDO2 等抗钓鱼凭证替代密码。落地路径通常分三步。第一步,在身份提供方(如 Entra ID、Okta、Keycloak)启用 WebAuthn,并允许用户注册安全密钥或平台认证器(Windows Hello、Touch ID)。第二步,设置过渡策略:密码仍存在但不再作为主认证,而是作为恢复通道;对高敏感应用强制 FIDO2。第三步,逐步关闭密码登录,只保留受控的账户恢复流程。部署时要特别注意:每个用户至少注册两把密钥(一把主用、一把备用),否则设备丢失会导致锁定;同时要保留管理员应急通道,但该通道必须受硬件密钥和审批双重保护。

教学示例:某 200 人团队先让 IT 与财务 20 人试点 FIDO2,两周内注册率 100%,钓鱼模拟点击率从 18% 降到 0;随后推广到全员,并把 TOTP 降级为备用恢复方式。该数据为合理假设示例,用于说明观察指标,非实测结果。

认证强度与用户体验的平衡

安全与体验并非零和。可用“风险分层 + 无感认证”来平衡:低风险场景用平台认证器(指纹/人脸)一键完成,用户几乎无感;中风险场景要求 FIDO2 安全密钥触碰;高风险场景叠加设备合规检查与短会话。衡量指标建议关注:注册完成率、平均认证耗时、MFA 失败率、支持工单量、钓鱼模拟点击率。若认证耗时超过 15 秒或失败率高于 5%,通常说明策略过严或恢复流程不畅,应调整条件而非简单加严。最终目标是让最强认证出现在最需要的地方,让日常访问保持顺畅。