TOTP 与短信验证码:哪个更安全?

都比只有密码强,但两者的安全差距比大多数人想象的大

短信验证码是普及率最高的两步验证方式——不用装 App,人人都会用。但在安全圈,它的评价并不好:美国标准机构 NIST 早在 2016 年发布的数字身份指南(SP 800-63B)中,就已将基于短信的验证列为"受限"(restricted)方式,不再推荐。为什么?

短信验证码的三个软肋

  • SIM 卡劫持(SIM Swapping)。攻击者冒充你,用社工手段说服运营商客服把你的手机号转移到他的 SIM 卡上。得手后,所有发给你的验证码都发到了他的手机里。这不是理论攻击——加密货币圈因 SIM 劫持导致的盗窃案每年都有大量报道,单案损失可达数百万美元。
  • 传输链路不可控。短信在运营商网络中明文传输,SS7 信令协议的老旧漏洞允许有能力的攻击者远程拦截短信;伪基站也能在局部范围内截获。你无法控制、甚至无法感知这条链路的安全性。
  • 钓鱼转发。钓鱼网站可以实时把你输入的短信验证码转发给真网站完成登录。虽然 TOTP 同样怕实时钓鱼,但短信多了"攻击者主动触发发码 + 冒充客服索要"这类更容易得手的社工剧本。

TOTP 为什么更可靠

TOTP 验证码由你的设备用密钥和当前时间在本地计算,全程不经过任何通信网络:

  • 没有传输环节,就没有拦截面——SIM 劫持、伪基站、SS7 漏洞对它统统无效;
  • 不依赖手机信号,飞机上、地下室、国外漫游都能正常出码;
  • 密钥掌握在自己手里,可以自由备份到多个验证器,不被某个手机号绑架。

直观对比

维度短信验证码TOTP 验证器
验证码产生位置服务器生成,经运营商网络下发本地离线计算
SIM 卡劫持❌ 直接沦陷✅ 不受影响
无信号/出国场景❌ 可能收不到✅ 正常可用
依赖第三方运营商
换手机号需逐个网站改绑不受影响
上手门槛最低需要一次性设置

实际建议

  1. 重要账号(邮箱、云盘、代码托管、金融类)优先绑定 TOTP 验证器,参考我们的GoogleGitHubMicrosoft 教程;
  2. 绑定 TOTP 后,检查能否把短信从验证方式中移除或降级——只要短信还是可用的兜底通道,SIM 劫持的风险就还在;
  3. 任何形式的 2FA 都强于裸密码。如果某个网站只支持短信,开着它仍然远好于不开。

准备换用 TOTP?拿到密钥后在线生成验证码:

使用在线 2FA 工具 →

相关阅读:Google 账号两步验证教程 · 丢失 2FA 设备后如何恢复账号