『回复列表(14|显示机器人聊天)』
@老虎會游泳,不联网的设备也可以更新码字。你真的没用过安全令设备吗?网游或者网上银行都可以有,就是有个屏幕显示数字,每隔一段时间更新。就算没有用过,手机安全令总是见过吧,上面的数字也是不需要联网就能更新的。或者,你关闭网络,然后打开微信支付的付款码,点击“显示付款码数字”,然后盯着它看几分钟,就能看到付款码刷新。
更新的原理很简单,就是hash(密钥+时间)
。对于app,密钥是联网时置入的。对于硬件,密钥是出厂置入的。而时间是由设备内部的时钟维持的。所以不需要与外界有任何通信就可以自行产生新密码。然后就是,服务器端也会有同样的程序用于根据密钥和时间生成密码(在你绑定安全令或者手环的时候,服务器就知道你的密钥了)。两者一对,就能知道你是不是真的安全令/手环持有者。
但是,持有者光看当前的码字是无法知道密钥的,因为通常使用的hash函数都是密码学安全的(比如sha256),没有办法从结果反推输入。对于安全令,即使知道序列号等信息也不一定能得到密钥。因为序列号可能只是厂商密钥数据库中的id,不是密钥本身。最后就是,即使知道了密钥,但是如果不知道具体的hash函数,也无法生成码字(比如,码字可以通过md5(密钥+时间*2)
生成,也可以通过sha1(密钥/2+log(时间))
生成,等等),要生成还需要对运行在硬件内的程序进行逆向工程(得买个一样的然后花时间研究)。想要盗刷不是那么容易的。