TOTP 是什么
TOTP(基于时间的一次性口令)的核心很朴素:服务端和你的验证器 App 共享一个种子密钥,双方用「当前时间步长(通常 30 秒)+ HMAC-SHA1」算出同一串 6 位数字。服务器只要比对是否相等即可。
它到底防什么
2FA 防的是密码泄露或撞库:攻击者即使拿到你的密码,没有种子密钥也生成不了下一步的动态码。但它不防实时钓鱼,中间人可以把你刚输入的动态码立刻转发到真网站。
三种 2FA 强度对比
| 方式 | 强度 | 弱点 |
|---|---|---|
| 短信验证码 | 弱 | 可被 SIM 交换、信号拦截、运营商内部人员获取 |
| TOTP 验证器 App | 中 | 不绑定域名,易被实时钓鱼转发 |
| 硬件密钥 / Passkey(WebAuthn) | 强 | 绑定域名,钓鱼无法重放;需设备支持 |
使用建议
- 优先级:硬件密钥或 Passkey 最好,其次 TOTP App;短信验证码只作为兜底;
- 保存恢复码:离线打印或密码管理器存一份,防止丢手机后锁死账号;
- 分开存放:不要把 TOTP 种子和主密码存在同一处(别让密码管理器既存密码又存动态码还同步到同一云);
- 时间校准:验证失败先确认设备时间准确,时间漂移会让动态码对不上。
种子密钥与二维码
开通 2FA 时看到的二维码是 otpauth:// 链接,其中种子用 Base32 编码。截图保存等于泄露种子,请用支持加密导出的验证器。