强制两步验证之前,先把恢复路径修好;否则你只是把「被盗」换成了「被锁」。
一、三起接管与一次强制
2026 年 9 月,林澈处理了第三起账号接管。三起的手法几乎一样:用户在别处泄露的密码被撞库,登录成功后改掉邮箱,再把账号里的数据导出。
以下情境为教学假设,人物、引语和数字不代表经核实的真实案例。
三起加起来,他花了约 18 小时:核验身份、恢复数据、通知用户、写说明。真正让他下决心的是第三起——对方用被接管的账号给客户发了邮件。
他决定强制两步验证,但只在管理员角色上先行,付费用户给 30 天宽限,免费用户保持可选。这个分档不是技术限制,是支持能力的限制。
强制 MFA 是一个支持承诺,不是一个开关。 打开它,你就承诺了「每个被锁的人都能找回来」;做不到这一点,强制的收益会被锁死工单吃回去。
他先写了一页「强制之后会发生什么」:谁会登录失败、失败之后找谁、多久回复、需要提供什么证据。写着写着他发现,这页文档本身就是一次压力测试——如果写不出「丢手机的人怎么办」,就不该现在强制。
二、18.4% 的开启率
强制之前,MFA 是可选功能,开启率 18.4%:1,240 个付费用户里 228 人开着。
| 人群 | 人数 | 开启率 | 说明 |
|---|---|---|---|
| 管理员 | 96 | 71.9% | 有安全意识的少数 |
| 普通付费 | 1,144 | 13.9% | 多数人没打开过设置页 |
| 合计 | 1,240 | 18.4% | — |
管理员的开启率是普通用户的 5.2 倍。这个差距说明:不是功能难用,是普通用户没有理由去找它。
按人群拆开之后,还发现一个反直觉的地方:付费最久的用户(订阅超过 12 个月)开启率只有 11.2%,比平均值还低。直觉会说老用户更在意账号安全,数据说不;老用户更可能把账号看成「已经稳定运行的东西」,不会去改设置。
可选的安全功能,开启率通常停在 10%–20%。 这不是用户不关心安全,是安全的收益看不见、成本立刻发生;没有外部要求,人不会主动选。
他还发现一个细节:228 个开启者里,有 61 人是被团队邀请时顺手打开的——邀请流程里有一句「建议管理员开启两步验证」,比设置页里的一整页说明有效得多。
61 这个数字是从后台的「开启来源」字段导出的,来源只有三个:设置页主动开启、邀请流程提示开启、管理员强制。三个来源的留存差别也很大:主动开启的人一年后还在用 MFA 的比例是 82%,被提示开启的是 61%,被强制的基本 100%——因为强制不能关。这说明「提示」能提升开启率,但留不住,真正稳定的只有制度和习惯。
三、强制 MFA 的三笔成本
10 月做了一个月的强制试点,收益和代价都能计量;下表右列是试点结果,不是估计值。
| 指标 | 强制前 | 强制后 | 变化 |
|---|---|---|---|
| 账号接管(起/年) | 3 | 0 | −3 |
| 登录成功率 | 96.1% | 93.7% | −2.4pp |
| 账号类工单 | 214/月 | 232/月 | +18 |
| 恢复码未保存 | — | 44 人 | 19.3% |
第一笔成本是登录成功率。4,180 次登录里多失败 100 次/月,大部分是验证器没带、时间不同步、或者换了手机。
第二笔成本是工单。100 次额外失败里,18 次变成工单,其余用户自己重试成功。18 张 × 7.5 分钟 = 2.25 小时/月。
第三笔成本最隐蔽:44 个人没有保存恢复码。他们现在能登录,但一旦丢手机就会锁死;这 44 个人是未来的 44 张高成本工单。
强制的收益是「不发生的事」,成本是「每天都发生的事」。 前者一年省 18 小时,后者每月多 2.25 小时;账面上收益更大,但收益看不见,成本天天见。
这就是为什么强制要分档:管理员账号一旦被接管,损失是全体用户的;普通用户的损失是他自己的。风险不同,强制的力度就该不同。
试点期的三个指标要一起看,缺一个就会误判。如果只看接管数,0 起比 3 起好;只看工单,+18 张是坏事。合起来看才成立:用 18 张工单和 2.4 个百分点的成功率,换掉了一类会造成客户流失的事件。
要注意 232 与 214 不是同一个口径。214 是未强制时一个月的账号工单,232 是强制试点那一个月的账号工单;增量 18 是这两个数字之差,不是新的基线。回到 30 天会话、不强制 MFA 之后,工单会回到 214 附近。
四、恢复码怎么发
恢复码是 MFA 的备份钥匙,但大多数人不会主动保存。他的做法是把「保存恢复码」做成开启流程里不可跳过的一步。
| 步骤 | 动作 | 设计要点 |
|---|---|---|
| 1 生成 | 一次性生成 10 个码 | 每个只能用一次 |
| 2 展示 | 一屏显示,可复制 | 不提供「稍后再说」 |
| 3 确认 | 勾选「我已保存」 | 不校验内容,只确认动作 |
| 4 提醒 | 30 天后邮件提醒 | 只提醒一次,不打扰 |
第 2 步是关键:很多产品把恢复码放在一个折叠区里,用户直接跳过。他把恢复码放在主流程上,必须点「我已保存」才能继续,开启流程因此多了 20 秒。
第 4 步是一次温和的兜底。30 天后给所有开启者发一封「你的恢复码还在吗」,只发一次;打开率 41%,其中有 12 人重新生成了恢复码。
31 次恢复码使用(13.6%)说明这个功能不是摆设:平均每个月有 2.6 个人靠它救回账号。如果没有恢复码,这 31 次会变成 31 张人工核验工单。
恢复码的价值不在「用了多少次」,在「没它就会锁死」。 它属于那种平时没人提、出事时救命的功能。
恢复码之外还要有一条人工路径。31 次恢复码使用只是「找到了码」的人;那 44 个没存码的人一旦丢手机,唯一的出路是你本人在后台核验身份。他的做法是要求提供注册邮箱的来信、最近一笔订单号,以及账号里一个只有本人知道的细节;三条对上才重置。这条路径一年走 6 次,每次 40 分钟,比任何自动化都慢,但它是强制 MFA 能成立的前提。
复算:
开启率:228 ÷ 1,240 = 18.4%
管理员:96 × 71.9% = 69 人开启;普通:1,144 × 13.9% = 159 人
合计 69 + 159 = 228 ✓
恢复码使用:31 ÷ 228 = 13.6%
未保存:44 ÷ 228 = 19.3%
成功率差:96.1% − 93.7% = 2.4pp
额外失败:4,180 × 2.4% = 100.3 ≈ 100 次/月
工单增量:18 × 7.5 = 135 分钟 = 2.25 小时/月
接管成本:3 起 × 6 小时 = 18 小时/年 → 强制后为 0
复算里 69 + 159 的和正好是 228,但这两个数是从开启率倒推的,不是实测人数;写进报表时要用实测值,倒推值只能用于解释比例。
五、行动清单与复算验收
- 统计当前 MFA 开启率,并按管理员与普通用户拆开。
- 统计过去一年的账号接管事件与处置时间。
- 评估强制的三笔成本:成功率、工单、锁死风险。
- 按角色分档强制,不要一刀切。
- 把恢复码放进开启流程,设为不可跳过。
- 30 天后发一次恢复码提醒,只发一次。
- 给「丢手机」写一条人工核验路径,并定响应时限。
- 强制上线后连续三个月看工单,别只看接管数。
验收标准:任取一个开启 MFA 的用户,都能说出他丢手机之后怎么找回账号。
前四条是「决定对谁强制」,后四条是「保证被锁的人能回来」。如果只有一小时,先做第七条:没有恢复路径的强制,等于把风险转嫁给支持。
使用边界与实操验收
18.4% 是一个产品的开启率。 面向企业的产品通常更高,因为采购会要求;面向个人的产品更低。
强制不一定适合所有阶段。 用户量很小、支持能力有限时,先做恢复码与人工核验,再考虑强制。
恢复码不是唯一备份。 如果产品有手机号,短信可以当第二条恢复路径,但要接受它的送达问题;他的产品没有收集手机号,所以恢复码 + 人工是唯一组合。选择哪条备份路径,取决于你愿意维护哪些通道。
MFA 不防所有接管。 它挡的是撞库与密码泄露,挡不住会话劫持与找回流程被滥用;后者要看会话与找回那两篇。
恢复码要能重新生成。 用户保存的纸质恢复码会丢;提供「重新生成并作废旧的」比只发一次更实际。
安全实现细节在另一组。 TOTP、WebAuthn 与备份码的算法与存储属于安全基线,这里只讨论强制策略与用户路径。
关键参考与核验范围
- OWASP 多因素认证速查表 :用于核对 MFA 类型、恢复码与降级策略。
- NIST SP 800-63B :用于核对认证保证等级与多因素要求。
- CISA:多因素认证 :用于核对强制 MFA 的推行顺序与常见阻力。
以上链接于 2026-10-27 实测可公开访问;未核验版本、功能范围与政策更新。核验日期:2026-10-27。
范围上只讨论两步验证的强制策略、恢复码与支持成本,不讨论认证器实现、密码学与合规认证要求。
系列导航
- 上一篇:会话与登出:七天、三十天与九十天的三档账
- 下一篇:账号合并与换绑:九十六次请求、四类冲突与一次误合并
- 回到目录:一个人的账号体系:一百零八张找回工单、三十天冷静期与 4.2% 的验证流失
- 相关阅读:一个人的安全基线:十四个入口、十七个密钥与一次 72 小时响应
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。