本节摘要:身份验证(Authentication)核实访问者声称的身份,多因素认证(MFA)要求同时出示两种以上不同类别的验证因素。本节给出因素的严格分级、MFA 的真实强度排序(不是所有"第二因素"都等价),并拆解一次双因素登录的完整时序。承接第 4 章章首的凭据视角,本节鉴定信任链条的第一环,通往 4.2 节的授权体系。
先破一个流行迷思:"只要密码够复杂就安全。"复杂度对抗的是暴力猜测(2.3 节),但现实中密码的死穴另有三处:重用(撞库直接命中)、钓鱼(用户亲手交给攻击者)、数据库泄露(站点侧保管不善)。这三条死穴有一个共同点:无论密码多复杂都防不住——攻击者根本不用猜,密码是用户或站点亲手递出去的。
指望"更强的密码"解决不了"密码会被递出去"的问题,于是验证因素的思路从"你记得什么"扩展到"你持有什么、你是什么"。这就是多因素认证的出发点:把不同性质的凭据绑在一起,偷走其中一样不足以冒充本人。
验证因素按性质分三类:
多因素(MFA)的"多"有严格定义:必须是两类以上不同因素的组合。密码加密保问题是两道知识因素,只是双倍的单因素,不算 MFA;密码加手机验证码才是真双因素。这个定义经常被营销话术稀释——"双重验证"的招牌下可能挂着两个同类因素,鉴定时要在心里多问一句"这两样是不是一类"。
因素的实际强度排序和直觉并不一致,值得单独列出来:
验证因素强度谱(从弱到强, 以抗钓鱼能力为主要标尺): 密保问题 ≈ 无效 答案可从社交网络挖到 短信验证码 弱 可被 SIM 卡劫持与伪基站截获 TOTP 动态口令 中 本地生成不经过网络, 但可被实时钓鱼中继 推送确认 中 存在"疲劳轰炸"攻击, 用户误点通过 FIDO 硬件密钥 强 校验绑定站点域名, 钓鱼站拿不到有效凭据
注意短信验证码的位置:它是最普及的第二因素,也是防御者心里最没底的一个。它抗"密码泄露"有效,抗"定向攻击"勉强,抗"SIM 卡劫持"基本无效。给高管与财务岗位配短信 MFA,属于把最贵的锁装在最容易被撬的门上。
TOTP(基于时间的一次性口令)是当前企业环境的主流形态,看懂它的数据流,就知道它为什么"本地生成"是安全属性:
关键在最后一步:服务端与令牌应用共享一把注册时的密钥,各自本地计算,口令本身不在网络上传输——钓鱼站就算实时中继了第一轮登录,三十秒后口令就作废。这解释了 TOTP 比短信强的原因:短信把"第二凭据"送进了不可控的信道,TOTP 让它从不离开设备。
但 TOTP 仍可被"实时钓鱼中继"攻破:攻击者架一个假登录站,用户输入的密码和口令被即时转发到真站登录,攻击者接管会话。彻底解药是 FIDO 硬件密钥的"域绑定":密钥签名时校验的是真实站点域名,假域名签出来的凭据在真站无效——钓鱼从原理上失效。
MFA 要分级配发。 全员统一最强化验既贵又招人烦,合理的做法按资产风险定级:普通内网应用单因素加条件触发(异地、异常时段要求第二因素),核心系统与特权账号强制硬件密钥。1.2 节的"认证强度分级"在本节给出了具体抓手。
要为"用户被绕过"设计兜底。 任何 MFA 都可能被社会工程学绕过(攻击者冒充 IT 让用户念出口令)。兜底手段是让异常可见:新设备登录通知、异地告警、特权操作二次审批。这些动作把"绕过 MFA"从静默成功变成有痕迹的事件,把 3.3 节的检测体系接进身份域。
⚠️ 常见坑:MFA 的恢复流程成为后门。"手机丢了怎么找回账号"的找回流程如果只靠密保问题或客服电话核实,攻击者会直接打这里——门是钢的,窗户是纸的。恢复流程的强度必须不低于登录本身。
💡 关键直觉:判断一套认证方案的强度,别数它有几道,问一句"攻击者拿到密码之后还差几步"。差的步骤是不是同类因素、能不能被钓鱼中继一次性骗齐,这两个答案决定真实强度。
给不同人群配什么验证方案,拿这张表对号入座:
| 人群 | 推荐方案 | 理由 |
|---|---|---|
| 普通办公账号 | 密码加 TOTP,异地触发二次验证 | 平衡安全与摩擦 |
| 财务与高管 | 硬件密钥或推送加号码匹配 | 钓鱼高价值目标,须抗实时中继 |
| 运维特权账号 | 硬件密钥加堡垒机二次认证 | 4.2 节特权会话的入口再加一道 |
| 外部合作方 | 短期令牌加按应用授权 | 不给网络级入口,只给单应用 |
| 服务与脚本 | 密钥轮换加最小范围 API 授权 | 机器身份没有"手",全靠托管 |
表里"号码匹配"多说一句:推送确认的升级版——用户核对屏幕上显示的两位数字与登录页是否一致。它是针对"疲劳轰炸"的廉价改进。所谓疲劳攻击,是攻击者拿到密码后连夜连发推送,赌用户半夜手滑点下"确认"——真实案例里成功率不低。对抗思路有二:一是把"确认"变成"核对"(号码不匹配就暴露了攻击在发生),二是推送加频次上限与一键拒绝并报安全组。
还有一个容易被忽略的统计口径:MFA 的覆盖率要分"登录路径"统计,而不是分"账号"统计。很多组织账号层面双因素全覆盖,但服务账号还在用十年不变的静态密码直连系统——攻击者早就不走人的登录入口了。把 4.1 节的强度谱贴到每一类入口(人、服务、脚本、第三方集成)上,才算真的做完。
全员推 MFA 不是发个通知就完事,一份够用的四周排期:
第 1 周 试点: 两个部门先行, 收集绑定问题与体验反馈, 修订指南 第 2 周 分批: 按部门滚动开通, 每批留一周缓冲, 避免服务台被打爆 第 3 周 强制: 核心系统对未绑定用户开启"登录即引导", 只留阅读权限 第 4 周 收尾: 覆盖率报表发布, 服务账号与特例清单单独评审
排期里第 1 周的试点最值钱:绑定失败、令牌丢失、换机迁移这些长尾问题,两百人试点能把九成坑提前踩完。第 3 周的"登录即引导"是推广技巧的精髓——不是一刀切不让登录,而是留一条降级通道让用户自己走完绑定。MFA 推广的失败案例几乎全是节奏问题:一天全员强推,服务台瘫痪,管理层叫停,项目信用破产。慢慢来,反而快。
收尾补一个管理者视角的数据口径:向管理层汇报认证体系时,最有说服力的三个数字是"双因素覆盖率(按特权与普通分开统计)""凭据类事件数量同比"与"找回流程使用量"。第一个数字证明覆盖面,第二个证明有效性,第三个暴露恢复流程的压力与风险。三个数字每季度更新一次,认证体系的投入产出就再也不是一笔糊涂账。