动态口令认证系统及方法

文档序号:6528261阅读:4188来源:国知局
专利名称:动态口令认证系统及方法
技术领域
本发明涉及通常的用口令(也称密码、通行字等)进行身份验证、访问控制的电子认证系统及方法。特别是涉及电子生成动态的、随机不可预测的口令,通过验证这些口令来正确识别已获得授权的个体或用户,并由此判定是否允许访问、进出、存取受保护的系统资源,是否提供有条件的服务,是否实现特许的业务往来等。本发明更特别地涉及各种通信网、电信网和计算机网中的访问控制和身份认证。
口令是最广泛使用的一种验证用户身份合法性的方法。授权的用户都拥有一个区别于系统中其他用户的标识符ID(用户名,序列码或帐号)和只有用户自己知道的秘密口令(PW或PIN)。如果用户想要登录系统,就须在请求节点键入自己的用户标示符和口令。系统内保留了所有授权用户的标示符和口令,认证节点利用收到的标示符提取该用户的正确口令,并用它与接收到的口令进行比较,如果匹配,则证明该用户身份合法,允许其进入系统或为其提供服务,否则该用户身份非法,拒绝其进入系统或不提供服务。在系统内直接保留用户的口令具有很大的风险,为了确保口令存放的安全性,一种解决方法就是用单向函数计算用户口令的杂凑值,并存储该值(例如UNIX)。认证节点接收到用户的口令后,就用单向函数计算该口令的杂凑值,并与系统中正确的杂凑值比较,以确定其合法性。现在,随着通信网络化的迅猛发展,口令在网上来回传输的机会越来越多,传统的口令认证系统没有提供口令在网上传输的保护机制的问题日显突出,口令在网上被黑客截取的事件日益增多。为使口令安全传输,简单地将口令加密后在网上传送的办法是徒劳的,丝毫也不会提高安全性。因为,黑客同样可以截获这些密口令,无需还原密口令成明的形式,直接用截获的密口令来冒充授权用户,同样可以达到目的。密口令对认证节点来说只不过是多了一次脱密的程序,无法由此判定用户的真伪。
要彻底解决这个问题的办法就是使用动态的口令,使每个口令只一次有效,只在很短的时间内有效,使口令随时间不可预测地随机变化,致使黑客即使截获到口令也只是一个无用的失效口令。动态口令通常是借助于一个便于用户携带的,象信用卡大小的,或者外形象普通计算器一样的装置来生成,这里我们称它为动态口令生成器、口令生成器或生成器,也简称为卡(card)或者令牌(token)。
美国专利US-4720860揭示了一种动态口令认证系统,它应用一个静态变量和一个源于时间的动态变量作为保密的密码算法的输入参数。每位授权用户的动态口令生成器中存储有一个固定码,同时在该生成器的表面也印记了这个固定码,以防忘记。动态口令生成器每隔一个固定的时间间隔(例如每隔一分钟)就自动生成并显示一个不可预见的动态口令,它是该生成器将固定码作为静态变量输入进密码算法中,并以此时时钟的时间(当然也包括日期等在内,通常时间精细到分钟)作为动态变量输入进该算法后生成的。授权用户一旦要请求访问,就向认证节点传送自己的固定码和当时生成器所显示的动态口令。认证节点通过使用与生成器相同的密码算法,连同这个固定码和认证节点时钟的时间,原则上这个时间应与动态口令生成器所使用的时间相同,也生成一个动态口令,该口令与接收到的口令相比较,以确定它们是否匹配。对于该系统,通过偷看授权用户所持有的口令生成器表面上印刻的符号,或在通信线路上截取,都可以很容易地获得固定码。因此,为了保证系统的安全性,计算口令的密码算法必须要保守秘密,如果算法的秘密被解开,整个系统的安全性都会因此而遭受损害。这也是为什么该专利要求,将密码算法存放在易挥发的存储器中,一旦企图解剖生成器,就彻底清除算法的原因。该专利中,无论是在授权用户持有的动态口令生成器方还是认证节点方的动态变量都要独立地生成,双方用来分别产生动态变量的时钟必须要一致,否则会拒绝正常的请求。但现实中,两个时钟之间有一定程度的相对偏差是不可避免的。在该专利的后续专利US-4885778中,揭示了一种保持时钟同步和具体验证用户的方法,它要求口令生成器在预先给定的时间间隔(例如1分钟,2分钟等)生成口令,而认证节点方必须要用比用户口令生成器确定的时间间隔大得多的持续时间长度(例如5分钟,10分钟等)来建立一个有效时间范围。当授权用户请求访问时,认证节点在有效的时间范围内计算多个口令(例如计算5个口令,10个口令等),如果用户的口令同其中之一匹配,则允许访问。显然,这个方法要求认证节点方的计算量要大得多,特别是,当口令生成器方同认证方的时钟偏差加大,所要求的有效时间长度相应地加大,认证节点方的计算量也随之明显地加大,因此,该方法必须要尽量缩短认证方有效时间长度才有较好的效果,这就对双方的时钟精度有较高的要求。另外,该方法不能较快速地排除接收到的非法口令,而且非法口令消耗系统的计算量要比任何合法口令所消耗的都多,因为,它必须要计算完有效时间内的所有口令,并逐一地同非法口令进行比较,到最后才能排除,这为黑客进行拒绝服务式攻击提供了便利。
在认证节点的服务器上可能具有较高精度、较稳定的时钟。但是,在口令生成器方情况就不一样了,降低制造口令生成器的生产成本是设计中要考虑的首要问题,在口令生成器上安装昂贵的、高质量和无偏差的时钟是不现实的。另外,口令生成器是提供给授权用户随身携带的,它的时钟容易受到许多不可预知的因素诸如温度变化、电压稳定性等的影响。因此,认证节点的时钟与口令生成器的时钟保持高度同步,在实际应用中是难以实现的,要同时与大量的口令生成器的时钟保持高度一致,则更是难以想象的。
试图在口令生成器上安装价格较低廉的时钟,使它与认证节点的时钟具有一定程度的同步就可达到生成安全可靠的动态口令一直是本领域努力的方向。美国专利US-5887065和US-5937068(同一发明,分案申请)揭示了一种具有时钟同步的用户认证系统,它使用了一个源于时钟,另一个源于用户请求认证的次数(实际就是口令生成器生成动态口令的次数)两个动态变量。这两个变量结合在一起被一个随口令生成次数变化的密钥加密(密码算法可以是公知的,例如DES,也可以是保密的),加密后的结果或结果的一部分,与这两个变量的最低的一些有效比特位(例如8个比特,其中4个比特是当时时钟变量的最低4比特,另4个比特是生成口令次数变量的最低4比特)连接一起构成一个动态口令。在认证节点接收到口令后,用该口令中的同步信息替换认证节点方相应变量值的低有效比特位(例如分别替换两个变量的低4个比特),判定替换后的变量是否在预先确定的有效范围以内,若不在其范围内,则对没有替换的高位部分增一或减一(例如在替换后的变量的第5比特位上加1或减1),再调节一次变量值,若都不在有效范围内,则认为该口令非法,拒绝访问;否则,只要在有效范围内,就用同一密码算法加密它们,并将加密的结果与用户的动态口令其余部分进行比较,匹配则认为该口令合法。在该认证系统中,由于其动态口令中包含了一些明的同步信息,如果口令共有n个比特(例n=30),传递的同步信息为m个比特(例m=8),则该口令的真实长度只有n-m个比特(例n-m=22)。因为每次猜中该口令的概率是1/2n-m=2m×1/2n,也就是说,每次猜中该口令的概率比真正n比特口令的概率1/2n高出了2m倍(例256倍)。在实际应用中,口令往往应当尽量的短,长口令会让用户厌烦,它既不实用,又不现实。因此口令中的每一比特位都十分珍贵,都应该充分地加以利用。在口令中以明的方式传递同步信息,也会降低生成动态口令的安全性,这些信息既为认证方的变量同步提供了便利,同时也为黑客和攻击者提供了重要信息。在生成口令时,这些信息既是密码算法的输入参数,又是决定密钥变化的参数,而且密码算法又是公开的,因此在知道了这些同步信息后,可以极大地缩小所要搜索的密钥空间。另外,决定口令生成的秘密密钥在每次生成口令之后都发生变化,会使认证节点对用户秘密密钥的管理带来不便,因为要安全有效地管理一个不断变化的秘密密钥会比管理一个固定的秘密密钥困难和复杂得多。
本发明的目的就是要提供一个动态口令认证系统和方法,以改进以上的不足。特别地,本发明的目的就是要使每个动态口令生成器生成的动态口令都能够隐藏地传递同步信息给认证节点方,既为认证节点方提供有效的同步信息,又不降低生成动态口令的安全性;同时,认证节点方能够利用所恢复的该同步信息,较迅速地排除非法口令,提高验证口令的效率。总之,就是要提供安全有效的动态口令认证的系统和方法。
本发明的目的通过以下技术方案实现本发明的动态口令认证系统包括至少一个动态口令生成器和至少一个能验证动态口令生成器所生成口令正确性的验证器,动态口令生成器内有秘密密钥和动态变量,验证器内有动态口令生成器的秘密密钥和验证方动态变量。
在该认证系统中使用的动态口令认证方法是a要产生口令时,动态口令生成器的微处理器执行以下步骤a1根据预先给定的长度和位置对动态变量进行分段,确定当前动态变量的段始值和偏移量;a2对秘密密钥、段始值、偏移量进行加密处理1,得出动态密码1;对秘密密钥、动态变量进行加密处理2,得出动态密码2;a3将动态密码1和动态密码2结合,构成动态口令;b将该动态口令传送至验证器;c要验证口令时,验证器的微处理器执行以下步骤c1将接收到的动态口令分离成动态密码1a和动态密码2a;根据验证方动态变量估计段始值和偏移量范围;c2对收到的动态密码1a、估计段始值、秘密密钥a进行加密处理1a,得到一个确定偏移量的值;c3若该值所确定的偏移量在允许的估计偏移量范围内,则以该值所确定的偏移量与估计的段始值一起还原出动态变量,对秘密密钥a和还原的动态变量进行加密处理2a,得到验证码,将验证码与所收到的动态密码2a比较,若匹配则用户合法,允许用户访问,验证过程结束;若不匹配或该值所确定的偏移量不在所估计的偏移量范围内,则判断是否还有另外的估计段始值,若无则用户为非法,拒绝用户访问,验证过程结束;若有则取下一个估计段始值,转步骤c2。
在所述步骤a2中,可对秘密密钥、动态变量和段始值进行加密处理2,得出动态密码2;相应地在所述步骤c3中,对秘密密钥a、还原的动态变量、估计段始值进行加密处理2a,得到验证码。
在所述步骤a2中,也可对秘密密钥、动态变量、段始值和偏移量进行加密处理2,得出动态密码2;相应地在所述步骤c3中,对秘密密钥a、还原的动态变量、估计的段始值、步骤c2得到的值所确定的偏移量进行加密处理2a,得到验证码。
在所述步骤a2中,还可先对秘密密钥、段始值进行加密处理1,得出动态密钥1,由动态密钥1产生动态变换表,再用动态变换表对偏移量进行变换,得出动态密码1;相应地在所述步骤c2中,先对秘密密钥a、估计段始值进行加密处理1a,得出动态密钥1a,由动态密钥1a产生动态变换表a,再用动态变换表a对动态密码1a进行变换,得出一个确定偏移量的值。
所述的由动态密钥1产生动态变换表得出动态密码1的方法是,用动态密钥1构造动态置换表,由该表将偏移量替换为动态密码1;相应地由动态密钥1a产生动态变换表a得出一个确定偏移量的值的方法是,用动态密钥1a构造动态逆置换表,由该表将动态密码1a替换为确定偏移量的值。
所述的由动态密钥1产生动态变换表得出动态密码1的方法是,用动态密钥1构造随机码组,以偏移量为位置来确定随机码组中的随机码为动态密码1;相应地所述的由动态密钥1a产生动态变换表a得出一个确定偏移量的值的方法是,用动态密钥1a构造随机码组,随机码组中与动态密码1a匹配的随机码的位置,为确定偏移量的值。
在所述步骤a2中,可先对秘密密钥、段始值进行加密处理1,得出动态密钥2,再对动态密钥2、动态变量进行加密处理2,得出动态密码2;相应地在所述步骤c3中,先对秘密密钥a、估计段始值进行加密处理1a,得出动态密钥2a,再对动态密钥2a、还原的动态变量进行加密处理2a,得出验证码。
在所述步骤a3中,可先对秘密密钥、段始值进行加密处理1,得出动态密钥2,再将动态密钥2和偏移量结合,得到新的动态密钥2,再对新的动态密钥2、动态变量进行加密处理2,得出动态密码2;相应地在所述步骤c3中,先对秘密密钥a、估计段始值进行加密处理1a,得出动态密钥2a,再将动态密钥2a和步骤c2得到的值所确定的偏移量结合,得到新的动态密钥2a,再对新的动态密钥2a、还原的动态变量进行加密处理2a,得出验证码。
此外,可令所述动态口令发生器产生一个验证器代码,验证方有一个验证器代码a,在口令生成方,对该代码、秘密密钥、段始值、偏移量进行加密处理1,得出动态密码1,对秘密密钥、动态变量、验证器代码进行加密处理2,得出动态密码2;在验证器方,对验证器代码a、秘密密钥a、估计段始值、动态密码1a进行加密处理1a,得出一个确定偏移量的值,对验证器代码a、秘密密钥a、还原的动态变量进行加密处理2a,得出验证码。
另一种在由动态口令生成器-验证器构成的动态口令认证系统中使用的动态口令认证方法是a要产生口令时,动态口令生成器的微处理器执行以下步骤a1根据预先给定的长度和位置对动态变量进行分段,确定当前动态变量的段始值和偏移量;a2对秘密密钥和段始值进行加密处理3,输出两个动态密钥,依据第一个动态密钥产生一个动态变换表,由该动态变换表将偏移量转换为动态密码1,第二个动态密钥与偏移量结合生成新的第二个动态密钥,以新的第二个动态密钥和动态变量进行加密处理4,得出动态密码2;a3将动态密码1和动态密码2结合,构成动态口令;b将该动态口令传送至验证器;c要验证口令时,验证器的微处理器执行以下步骤c1将接收到的动态口令分离成动态密码1a和动态密码2a;根据验证方动态变量估计段始值和偏移量范围;c2以指定口令生成器的秘密密钥a和估计的段始值进行加密处理3a,输出两个动态密钥,以第一个动态密钥a生成动态变换表a,由该表和动态密码1a,得到一个确定偏移量的值;c3若该值所确定的偏移量在允许的估计偏移量范围内,则以该值所确定的偏移量与估计的段始值一起还原出动态变量,以步骤c2所生成的第二个动态密钥与步骤c2求得的值所确定的偏移量结合生成新的第二个动态密钥a,以该新的第二个动态密钥a和还原的动态变量进行加密处理4a,得到验证码,将验证码与所收到的动态密码2a比较,若匹配则用户合法,允许用户访问,验证过程结束;若不匹配或该值所确定的偏移量不在所估计的偏移量范围内,则判断是否还有另外的估计段始值,若无则用户为非法,拒绝用户访问,验证过程结束;若有则取下一个估计段始值,转步骤c2。
所述动态变量分段的方法是,预先确定一个分段长度和位置,用分段长度指定一段内含有多少个动态变量,确定偏移量的取值范围,位置用来指定一段的起点,确定段始值的选取。
所述动态变量由时间或口令生成器产生口令的次数所确定。
若所述动态变量由时间确定时,分段的长度应足以大于动态口令生成器在有效期内,其时钟与验证器时钟之间的最大可能偏差;若由生成口令的次数确定时,则分段的长度应足以大于系统允许没有由验证器验证的、口令生成器连续生成的口令次数。
若所述动态变量由时间确定时,动态变量应是有一个基本持续时间间隔的预先确定的时间单位的时间值或其函数值;若由生成口令的次数确定时,动态变量应是该次数值或其函数值。
对所述段始值、动态变量进行加密处理之前,先对它们进行不同的编码。
由动态密钥1产生的动态变换表应大于偏移量的最大值。
当确定的分段长度不大于240时,取动态密码1的长度为8比特。
分段长度L的选取应使每天所确定的分段位置能够保持一致,分段位置的选定应避开用户较频繁地使用口令生成器的时间。
预先确定一个分段长度和位置,所述动态变量等于所确定段始值与某个特定值之积并加上所确定的偏移量。
在步骤c3,若得到的验证码与所收到的动态密码2a匹配,将还原的动态变量与最近一次成功访问所还原的动态变量进行比较,若大于该值,则用户合法,允许用户访问,并用还原的动态变量替代库中保存的最近一次成功访问所还原的动态变量,验证过程结束;若不大于该值,则用户非法,拒绝用户访问,验证过程结束。
估计段始值和偏移量范围的方法是根据验证方动态变量所确定的段始值和偏移量为基础,再选取前后临近的段始值或偏移量;其中,所选取临近的段始值至多一个,选取前后临近的偏移量至少1个。
估计段始值和偏移量范围的另一种方法是若所述动态变量由时间确定时,以验证方接收到动态口令时的时间所确定动态变量的段始值R和偏移量r为基础,依据最近一次成功认证的时间至此时的指定时间间隔的数量d2的大小确定应允许的误差范围[c1,c2],以及保存的最近一次还原的动态变量与当时验证器方时间所确定的动态变量的差值所确定的偏差offset,确定偏移量可能的最小值b1=r+offset+c1和可能的最大值b2=r+offset+c2,当b2<0时,估计的段始值为R临近的前一个段始值R1,估计的偏移量范围是[b1+最大偏移量值,b2+最大偏移量值],当b1<0<b2时,估计的一个段始值为R临近的前一个段始值R1,估计的偏移量范围是[b1+最大偏移量值,最大偏移量值],估计的另一个段始值为R,估计的偏移量范围是
,当b1>最大偏移量值时,估计的段始值为R临近的后一个段始值R2,估计的偏移量范围是[b1-最大偏移量值,b2-最大偏移量值],当b1<最大偏移量值<b2时,估计的一个段始值为R临近的后一个段始值R2,估计的偏移量范围是
,估计的另一个段始值为R,估计的偏移量范围是[b1,最大偏移量值],当b1和b2都不小于0,并且都不大于最大偏移量值时,估计的段始值为R,估计的偏移量范围是[b1,b2]。
若由生成口令的次数确定时,以验证方保存的最近一次口令生成器生成的已成功登录的口令所用的动态变量增一后所确定的段始值R和偏移量r为基础,根据系统确定的允许口令生成器连续生成口令,而这些口令又没有在验证器方成功使用的次数d,确定偏移量可能的最小值b1=r和可能的最大值b2=r+d,当b2>最大偏移量值时,估计的一个段始值为R临近的后一个段始值R2,估计的偏移量范围是
,估计的另一个段始值为R,估计的偏移量范围是[b1,最大偏移量值],当b2不大于最大偏移量值时,估计的段始值为R,估计的偏移量范围是[b1,b2]。
估计段始值和偏移量范围的又一种方法是若所述动态变量由时间确定时,以验证方接收到动态口令时的时间所确定动态变量的段始值R和偏移量r为基础,依据最近一次成功认证的时间至此时的指定时间间隔的数量d2确定应允许的误差范围[c1,c2],以及保存的最近一次还原的动态变量与当时验证器方时间所确定的动态变量的差值所确定的偏差offset,再依据初次成功认证的时间至最近一次成功认证的时间指定时间间隔的数量d1计算的平均偏差offset/d1,估计d2个指定时间间隔的偏差σ=(offset/d1)*d2,确定偏移量可能的最小值b1=r+offset+σ+c1和可能的最大值b2=r+offset+σ+c2,当b2<0时,估计的段始值为R临近的前一个段始值R1,估计的偏移量范围是[b1+最大偏移量值,b2+最大偏移量值],
当b1<0<b2时,估计的一个段始值为R临近的前一个段始值R1,估计的偏移量范围是[b1+最大偏移量值,最大偏移量值],估计的另一个段始值为R,估计的偏移量范围是
,当b1>最大偏移量值时,估计的段始值为R临近的后一个段始值R2,估计的偏移量范围是[b1-最大偏移量值,b2-最大偏移量值],当b1<最大偏移量值<b2时,估计的一个段始值为R临近的后一个段始值R2,估计的偏移量范围是
,估计的另一个段始值为R,估计的偏移量范围是[b1,最大偏移量值],当b1和b2都不小于0,并且都不大于最大偏移量值时,估计的段始值为R,估计的偏移量范围是[b1,b2]。
当口令生成器要产生口令时,根据预先给定长度L和位置对动态变量所进行的分段,确定当前动态变量的段始值(即当前动态变量所在段的起始点)和偏移量(即从确定的段始值至当前动态变量的偏移),以秘密密钥和段始值作为预先确定的第一个算法的输入参数,经算法作用输出两个动态密钥,依据第一个动态密钥产生一个动态的变换表,由该动态变换表将偏移量转换为第一个动态密码,以第二个动态密钥和动态变量作为预先确定的第二个算法的输入参数,经算法作用输出第二个动态密码,将第一个动态密码与第二个动态密码结合在一起就是口令生成器所生成的,授权用户所需的动态口令。
验证器从接收到的动态口令分离出第一个动态密码和第二个动态密码,以指定口令生成器的秘密密钥和根据验证器方动态变量的信息所估计的段始值作为预先确定的与生成器的第一个算法相同算法的输入参数,经该算法作用后输出两个动态密钥,根据第一个动态密钥生成一个动态的变换表,将所分离的第一个动态密码经逆变换表变换后还原出一个确定偏移量的值,如果该值所确定的偏移量在所估计的偏移量范围之内,则以该偏移量与估计的段始值一起还原出一个动态变量,以第二个动态密钥和还原的动态变量作为预先确定的与生成器的第二个算法相同算法的输入参数,经该算法作用输出第二个动态密码,将此时计算出的第二个动态密码与接收到的第二个动态密码进行比较,以确定动态口令的正确性,由此决定用户的合法性。
动态变量若是由时钟产生的日期和时刻所确定(以下简称由时间确定),则生成与时间相关的口令;动态变量若是由口令生成器产生口令的次数所确定,则生成与时间无关的口令。
如果动态变量由时间确定,动态变量应是预先确定的精细程度(或称时间单位)的时间值(当然包括日期等),这个精细程度或时间单位有一个基本的持续时间间隔,该时间间隔决定了口令多长时间就要发生变化,例如时间单位为15秒、30秒、1分钟等,则动态口令生成器每隔15秒、30秒、1分钟等所产生的口令就会发生变化。如果动态变量由口令生成器生成口令的次数确定,动态变量就是该次数值。
本发明对动态变量实施分段策略,来解决口令生成器的动态变量与验证器方动态变量的同步问题。本发明预先确定一个分段长度L和位置,分段长度L指定一段内含有多少个动态变量,即确定了偏移量的取值范围;位置指定一段的起点,即确定了段始值的选取。在分段长度L和分段位置确定的前提下,任意个动态变量即可唯一地确定一个段始值和一个偏移量,反之,由一个段始值和一个偏移量也可唯一地确定一个动态变量。实际上,任意动态变量都可以看成是其所确定的段始值与所确定的偏移量的一种组合。
如果动态变量由时间确定,为动态变量分段的长度L应当足以大于在动态口令生成器的有效期内,其时钟与验证器时钟之间的最大可能偏差。例如估计该偏差最大为30分钟,时间单位是1分钟,则L至少为30。这致使验证器估计口令生成器的段始值至多不会超过两个。验证器方是依据自己的时钟来估计段始值和相应偏移量的范围。如果动态变量由生成口令的次数确定,为动态变量分段的长度L应足以大于系统允许没有由验证器验证的、口令生成器连续生成的口令次数。验证器方是依据对该用户最近一次的成功验证所还原的动态变量增一后,来估计段始值和相应偏移量的范围。
段始值和动态变量值分别作为第一个算法和第二个算法的输入参数时,最好使用不同的编码方法对它们进行编码。
第一个算法和第二个算法可以是公开的标准算法,也可以是保密的算法;它们可以相同,也可以有一些区别;这两个算法最好是由密码学意义上安全的一些密码算法或伪随机数发生器构成,其目的是使得第一个算法和第二个算法输出的结果具有较好的随机性和不可预见性。
由第一个动态密钥所确定的动态变换表应适度地大于偏移量的最大值,以提高替代偏移量的第一个动态密码的随机、不可预见性。在L≤240的情况下,取第一个动态密码为8比特长是较理想的。
第二个动态密钥也可以先与偏移量相结合,生成一个新的第二动态密钥,再由此动态密钥和动态变量一起作为第二个算法的输入参数,经算法作用生成第二个动态密码。
估计基于时间的动态变量的段始值和偏移量范围时,共会出现5种可能发生的对段始值和偏移量的估计情况,并且其中只有两种情况下才会出现需要估计两个段始值。
估计基于口令生成次数的动态变量的段始值和偏移量范围时,共会出现2种可能发生的对段始值和偏移量的估计情况,并且其中只有一种情况下才会出现需要估计两个段始值。
本发明的优点是1.由于本发明引入分段策略来处理动态变量,无需要求双方所产生的动态变量保持非常一致,仅需由双方的动态变量所确定的段始值能相对同步,使动态口令生成器上的动态变量与验证器方的动态变量之间的偏差小于最大偏移量值就可以达到正确验证动态口令的目的,这有效地解决了口令生成器方的动态变量与验证器方的动态变量之间的同步问题。在通常情况下,验证器方仅需要估计一个段始值就够了,只有当口令生成器的动态变量所确定的偏移量接近其可能的最小值或最大值时,才会出现需要估计两个段始值的情况。另外,通过利用接收到的动态口令中的第一个动态密码所还原出的值,就可以排除掉绝大多数的非法口令,从而实现了较迅速地排除非法口令的访问,提高了验证口令的效率。
2.由于本发明利用动态变量的段始值在秘密密钥和第一个算法的作用下,生成两个随机的、不可预见的动态密钥。其中,第一个随机、不可预见的动态密钥确定出一个随机、不可预见的动态变换表,由该变换表将偏移量替换为随机、不可预见的第一个动态密码;这样就达到了隐藏地给验证器方传递同步信息的目的,使得用户所用动态口令的每一个比特既安全又有效,消除了传递多余明同步信息所造成的诸多不利。另外,第二个随机、不可预见的动态密钥与动态变量在第二个算法的作用下生成第二个随机、不可预见的动态密码;或者是先将第二个动态密钥与偏移量结合生成另一个随机、不可预见的动态密钥,再将该动态密钥与动态变量在第二个算法的作用下生成第二个随机、不可预见的动态密码,这样就实现了由不断变化的密钥来决定第二个动态密码的生成,并使验证器方无需管理一个不断变化的密钥,仅需管理决定该动态密钥的固定不变的密钥。
下面结合附图对本发明作详细描述。


图1是口令认证系统的一般性简图;图2是本发明两个动态口令生成器的正面视图;图3是本发明举例说明对动态变量分段的图示;图4是本发明的动态口令生成器生成动态口令时的操作运行原理流程图;图5是本发明的验证器验证接收到的动态口令时的操作运行原理流程图;图6是本发明的动态变量由时间确定时,验证器估计段始值及其相应偏移量范围的流程图;图7是本发明的动态变量由动态口令生成器生成口令的次数确定时,验证器估计段始值及其相应偏移量范围的流程图;图8是本发明的动态口令生成器生成动态口令和验证器验证接收到的动态口令时的流程图。
本发明的系统包括至少一个(通常是许多)由授权用户持有的动态口令生成器和至少一个(可以有多个)能接收授权用户的口令并能据此判定用户合法性的验证器。
本发明的口令生成器内部至少包括能执行本发明方法的动态口令生成程序的普通微处理器和能存储该程序和口令生成器密钥的存储器,需要时也拥有自己的电源,以提供运行程序的能量;对于生成与时间相关口令的口令生成器还需要有一个能提供时间信息的时钟。口令生成器通常是便于携带的、小巧的、其形状和大小如同信用卡或计算器;图2是两个口令生成器的正面视图,它们都有一个显示屏201,以显示所生成的口令或其它相关信息;当然,显示屏201也可以使用发声装置来代替,即不使用显示,而使用声音;200是仅有开关触发键202的口令生成器,这主要用于仅支持一个验证器或生成与时间相关的口令,并且口令生成器无需用PIN保护的情形,该种生成器的操作极为方便,当按一下触发键202,口令生成器根据预先确定的时间单位所具有的持续时间间隔不断地生成并在显示屏201上显示所生成的动态口令,授权用户就用当时显示的口令传递给验证器方,当再按一下该键202,就能终止口令的生成和显示,如此循环往复。图2的另一种口令生成器203有多个按键204,如数字键或功能键等,这主要用于能同时支持多个独立的验证器,或者口令生成器需用PIN保护,以防止口令生成器丢失后被非授权人员滥用的情形,该种生成器具有更好的保护措施,在生成口令之前,授权用户须先输入自己的PIN,只有当输入的PIN与存储在口令生成器中的PIN相同时,口令生成器才能启动口令生成程序。对于生成与时间无关的动态口令生成器,还可以用普通的智能卡实现,这可以省却电源,省却按键和显示屏,而利用读卡终端或相连接计算机上的按键和显示屏,这种生成器可大幅降低制造生成器的成本,可广泛应用于带读卡终端的环境里。
图1是本发明的动态口令认证系统的一般性简图。图中的100是授权用户才持有的口令生成器,请求节点101是授权用户向验证器103传递自己的用户ID和口令的工具,101可以是计算机、客户端、电话、手机等。请求节点也可以与口令生成器合二为一,例如将口令生成器做成固件嵌入于计算机等各种通信设备中,或者软件形式的动态口令生成器。通信通道102可由已知的任意类型的通信方式构成。验证器103包括能执行本发明方法的动态口令验证程序的处理器,以及能存储该程序和授权用户有关信息的存储器。验证器103在认证节点104内,认证节点104可以是主机、服务器,也可以是作为访问控制服务器的专用计算机;验证器103的口令验证程序可作为服务器程序驻留于认证节点104中,例如作为守护程序,并使用认证节点的CPU和时钟资源等,因此,可以将认证节点与验证器等同起来。当验证器103接收到从请求节点101传来的用户ID和动态口令,口令验证程序就将验证该动态口令,并确定该用户口令的正确性,若口令正确,则认为该用户是授权的合法用户,系统允许其访问资源或获得有条件的服务105等,若口令不正确,则认为该用户是非法的,就拒绝该用户访问。
动态口令生成器能生成动态口令是因为口令生成器内的动态变量能不断变化,验证器生成的口令与口令生成器生成的口令能够一致,则是因为验证器方能够确定口令生成器方生成口令的动态变量。本发明的动态变量的一种情况是由时钟产生的日期和时刻所确定(以下简称由时间确定),它生成与时间相关的口令;动态变量另一种情况是由口令生成器产生口令的次数所确定,它生成与时间无关的口令。
如果动态变量由时间确定,动态变量应是预先确定的精细程度(或称时间单位)的时间值或其函数值(例如,时间值为某个特定单向杂凑函数的输入后,该单向杂凑函数的输出值等),这个精细程度或时间单位有一个基本的持续时间间隔,该时间间隔决定了口令多长时间就要发生变化,例如时间单位为15秒、30秒、1分钟等,则动态口令生成器每隔15秒、30秒、1分钟等所产生的口令就会发生变化;例如,若生成口令时的时间是2000年1月30日9点35分0秒钟或者59秒钟,当时间单位是1分钟时,以0秒为该基本持续时间间隔的起点,无论是0秒钟还是59秒钟,动态变量都取2000年1月31日9点35分(当然,也可以取其它某秒为基本持续时间间隔的起点,这种情况不再赘述);当时间单位是30秒,0秒钟时的动态变量取2000年1月31日9点35分,而59秒钟时的动态变量取2000年1月31日9点35分30秒。
如果动态变量由口令生成器生成口令的次数确定,动态变量就是该次数值或其函数值(例如,次数值为某个特定单向杂凑函数的输入后,该单向杂凑函数的输出值等),口令生成器在生成一次口令后自动增一。例如口令生成器已产生了1000个口令,则此时产生口令的动态变量就是1000,产生下一次口令的动态变量则变为1001。
本发明对动态变量实施了分段策略,有效地解决了口令生成器的动态变量与验证器方动态变量的同步问题。预先确定一个分段长度L和位置选取,分段长度L指定一段内含有多少个动态变量,即偏移量最小可能值为0,最大可能值为L-1;位置指定一段的起点,即确定段始值的选取。由此,任意个动态变量就可唯一地确定一个段始值和一个偏移量,反之,由一个段始值和一个偏移量也唯一地确定一个动态变量。实际上,任意动态变量都可以看成是其所确定的段始值与所确定的偏移量的一种组合,例如它们之和,或更一般地,将动态变量表示成其所确定的段始值与某个特定值之积并加上所确定的偏移量,例如这个特定值可为预先确定的一个整数。对动态变量分段的长度L和位置的确定可以在一个认证系统内统一确定(即该系统内所有口令生成器的L和位置的选取都是一样的),也可以针对每一个口令生成器设置其L和位置的选取,甚至,也可以将它们的选取作为口令生成器可调节的参数,根据使用情况进行调节,当然,这个调节需要告知验证器方,验证器方也做相应的变化。
若动态变量由时间确定,分段的长度L应当足以大于该动态口令生成器在有效期内,其时钟与验证器时钟之间的最大可能偏差,或系统内所有口令生成器的时钟与验证器的时钟之间的最大可能偏差(系统统一确定情形),例如估计一个口令生成器的时钟与验证器的时钟的偏差最大可能值为60分钟,则当时间单位选取的是1分钟时,L至少应为60,当时间单位选取的是30秒时,L至少应为120。若系统内所有口令生成器的时钟与验证器的时钟的偏差最大可能值为两个小时,则系统可统一确定的L至少为120(当时间单位是1分钟)或L至少为240(当时间单位是30秒)。分段位置的选定最好避开用户较频繁地使用口令生成器的时间,假如上午9点左右用户使用较为频繁,L=120(时间单位是1分钟),则位置可选取为每天的8、10、…、22、0、…、6点整。这致使在该频繁期里,验证器估计口令生成器的段始值只会有一个(只有偏移量太大或太小时,才会出现需估计两个段始值的情况),由此,更有效地验证用户的口令。另外,为便于确定段始值和偏移量,分段长度L的选取最好使每天所确定的分段位置能够保持一致。假定口令生成器的有效使用期是四年,这里给出L和位置选取的具体实例基本时间单位L 每个月的平均偏差位置选定15秒 120<37.5秒每天的0.5、1、…、0点整15秒 240<75秒 每天的0、1、…、23点整30秒 120<75秒 每天的0、1、…、23点整1分 60<75秒 每天的0、1、…、23点整1分 120<150秒 每天的0、2、4、…、22点整1分 180<225秒 每天的0、3、6、…、21点整1分 240<300秒 每天的0、4、8、…、20点整基本时间单位就是前面所指的决定动态变量的时间单位,也是一个动态口令持续的时间,超过该持续时间,口令就会发生变化;所估计的口令生成器时钟与验证器所用时钟之间平均每个月的偏差应当足以小于上面的值;口令生成器时钟与验证器所用时钟之间的偏差越小,所使用的基本时间单位就可以越短,一个动态口令持续的时间越短,系统提供的安全性就越高。从上面的结果可以看出,通常将L限制在240以内,就可以满足实际应用的需要。
若动态变量由生成口令的次数确定,则分段的长度L应足以大于系统允许没有由验证器验证的、口令生成器连续生成的口令次数,例如设L=32,则用户使用口令生成器产生口令时,不能连续生成32个没有成功使用的口令,也就是说,这连续的32个口令必须有一个在验证器方获得验证,否则就会失去同步。由于此种动态变量对用户使用口令生成器的敏感性,最好使用有PIN保护的口令生成器,即图2的203有多个按键204的口令生成器。这可以有效地制止该情况的发生。
图3的300是对时间动态变量分段的一个例子,如果动态变量的时间单位是1分钟,L=120,即每段内有120个动态变量,位置取的是每天的0、2、4、6、8、10…20、22点整,302是8点31分(为叙述方便,将日期缺省,后面的例子均如此处理),305是8点31分50秒,则它们的段始值为8点整,偏移量都为31;304是10点13分12秒,则其段始值为10点整,偏移量为13。如果动态变量的时间单位是30秒,L=240,位置取的仍然是每天的0、2、4、6、8、10…20、22点整等,302的段始值为8点整,偏移量为62;305的段始值为8点整,偏移量为63;304的段始值为10点整,偏移量为26。
图3的310是对次数动态变量分段的一个例子,这里L=32,位置取的是0、32、64、96…等,312是18,则其段始值为0,偏移量为18;314是37,则其段始值为32,偏移量为5;315是64,则其段始值为64,偏移量为0。
请参阅图8所示口令生成和口令验证时的流程图。
a要生成口令时,动态口令生成器的微处理器执行以下步骤a1根据预先给定的长度和位置对动态变量进行分段,确定当前动态变量的407段始值和411偏移量;a2对405秘密密钥、407段始值、411偏移量进行加密处理1,得出419动态密码1;对405秘密密钥、406动态变量进行加密处理2,得出420动态密码2;a3将419动态密码1和420动态密码2结合,构成421动态口令;b将421动态口令传送至验证器。
c要验证口令时,验证器的微处理器执行以下步骤c1将接收到的421a动态口令分离出419a动态密码1a和420a动态密码2a;根据验证方动态变量估计502段始值和偏移量范围;c2对收到的419a动态密码1a、407a估计段始值、405a秘密密钥a进行加密处理1a,得到一个确定偏移量的值;c3若该值所确定的411a偏移量在503允许的估计偏移量范围内,则以该值所确定的411a偏移量与估计的407a段始值一起还原出406a动态变量,对405a秘密密钥a和406a还原的动态变量进行加密处理2a,得到420b验证码,将420b验证码与所收到的420a动态密码2a在511比较,若匹配则用户合法,509允许用户访问,验证过程结束;若不匹配或该值所确定的偏移量不在所估计的偏移量范围内,则判断是否还有另外的估计段始值504,若无则用户为非法,拒绝用户访问505,验证过程结束;若有则取下一个估计段始值,转步骤c2。
在步骤a2中,还可对405秘密密钥、406动态变量和407段始值进行加密处理2,得出420动态密码2;或对405秘密密钥、406动态变量、407段始值和411偏移量进行加密处理2,得出420动态密码2。
相应地,在步骤c3中,还可对405a秘密密钥a、406a还原的动态变量、407a估计段始值进行加密处理2a,得到420b验证码;或对对405a秘密密钥a、406a还原的动态变量、407a估计段始值、步骤c2得到的值所确定的411a偏移量进行加密处理2a,得到420b验证码。
图4是当用户触发动态口令生成器,如按一下图2的202键或204的某键等,口令生成器执行各种操作,以产生动态口令时的简明流程图。
对于有PIN保护或支持多个验证器的口令生成器图2的203,授权用户经204输入只有自己知道的PIN即401,口令生成器在402判别该PIN正确与否,例如生成器中保存有正确的PIN,将401与此比较,判定401的正确性,如果不正确,403拒绝进一步执行,关闭生成器。如果正确,若支持多个验证器,还要求204输入请求访问的验证器代码404,这样就启动了生成口令的程序(对图2的200,仅需按一下202就启动口令生成程序)。口令生成器先确定此时的动态变量406,若是时间,则从时钟取时间,若是生成口令的次数,则从存储该参数的存储器中取该动态变量,并根据已确定的L和位置确定该动态变量的段始值407和偏移量411。段始值407和动态变量406可用不同的表示形式,来作为408编码和412编码的输入值,也可以认为将段始值407和动态变量406不同的表示形式,作为408编码和412编码的开始。例如对于时间变量,在412可用相对于一个指定起始点(例如2000年1月1日0点)至此时(例如2000年1月1日8点31分)的时间单位(例如1分钟)的个数来确定(例如511整数值),在408可直接使用该时间的字符串表示,如段始值为2000年1月1日8点,可用“2000010108”的ASCⅡ码表示;对于口令生成次数变量(例如次数为131),在412可用该次数的整数值(例如131的整数值),在408也可用字符串表示,如段始值为128,可由“128”的ASCⅡ码表示。408和412编码对如上表示的值进行填补、取舍或进行一些简单的运算使其输出符合算法410和算法417的输入要求,并使它们的区别加大。对于支持多个验证器的情形,验证器代码需同段始值连接在一起作为408编码的输入。另外,PIN是否同验证器代码一起作为408编码的输入可以设定为系统可选方案,若PIN也作为408编码的输入,验证器方也需要存储该用户的PIN,由此构成一个双因素验证方案,即验证器不仅需要该口令验证器的秘密密钥,也需要用户的PIN。
算法410和算法417可以是公开的密码算法,也可以是保密的算法;410和417可以是相同的,也可以有一些区别;这两个算法都应当是密码学意义上安全的密码算法,例如加密算法DES,单向杂凑算法SHA等,也可以是密码学意义上安全的伪随机数发生器PRNG,例如ANSI X9.17标准,FIPS 186标准等所建议的生成伪随机数的方法等。无论使用哪一种算法或方法,其目的都是使410和417输出的结果具有很好的随机性和不可预见性,至于具体使用哪一个算法或方法,并不是本发明的主要内容,因此这里将可逆的加密算法、单向的杂凑算法或其它的密码算法等都统称为加密处理(如前述的加密处理1、2、3、4、1a、2a、3a、4a等)。为了举例说明的方便,这里假定410和417都是单向杂凑算法SHA。
动态口令生成器的秘密密钥405和408编码的输出作为算法410的输入,在SHA作用后输出160比特的结果,取前80比特作为第一个动态密钥413,取后80比特作为第二个动态密钥414。第二个动态密钥414和编码412的输出作为算法417的输入,在SHA作用后输出160比特的结果,根据确定生成动态口令421的长度m1+m2比特,其中第一个动态密码为m1比特,第二个动态密码为m2比特(为叙述方便,以下均以二进制为例进行说明,对于十进制、十六进制等同样可以类似地说明,不再赘述),取算法417输出的前面m2个比特(当然也可以取其它位置的m2比特)作为第二个动态密码420。本发明的一种简单方法是以秘密密钥405或其一部分作为算法417的密钥,作用412的输入后生成第二个动态密码420。本发明的另一种较好的情况是,第二个动态密钥414先与偏移量在415结合,生成一个新的第二个动态密钥416,再以416为密钥与412的输出作为算法417的输入。这里的结合415可以是各种逻辑或算术运算如模二加等,更安全的是使用一次单向杂凑函数,例如以414和411输入进SHA,其输出的结果作为新的第二个动态密钥416,因此结合415的选择余地是非常大的,只要使其输出具有较好的随机性和不可预见性。由于415结合的作用,使每一次生成第二个动态密码420所使用的密钥都不一样。根据第一个动态密钥413,生成一个能替代所有偏移量的动态变换表418,由该变换表将偏移量411变换成一个m1比特的第一个动态密码419。
一种生成动态变换表418的方法是在第一个动态密钥413的作用下,生成长度为l(l等于2的m1次幂,如m1=8时,l=256)的动态置换表i->Si(0≤i<l,0≤Si<l)。
这样,偏移量为k时,第一个动态密码419就是Sk。由随机、不可预测的第一个动态密钥413,创建一个随机、不可预测的置换表是不困难的,效率也是非常高的。这里可按如下步骤生成首先,设定Si的初始状态。可以设定为明的、任意确定的一个初始状态,例如取S0=l-1,S1=l-2,..,Sl-2=1,Sl-1=0,也可以将Si的初始状态作为口令生成器的密钥,即每个口令生成器的Si的初始状态都是不一样的,保密的。
然后,将第一个动态密钥413按序填入K0,K1,…Kl-1中(每个Ki均为ml个比特),如果第一个动态密钥413不够长,可重复利用该密钥,直到填满整个K0,Kl,…Kl-1,执行下述程序j<==0;FOR i FROM 0 TO l-1 DOBEGINj<==(j+Si+Ki) MOD 1;R<==Sj;Sj<==Si;Si<==R;END由此,就得到置换表i->Si(0≤i<l,0≤Si<l)。
m1的取值应不小于最大偏移量所拥有的比特数,通常取m1适当地大于最大偏移量的比特数。这样,由置换表的随机、不可预测性,可以提高第一个动态密码419的随机、不可预测性。这里以最坏的情况进行分析,设L是分段长度,l等于2的m1次幂,在偏移量为0时,猜中其对应的第一个动态密码419的概率是1/l;偏移量为1时,假定已知偏移量为0时的结果,猜中对应第一个动态密码419的概率是1/(l-1),…;偏移量为L-1时,假定已知前面的结果,猜中对应的第一个动态密码419的概率是1/(l-L+1);对任意一个偏移量,猜中对应的第一个动态密码419的平均概率P=(1/l+1/(l-1)+…+1/(l-L+1))/L,当l越大于L,该平均概率P就越小,因此,适当选取比L大一些的1即可满足实际的需求。例如下面几种情况m1L平均概率P8 60 0.4441%8120 0.5257%8180 0.6721%
8 2401.1432%9 2400.2632%可见,当L=60,120或180,m1=8时,猜中对应的419第一个动态密码的平均概率P是远远小于1/128=0.7812%,后者是猜中7个比特随机、不可预测码的概率,因此,这里使用长度为256的随机置换表所替代的8个比特的419第一个动态密码被猜中的概率远远要小于猜中7个比特完全随机、不可预测码的概率1/128;对于L=240,m1=8时的平均概率P也远远小于1/64=1.5625%,后者是猜中6个比特完全随机、不可预测码的概率;对于L=240,m1=9时的平均概率P要远远小于1/256=0.3906%,后者是猜中8个比特完全随机、不可预测码的概率。
另一种生成动态变换表418的方法是在第一个动态密钥413的作用下,生成共L组随机不可预测码,其中每组均为m1个比特,为叙述方便不妨称为生成随机码组方法。当411的偏移量为k时,则取第k组随机不可预测码作为第一个动态密码。具体可按如下步骤生成首先,按照上述方法生成一个动态置换表i->Si(0≤i<l,0≤Si<l)。
然后执行如下程序j<==0;FOR i FROM 0 TO k DOBEGINj<==(j+Si) MOD 1;R<==Sj;Sj<==Si;Si<==R;ENDt<==(Si+Sj) MOD 1;K<==St;这里,k是图4的411偏移量值k,K就是所求的第k组随机、不可预测码,即以此作为419第一个动态密码。按该种方法生成的m1个比特的第一个动态密码419被猜中的概率即为1/2m1。
这样一来,我们就达到了隐藏地传递同步因子的目的,使用较少随机、不可预测的比特码既传递了同步信息,又使口令的每个比特安全可靠,从而克服了US-5887065以明的形式传递同步信息的问题。
最后,将第一个动态密码419与第二个动态密码420结合在一起就构成了所要生成的动态口令421,例如,将第一个动态密码419与第二个动态密码420简单地连接在一起构成动态口令421,或者将第一个动态密码419的每一个比特按照预先指定的位置插入进第二个动态密码420之中构成动态口令421等,都是具体的结合方式,这个结合应当是可以分离的,即依据该结合方式,验证器方可从图5的动态口令421a分离出第一个动态口令419a和第二个动态口令420a。由于第一个动态密码419与第二个动态密码420是完全无关的随机、不可预测码,因此猜中动态口令421的概率是猜中第一个动态密码419的概率与猜中第二个动态密码420的概率之积。对于由生成口令次数确定的动态变量,在生成动态口令421之后,还需将存储在口令生成器的存储器中的该动态变量自动增一。
图5是验证器在获得用户的请求和口令后,为验证该动态口令,验证器操作运行原理的简明流程图。验证器拥有一个信息库501,它包含授权用户信息或口令生成器的秘密密钥,以及验证器每次验证后所记录的、用于同步口令生成器动态变量的有关信息。验证器接收到506用户的ID(或用生成器的序列号替代用户ID,以下均假设为用户ID)和动态口令421a后,如果是基于时间的动态口令,还需根据验证器的时钟,记录下接收到该动态口令的时间。由506的用户ID从501信息库中提取该口令生成器的405a秘密密钥,并利用信息库中所记录的该口令生成器的信息,在502估计该口令生成器生成动态口令的段始值及偏移量的范围,其具体估计方法在后面专门描述。407a取一个估计的段始值,如果是支持多个验证器或者PIN也要发生作用,还要从信息库501中取404a验证器代码或PIN,经408a编码(编码408a应与408编码一致,这里将与图4中功能一致或相近的方框均以附加a来表示,例如408a与408,也将与生成器方各功能对应的,在验证器方的功能附加a来表示,例如加密处理1与加密处理1a等),405a的秘密密钥与408a的输出作为算法410a的输入参数,输出动态密钥413a和动态密钥414a。根据413a的动态密钥生成动态变换表418a,要生成前述的动态变换表418的变换表的具体方法是,先按前述生成动态置换表的步骤,在413a的作用下生成置换表i->Si(0≤i<l,0≤Si<l),再按如下程序即得其逆置换FOR i FROM 0 TO l-1 DOBEGINj<==Si;Qj<==i;END由此得到逆置换表i->Qi(0≤i<l,0≤Qi<l)。将从动态口令421a分离的动态密码419a(如为i)经变换表418a变换,生成所需偏移量411a(如为Qi),503判断还原的偏移量411a是否在估计的偏移量范围内,如果411a在该范围内,则执行406a,否则执行504。
对应于另一种生成动态变换表418的方法,是以502中估计的偏移量范围中的每个偏移量值作为k,执行前面描述的生成随机码组的方法,得到相应结果K,若K与419a第一动态密码匹配,则认为k就是所需的偏移量411a,并执行406a;若在估计的偏移量范围内都没有匹配的结果,则执行504。
504询问是否还有其它估计的段始值(最多只可能有两个段始值),若还有,则返回至407a取下一个段始值再进行上述过程。如果没有其它段始值了,则505拒绝访问,判定该口令不正确,不是授权用户。在这里,绝大部分的非法口令都会被排除掉,而无需再进行后面进一步的操作,因此,较好地解决了US-4885778中所存在的,不能有效排除非法口令的问题。下表是各种条件下,排除非法口令的概率,这里设第一动态密码的长度为8个比特,即m1=8所估计偏移量范围内偏移量的个数排除非法口令的平均概率1 99.609%2 99.219%
3 98.828%4 98.437%5 98.047%6 97.656%7 97 266%8 96.875%9 96.484%1096.094%因此,只要L<256,设定第一个动态密码的长度为8个比特是较理想的。因为,流行的单片机是8位机,运行上述生成动态变换表的程序的效率会非常高,因此选择8个比特的第一个动态密码无论在安全需求、运行效率、空间大小等各方面都是较好的一个折衷。当然根据特定的需要,实际地加长或缩小第一个动态密码比特数也是可以的。例如,增加一个比特,在同样条件下,排除非法口令的平均概率就会进一步地提高。
406a依据所取的估计段始值407a和偏移量411a还原出动态变量406a,例如段始值407a和偏移量411a之和还原出动态变量406a,406a经412a编码后与414a动态密钥作为417a算法的输入参数。另一种情况是,414a先与411a在415a结合后生成新的动态密钥416a,然后再与412a的输出一起作为算法417a的输入参数。417a的输出为420b验证码,420b与从421a分离出的420a动态密码比较511,如果不匹配,则返回至504进行上面所述的操作。如果匹配,则在507判断还原的动态变量406a是否大于信息库501中记录的该口令生成器最近一次成功访问所用的动态变量(简称最近一次动态变量),如果不大于此,505拒绝访问,这就彻底杜绝了重放攻击;如果大于此,则验证器认为该口令是合法的,该用户是授权用户,在509允许其访问系统资源或提供指定服务等,同时,510将406a中所还原的动态变量用来替代信息库中存储的最近一次动态变量,以406a作为新的最近一次动态变量。另外,如果是基于时间的动态变量,在510还要将406a还原的时间与验证器接收到该动态口令时所记录的时间(图6的601)之间的差值作为偏差offset,存入信息库中,以替代原有的偏差。
图6是验证器方在接收到用户的口令后,依据自己的时钟和信息库中有关信息,估计口令生成器方生成口令时动态变量时间的段始值和相应偏移量的范围,即就是对502的详细说明。在这里,应事先说明的是,验证器方所使用的基本时间单位、分段以及位置的确定等要求都应当与口令生成器方一致,前面已对它们作了说明,不再赘述。验证器接收到用户的ID和口令后,先在601中记录此时的时间T。501信息库中的t是该用户上一次,也就是最近一次口令生成器生成的已成功登录口令所用的时间动态变量。t0是该用户口令生成器初次生成的已成功登录口令所用的时间动态变量。偏差offset就是最近一次口令生成器生成的已成功登录口令所用的时间动态变量与当时601中时间变量的差值(不妨设定为上次的t减去上次的T即为t-T,当然颠倒过来也可以,但意义相反),它反映了该口令生成器时钟与验证器时钟的偏移程度,当offset<0,表示验证器的时钟比该口令生成器的时钟相对地快offset个时间单位,反之则是慢offset个时间单位。为便于计算,这里的时间动态变量T、t和t0等可以相对于某一起始时间至该时的时间单位的个数来确定,例如假定以2000年1月1日0点整为起始参照时间,t0是2000年1月1日8点整,t是2000年1月1日10点整,T是2000年1月1日13点整,则它们可以分别表示为t0=480,t=600以及T=780。图6的605计算t0至t有多少个事先确定的时间周期长度(例如有d1个月,下面以月为周期长度说明),对计算月的数量取整即可,当不足一个月时,取0,不足两个月时,取1,等等;604计算t至T有多少个月(如d2个月),606利用已知的偏差offset估计在d2个月里会产生的偏差σ,当d1或者d2等于零时,设定σ等于0,即无需考虑此偏差,否则计算σ=(offset/d1)×d2。607根据d2的大小确定系统允许估计值误差的范围[c1,c2],因为d2越大,影响时钟同步的不可预知的因素就会越多,各种估计值(如σ)的误差也会加大;可以根据实际需要和具体情况确定范围[c1,c2],例如可如下设定其取值当d2=0,取c1=-2,c2=+1;当d2=1,取c1=-3,c2=+2;当d2=2,取c1=-3,c2=+3;不难看出,范围[c1,c2]就决定了验证器方估计偏移量范围内的偏移量个数。另一种办法是,为了简化计算,可以省去σ的计算(即设定σ=0),适当地将如上确定的[c1,c2]加以扩大即可,此时,就可以省去信息库中参数t0。例如当d2=0,取c1=-2,c2=+1;当d2=1,取c1=-3,c2=+3;当d2=2,取c1=-4,c2=+4;按口令生成器同样的分段标准,取601时间动态变量T的603偏移量r和602段始值R,然后在608根据606、607和603的结果计算出对偏移量的估计值,小的值b1=r+offset+σ+c1,大的值b2=r+offset+σ+c2。609如果b2<0,则610取紧邻R之前的一个段始值R1,偏移量范围取[b1+max,b2+max],这里max表示偏移量的最大值;否则611如果b1<0,则612取段始值R1,偏移量范围[b1+max,max],和段始值R,偏移量范围
;否则613如果b1>max,则614取紧邻R之后的一个段始值R2,偏移量范围[b1-max,b2-max];否则615如果b2>max,则616取段始值R2,偏移量范围
,和段始值R,偏移量范围[b1,max];否则617取段始值R,偏移量范围[b1,b2]。以上判断顺序并不是唯一的,例如可先判定b1是否大于max等等,另外,也可以先以offset是否大于零为序进行判断。因此,这里判断的顺序和方式是次要的,主要的是这里总共只会出现5种可能发生的对段始值和偏移量的估计情况,并且只有两种情况下才会出现612和616中需估计两个段始值。
图7是验证器方在接收到用户的口令后,依据信息库中的信息,估计口令生成器方生成口令时,以口令生成次数为动态变量的段始值和相应偏移量的范围,即也是对502的详细说明。501信息库中的c是该用户上一次,也就是最近一次口令生成器生成的已成功登录的口令所用的动态变量(即所用的生成口令的次数)。验证器506接收到用户的ID和口令后,701从库中取出c值并将c值增一,按口令生成器同样的分段标准,取701动态变量c+1的702偏移量r和703段始值R,704计算对偏移量的估计值,小的值b1=r,大的值b2=r+d,这里d值是事先确定的允许口令生成器连续生成的口令,而这些口令又没有在验证器方成功使用的次数,d值可以是由系统统一确定,也可以是因不同的用户而具体确定,并且跟踪每个用户使用的情况来调整,其作用相当于基于时间动态变量中允许误差范围[c1,c2],但是所确定的d值必须足小于已设定的段长度L。707如果b2大于max,则708取段始值R,偏移量范围[b1,max],和取紧邻R之后的一个段始值R2,偏移量范围
;否则709取段始值R,偏移量范围[b1,b2]。同上一样,这里判断的顺序和方式是次要的,主要的是这里共只会出现2种可能发生的对段始值和偏移量的估计情况,并且只有一种情况下才会出现708中需估计两个段始值。
权利要求
1.一种在由动态口令生成器-验证器构成的动态口令认证系统中使用的动态口令认证方法,动态口令生成器内有秘密密钥和动态变量,验证器内有动态口令生成器的秘密密钥和验证方动态变量;其特征在于a要产生口令时,动态口令生成器的微处理器执行以下步骤a1根据预先给定的长度和位置对动态变量进行分段,确定当前动态变量的段始值和偏移量;a2对秘密密钥、段始值、偏移量进行加密处理1,得出动态密码1;对秘密密钥、动态变量进行加密处理2,得出动态密码2;a3将动态密码1和动态密码2结合,构成动态口令;b将该动态口令传送至验证器;c要验证口令时,验证器的微处理器执行以下步骤c1将接收到的动态口令分离成动态密码1a和动态密码2a;根据验证方动态变量估计段始值和偏移量范围;c2对收到的动态密码1a、估计段始值、秘密密钥a进行加密处理1a,得到一个确定偏移量的值;c3若该值所确定的偏移量在允许的估计偏移量范围内,则以该值所确定的偏移量与估计的段始值一起还原出动态变量,对秘密密钥a和还原的动态变量进行加密处理2a,得到验证码,将验证码与所收到的动态密码2a比较,若匹配则用户合法,允许用户访问,验证过程结束;若不匹配或该值所确定的偏移量不在所估计的偏移量范围内,则判断是否还有另外的估计段始值,若无则用户为非法,拒绝用户访问,验证过程结束;若有则取下一个估计段始值,转步骤c2。
2.如权利要求1所述的动态口令认证方法,其特征在于在所述步骤a2中,对秘密密钥、动态变量和段始值进行加密处理2,得出动态密码2;在所述步骤c3中,对秘密密钥a、还原的动态变量、估计段始值进行加密处理2a,得到验证码。
3.如权利要求1所述的动态口令认证方法,其特征在于在所述步骤a2中,对秘密密钥、动态变量、段始值和偏移量进行加密处理2,得出动态密码2;在所述步骤c3中,对秘密密钥a、还原的动态变量、估计的段始值、步骤c2得到的值所确定的偏移量进行加密处理2a,得到验证码。
4.如权利要求1所述的动态口令认证方法,其特征在于在所述步骤a2中,先对秘密密钥、段始值进行加密处理1,得出动态密钥1,由动态密钥1产生动态变换表,再用动态变换表对偏移量进行变换,得出动态密码1;在所述步骤c2中,先对秘密密钥a、估计段始值进行加密处理1a,得出动态密钥1a,由动态密钥1a产生动态变换表a,再用动态变换表a对动态密码1a进行变换,得出一个确定偏移量的值。
5.如权利要求4所述的动态口令认证方法,其特征在于所述的由动态密钥1产生动态变换表得出动态密码1的方法是,用动态密钥1构造动态置换表,由该表将偏移量替换为动态密码1;由动态密钥1a产生动态变换表a得出一个确定偏移量的值的方法是,用动态密钥1a构造动态逆置换表,由该表将动态密码1a替换为确定偏移量的值。
6.如权利要求4所述的动态口令认证方法,其特征在于所述的由动态密钥1产生动态变换表得出动态密码1的方法是,用动态密钥1构造随机码组,以偏移量为位置来确定随机码组中的随机码为动态密码1;所述的由动态密钥1a产生动态变换表a得出一个确定偏移量的值的方法是,用动态密钥1a构造随机码组,随机码组中与动态密码1a匹配的随机码的位置,为确定偏移量的值。
7.如权利要求2所述的动态口令认证方法,其特征在于在所述步骤a2中,先对秘密密钥、段始值进行加密处理1,得出动态密钥2,再对动态密钥2、动态变量进行加密处理2,得出动态密码2;在所述步骤c3中,先对秘密密钥a、估计段始值进行加密处理1a,得出动态密钥2a,再对动态密钥2a、还原的动态变量进行加密处理2a,得出验证码。
8.如权利要求3所述的动态口令认证方法,其特征在于在所述步骤a3中,先对秘密密钥、段始值进行加密处理1,得出动态密钥2,再将动态密钥2和偏移量结合,得到新的动态密钥2,再对新的动态密钥2、动态变量进行加密处理2,得出动态密码2;在所述步骤c3中,先对秘密密钥a、估计段始值进行加密处理1a,得出动态密钥2a,再将动态密钥2a和步骤c2得到的值所确定的偏移量结合,得到新的动态密钥2a,再对新的动态密钥2a、还原的动态变量进行加密处理2a,得出验证码。
9.如权利要求1所述的动态口令认证方法,其特征在于令所述动态口令发生器产生一个验证器代码,验证方有一个验证器代码a,在口令生成方,对该代码、秘密密钥、段始值、偏移量进行加密处理1,得出动态密码1,对秘密密钥、动态变量、验证器代码进行加密处理2,得出动态密码2;在验证器方,对验证器代码a、秘密密钥a、估计段始值、动态密码1a进行加密处理1a,得出一个确定偏移量的值,对验证器代码a、秘密密钥a、还原的动态变量进行加密处理2a,得出验证码。
10.一种在由动态口令生成器-验证器构成的动态口令认证系统中使用的动态口令认证方法,动态口令生成器内有秘密密钥和动态变量,验证器内有动态口令生成器的秘密密钥和验证方动态变量;其特征在于a要产生口令时,动态口令生成器的微处理器执行以下步骤a1根据预先给定的长度和位置对动态变量进行分段,确定当前动态变量的段始值和偏移量;a2对秘密密钥和段始值进行加密处理3,输出两个动态密钥,依据动态密钥1产生一个动态变换表,由该动态变换表将偏移量转换为动态密码1,动态密钥2与偏移量结合生成新的动态密钥2,以新的动态密钥2和动态变量进行加密处理4,得出动态密码2;a3将动态密码1和动态密码2结合,构成动态口令;b将该动态口令传送至验证器;c要验证口令时,验证器的微处理器执行以下步骤c1将接收到的动态口令分离成动态密码1a和动态密码2a;根据验证方动态变量估计段始值和偏移量范围;c2以指定口令生成器的秘密密钥a和估计的段始值进行加密处理3a,输出两个动态密钥,以动态密钥1a生成动态变换表a,由该表和动态密码1a,得到一个确定偏移量的值;c3若该值所确定的偏移量在允许的估计偏移量范围内,则以该值所确定的偏移量与估计的段始值一起还原出动态变量,以步骤c2所生成的动态密钥2a与步骤c2求得的值所确定的偏移量结合生成新的动态密钥2a,以该新的动态密钥2a和还原的动态变量进行加密处理4a,得到验证码,将验证码与所收到的动态密码2a比较,若匹配则用户合法,允许用户访问,验证过程结束;若不匹配或该值所确定的偏移量不在所估计的偏移量范围内,则判断是否还有另外的估计段始值,若无则用户为非法,拒绝用户访问,验证过程结束;若有则取下一个估计段始值,转步骤c2。
11.如权利要求1-10之一所述的动态口令认证方法,其特征在于所述动态变量分段的方法是,预先确定一个分段长度和位置,用分段长度指定一段内含有多少个动态变量,确定偏移量的取值范围,位置用来指定一段的起点,确定段始值的选取。
12.如权利要求1-10之一所述的动态口令认证方法,其特征在于所述动态变量由时间或口令生成器产生口令的次数所确定。
13.如权利要求12所述的动态口令认证方法,其特征在于若所述动态变量由时间确定时,分段的长度应足以大于动态口令生成器在有效期内,其时钟与验证器时钟之间的最大可能偏差;若由生成口令的次数确定时,则分段的长度应足以大于系统允许没有由验证器验证的、口令生成器连续生成的口令次数。
14.如权利要求12所述的动态口令认证方法,其特征在于若所述动态变量由时间确定时,动态变量应是有一个基本持续时间间隔的预先确定的时间单位的时间值或其函数值;若由生成口令的次数确定时,动态变量应是该次数值或其函数值。
15.如权利要求1-10之一所述的动态口令认证方法,其特征在于对所述段始值、动态变量进行加密处理之前,先对它们进行不同的编码。
16.如权利要求4-6之一所述的动态口令认证方法,其特征在于由动态密钥1产生的动态变换表应大于偏移量的最大值。
17.如权利要求1-10之一所述的动态口令认证方法,其特征在于当确定的分段长度不大于240时,取动态密码1的长度为8比特。
18.如权利要求11所述的动态口令认证方法,其特征在于分段长度L的选取应使每天所确定的分段位置能够保持一致,分段位置的选定应避开用户较频繁地使用口令生成器的时间。
19.如权利要求11所述的动态口令认证方法,其特征在于预先确定一个分段长度和位置,所述动态变量等于所确定段始值与某个特定值之积并加上所确定的偏移量。
20.如权利要求1-10之一所述的动态口令认证方法,其特征在于在步骤c3,若得到的验证码与所收到的动态密码2a匹配,将还原的动态变量与最近一次成功访问所还原的动态变量进行比较,若大于该值,则用户合法,允许用户访问,并用还原的动态变量替代库中保存的最近一次成功访问所还原的动态变量,验证过程结束;若不大于该值,则用户非法,拒绝用户访问,验证过程结束。
21.如权利要求1-10之一所述的动态口令认证方法,其特征在于估计段始值和偏移量范围的方法是根据验证方动态变量所确定的段始值和偏移量为基础,再选取前后临近的段始值或偏移量;其中,所选取临近的段始值至多一个,选取前后临近的偏移量至少1个。
22.如权利要求1-10之一所述的动态口令认证方法,其特征在于所述估计段始值和偏移量范围的方法是若所述动态变量由时间确定时,以验证方接收到动态口令时的时间所确定动态变量的段始值R和偏移量r为基础,依据最近一次成功认证的时间至此时的指定时间间隔的数量d2的大小确定应允许的误差范围[c1,c2],以及保存的最近一次还原的动态变量与当时验证器方时间所确定的动态变量的差值所确定的偏差offset,确定偏移量可能的最小值b1=r+offset+c1和可能的最大值b2=r+offset+c2,当b2<0时,估计的段始值为R临近的前一个段始值R1,估计的偏移量范围是[b1+最大偏移量值,b2+最大偏移量值],当b1<0<b2时,估计的一个段始值为R临近的前一个段始值R1,估计的偏移量范围是[b1+最大偏移量值,最大偏移量值],估计的另一个段始值为R,估计的偏移量范围是
,当b1>最大偏移量值时,估计的段始值为R临近的后一个段始值R2,估计的偏移量范围是[b1-最大偏移量值,b2-最大偏移量值],当b1<最大偏移量值<b2时,估计的一个段始值为R临近的后一个段始值R2,估计的偏移量范围是
,估计的另一个段始值为R,估计的偏移量范围是[b1,最大偏移量值],当b1和b2都不小于0,并且都不大于最大偏移量值时,估计的段始值为R,估计的偏移量范围是[b1,b2];若由生成口令的次数确定时,以验证方保存的最近一次口令生成器生成的已成功登录的口令所用的动态变量增一后所确定的段始值R和偏移量r为基础,根据系统确定的允许口令生成器连续生成口令,而这些口令又没有在验证器方成功使用的次数d,确定偏移量可能的最小值b1=r和可能的最大值b2=r+d,当b2>最大偏移量值时,估计的一个段始值为R临近的后一个段始值R2,估计的偏移量范围是
,估计的另一个段始值为R,估计的偏移量范围是[b1,最大偏移量值],当b2不大于最大偏移量值时,估计的段始值为R,估计的偏移量范围是[b1,b2]。
23.如权利要求1-10之一所述的动态口令认证方法,其特征在于所述估计段始值和偏移量范围的方法是若所述动态变量由时间确定时,以验证方接收到动态口令时的时间所确定动态变量的段始值R和偏移量r为基础,依据最近一次成功认证的时间至此时的指定时间间隔的数量d2确定应允许的误差范围[c1,c2],以及保存的最近一次还原的动态变量与当时验证器方时间所确定的动态变量的差值所确定的偏差offset,再依据初次成功认证的时间至最近一次成功认证的时间指定时间间隔的数量d1计算的平均偏差offset/d1,估计d2个指定时间间隔的偏差σ=(offset/d1)*d2,确定偏移量可能的最小值b1=r+offset+σ+c1和可能的最大值b2=r+offset+σ+c2,当b2<0时,估计的段始值为R临近的前一个段始值R1,估计的偏移量范围是[b1+最大偏移量值,b2+最大偏移量值],当b1<0<b2时,估计的一个段始值为R临近的前一个段始值R1,估计的偏移量范围是[b1+最大偏移量值,最大偏移量值],估计的另一个段始值为R,估计的偏移量范围是
,当b1>最大偏移量值时,估计的段始值为R临近的后一个段始值R2,估计的偏移量范围是[b1-最大偏移量值,b2-最大偏移量值],当b1<最大偏移量值<b2时,估计的一个段始值为R临近的后一个段始值R2,估计的偏移量范围是
,估计的另一个段始值为R,估计的偏移量范围是[b1,最大偏移量值],当b1和b2都不小于0,并且都不大于最大偏移量值时,估计的段始值为R,估计的偏移量范围是[b1,b2]。
全文摘要
在口令认证系统中使用的动态口令认证方法,生成器对预先给定的长度和位置对动态变量分段,确定动态变量的段始值和偏移量,对密钥、段始值、偏移量等加密处理得出动态密码1;对密钥、动态变量等加密处理得出动态密码2;将动态密码1和动态密码2结合,构成动态口令;验证口令时,验证器进行相应逆过程处理。本方法使生成器生成的动态口令能隐藏地传递同步信息给验证器,提高了生成动态口令的安全性和验证口令的效率。
文档编号G06F21/31GK1322076SQ0010619
公开日2001年11月14日 申请日期2000年4月28日 优先权日2000年4月28日
发明者杨宏伟 申请人:杨宏伟
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1