TOTP 一看就懂:App 验证码如何工作
如果你曾在登录时被要求输入来自 Google Authenticator、Microsoft Authenticator 或 Authy 的 6 位验证码,那么你已经使用过 TOTP。TOTP 是 Time-based One-Time Password(基于时间的一次性密码)的缩写。它是一个简单但非常有效的安全增强方式。
这篇文章会用通俗易懂的方式解释 TOTP:它是什么、怎么工作、以及为什么比只用密码更安全。
什么是 TOTP?
TOTP 是一个会在短时间内不断变化的验证码(通常每 30 秒变化一次)。你在输入密码后再输入这个验证码。因为验证码不断变化,被窃取的验证码很快就会失效。
可以把它想象成一张 30 秒就自动失效的酒店门卡。即使被复制,也只能短暂生效。
为什么不能只用密码?
密码可能被猜测、泄露或重复使用。TOTP 提供了第二重验证:即使有人知道了你的密码,也需要你的设备上生成的动态验证码。
因此,TOTP 通常被称为 双因素认证(2FA):
- 你知道的:密码。
- 你拥有的:生成验证码的手机 App。
TOTP 到底是怎么工作的?
在设置时,网站与认证器 App 会共享一个 密钥(secret key),通常以二维码形式展示。App 扫描一次后保存。
之后,网站与 App 会在同一时刻生成相同的验证码:
- 读取当前时间。
- 将时间与密钥组合。
- 使用算法生成 6 位验证码。
因为网站与 App 拥有相同密钥且时钟同步,它们会在同一个时间窗口内生成相同的验证码,服务器只需校验你输入的码是否匹配即可。
简而言之:共享密钥 + 当前时间 = 临时验证码。
为什么验证码这么快过期?
快速过期就是安全关键。如果验证码被截获,它只能在极短时间内使用。多数系统会允许少量“宽限时间”(例如前后 30 秒),以应对手机时钟略有偏差。
如果手机丢了怎么办?
验证码在手机里,手机丢失可能导致无法登录。多数服务会提供 备用码(backup codes)。建议将其保存在安全位置(例如密码管理器)。如果服务支持,也可以绑定多个设备。
TOTP 和短信验证码一样吗?
不完全一样。短信验证码也是一次性密码,但短信可能被拦截或被劫持。TOTP 在本地生成,更不容易受到 SIM 换卡攻击。
常见问题
TOTP 需要联网吗?
不需要。App 只依赖当前时间和密钥,所以离线也能用。
为什么通常是 6 位数字?
6 位数字兼顾易用性与安全性,共有 1,000,000 种组合,在短时间窗口内足够安全。
一个 TOTP App 能用于多个网站吗?
可以。App 可以保存多个密钥,每个网站一个。
快速总结
TOTP 是一个简单却强大的安全层。手机和网站共享密钥,并用时间生成短时有效的验证码,让登录对你来说简单,但对攻击者来说难以绕过。
如果你的重要账号支持 TOTP,开启它是最值得的安全升级之一,只需几分钟即可完成设置。