OTP(One Time Password)
单次有效密码,即使用一次就失效的密码,也就说每次使用都是一个不同的密码。现在普遍用来作为认证的二次验证。这种二次验证的好处是能有效抵御暴力破解。
要使用这种密码就得有生产此种密码的生成方式:
- HTOP(HMAC-based One-time Password Algorithm) 基于计数器生成密码
- TOTP(Time-based One-time Password Algorithm) 基于HTOP,时间作为计数器
加密原理
基于AES + TOTP 的加密向量固定,动态生成密码(16位)
- data: 数据
- iv: AES加密向量
- key: TOTP密钥
- tm: 时间戳
- tmStep: 时间步长(Google默认步长是30秒)
- ws: 时间窗口大小
- aesKey: aes加密密钥
AESTOTP(data, iv, key, tm, tmStep, ws) = AES(data, iv, TOTP(key, tm, tmStep, ws)) = AES(data, iv, aesKey)
时间容错
为了处理服务器时间差异和传输时间损耗导致的时间不一致,设定时间窗口大小为3,时间步长30秒,这样就达到了总时间容错在59秒。我们现在运行的系统是使用的2分钟的时间步长,将容错扩展到了3分59秒。
总结:简单有效