一、算法介绍
TOTP(Time-Based One-Time Password,基于时间的一次性密码)是一种用于生成一次性密码(OTP)的算法。它是基于HOTP算法的改进版本,通过引入时间作为动态因素,增强了安全性。TOTP算法广泛应用于双因素身份验证(2FA)中,如Google Authenticator和Microsoft Authenticator等应用。
方法原理如下:
1、TOTP算法可以基于密钥及时间戳,计算得到短暂有效的数字验证码
2、客户端和服务端共享相同密钥,登陆时,客户端计算得到验证码,和服务端计算的验证码匹配,服务
端认为校验一致,成功登陆
二、用户认证方案
使用TOTP算法做双因素认证时,在用户注册阶段,以二维码或字符串方式,提供用户密钥。在用户登录阶段,用户使用TOTP APP,生成动态数字校验码,完成二次认证,详细步骤如下
用户注册阶段
步骤:
- 用户提供基本注册信息(如用户名和密码)。
- 系统生成一个唯一的共享密钥,以二维码或字符串形式提供
- 用户可以使用TOTP应用(如Google Authenticator、FreeOTP)扫描二维码来保存共享密钥。
- 系统将共享密钥与用户信息一起保存在数据库中。
注意:共享密钥必须安全存储,且只能用户和认证系统知道。
用户登录阶段
步骤:
- 用户输入用户名和密码进行登录。
- 系统验证用户名和密码是否正确。
- 如果用户名和密码正确,系统要求用户输入通过TOTP应用生成的一次性密码,校验通过,登陆成功