多因素认证 (MFA)

多因素认证 (MFA) 是当今最有效的安全措施之一, 即使凭据被泄露、通过 phishing 被窃取或通过暴力破解攻击获取, 也能将账户被攻陷的风险降低多达 99.9%。MFA 的工作原理是 要求用户提供来自不同类别的多个认证因素——你所知道的 东西(密码、PIN)、你所拥有的东西(智能手机、hardware token、smart card)以及你本身的 特征(面部生物特征、指纹、声纹识别)——从而确保攻击者 必须攻陷多个独立系统才能获得未经授权的访问权限。尽管其 有效性已得到验证,MFA 的实施仍面临与 用户体验、组织对变革的抵触、hardware token 的部署成本、 与 legacy 系统的集成复杂性,以及新型攻击技术的出现相关的重大挑战, 例如 MFA fatigue、session hijacking 以及通过复杂的社会工程进行的绕过。本文 探讨了各种可用的 MFA 方法——从 SMS-based(安全性最低)到 FIDO2/WebAuthn phishing-resistant(安全性最高)——分析了针对 MFA 的新兴攻击向量,提出了 分阶段实施策略,以在最大化采用率的同时尽量减少阻力,并 为企业和消费者环境中多因素认证的配置、监控以及应对绕过尝试 建立了最佳实践。

认证因素

因素类别

  • 你所知道的:密码、PIN、密保问题
  • 你所拥有的:智能手机、hardware token、smart card
  • 你本身的特征:指纹、Face ID、视网膜、声纹
  • 你所在的位置:Geolocation、IP whitelist、device trust
  • 你的行为方式:打字模式、鼠标移动

规则:真正的 MFA 组合来自不同类别的因素

MFA 方法(按安全性)

1. FIDO2/WebAuthn(安全性最高)

      # Hardware Security Keys (YubiKey, Titan Key)
      - Phishing-resistant (没有可拦截的代码)
      - Cryptographic challenge-response
      - 支持 passkeys (passwordless)
      - 耐用,无需电池
      # 使用
      1. 用户输入密码
      2. 浏览器请求物理 token
      3. 用户触碰 hardware key
      4. 非对称加密验证设备
      5. 授予访问权限
      # 优点:
      - 无法进行 phishing (域名经加密验证)
      - 没有可拦截的代码
      - 离线工作
      - 抵御 MFA fatigue
      # 缺点:
      - 硬件成本 ($20-$70/key)
      - 可能丢失 (需要 backup key)
      - 采用需要培训
      

2. Authenticator Apps - TOTP

      # Time-based One-Time Password
      Apps: Google Authenticator, Microsoft Authenticator, Authy
      # 工作原理:
      1. Setup: 服务器生成 secret key,用户扫描 QR code
      2. 应用基于以下内容生成 6 位代码:
      - 共享的 secret key
      - 当前 timestamp (30 秒窗口)
      3. 用户在登录时输入代码
      4. 服务器用自己的计算进行验证
      # 算法:
      TOTP = HOTP(K, T)
      其中 K = secret key, T = floor(unix_time / 30)
      # 优点:
      - 离线 (无需互联网)
      - 比 SMS 更安全
      - 免费
      - 同一应用中可使用多个服务
      # 缺点:
      - 代码可能被 phishing
      - clock sync 至关重要
      - 设备丢失 = 失去访问权限 (backup codes!)
      

3. Push Notifications

      # Apps: Duo Push, Microsoft Authenticator
      1. 用户尝试登录
      2. push 被发送到智能手机
      3. 用户在通知中批准/拒绝
      4. 响应返回到服务器
      # 优点:
      - 出色的 UX (一次点击)
      - 丰富的上下文 (位置, device info)
      - 离线检测
      # 缺点:
      - MFA FATIGUE: 用户不假思索地批准
      (攻击者刷屏发送 pushes 直到获得批准)
      - 需要互联网
      - 如果用户不验证上下文,可能发生 phishing
      

4. SMS(安全性最低 - 应避免)

      # 通过 SMS 发送的 6 位代码
      1. 用户尝试登录
      2. 通过 SMS 发送代码
      3. 用户输入代码
      # 漏洞:
      - SIM swapping: 攻击者将号码转移到自己的 SIM
      - SS7 exploits: 在电话网络中拦截 SMS
      - Phishing: 用户将代码提供给攻击者
      - 社会工程: 攻击者说服运营商
      # 何时使用:
      - 聊胜于无
      - 为没有智能手机的用户提供 fallback
      - SMS 是唯一可行选项的市场
      # 缓解措施:
      - 与运营商设置 number portability 阻止
      - 对 SIM 变更进行额外验证
      - 对 SIM swap 尝试发出警报
      

针对 MFA 的攻击

MFA Fatigue Attack

      # 攻击:
      1. 攻击者掌握受害者的密码
      2. 反复尝试登录
      3. 每次尝试都发送一条 push notification
      4. 用 100 多条 pushes 轰炸受害者
      5. 受害者为停止通知而批准
      6. 攻击者访问账户
      # 防御:
      - MFA prompts 的 Rate limiting (每小时最多 3 次)
      - Number matching: 用户输入应用中显示的数字
      - 详细的上下文: 位置, IP, 设备
      - 对多次尝试发出警报
      - 培训用户: 切勿批准意外的 push
      

Man-in-the-Middle (MitM)

      # Evilginx2 - Phishing MFA bypass
      1. 攻击者创建合法网站的 reverse proxy
      2. 受害者通过 phishing 访问虚假网站
      3. 受害者用密码 + MFA 登录
      4. proxy 捕获 session cookie
      5. 攻击者使用 cookie 访问真实账户
      # 防御:
      - FIDO2/WebAuthn (domain-bound)
      - Device trust/fingerprinting
      - Anomaly detection (新设备, IP)
      - 短期 sessions
      - 对关键操作进行重新认证
      

SIM Swapping

      # 针对 SMS MFA 的攻击:
      1. 攻击者对运营商客服进行社会工程
      2. 将号码转移到攻击者的 SIM
      3. SMS MFA 发送给攻击者
      4. password reset 流程被攻陷
      # 缓解措施:
      - 不要使用 SMS MFA
      - 与运营商设置 port freeze
      - 对账户变更设置额外 PIN
      - 监控 port out 尝试
      - 迁移到 TOTP/FIDO2
      

企业实施

Rollout Strategy

      # Phase 1: Pilot (1 个月)
      - IT 团队和 early adopters
      - 测试不同方法
      - 收集 UX feedback
      # Phase 2: Privileged Users (2 个月)
      - Admins, 高管, 财务
      - 为高风险角色配备 hardware tokens
      - 专项培训
      # Phase 3: General Rollout (6 个月)
      - 按部门逐步推进
      - TOTP apps 作为默认
      - SMS 作为临时 fallback
      - Support desk 准备就绪
      # Phase 4: Mandatory (12 个月)
      - 禁用 SMS MFA
      - 完全 enforcement
      - 仅在获得 approval 时才允许例外
      

MFA 平台

  • Duo Security: Push, TOTP, WebAuthn, 易于集成
  • Microsoft Authenticator: 集成 Azure AD, passwordless
  • Google Authenticator: 简单的 TOTP, 无 backup
  • Authy: 带 cloud backup 的 TOTP, multi-device
  • Okta Verify: 带 MFA 的 Enterprise SSO
  • RSA SecurID: Hardware tokens, legacy 系统

Passwordless Authentication

      # Passkeys (FIDO2) - MFA 的未来
      1. 注册:
      - 服务器创建 challenge
      - 设备生成密钥对 (私钥保留在设备上)
      - 公钥注册到服务器
      2. Login:
      - 设备上仅使用生物特征/PIN
      - 无传统密码
      - 无法进行 phishing
      # 优点:
      - 卓越的 UX (本地生物特征)
      - Phishing-resistant
      - 没有会泄露的密码
      - Cross-platform (iCloud Keychain, Google Password Manager)
      # 采用:
      - Google, Microsoft, Apple 正在推动 passkeys
      - 逐步替代密码
      

Best Practices

  • 优先采用 FIDO2/WebAuthn用于高风险用户
  • TOTP apps 作为默认用于普通用户
  • 逐步淘汰 SMS MFA
  • Backup codes:生成 10 个以上恢复代码
  • Device trust:记住已知设备
  • Conditional MFA:仅在 risk score 较高时
  • 监控异常:Impossible travel, 新设备
  • 持续教育:MFA fatigue, phishing awareness

最终建议

为所有用户实施强制性通用 MFA。使用 TOTP apps (Google/Microsoft Authenticator)作为 baseline, FIDO2/YubiKey用于 admins 和高风险用户。由于 SIM swapping, 彻底淘汰 SMS MFA。配置 MFA prompts 的 rate limiting 以抵御 fatigue attacks。教育用户了解 number matching 和上下文 验证。规划长期迁移到 passkeys/passwordless