你使用过U盾吗?U盾最大的特点就是在进行转账和支付时,需要输入密码以及U盾中的动态密码。这个动态密码可不是随便给出的几个数字,它需要使用相应的加密算法来保障其安全性,而TOTP算法就是常用的动态密码算法。

TOTP算法简介

TOTP全称为“Time-based One-time Password algorithm”(基于时间的一次性密码算法),它是一种从共享密钥和当前时间计算一次性密码的算法,是OATH(开放身份验证计划)的基石,并被用于许多双因素身份验证系统。

TOTP

TOTP算法的原理

TOTP算法是基于散列的消息认证码(HMAC)的示例,它使用加密哈希函数将密钥与当前时间戳组合在一起以生成一次性密码。 由于网络延迟和不同步时钟可能导致密码接收者必须尝试一系列可能的时间来进行身份验证,因此时间戳通常以30秒的间隔增加,从而减少了潜在的搜索空间。

TOTP算法的流程

TOTP基于具有时间戳计数器的OTP(一次性密码),其算法公式为TOTP=HMAC-SHA-1(K, (T - T0)/X),其中K为共享密钥,T为当前时间戳,T0为开始的时间戳,X为时间步长。

  1. 密钥生成:在为帐户设置TOTP时,将生成一个唯一的密钥。该密钥在用户设备和认证服务器之间共享。
  2. 时间同步:用户设备和认证服务器需要同步到相同的时间源。TOTP算法依赖于当前时间来生成一次性密码。
  3. OTP生成:TOTP算法将密钥和当前时间结合起来,应用Hash函数生成一次性密码。此密码通常包含6-8位数字,并具有有限的有效期,例如30或60秒。
  4. OTP验证:当用户尝试登录时,输入常规密码以及由TOTP应用程序或设备生成的一次性密码。然后,认证服务器根据共享密钥和当前时间独立生成预期的OTP。如果用户输入的OTP与服务器生成的OTP匹配,则授权访问。

通过客户端和服务器持有相同的密钥并基于时间基数,服务端和客户端采用相同的Hash算法,计算出长度为六位的校验码。当客户端和服务端计算出的校验码相同时,则验证通过。

TOTP

TOTP算法的优缺点

  • 优点:TOTP是“基于时间的一次性密码”,因此在不断变化,这意味着,即使攻击者可以偷看当前令牌,几秒钟之后,它将被新的令牌代替。
  • 缺点:TOTP需要令牌生成器和认证服务器将其时钟设置为大致相同的时间,如若令牌生成器丢失或时间不一致,则会带来很大的麻烦。

免责声明:素材源于网络,如有侵权,请联系删稿。