基于OTP的AES数据加密

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秒。

总结:简单有效

你可能感兴趣的:(AES)