我给大家科普一下吧 这样的产品 一般是 HMAC(静态因子 + 动态因子) = 20字节摘要。然后从这20字节里头取数据,比如Digest[19]低4位值作为索引 ,从前面16字节中取连续4个作为密码 静态因子: 是每个Key唯一的 这是在生产时烧录进去的 ,这个数据要同步到银行中心。这个算法是根据用户的序列号生成的,算法固定 不对外公布。 动态因子:1 时间 ,时间在生产时烧录进去,使用UTC时间,采用30s 或 60s步进一次的方法 2 事件 ,按一次产生一次密码,然后事件值+1 HMAC算法:根据需要:有MD5-HMAC SHA1-HMAC SHA256-HMAC 还有SM3等等算法。 根据需要进行选择,只要和银行的中心能够匹配上就可以。 基于时间或事件的OTP(One Time Password)每一个设备的RTC或EventVal不一定能和中心同步,有了偏差怎么办? 银行的后台有一个窗口算法,会向下或向上计算10个密钥对来匹配用户当前输入的密钥,如果匹配上了,自动设置一个用户的偏差值,下次用户再次使用的时候呢在根据这个偏差值再次上下浮动10个(当然也可以更多,更多的话会加重服务器负担)来和用户时间/事件值同步。 这样的设备成本很低,但是数量很大,一般小企业做不起来,银行弄几个承兑给你就能耗死你的流动资金。 再补充一点,静态因子和动态因子都是保存在RAM中的,电池没电了以后 这个设备就会失效。如果想自己换电池,得确保设备不能掉电,切记~~ |
欢迎光临 SylixOS嵌入式操作系统|论坛 (https://bbs.sylixos.com/) | Powered by Discuz! X3.2 |