Skip to main content

TOTP, HOTP

TOTP (Time-based One-Time Password) 和 HOTP (HMAC-based One-Time Password) 是两种常见的双因素认证(2FA)方法,都用于生成一次性密码 (OTP) 来增强安全性。它们之间的主要区别在于生成密码的机制:

HOTP (HMAC-based One-Time Password)

  1. 生成机制:HOTP 基于 HMAC-SHA-1 算法和一个递增的计数器。
  2. 计数器:每次生成一个新密码时,计数器值增加一次。服务器和客户端都必须同步这个计数器。
  3. 有效性:生成的密码在被使用之前一直有效,直到计数器增加。
  4. 应用场景:适用于不依赖时间同步的场景,比如硬件令牌。

TOTP (Time-based One-Time Password)

  1. 生成机制:TOTP 基于 HOTP,但使用当前时间戳作为计数器。
  2. 时间步长:通常每 30 秒或 60 秒生成一个新密码。时间步长可以配置。
  3. 有效性:生成的密码仅在一个时间窗口内有效,过了这个时间窗口,密码就失效。
  4. 应用场景:适用于时间同步的场景,比如手机 APP 生成的动态密码。

具体区别

  1. 计数器 vs 时间戳

    • HOTP 使用递增的计数器。
    • TOTP 使用当前时间戳。
  2. 同步要求

    • HOTP 需要客户端和服务器保持计数器同步。
    • TOTP 需要客户端和服务器的时间同步。
  3. 密码有效期

    • HOTP 的密码在使用之前一直有效。
    • TOTP 的密码只有在特定时间窗口内有效。

实际应用

  • HOTP:适用于硬件令牌等不依赖时间同步的设备。
  • TOTP:广泛应用于手机应用程序,如 Google Authenticator、Microsoft Authenticator 等。

总结来说,TOTP 是基于时间的 OTP 方法,而 HOTP 是基于计数器的 OTP 方法。TOTP 更加适合现代应用,因为它依赖时间同步,不需要额外的计数器管理。