OTP 动态口令验证

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wxy540843763/article/details/84497359

OTP 动态口令验证。

简介

动态口令(OTP,One-Time Password)又称一次性密码,是使用密码技术实现的在客户端和服务器之间通过共享秘密的一种认证技术,是一种强认证技术,是增强目前静态口令认证的一种非常方便技术手段,是一种重要的双因素认证技术。
动态口令认证技术包括客户端用于生成口令产生器的动态令牌,是一个硬件设备,和用于管理令牌及口令认证的后台动态口令认证系统组成。

目前在安全强认证领域使用的OTP动态密码技术,源于最早由RSA公司于1986年开发的RSA SecureID产品,动态密码并不是一次性密码技术,而是动态一次性口令技术。目前,国际上动态口令OTP有2大主流算法,一个是RSA SecurID ,一个是OATH组织的OTP算法。如果在国内来说的话,另一个是国密的OTP密码算法。RSA SecurID使用AES对称算法,OATH使用HMAC算法,国密算法使用的国密SM1(对称)和SM3(HASH)算法。

认证原理

动态口令的基本认证原理是在认证双方共享密钥,也称种子密钥,并使用的同一个种子密钥对某一个事件计数、或时间值、或者是异步挑战数进行密码算法计算,使用的算法有对称算法,HASH,HMAC,之后比较计算值是否一致进行认证。可以做到一次一个动态口令,使用后作废,口令长度通常为6-8个数字,使用方便,与通常的静态口令认证方式类似,使用方便与系统集成好,因此OTP动态口令技术的应用非常普遍,可以应用于多种系统渠道使用,如:Web应用,手机应用,电话应用,ATM自助终端等。
动态口令的同步机制有3种,即时间型、事件型和挑战与应答型,目前应用最多的是时间型动态口令,挑战与应答型动态口令的应用也逐渐增多,并且动态口令逐渐变为多种同步类型复合的机制发展,如时间+挑战与应答型。

OTP和常用的认证技术

  • USBKey: 申请PKI证书。
  • 动态口令卡:打印好的密码刮刮卡。
  • 动态短信:使用电信通道下发口令。
  • IC卡/SIM卡:内置与用户身份相关的信息。
  • 生物特征:采用独一无二的生物特征来验证身份,如指纹。
  • 动态令牌:动态口令生成器和认证系统
    比较如下:
解决方案 安全性 兼容性 价格 易用性 灵活性
USBKey/PKI 一般
动态口令卡 一般 一般
USBKey/PKI 一般 一般
USBKey/PKI 一般
USBKey/PKI 一般
USBKey/PKI 方便

常见的解决方案:

1.动态口令:

时间型口令,验证过程:
1.动态密码令牌产生动态密码,以时间和种子为参数,进行迭代,得出动态密码.这里的时间一般是秒数,每个时间性动态密码令牌中会内置一个时钟芯片。
2.服务器校验动态密码.服务器读取系统时间加上种子,以相同的迭代方法得出动态密码,然后双方进行比对.
但是由于服务器的时间和本地的时间有可能是不一致的。怎么解决?

  • 服务器校验是是在一个时间区间里校验的,比如现在是12:00,服务器会生成11:55-12:05中所有的动态密码,然后和令牌产生的动态密码比对,这样不就解决了时间不一致的问题了。另外服务器会把令牌和服务器相差的时间记录下来,下次检验的会先把这个偏移值记录下来,以减少动态密码迭代次数,这样就完成了另外一个比较重要的功能,偏移值自动调整。

口令是如何产生的?

  • 1.口令为一个单向的前后相关,长度为n(n>m)的序列,系统只记录第m个口令。用户用第i(i< n)个口令登录时,系统用单向算法算出第j个口令与自己保存的第m个口令匹配,以判断用户的合法性。由于N是有限的,用户登录N次后必须重新初始化口令序列。

  • 2.时间同步: 以用户登录时间作为随机因素。这种方式对双方的时间准确度要求较高,一般采取以分钟为时间单位的折中办法。在这种动态口令中,对时间误差的容忍可达±1分钟。

  • 3.事件同步: 通过某一特定的事件次序及相同的种子值作为输入,使用相同的算法运算出一致的密码,其运算机理决定了其整个工作流程同时钟无关,不受时钟的影响。它节省了用户每次输入挑战信息的麻烦,但当用户的挑战序列与服务器产生偏差后,需要重新同步。

  • 4.挑战/应答: 也叫异步认证方式。它比时间/事件同步方式操作相对烦琐,实现相对复杂,一般用于对安全性要求更高的场合,比如登录网上银行等,需要附加认证的情形。当用户需要访问系统时,远程认证服务器根据用户的电子令牌资料产生一个随机的数字串,即“挑战码”,用户将该数字串输入到电子令牌中。电子令牌利用内置的种子密钥和算法计算出相应的应答数(通常也是一个数字串).系统根据所保存的该用户相应电子令牌信息(种子密钥和算法)计算出应答数,并与用户输入的应答数进行比较。如果两者相同,则认证通过。由于口令每次都变化,即使得到密码也没用,而且这种动态口令由专用算法生成,随机性高,不太容易被破解。传统的木马程序即使窃取到用户个人信息,拿去登录银行网页,也已经过期。因此,动态口令极大地提高了用户身份认证的安全性。

使用场景:

银行通常提供给用户两种动态口令: 一种是固定数量的动态口令,最常见的就是刮刮卡。用户每次根据银行提示,刮开卡上相应区域的涂层,即可获得一个口令。刮刮卡成本低廉,使用方法简单,因此很多银行采用这种方法,如工商银行; 另一种是硬件形式的动态口令,即电子令牌,它采用专用硬件,每次可以用自带的密码生成芯片得到一个当前可用的一次性动态密码,交通银行等就采用这种方式。一般来讲,每个客户端的电子令牌都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时令牌与服务器分别根据同样的密钥,同样的随机数和同样的算法计算出认证时的动态口令,从而确保口令的一致性和认证的成功。因每次认证时,随机数的参数不同,所以每次产生的动态口令也不同。每次计算时参数的随机性保证了每次口令不可预测,以保证系统安全。

猜你喜欢

转载自blog.csdn.net/wxy540843763/article/details/84497359