Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 850

一次性密码 (OTP)

审核人Cybersecurity entrepreneur & security researcher

一次性密码 (OTP) 是什么?

一次性密码 (OTP)只在一次登录尝试或短暂时间窗口内有效的短位数字码,通常用作第二认证因素。


一次性密码(OTP)是仅能使用一次的凭据,因此被截获的验证码在使用之后对攻击者便毫无价值。现代 OTP 由认证器(App 或硬件令牌)与服务器共享的密钥计算得出。HOTP(RFC 4226)对一个单调递增的事件计数器求 HMAC-SHA-1,再截断为 6-8 位数字码;TOTP(RFC 6238)用 Unix 时间除以步长(默认 30 秒)替代计数器,这正是认证 App 每 30 秒刷新的原因。OCRA(RFC 6287)将验证码绑定到服务器质询或交易数据,而较早的 S/KEY/OTP 方案(RFC 1760/2289)通过哈希链实现一次性使用。

通过短信或邮件下发很常见,却较脆弱:SS7 拦截、SIM 交换与移动端恶意软件都会暴露验证码,NIST SP 800-63B 自 2017 年起限制将短信用作带外通道。

其核心局限在于:凡是人能读取并重新输入的 OTP,都可被实时中继。Evilginx、EvilProxy 等中间人(adversary-in-the-middle)钓鱼套件会代理登录过程,截获 OTP 并在其有效期内重放。对高价值账户,应优先选择抗钓鱼、绑定来源的因素——FIDO2/WebAuthn 通行密钥(passkey),此类中继对其无效。

flowchart TD
  A[共享密钥已下发到 App 与服务器] --> B{OTP 类型}
  B -->|HOTP| C[递增事件计数器]
  B -->|TOTP| D[读取当前时间除以 30 秒步长]
  C --> E[对计数器或时间步长求 HMAC-SHA-1]
  D --> E
  E --> F[截断为 6 至 8 位数字码]
  F --> G[用户在登录时提交验证码]
  G --> H{服务器重新计算并在时间窗口内比对}
  H -->|一致| I[第二因素通过]
  H -->|不一致| J[拒绝]

● 示例

  1. 01

    Google Authenticator 每 30 秒刷新的 6 位 TOTP 验证码。

  2. 02

    用于授权银行转账的 SMS 一次性验证码。

● 常见问题

一次性密码 (OTP) 是什么?

只在一次登录尝试或短暂时间窗口内有效的短位数字码,通常用作第二认证因素。 它属于网络安全的 身份与访问 分类。

一次性密码 (OTP) 是什么意思?

只在一次登录尝试或短暂时间窗口内有效的短位数字码,通常用作第二认证因素。

如何防御 一次性密码 (OTP)?

针对 一次性密码 (OTP) 的防御通常结合技术控制与运营实践,详见上方完整定义。

一次性密码 (OTP) 还有哪些其他名称?

常见的别称包括: OTP, 一次性口令。

● 相关术语

● 另见