|
回复 #6 欲火重生 的帖子
、每分钟一个7位密码。每天60*24=1440.占空间:
7*60*24=10.8K.
两年:10.8*365*2=7358400字节,约7.3MB。对单个将军令来说,可以接受。
而对服务器而言
仅梦幻西游据,称最高在线133万人。
假设售出100万台将军令。
服务器需要1000000*7.3=7,358,400MB近10T进行存储。空间开销过大。
所以不可能通过存储密码的原始方式进行。
2、推测原理可能为:
每个将军令有一个唯一的序列号、内置一个实时时钟产生当前时间、另外内置的唯一密码。工作时,每
分钟把内置密码和当前时间连在一起,进行HASH运算,结果转换成一个6位的数字,即动态密码。
3、服务器很简单了,数据库中只需要保存将军令的序列号和内置密码,通过当前时间可以用同样的运算
得到与将军令一样的结果,用来比较登录。
4、实时时钟的精度取决于晶体,18个月有效,每个密码有效期为一分钟,则说明晶体的精度是18个月误
差小于1分钟,即为1/777600,约为+-1.2PPM(百万分之1.2),这个精度是可以达到的。
该精度虽然理论可达。但近千元的卡西欧电子表尚达不到这个精度
(实测月误差10秒+,最好情况,年误差100秒以上)。
更何况成本如此低廉的将军令。
所以,我推测服务器端可通过将军令的动态口令进行自动时间指针调校。
我们设时间单位为分钟,当前时间为T。
从将军令来看,我们假设:
Hash(T-1)===1234566
Hash(T)====1234567
Hash(T+1)===1234568
在服务器端,此时,时间指针指向T,期望收到密码 Hash(T)==1234567
而此时,若服务器收到动态密码为是1234566,则可知对应的将军令时钟慢了,
〔〔则可将服务器上该将军令所对应的时间指针往回移动一个单位!!〕〕
于是,时间即被修正。
若5分钟后,该将军令再次登陆。而由于其时钟慢了一个单位,给出的密码是Hash((T-1)+5)
即Hash(T+4)。而对于服务器而言,由于上次的修正(指针回移了一个单位),
期望收到的正是Hash(T+4)
时间自动修正成功。
5 。按以上推测,必须拿到一枚将军令的 算法+序列号+内部当前时间+内置密码 才可破解。
事实上非常不容易。
在一定时间内,将军令仍然非常安全。但是价格确实偏贵。开发成本+生产成本估计只值几块钱。
网易又赚咯。 |
评分
-
5
查看全部评分
-
|