TOTP
本文约需 2 分钟阅读
TOTP (Time-based One-Time Password) 是一种基于当前时刻生成的一次性密码机制。它在 Google Authenticator、Microsoft Authenticator 等身份验证应用中被广泛使用。通常每 30 秒生成一个新的 6 位代码,作为附加在密码之上的两步验证要素发挥作用。截至 2024 年,TOTP 是采用最广泛的两步验证方式,Google、GitHub、AWS 等主流服务大多已支持。
现场使用案例
“我们将 TOTP 设为 AWS 生产环境账户的必备项。让全部 IAM 用户完成身份验证应用的设置,并应用了没有 MFA 就无法登录控制台的策略。”
TOTP 生成流程
共享密钥
当前时刻 (30 秒为单位)
HMAC-SHA1 计算
生成 6 位代码
TOTP 的工作原理
TOTP 是在 RFC 6238 中标准化的算法。它以服务器和客户端共享的密钥与当前时刻作为输入,用 HMAC-SHA1 计算哈希值,并从中提取出 6 位数字。只要服务器和客户端的时钟同步,就会生成相同的代码,从而完成身份验证。两步验证相关书籍 (Amazon)可用于学习技术细节。
具体的应用场景
一个常见的误解是“短信验证和 TOTP 的安全级别相同”。短信验证存在被 SIM 卡交换攻击或 SS7 协议漏洞利用而遭到拦截的风险。由于 TOTP 在设备内部完成,因此对这些攻击的防护要安全得多。NIST (美国国家标准与技术研究院) 也建议使用 TOTP 或硬件密钥,而非短信验证。
将密码管理器生成的强密码与 TOTP 相结合,即使密码泄露也能防止非法登录。请将 TOTP 的密钥与备份代码一起安全保管。为应对运行身份验证应用的智能手机丢失的情况,将备份代码打印在纸上保存在保险箱中,或在多台设备上设置身份验证应用,是实务上的最佳实践。账户保护实践书 (Amazon)也可作为参考。
这篇文章对您有帮助吗?