多因素认证(MFA)
多因素认证是在主认证之外再要求额外认证因素的身份验证机制,用于降低密码单点失守风险。
#type / concept
#status / evergreen
#tech / security
#resource / mfa
[!info] related notes
- 所属 MOC: 安全 MOC
- 前置概念: Cookie、Session、Token, jwt, oauth2
- 并列概念: 虚拟 MFA
- 易混淆概念: 虚拟 MFA
- 关系笔记: 虚拟 MFA、短信 MFA、Push MFA 与 WebAuthn / Passkey 的安全边界
多因素认证(MFA)
一句话定义
多因素认证(MFA)是在主认证之外,再要求一个或多个不同类型的认证因素,用来降低“密码泄露后可直接登录”的风险。
核心机制 / 工作原理
MFA 的核心不是“多输一次验证码”,而是把认证拆成不同类别的证明:
- 知识因素:你知道什么,例如密码、PIN
- 持有因素:你拥有什么,例如手机认证器、硬件安全密钥
- 生物因素:你是谁,例如指纹、人脸
只有当第二个因素和第一个因素不属于同一类时,才真正提高了安全边界。
常见场景是:
- 用户先通过主认证,例如账号密码。
- 服务端识别该账号需要额外验证。
- 用户再提供第二因素,例如 TOTP 验证码、Push 确认或安全密钥签名。
- 服务端校验通过后才签发最终登录态或允许高危操作。
MFA 主要解决的是:
- 密码泄露
- 撞库
- 单一凭证被窃取后的直接滥用
它通常还会和风控配合使用,例如:
- 新设备登录时强制二次验证
- 高危操作前做 step-up authentication
- 失败次数限速与锁定
最小例子 / 最小场景
一个典型的 Web 登录流程:
账号密码正确
-> 系统要求 MFA
-> 用户输入认证器里的 6 位码
-> 服务端校验通过
-> 登录成功
这时“密码”证明的是你知道秘密,“认证器里的动态码”证明的是你持有绑定设备。
边界与易混淆点
- 2FA 是 MFA 的常见子集,强调两个因素;MFA 更泛,允许两个以上因素。
- “密码 + 密保问题”通常不算强 MFA,因为两者都还是知识因素。
- 短信验证码、虚拟 MFA、Push MFA、WebAuthn 都可能被归入 MFA,但它们的抗钓鱼和抗接管能力差异很大。
- Passkey 往往把多种证明压缩成一次用户操作,但安全模型通常强于传统 TOTP。
- MFA 不是万能的,它无法天然抵抗设备被控、实时中间人钓鱼或弱恢复流程。