多因素认证 (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。
