在 6 位代码的背后:从零开始构建 HOTP 和 TOTP

主要观点:作者开始在工作中研究授权和认证,对一次性密码(OTP)登录很感兴趣,介绍了OTP的概念、两种常见类型(HOTP和TOTP)及其工作原理,包括如何生成TOTP和HOTP,还分享了自己用Kotlin实现的OTP生成演示应用及相关链接,并强调通过该项目对OTP工作原理有了更深入理解。

关键信息:

  • OTP是一种广泛使用的认证形式,仅在单次使用或有限时间内有效,可减少密码重放攻击风险。
  • HOTP基于递增计数器,TOTP基于当前时间(通常30秒间隔),二者在RFC中有标准。
  • 生成TOTP时,用当前时间作为计数器,通过公式计算;生成HOTP需确定秘密密钥、哈希函数和输出位数,涉及一系列哈希和运算操作。
  • 作者发布了OTP生成演示应用,可在其网站https://otp.dogac.dev/和GitHub仓库github.com/Dogacel/otp-server找到。

重要细节:

  • 传统密码可重复使用,易被泄露后被恶意冒充;而OTP每次使用不同。
  • 举例说明用秘密时钟实现OTP,但时钟本身不安全,需采取策略确保密码不可预测。
  • 客户端需同步计数器,否则可能被锁定;恶意者可通过钓鱼获取即将使用的登录代码。
  • 用时间作为计数器的TOTP可利用现代机器的时间同步技术,防止恶意者收集代码。
  • 生成HOTP的过程中,通过哈希、异或等操作及特定函数处理来确保安全性。
  • 作者发布的应用可测试和验证TOTP和HOTP工作流程。
阅读 32
0 条评论