QQ 安全令牌为啥离线的情况下(手机停机)能用,即安全令牌不需要连接网络就能与服务器同步

首先,要知道什么是令牌:令牌是一块具有一定运算能力和存储能力的硬件设备,用来产生一次性密码(也叫动态密码)。 其次,要了解令牌产生动态密码并进行认证的运作过程:令牌与服务器保留一个相同的字符串与一套相同的哈希函数。认证的时候,首先令牌用哈希函数去计算字符串+当前时间,得到随时间变化的密码;服务器接到密码后,同样也是利用哈希函数去计算字符串+当前时间,用得到的值去比较接到的密码,以此来验证用户身份的真伪。 在整个过程中,字符串与哈希函数均为不可被他人获得的信息。如果字符串与哈希函数被别人掌握了,那么系统的安全性将会严重降低。 再来说一下TX的安全令牌。为了降低用户成本,TX将硬件令牌做到了手机上。手机有充足的运算能力与存储能力,使硬件令牌变成软件令牌成为可能。 安全性:之前谈到了,字符串与哈希函数均为不可被他人获得的信息。真正的令牌,由于出厂的时候就已经把字符串与哈希函数刻录到令牌当中了,因此不必关心硬件令牌字符串与哈希函数的安全性。但是由于手机软件是可以被反编译,因此TX并不能解决哈希函数的安全性问题。 最后,回答你的问题:TX令牌的字符串是通过手机产生的随机数与TX服务器产生的服务器通过某种算法生成出来的,黑客不太容易同时拿到这两个随机数,那么保存在手机当中的字符串就是相对安全的。所以也不用每次都要通过网络了,也就可以在非联网的状态下使用了。
■网友
简单的说就是。首次绑定的时候,安全令牌和服务器约定算法。登陆的时候,令牌和服务器按照时间各自计算动态密码。
■网友
我猜。采用的是以时间(或者加上号码)产生的密码,手机客户端与qq服务器采用同样的加密函数,出来的密码是一样的,所以能够验证。
■网友
根据大家回答,我觉得是这样:最一开始时,QQ安全管家 和 QQ号码 绑定时,生成了一个随机的复杂的字符串(不是最终的验证码),这时候是需要联网同步的;之后根据时间和生成验证码的算法,手机上的QQ安全管家和 电脑上QQ程序 同时 为每一几秒钟的时间段计算出一个这段时间可用的验证码(这时手机不需要联网)。用户输入后,经QQ程序比对,相同则允许登录。如果这种说法正确的话,手机的时间偏差很大的情况下,手机上生成的验证码不能成功通过验证!——有空实验一下。——2015年5月26日
■网友
依靠依赖项以及时间就可以计算了.我想,依赖项应该是令牌的序列号/机器码我做了个简单的实现QQ 安全令牌为啥离线的情况下(手机停机)能用,即安全令牌不需要连接网络就能与服务器同步
【QQ 安全令牌为啥离线的情况下(手机停机)能用,即安全令牌不需要连接网络就能与服务器同步】
http://www.myluoluo.com/c%E9%80%9A%E8%BF%87%E4%BE%9D%E8%B5%96%E9%A1%B9%E4%BB%A5%E5%8F%8A%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%E7%94%9F%E6%88%90%E5%8A%A8%E6%80%81%E5%AF%86%E7%A0%81.love
■网友
动态令牌的原理是一次一密,基于静态种子和动态种子计算出来的几位随机数字。动态令牌在初始化的时候,会上传手机硬件信息等作为静态种子保存至数据库。场景进行验证的时候,令牌应用读取手机静态信息加上时间通过Hmac算法计算出6位随机数,服务端通过数据库保存的静态种子加上时间通过Hmac算法计算出6位随机数,只要时间没有出现漂移就能正常应用。
■网友
关键是手机与服务器需要时钟同步,当然,可以允许一定范围的时间偏移。


    推荐阅读