OTP动态令牌是一种新型的强身份认证的信息安全产品,由于其具有使用简单,携带方便,安全性高,美观时尚等优点,已经广泛应用在网银系统,电子办公系统,网络游戏,网络支付等众多领域。

OTP动态密码的产生主要是通过内置在硬件中不可导出的密钥与一个变化因子通过安全算法进行计算完成的。即:算法{密钥(也称为种子),动态因子(时间,事件,冲击响应......)}=OTP口令

算法

可以看到算法有两个输入因子:密钥和动态因子。算法的好坏也决定了OTP的安全程序,一般算法应该考虑几点因素:

权威性:一个算法是需要经过长时间的研发积累,经过长期广泛的市场验证才能够走向成熟。真正成熟算法的研究需要几年,甚至十几年的时间。

安全性:OTP的算法一般不采用对称加解密算法,如:3DES,AES等。而采用单向散列算法。原因是这样的,拿时间型令牌说明,密钥+时间(动态因子)=OTP,时间是知道的,每分钟产生的动态口令能通过硬件知道,3DES算法也是公开的,这样就有反推出密钥的可能性。而单向散列算法,即使知道通算法计算的结果OTP,由于算法保证单向,那么从根本上就断绝了反推密钥的途径。

效率/耗电:OATH算法是国际OTP领域中公认的安全算法。

密钥

唯一性:每个动态令牌中的密钥都是唯一且不相同的,每个动态令牌与不同的用户绑定,那么该令牌中的密钥就代表这个用户的身份。

不可复制性:动态令牌硬件保证密钥不可导出,断电即毁。动态口令的计算在硬件内部完成。保证了密钥的安全。

产生/生产:两种模式保证了OTP密钥的唯一性:软实现(符合FIPS140-2标准),硬实现(使用国密办认证的硬件加密卡)。生产时密钥以密文的方式烧入到智能卡中(智能卡由专门的授权的人员负责,读卡器、通讯协议、COS都是自主研发,不公开),使用工控机烧入动态令牌密钥时,智能卡的COS会将烧入成功的密钥删除,所有的密钥烧录成功完成后,智能卡中就没有密钥了。

动态因子

动态因子可以有多种选择,目前较多使用的有如下3种:

a、时间型:以时间为变化因子。

b、事件型:以每次触发计算动态口令的计算事件行为为变化因子。

c、冲击响应:以服务器产生的随机数为变化因子。

目前国内以时间型最为流行。

附录

​http://www.what21.com/sys/view/service_server-service_1456896340934.html​

​https://github.com/andOTP/andOTP​