什么是 TOTP?
基于时间的一次性密码 (TOTP) 是一种通过使用当前时间作为关键因素的算法生成的临时唯一代码。类似于通用的 一次性密码 (One-time password, OTP) ,TOTP 只能使用一次,但它有固定的生命周期,通常在 30 到 60 秒之间。到期后,会自动生成一个新代码。
TOTP 标准由互联网工程任务组 (IETF) 在 RFC 6238 中定义,并广泛应用于各种双因素认证 (2FA) 和多因素认证 (MFA) 系统中。由于 TOTP 依赖于客户端(用户设备)和服务器之间的时间同步,它们提供了高度的安全性,并且难以预测或重用。
TOTP 如何工作
TOTP 的生成包括以下步骤:
- 共享密钥:在初始设置期间,会生成一个共享密钥,并在客户端和服务器上安全存储。此密钥通常编码为二维码,用户可使用认证 (Authentication) 应用扫描该二维码。
- 时间间隔:将当前时间划分为固定间隔,通常为 30 秒。
- 算法应用:将共享密钥和当前时间戳输入基于散列的算法(通常为 HMAC-SHA1)以生成唯一的数字代码。
- 同步:客户端和服务器使用相同的共享密钥和当前时间戳独立生成代码。只有在两者同步时,代码才匹配。
- 验证:当用户登录或执行关键事务时,他们输入在其认证 (Authentication) 应用上显示的 TOTP。然后服务器将其与内部生成的 TOTP 进行比较以进行验证。
何时使用 TOTP
在大多数情况下,推荐使用普通的 OTP,但在无法“触发”新密码的情况下,建议使用 TOTP。
- TOTP 示例:认证器应用
- OTP 示例:电子邮件, 短信
OTP 和 TOTP 有什么区别?
主要区别在于 TOTP 是基于时间的,因此适用于设备未连接到服务器的情况。服务器可以轻松地向电子邮件地址或手机号发送新的密码,但这需要电子邮件或手机在线。然而,认证器应用可以保持离线并使用“时间”来验证密码。