简单了解一下TOTP(Time-based One-Time Password)

332 阅读1分钟

之前收到了Github的消息,需要我完成双因素认证,今天搞了一下。了解其原理的时候接触到了TOTP(基于时间的一次性密码)这个概念,在这里简单记录一下。

TOTP(Time-based One-Time Password)是一种基于时间的一次性密码算法,广泛用于双因素认证(2FA)和多因素认证(MFA),以增强账户安全性。

工作原理

  1. 共享密钥:用户和服务端共享一个密钥,通常通过二维码或手动输入。
  2. 时间同步:服务端和用户的TOTP生成器(如手机应用)时间同步。
  3. 时间分片:将当前时间按固定间隔(通常30秒)分片。
  4. HMAC计算:使用HMAC-SHA1算法结合共享密钥和时间分片生成哈希值。
  5. 截取密码:从哈希值中截取部分位数,生成6到8位的一次性密码。

优点

  1. 动态密码:密码随时间变化,每次不同,增加安全性。
  2. 离线生成:无需网络连接,依赖本地时间和共享密钥。
  3. 广泛支持:兼容多种认证应用,如Google Authenticator、Microsoft Authenticator等。

2FA_TOTP.drawio.svg