TOTP, HOTP
TOTP (Time-based One-Time Password) 和 HOTP (HMAC-based One-Time Password) 是两种常见的双因素认证(2FA)方法,都用于生成一次性密码 (OTP) 来增强安全性。它们之间的主要区别在于生成密码的机制:
HOTP (HMAC-based One-Time Password)
- 生成机制:HOTP 基于 HMAC-SHA-1 算法和一个递增的计数器。
- 计数器:每次生成一个新密码时,计数器值增加一次。服务器和客户端都必须同步这个计数器。
- 有效性:生成的密码在被使用之前一直有效,直到计数器增加。
- 应用场景:适用于不依赖时间同步的场景,比如硬件令牌。
TOTP (Time-based One-Time Password)
- 生成机制:TOTP 基于 HOTP,但使用当前时间戳作为计数器。
- 时间步长:通常每 30 秒或 60 秒生成一个新密码。时间步长可以配置。
- 有效性:生成的密码仅在一个时间窗口内有效,过了这个时间窗口,密码就失效。
- 应用场景:适用于时间同步的场景,比如手机 APP 生成的动态密码。
具体区别
-
计数器 vs 时间戳:
- HOTP 使用递增的计数器。
- TOTP 使用当前时间戳。
-
同步要求:
- HOTP 需要客户端和服务器保持计数器同步。
- TOTP 需要客户端和服务器的时间同步。
-
密码有效期:
- HOTP 的密码在使用之前一直有效。
- TOTP 的密码只有在特定时间窗口内有效。
实际应用
- HOTP:适用于硬件令牌等不依赖时间同步的设备。
- TOTP:广泛应用于手机应用程序,如 Google Authenticator、Microsoft Authenticator 等。
总结来说,TOTP 是基于时间的 OTP 方法,而 HOTP 是基于计数器的 OTP 方法。TOTP 更加适合现代应用,因为它依赖时间同步,不需要额外的计数器管理。