虚拟 MFA、短信 MFA、Push MFA 与 WebAuthn / Passkey 的安全边界
对比虚拟 MFA、短信 MFA、Push MFA 与 WebAuthn / Passkey 在抗钓鱼、部署成本、恢复和设备依赖上的安全边界。
#type / synthesis
#status / evergreen
#tech / security
#resource / mfa
#resource / webauthn
#resource / passkey
[!info] related notes
- 所属 MOC: 安全 MOC
- 相关概念: 多因素认证(MFA), 虚拟 MFA, TOTP(基于时间的一次性密码), WebAuthn, Passkey(通行密钥)
- 易混淆概念: 密码、短信验证码、认证器动态码、Passkey
- 相关资源: 认证器 App, 硬件安全密钥
虚拟 MFA、短信 MFA、Push MFA 与 WebAuthn / Passkey 的安全边界
范围
这篇笔记只比较几种常见二次认证方式在真实系统里的安全边界,不展开完整协议细节。
比较对象包括:
- 虚拟 MFA(通常是 TOTP 认证器)
- 短信 MFA
- Push MFA
- WebAuthn / Passkey
为什么要放在一起理解
这些方案都常被放进“开启 MFA”这一类产品开关里,但它们解决的问题并不完全一样。
真正需要一起比较的是:
- 防的是什么攻击
- 最脆弱的边界在哪里
- 服务端和用户侧分别要承担什么成本
依赖路径 / 调用链 / 演进链
从安全能力看,常见演进方向大致是:
无 MFA
-> 短信 MFA
-> 虚拟 MFA(TOTP)
-> Push MFA(带 number matching)
-> WebAuthn / Passkey / 硬件安全密钥
背后的提升逻辑主要是:
- 从“只有静态密码”升级到“多一个独立因素”
- 从依赖运营商信道升级到本地密钥或设备密钥
- 从可被实时转发的验证码升级到与站点绑定的签名
对比与易混淆点
| 方式 | 主要优势 | 主要短板 | 更典型防护点 |
|---|---|---|---|
| 虚拟 MFA | 成本低、离线可用、广泛兼容 | 不天然抗实时钓鱼,依赖 secret 安全 | 密码泄露、撞库 |
| 短信 MFA | 用户教育成本低,覆盖广 | 容易受 SIM Swap、短信劫持、延迟影响 | 弱化单密码风险 |
| Push MFA | 体验好,可结合设备上下文 | 容易遭受 MFA fatigue,需要 number matching | 常规登录确认 |
| WebAuthn / Passkey | 强抗钓鱼,域名绑定,私钥不出设备 | 生态接入和恢复设计更复杂 | 实时中间人钓鱼、凭证转发 |
几个关键判断:
- 虚拟 MFA 通常强于短信 MFA,因为它不依赖运营商信道。
- Push MFA 的安全性很依赖交互设计;只有“允许 / 拒绝”的 Push 很容易被疲劳轰炸。
- WebAuthn / Passkey 的关键优势不是“更方便的验证码”,而是它根本不依赖可转发的共享验证码。
- 对高权限账号而言,最薄弱点往往不是算法,而是恢复码管理和 MFA 重置流程。
可以把这几种方式的差异总结成一句话:
TOTP 主要防密码单独失守,WebAuthn / Passkey 进一步防实时钓鱼和凭证转发。