著录项信息
专利名称 | 动态口令认证系统及方法 |
申请号 | CN00106192.5 | 申请日期 | 2000-04-28 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2001-11-14 | 公开/公告号 | CN1322076 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | 暂无 | IPC分类号 | 暂无查看分类表>
|
申请人 | 杨宏伟 | 申请人地址 | 四川省成都市天府大道高新孵化园6号楼2-213
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 成都天缘网络安全有限公司 | 当前权利人 | 成都天缘网络安全有限公司 |
发明人 | 杨宏伟 |
代理机构 | 北京北新智诚知识产权代理有限公司 | 代理人 | 张卫华 |
摘要
在认证系统中使用的动态口令认证方法,口令生成器用预先给定的段长度和位置对动态变量分段,确定动态变量的段始值和偏移量,对密钥、段始值、偏移量等进行加密处理得出第一动态密码,对密钥、动态变量等进行另一加密处理得出第二动态密码,将第一动态密码和第二动态密码结合生成动态口令;验证口令时,验证器进行相应逆过程处理。本方法生成的动态口令能隐藏地传递同步信息给验证器,提高了生成动态口令的安全性和验证口令的效率,降低了制作口令生成器的成本。
技术领域\n本发明涉及通常的用口令(也称密码、通行字等)进行身份验证、访问控制的电子认证 系统及方法。特别是涉及电子生成动态的、随机不可预测的口令,通过验证这些口令来正 确识别已获得授权的个体或用户,并由此判定是否允许访问、进出、存取受保护的系统资 源,是否提供有条件的服务,是否实现特许的业务往来等。本发明更特别地涉及各种通信 网、电信网和计算机网中的访问控制和身份认证。\n背景技术\n口令是最广泛使用的一种验证用户身份合法性的方法。授权的用户都拥有一个区别于 系统中其他用户的标识符ID(用户名,序列码或帐号)和只有用户自己知道的秘密口令(PW 或PIN)。如果用户想要登录系统,就须在请求节点键入自己的用户标识符和口令。系统 内保留了所有授权用户的标识符和口令,认证节点利用收到的标识符提取该用户的正确口 令,并用它与接收到的口令进行比较,如果匹配,则证明该用户身份合法,允许其进入系 统或为其提供服务,否则该用户身份非法,拒绝其进入系统或不提供服务。在系统内直接 保留用户的口令具有很大的风险,为了确保口令存放的安全性,一种解决方法就是用单向 函数计算用户口令的杂凑值,并存储该值(例如UNIX)。认证节点接收到用户的口令后, 就用单向函数计算该口令的杂凑值,并与系统中正确的杂凑值比较,以确定其合法性。现 在,随着通信网络化的迅猛发展,口令在网上来回传输的机会越来越多,传统的口令认证 系统没有提供口令在网上传输的保护机制的问题日显突出,口令在网上被黑客截取的事件 日益增多。为使口令安全传输,简单地将口令加密后在网上传送的办法是徒劳的,丝毫也 不会提高安全性。因为,黑客同样可以截获这些密口令,无需还原密口令成明的形式,直 接用截获的密口令来冒充授权用户,同样可以达到目的。密口令对认证节点来说只不过是 多了一次脱密的程序,无法由此判定用户的真伪。\n要彻底解决这个问题的办法就是使用动态的口令,使每个口令只一次有效,只在很短 的时间内有效,使口令随时间不可预测地随机变化,致使黑客即使截获到口令也只是一个 无用的失效口令。动态口令通常是借助于一个便于用户携带的,象信用卡大小的,或者外 形象普通计算器一样的装置来生成,这里我们称它为动态口令生成器、口令生成器或生成 器,也简称为卡(card)或者令牌(token)。\n美国专利US-4720860揭示了一种动态口令认证系统,它应用一个静态变量和一个源 于时间的动态变量作为保密的密码算法的输入参数。每位授权用户的动态口令生成器中存 储有一个固定码,同时在该生成器的表面也印记了这个固定码,以防忘记。动态口令生成 器每隔一个固定的时间间隔(例如每隔一分钟)就自动生成并显示一个不可预见的动态口 令,它是该生成器将固定码作为静态变量输入进密码算法中,并以此时时钟的时间(当然 也包括日期等在内,通常时间精细到分钟)作为动态变量输入进该算法后生成的。授权用 户一旦要请求访问,就向认证节点传送自己的固定码和当时生成器所显示的动态口令。认 证节点通过使用与生成器相同的密码算法,连同这个固定码和认证节点时钟的时间,原则 上这个时间应与动态口令生成器所使用的时间相同,也生成一个动态口令,该口令与接收 到的口令相比较,以确定它们是否匹配。对于该系统,通过偷看授权用户所持有的口令生 成器表面上印刻的符号,或在通信线路上截取,都可以很容易地获得固定码。因此,为了 保证系统的安全性,计算口令的密码算法必须要保守秘密,如果算法的秘密被解开,整个 系统的安全性都会因此而遭受损害。这也是为什么该专利要求,将密码算法存放在易挥发 的存储器中,一旦企图解剖生成器,就彻底清除算法的原因。该专利中,无论是在授权用 户持有的动态口令生成器方还是认证节点方的动态变量都要独立地生成,双方用来分别产 生动态变量的时钟必须要一致,否则会拒绝正常的请求。但现实中,两个时钟之间有一定 程度的相对偏差是不可避免的。在该专利的后续专利US-4885778中,揭示了一种保持时 钟同步和具体验证用户的方法,它要求口令生成器在预先给定的时间间隔(例如1分钟,2 分钟等)生成口令,而认证节点方必须要用比用户口令生成器确定的时间间隔大得多的持 续时间长度(例如5分钟,10分钟等)来建立一个有效时间范围。当授权用户请求访问时, 认证节点在有效的时间范围内计算多个口令(例如计算5个口令,10个口令等),如果用户 的口令同其中之一匹配,则允许访问。显然,这个方法要求认证节点方的计算量要大得多, 特别是,当口令生成器方同认证方的时钟偏差加大,所要求的有效时间长度相应地加大, 认证节点方的计算量也随之明显地加大,因此,该方法必须要尽量缩短认证方有效时间长 度才有较好的效果,这就对双方的时钟精度有较高的要求。另外,该方法不能较快速地排 除接收到的非法口令,而且非法口令消耗系统的计算量要比任何合法口令所消耗的都多, 因为,它必须要计算完有效时间内的所有口令,并逐一地同非法口令进行比较,到最后才 能排除,这为黑客进行拒绝服务式攻击提供了便利。\n在认证节点的服务器上可能具有较高精度、较稳定的时钟。但是,在口令生成器方情 况就不一样了,降低制造口令生成器的生产成本是设计中要考虑的首要问题,在口令生成 器上安装昂贵的、高质量和无偏差的时钟是不现实的。另外,口令生成器是提供给授权用 户随身携带的,它的时钟容易受到许多不可预知的因素诸如温度变化、电压稳定性等的影 响。因此,认证节点的时钟与口令生成器的时钟保持高度同步,在实际应用中是难以实现 的,要同时与大量的口令生成器的时钟保持高度一致,则更是难以想象的。\n试图在口令生成器上安装价格较低廉的时钟,使它与认证节点的时钟具有一定程度的 同步就可达到生成安全可靠的动态口令一直是本领域努力的方向。美国专利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倍)。在实际应用中,口令往往应当尽量的短,长口令会让用户厌 烦,它既不实用,又不现实。因此口令中的每一比特位都十分珍贵,都应该充分地加以利 用。在口令中以明的方式传递同步信息,也会降低生成动态口令的安全性,这些信息既为 认证方的变量同步提供了便利,同时也为黑客和攻击者提供了重要信息。在生成口令时, 这些信息既是密码算法的输入参数,又是决定密钥变化的参数,而且密码算法又是公开的, 因此在知道了这些同步信息后,可以极大地缩小所要搜索的密钥空间。另外,决定口令生 成的秘密密钥在每次生成口令之后都发生变化,会使认证节点对用户秘密密钥的管理带来 不便,因为要安全有效地管理一个不断变化的秘密密钥会比管理一个固定的秘密密钥困难 和复杂得多。\n发明内容\n本发明的目的就是要提供一个动态口令认证系统和方法,以改进以上的不足。特别地, 本发明的目的就是要使每个动态口令生成器生成的动态口令都能够隐藏地传递同步信息 给认证节点方,既为认证节点方提供有效的同步信息,又不降低生成动态口令的安全性; 同时,认证节点方能够利用所恢复的该同步信息,较迅速地排除非法口令,提高验证口令 的效率,另外,也降低了制作口令生成器的成本和实现难度。总之,就是要提供安全有效 的动态口令认证的系统和方法。\n本发明的目的通过以下技术方案实现:\n本发明是一种在由动态口令生成器与验证器构成的动态口令认证系统中使用的动态 口令认证方法,动态口令生成器内有第一动态变量和第一秘密密钥,验证器内有第二动态 变量和所述动态口令生成器的第二秘密密钥,所述动态口令生成器的第一动态变量和所述 验证器的第二动态变量一致地、但独立地产生;其特征在于:\na)要产生口令时,动态口令生成器的微处理器执行以下步骤:\na1)根据预先给定的段长度和位置对第一动态变量进行分段,确定第一动态变量的 第一段始值和第一偏移量,第一段始值为第一动态变量所在分段的起始位置,第一偏移量 为该起始位置至第一动态变量的偏移;\na2)对第一秘密密钥、第一段始值、第一偏移量进行第一加密处理,得出第一动态 密码,该动态密码是第一加密处理的输出结果;对第一秘密密钥、第一动态变量进行第二 加密处理,得出第二动态密码,该动态密码是第二加密处理的输出结果;\na3)将第一动态密码和第二动态密码结合,生成动态口令;\nb)将该动态口令传送至验证器;\nc)要验证口令时,所述验证器的微处理器执行以下步骤:\nc1)分离接收到的动态口令成第三动态密码和第四动态密码;根据预先给定的段长 度和位置对第二动态变量进行分段,确定第二动态变量的第二段始值和第二偏移量,第二 段始值为第二动态变量所在分段的起始位置,第二偏移量为该起始位置至第二动态变量的 偏移;根据第二段始值和第二偏移量确定估计段始值和偏移量范围,估计段始值范围是以 所述第二段始值为基础,选取第二段始值及其临近的段始值作为估计段始值,估计偏移量 范围是以所述第二偏移量为基础,选取第二偏移量及其临近的偏移量作为估计偏移量;\nc2)对第三动态密码、估计段始值和第二秘密密钥进行第三加密处理,得到第三偏 移量,该偏移量是第三加密处理的输出结果;\nc3)若第三偏移量在估计的偏移量范围内,则用第三偏移量和估计段始值还原出第 三动态变量,该动态变量是第三偏移量与估计段始值之和;对第二秘密密钥和第三动态变 量进行第四加密处理,得到验证码,该验证码是第四加密处理的输出结果;将验证码与第 四动态密码比较,若匹配并且该第三动态变量大于最近一次动态变量则用户合法,允许用 户访问,验证过程结束;若不匹配或第三偏移量不在估计的偏移量范围内,则判断是否还 有另外的估计段始值,若无则用户为非法,拒绝用户访问,验证过程结束;若有则取下一 个估计段始值,转步骤c2)。\n在所述步骤a2)中,对第一秘密密钥、第一动态变量和第一段始值进行第二加密处理, 得出第二动态密码,该动态密码是第二加密处理的输出结果;相应地在所述步骤c3)中, 对第二秘密密钥、第三动态变量和估计段始值进行第四加密处理,得到验证码,该验证码 是第四加密处理的输出结果。\n在所述步骤a2)中,对第一秘密密钥、第一动态变量、第一段始值和第一偏移量进行 第二加密处理,得出第二动态密码,该动态密码是第二加密处理的输出结果;相应地在所 述步骤c3)中,对第二秘密密钥、第三动态变量、估计段始值和第三偏移量进行第四加密 处理,得到验证码,该验证码是第四加密处理的输出结果。\n在所述步骤a2)中,第一加密处理包括第一加密算法和第一动态变换表,用第一加密 算法作用第一秘密密钥和第一段始值,得出第一动态密钥,该动态密钥是第一加密算法的 输出结果,用第一动态密钥产生第一动态变换表,再用第一动态变换表对第一偏移量进行 变换,得出第一动态密码,该动态密码是第一动态变换表的输出结果;相应地在所述步骤 c2)中,第三加密处理包括第三加密算法和第二动态变换表,用第三加密算法作用第二秘 密密钥和估计段始值,得出第三动态密钥,该动态密钥是第三加密算法的输出结果,用第 三动态密钥产生第二动态变换表,再用第二动态变换表对第三动态密码进行变换,得出第 三偏移量,该偏移量是第二动态变换表的输出结果;\n所述的用第一动态密钥产生第一动态变换表:i→Si的方法是,这里0≤i<r,0≤Si< r,正整数r=2m1,m1是第一动态密码的比特数,先任意设定Si初始状态,并将第一动 态密钥按序填入K0,K1,...Kr-1中,可重复利用该密钥,直到填满整个K0,K1,...Kr-1, 执行下述动态置换表生成算法:先置i和j的值为0,按序执行如下循环操作:a).先将j、 Si和Ki的值相加,相加的结果被r除后所得的余数再作为j的值,b).然后对Sj和Si彼此 交换它们各自的值,c).最后将i的值增1,若i小于r则返回该循环a)步骤,否则退出该 循环操作;由此得到该第一动态变换表:i→Si,其中0≤i<r,0≤Si<r;相应地所述的 用第三动态密钥产生第二动态变换表:i→Qi的方法是,这里0≤i<r,0≤Qi<r,正整数r =2m1,m1是第一动态密码的比特数,先按前述产生动态变换表步骤,在第三动态密钥作 用下产生:i→Si,其中0≤i<r,0≤Si<r,再执行下述程序:先置i的值为0,按序执行 如下循环操作:a).先以Si的值作为下标,将i的值作为QSi的值,b).然后将i的值增1, 若i小于r则返回该循环a)步骤,否则退出该循环操作;由此得到该第二动态变换表:i→ Qi,其中0≤i<r,0≤Qi<r。\n所述的用第一动态密钥产生第一动态变换表得出第一动态密码的另一种方法是,由第 一动态密钥生成的动态变换表:i→Si,这里0≤i<r,0≤Si<r,正整数r=2m1,m1是 第一动态密码的比特数,k为第一偏移量,执行下述生成随机码组算法:先置i和j的值 为0,按序执行如下循环操作:a).先将j和Si的值相加,相加的结果被r除后所得的余数 再作为j的值,b).然后对Si和Si彼此交换它们各自的值,c).最后将i的值增1,若i小于 k则返回该循环a)步骤,否则退出该循环操作;完成该循环操作后,就将Si和Sj的值相 加,相加的结果被r除后所得的余数为t值,取St的值为K,由此得到的K作为第一动态 密码;相应地所述的用第三动态密钥产生第二动态变换表得出第三偏移量的另一种方法 是,以估计偏移量范围中的每个偏移量值作为k,执行上述生成随机码组算法,得到相应 结果K,若K与第三动态密码匹配,则认为k就是所需的第三偏移量;\n在所述步骤a2)中,第二加密处理包括第一加密算法和第二加密算法,用第一加密算 法作用第一秘密密钥和第一段始值,得出第二动态密钥,该动态密钥是第一加密算法的输 出结果,用第二加密算法作用第二动态密钥和第一动态变量,得出第二动态密码,该动态 密码是第二加密算法的输出结果;相应地在所述步骤c3)中,第四加密处理包括第三加密 算法和第四加密算法,用第三加密算法作用第二秘密密钥和估计段始值,得出第四动态密 钥,该动态密钥是第三加密算法的输出结果,用第四加密算法作用第四动态密钥和第三动 态变量,得出验证码,该验证码是第四加密算法的输出结果;\n在所述步骤a2)中,第二加密处理包括第一加密算法和第二加密算法,用第一加密算 法作用第一秘密密钥和第一段始值,得出第二动态密钥,该动态密钥是第一加密算法的输 出结果,将第二动态密钥和第一偏移量结合生成第五动态密钥,再用第二加密算法作用第 五动态密钥和第一动态变量,得出第二动态密码,该动态密码是第二加密算法的输出结果; 相应地在所述步骤c3)中,第四加密处理包括第三加密算法和第四加密算法,用第三加密 算法作用第二秘密密钥和估计段始值,得出第四动态密钥,该动态密钥是第三加密算法的 输出结果,将第四动态密钥和第三偏移量结合生成第六动态密钥,再用第四加密算法作用 第六动态密钥和第三动态变量,得出验证码,该验证码是第四加密算法的输出结果;\n由第一和第三动态密钥产生的第一和第二动态变换表应大于所述的段长度。\n所述第一和第二动态变量分段的方法是,根据预先确定一个段长度和位置,用段长度 指定一段内含有多少个偏移量,确定最大偏移量,位置用来指定一段的起点,确定段始值。\n所述第一和第二动态变量分别由动态口令生成器和验证器的时钟确定,或者由动态口 令生成器已产生口令的次数确定。\n若所述第一和第二动态变量由时间确定,则段长度应足以大于动态口令生成器的有效 期内,其时钟与验证器时钟之间的最大可能偏差;\n若所述第一和第二动态变量由生成口令的次数确定,则分段的长度应足以大于系统允 许、没有由验证器验证、动态口令生成器连续生成的口令个数。\n若所述第一和第二动态变量由时间确定,则动态变量应是有一个基本持续时间间隔的 预先确定的时间单位的时间值或其函数值;\n若所述第一和第二动态变量由生成口令的次数确定,则动态变量应是该次数值或其函 数值。\n用所述第一加密处理或第一加密算法作用第一段始值之前,对第一段始值进行第一编 码,该编码是第一段始值的表示形式,用所述第二加密处理或第二加密算法作用第一动态 变量之前,对第一动态变量进行第二编码,该编码是第一动态变量的表示形式,所述第一 编码和第二编码的方式是不同的;用所述第三加密处理或第三加密算法作用估计段始值之 前,对估计段始值进行第三编码,该编码是第一段始值的表示形式,用所述第四加密处理 或第四加密算法作用第三动态变量之前,对第三动态变量进行第四编码,该编码是第三动 态变量的表示形式,所述第三编码和第四编码的方式是不同的。\n当所述段长度不大于240时,取第一动态密码和第三动态密码的长度为8比特。\n所述段长度的选取应使每天所确定的分段位置能够保持一致,位置的最佳选定应是用 户较频繁地使用动态口令生成器时间值的最远点。\n根据预先确定的段长度和位置,第一动态变量等于第一段始值与某个特定值之积并加 上第一偏移量,第二动态变量等于第二段始值与某个特定值之积并加上第二偏移量,\n在所述步骤c3)中,若所述的验证码与第四动态密码匹配,将所述第三动态变量与最 近一次成功访问所还原的第三动态变量进行比较,若大于该值,则用户合法,允许用户访 问,并用所述第三动态变量替代库中保存的最近一次成功访问所还原的第三动态变量,验 证过程结束,若不大于该值,则用户非法,拒绝用户访问,验证过程结束。\n所选取的估计段始值至少有一个,至多有两个。\n所述估计段始值和偏移量范围的一种方法是:\n若所述第一和第二动态变量由时间确定,则以第二段始值R和第二偏移量r为基础,依 据最近一次的第三动态变量与所述第二动态变量的差值确定应允许的误差范围[c1,c2], 依据最近一次的第三动态变量与最近一次的第二动态变量的差值确定偏差diff,确定小值 b1=r+diff+c1和大值b2=r+diff+c2,记最大偏移量值为max,\n当b2<0时,估计段始值为R临近的前一个段始值R1,估计偏移量范围是[b1+max, b2+max],\n当b1<0<b2时,一个估计段始值为R临近的前一个段始值R1,估计偏移量范围是 [b1+max,max],另一个估计段始值为R,估计偏移量范围是[0,b2],\n当b1>max时,估计段始值为R临近的后一个段始值R2,估计偏移量范围是[b1-max, b2-max],\n当b1<max<b2时,一个估计段始值为R临近的后一个段始值R2,估计偏移量范围是[0, b2-max],另一个估计段始值为R,估计偏移量范围是[b1,max],\n当b1和b2都不小于0,并且都不大于max时,估计段始值为R,估计偏移量范围是[b1, b2];\n若所述第一和第二动态变量由生成口令的次数确定,则以验证器保存的最近一次的第 三动态变量增一后所确定的第二动态变量的第二段始值R和第二偏移量r为基础,根据系统 确定的允许口令生成器连续生成口令,而这些口令又没有在验证器方成功使用的次数d, 确定小值b1=r和大值b2=r+d,记最大偏移量值为max,\n当b2>max时,一个估计段始值为R临近的后一个段始值R2,估计偏移量范围是[0, b2-max],另一个估计段始值为R,估计偏移量范围是[b1,max],\n当b2不大于max时,估计段始值为R,估计偏移量范围是[b1,b2]。\n所述估计段始值和偏移量范围的另一种方法是:\n若所述第一和第二动态变量由时间确定,则以第二段始值R和第二偏移量r为基础,依 据最近一次的第三动态变量与所述第二动态变量的差值确定应允许的误差范围[c1,c2], 依据最近一次的第三动态变量与最近一次的第二动态变量的差值确定偏差diff,再依据初 次成功认证至最近一次成功认证指定时间间隔的数量d1计算平均偏差diff/d1,依据最近 一次成功认证至当前认证指定时间间隔的数量d2估算一个偏差σ=(diff/d1)×d2,确定 小值b1=r+diff+σ+c1和大值b2=r+diff+σ+c2,记最大偏移量值为max,\n当b2<0时,估计段始值为R临近的前一个段始值R1,估计偏移量范围是[b1+max, b2+max],\n当b1<0<b2时,一个估计段始值为R临近的前一个段始值R1,估计偏移量范围是 [b1+max,max],另一个估计段始值为R,估计偏移量范围是[0,b2],\n当b1>max时,估计段始值为R临近的后一个段始值R2,估计偏移量范围是[b1-max, b2-max],\n当b1<max<b2时,一个估计段始值为R临近的后一个段始值R2,估计偏移量范围是[0, b2-max],另一个估计段始值为R,估计偏移量范围是[b1,max],\n当b1和b2都不小于0,并且都不大于max时,估计段始值为R,估计偏移量范围是[b1, b2]。\n本发明又是一种在由动态口令生成器与验证器构成的动态口令认证系统中使用的动 态口令认证方法,动态口令生成器内有第一动态变量和第一秘密密钥,验证器内有第二动 态变量和所述动态口令生成器的第二秘密密钥,所述动态口令生成器的第一动态变量和所 述验证器的第二动态变量一致地、但独立地产生;其特征在于:\na) 要产生口令时,动态口令生成器的微处理器执行以下步骤:\na1)根据预先给定的段长度和位置对第一动态变量进行分段,确定第一动态变量的 第一段始值和第一偏移量,第一段始值为第一动态变量所在分段的起始位置,第一偏移量 为该起始位置至第一动态变量的偏移;\na2)由第一加密算法作用第一秘密密钥和第一段始值,得出第一动态密钥和第二动 态密钥,第一动态密钥是第一加密算法输出结果的前半部分,第二动态密钥是第一加密算 法输出结果的后半部分;用第一动态密钥产生第一动态变换表,根据第一动态变换表对第 一偏移量进行变换,得出第一动态密码,该动态密码是第一动态变换表的输出结果;将第 二动态密钥和第一偏移量结合生成第五动态密钥,再用第二加密算法作用第五动态密钥和 第一动态变量,得出第二动态密码,该动态密码是第二加密算法的输出结果;\na3)将第一动态密码和第二动态密码结合,生成动态口令;\nb)将该动态口令传送至验证器;\nc)要验证口令时,所述验证器的微处理器执行以下步骤:\nc1)分离接收到的动态口令成第三动态密码和第四动态密码;根据预先给定的段长度 和位置对第二动态变量进行分段,确定第二动态变量的第二段始值和第二偏移量,第二段 始值为第二动态变量所在分段的起始位置,第二偏移量为该起始位置至第二动态变量的偏 移;根据第二段始值和第二偏移量确定估计段始值和偏移量范围,估计段始值范围是以所 述第二段始值为基础,选取第二段始值及其临近的段始值作为估计段始值,估计偏移量范 围是以所述第二偏移量为基础,选取第二偏移量及其临近的偏移量作为估计偏移量;\nc2)由第三加密算法作用第二秘密密钥和估计段始值,得出第三动态密钥和第四动态 密钥,第三动态密钥是第三加密算法输出结果的前半部分,第四动态密钥是第三加密算法 输出结果的后半部分;用第三动态密钥产生第二动态变换表,根据第二动态变换表对第三 动态密码进行变换,得出第三偏移量,该偏移量是第二动态变换表的输出结果;\nc3)若第三偏移量在估计的偏移量范围内,则用第三偏移量和估计段始值还原出 第三动态变量;将第四动态密钥和第三偏移量结合生成第六动态密钥,再用第四加 密算法作用第六动态密钥和第三动态变量,得出验证码;将验证码与第四动态密码 比较,若匹配并且该第三动态变量大于最近一次动态变量则用户合法,允许用户访 问,验证过程结束;若不匹配或第三偏移量不在估计的偏移量范围内,则判断是否 还有另外的估计段始值,若无则用户为非法,拒绝用户访问,验证过程结束;若有 则取下一个估计段始值,转步骤c2)。\n本发明对动态变量实施分段策略,来解决口令生成器的动态变量与验证器方动态变量 的同步问题。预先确定一个分段长度L和位置,分段长度L指定一段内含有多少个偏移 量,即确定了偏移量的取值;位置指定一段的起点,即确定了段始值的选取。在分段长度 L和分段位置确定的前提下,任意个动态变量即可唯一地确定一个段始值和一个偏移量, 反之,由一个段始值和一个偏移量也可唯一地确定一个动态变量。实际上,任意动态变量 都可以看成是其所确定的段始值与所确定的偏移量的一种组合。\n如果动态变量由时间确定,为动态变量分段的长度L应当足以大于在动态口令生成器 的有效期内,其时钟与验证器时钟之间的最大可能偏差。这致使验证器估计口令生成器的 段始值至多不会超过两个。验证器方是依据自己的时钟来估计段始值和相应偏移量的范 围。如果动态变量由生成口令的次数确定,为动态变量分段的长度L应足以大于系统允 许没有由验证器验证的、口令生成器连续生成的口令次数。验证器方是依据对该用户最近 一次的成功验证所还原的动态变量增一后,来估计段始值和相应偏移量的范围。\n本发明的优点是:\n1.由于本发明引入分段策略来处理动态变量,无需要求双方所产生的动态变量保持非 常一致,仅需由双方的动态变量所确定的段始值能相对同步,使动态口令生成器上的动态 变量与验证器方的动态变量之间的偏差小于最大偏移量值就可以达到正确验证动态口令 的目的,这有效地解决了口令生成器方的动态变量与验证器方的动态变量之间的同步问 题,这既为动态口令认证的实现提供了便利,也为降低制作口令生成器的成本创造了条件。 通常情况下,验证器方仅需要估计一个段始值就够了,只有当口令生成器的动态变量所确 定的偏移量接近其可能的最小值或最大值时,才会出现需要估计两个段始值的情况。另外, 通过利用接收到的动态口令中的第一个动态密码所还原出的值,就可以排除掉绝大多数的 非法口令,从而实现了较迅速地排除非法口令的访问,提高了验证口令的效率。\n2.由于本发明利用动态变量的段始值在秘密密钥和第一个算法的作用下,生成两个随 机的、不可预见的动态密钥。其中,第一个随机、不可预见的动态密钥确定出一个随机、 不可预见的动态变换表,由该变换表将偏移量替换为随机、不可预见的第一个动态密码; 这样就达到了隐藏地给验证器方传递同步信息的目的,使得用户所用动态口令的每一个比 特既安全又有效,消除了传递多余明同步信息所造成的诸多不利。另外,第二个随机、不 可预见的动态密钥与动态变量在第二个算法的作用下生成第二个随机、不可预见的动态密 码;或者是先将第二个动态密钥与偏移量结合生成另一个随机、不可预见的动态密钥,再 将该动态密钥与动态变量在第二个算法的作用下生成第二个随机、不可预见的动态密码, 这样就实现了由不断变化的密钥来决定第二个动态密码的生成,同时实现了由不断变化的 密钥来决定由第一动态密码和第二动态密码构成的动态口令的生成,并使验证器方无需管 理一个不断变化的密钥,仅需管理决定该动态密钥的固定不变的密钥。\n附图说明\n下面结合附图对本发明作详细描述。\n图1是口令认证系统的一般性简图;\n图2是本发明两个动态口令生成器的正面视图;\n图3是本发明举例说明对动态变量分段的实例;\n图4是本发明的动态口令生成器生成动态口令时的操作运行原理流程图;\n图5是本发明的验证器验证接收到的动态口令时的操作运行原理流程图;\n图6是本发明的动态变量由时间确定时,验证器估计段始值及其相应偏移量范围的流 程图;\n图7是本发明的动态变量由动态口令生成器生成口令的次数确定时,验证器估计段始 值及其相应偏移量范围的流程图;\n图8是本发明的动态口令生成器生成动态口令和验证器验证接收到的动态口令时的 简明流程图。\n发明具体实施方式\n本发明的系统包括至少一个(通常是许多)由授权用户持有的动态口令生成器和至少 一个(可以有多个)能接收授权用户的口令并能据此判定用户合法性的验证器。\n本发明的口令生成器内部至少包括能执行本发明方法的动态口令生成程序的普通微 处理器和能存储该程序和口令生成器密钥的存储器,需要时也拥有自己的电源,以提供运 行程序的能量;对于生成与时间相关口令的口令生成器还需要有一个能提供时间信息的时 钟。口令生成器通常是便于携带的、小巧的、其形状和大小如同信用卡或计算器;图2 是两个口令生成器的正面视图,它们都有一个显示屏201,以显示所生成的口令或其它相 关信息;当然,显示屏201也可以使用发声装置来代替,即不使用显示,而使用声音;200 是仅有开关触发键202的口令生成器,这主要用于仅支持一个验证器或生成与时间相关的 口令,并且口令生成器无需用PIN保护的情形,该种生成器的操作极为方便,当按一下 触发键202,口令生成器根据预先确定的时间单位所具有的持续时间间隔不断地生成并在 显示屏201上显示所生成的动态口令,授权用户就用当时显示的口令传递给验证器方,当 再按一下该键202,就能终止口令的生成和显示,如此循环往复。图2的另一种口令生成 器203有多个按键204,如数字键或功能键等,这主要用于能同时支持多个独立的验证器, 或者口令生成器需用PIN保护,以防止口令生成器丢失后被非授权人员滥用的情形,该 种生成器具有更好的保护措施,在生成口令之前,授权用户须先输入自己的PIN,只有当 输入的PIN与存储在口令生成器中的PIN相同时,口令生成器才能启动口令生成程序。 对于生成与时间无关的动态口令生成器,还可以用普通的智能卡实现,这可以省却电源, 省却按键和显示屏,而利用读卡终端或相连接计算机上的按键和显示屏,这种生成器可大 幅降低制造生成器的成本,可广泛应用于带读卡终端的环境里。\n图1是本发明的动态口令认证系统的一般性简图。图中的100是授权用户才持有的口 令生成器,请求节点101是授权用户向验证器103传递自己的用户ID和口令的工具,101 可以是计算机、客户端、电话、手机等。请求节点也可以与口令生成器合二为一,例如将 口令生成器做成固件嵌入于计算机等各种通信设备中,或者软件形式的动态口令生成器。 通信通道102可由已知的任意类型的通信方式构成。验证器103包括能执行本发明方法的 动态口令验证程序的处理器,以及能存储该程序和授权用户有关信息的存储器。验证器 103在认证节点104内,认证节点104可以是主机、服务器,也可以是作为访问控制服务 器的专用计算机;验证器103的口令验证程序可作为服务器程序驻留于认证节点104中, 例如作为守护程序,并使用认证节点的CPU和时钟资源等,因此,可以将认证节点与验 证器等同起来。当验证器103接收到从请求节点101传来的用户ID和动态口令,口令验 证程序就将验证该动态口令,并确定该用户口令的正确性,若口令正确,则认为该用户是 授权的合法用户,系统允许其访问资源或获得有条件的服务105等,若口令不正确,则认 为该用户是非法的,就拒绝该用户访问。\n动态口令生成器能生成动态口令是因为口令生成器内的动态变量能不断变化,验证器 生成的口令与口令生成器生成的口令能够一致,则是因为验证器方能够确定口令生成器方 生成口令的动态变量。本发明的动态变量的一种情况是由时钟产生的日期和时刻所确定 (以下简称由时间确定),它生成与时间相关的口令;动态变量另一种情况是由口令生成器 产生口令的次数所确定,它生成与时间无关的口令。\n如果动态变量由时间确定,动态变量应是预先确定的精细程度(或称时间单位)的时间 值或其函数值(例如,动态变量可以是时间值与某个特定数之积或之和后的值),这个精细 程度或时间单位有一个基本的持续时间间隔,该时间间隔决定了口令多长时间就要发生变 化,例如时间单位为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秒。\n如果动态变量由口令生成器生成口令的次数确定,动态变量就是该次数值或其函数值 (例如,动态变量可以是该次数值与某个特定数之积或之和后的值),口令生成器在生成一 次口令后,该动态变量自动增一。例如口令生成器已产生了1000个口令,则此时产生口 令的动态变量就是1000,产生下一次口令的动态变量则变为1001。\n本发明对动态变量实施了分段策略,有效地解决了口令生成器的动态变量与验证器方 动态变量的同步问题。预先确定一个分段长度L和位置选取,分段长度L指定一段内含 有多少个偏移量,即偏移量最小可能值为0,最大可能值为L-1;位置指定一段的起点, 即确定段始值的选取。由此,任意个动态变量就可唯一地确定一个段始值和一个偏移量, 反之,由一个段始值和一个偏移量也唯一地确定一个动态变量。实际上,任意动态变量都 可以看成是其所确定的段始值与所确定的偏移量的一种组合,例如它们之和,或更一般地, 将动态变量表示成其所确定的段始值与某个特定值之积并加上所确定的偏移量,例如这个 特定值可为预先确定的一个整数。对动态变量分段的长度L和位置的确定可以在一个认 证系统内统一确定(即该系统内所有口令生成器的L和位置的选取都是一样的),也可以针 对每一个口令生成器设置其L和位置的选取,甚至,也可以将它们的选取作为口令生成 器可调节的参数,根据使用情况进行调节,当然,这个调节需要告知验证器方,验证器方 也做相应的变化。\n若动态变量由时间确定,分段的长度L应当足以大于该动态口令生成器在有效期内, 其时钟与验证器时钟之间的最大可能偏差,或系统内所有口令生成器的时钟与验证器的时 钟之间的最大可能偏差(系统统一确定情形),例如估计一个口令生成器的时钟与验证器的 时钟的偏差最大可能值为60分钟,则当时间单位选取的是1分钟时,L至少应为60,当 时间单位选取的是30秒时,L至少应为120。若系统内所有口令生成器的时钟与验证器 的时钟的偏差最大可能值为两个小时,则系统可统一确定的L至少为120(当时间单位是 1分钟)或L至少为240(当时间单位是30秒)。分段位置的选定最好避开用户较频繁 地使用口令生成器的时间,假如上午9点左右用户使用较为频繁,L=120(时间单位是1 分钟),则位置可选取为每天的8、10、12、14、16、18、20、22、0、2、4、6点整。这 致使在该频繁期里,验证器估计口令生成器的段始值只会有一个(只有偏移量太大或太小 时,才会出现需估计两个段始值的情况),由此,更有效地验证用户的口令。另外,为便 于确定段始值和偏移量,分段长度L的选取最好使每天所确定的分段位置能够保持一致, 例如,若选取的位置是8、10、12、14、16、18、20、22、0、2、4、6点整,则每天均能 以此循环。假定口令生成器的有效使用期是四年,这里给出L和位置选取的具体实例:\n基本时间单位 L 每个月的平均偏差 位置选定\n15秒 120 <37.5秒 每天的0.5、1、1.5、...、23.5、0点\n15秒 240 <75秒 每天的0、1、2、3、...、22、23点\n30秒 120 <75秒 每天的0、1、2、3、...、22、23点\n1分 60 <75秒 每天的0、1、2、3、...、22、23点\n1分 120 <150秒 每天的0、2、4、6、...、20、22点\n1分 180 <225秒 每天的0、3、6、9、...、18、21点\n1分 240 <300秒 每天的0、4、8、12、16、20点\n基本时间单位就是前面所指的决定动态变量的时间单位,也是一个动态口令持续的时 间,超过该持续时间,口令就会发生变化;所估计的口令生成器时钟与验证器所用时钟之 间平均每个月的偏差应当足以小于上面的值;口令生成器时钟与验证器所用时钟之间的偏 差越小,所使用的基本时间单位就可以越短,一个动态口令持续的时间越短,系统提供的 安全性就越高。从上面的结果可以看出,通常将L限制在240以内,就可以满足大多数 实际应用的需要。\n若动态变量由生成口令的次数确定,则分段的长度L应足以大于系统允许没有由验证 器验证的、口令生成器连续生成的口令次数,例如设L=32,则用户使用口令生成器产生 口令时,不能连续生成32个没有成功使用的口令,也就是说,这连续的32个口令必须有 一个在验证器方获得验证,否则就会失去同步。由于此种动态变量对用户使用口令生成器 的敏感性,最好使用有PIN保护的口令生成器,即图2的203有多个按键204的口令生 成器。这可以有效地制止该情况的发生。\n图3的300是对时间动态变量分段的一个例子,如果动态变量的时间单位是1分钟, L=120,即每段内有120个动态变量,位置取的是每天的0、2、4、6、8、10、12、14、 16、18、20、22点整,302是8点31分(为叙述方便,将日期缺省,后面的例子均如此处 理),305是8点31分50秒,则它们的段始值为8点整(301为8点整,是302和305所 在分段的起始位置),偏移量都为31;304是10点13分12秒,则其段始值为10点整(303 为10点整,是304所在分段的起始位置),偏移量为13。如果动态变量的时间单位是30 秒,L=240,位置取的仍然是每天的0、2、4、6、8、10、12、14、16、18、20、22点整 等,302的段始值为8点整,偏移量为62;305的段始值为8点整,偏移量为63;304的 段始值为10点整,偏移量为26。\n图3的310是对次数动态变量分段的一个例子,这里L=32,位置取的是0、32、64、 96...等,312是18,则其段始值为0(311为0,是312所在分段的起始位置),偏移量为 18;314是37,则其段始值为32(313为32,是314所在分段的起始位置),偏移量为5; 315是64,则其段始值为64,偏移量为0。\n图4是当用户触发动态口令生成器,如按一下图2的202键或204的某键等,口令生 成器执行各种操作,以产生动态口令时的简明流程图。\n对于有PIN保护或支持多个验证器的口令生成器图2的203,授权用户经204输入只 有自己知道的PIN 401,口令生成器在402判别该PIN正确与否,例如生成器中保存有正 确的PIN,将PIN 401与此比较,判定PIN 401的正确性;如果不正确,在403拒绝进一 步执行,关闭生成器。如果正确,若支持多个验证器,还要求204输入请求访问的验证器 代码404,这样就启动了生成口令的程序(对图2的200,仅需按一下202就启动口令生成 程序)。口令生成器先确定此时的动态变量406,若动态变量406由时间确定,则从时钟 取时间,若动态变量406由生成口令的次数确定,则从存储该参数的存储器中取该动态变 量,并根据已确定的L和位置确定该动态变量的段始值407和偏移量411。段始值407和 动态变量406可用不同的表示形式,来作为编码408和编码412的输入值,也可以认为将 段始值407和动态变量406用不同的表示形式,作为编码408和编码412的开始。例如对 于时间确定的动态变量406,编码412可用相对于一个指定起始点(例如2000年1月1日 0点)至此时(例如2000年1月1日8点31分)的时间单位(例如1分钟)的个数来确定(例如 511整数值),编码408可直接使用该时间的字符串表示,如段始值为2000年1月1日8 点,可用“2000010108”的ASCII码表示;对于口令生成次数确定的动态变量(例如次数 为131),编码412可用该次数的整数值(例如131的整数值),编码408也可用字符串表示, 如段始值为128,可由“128”的ASCII码表示。编码408和编码412对如上表示的值进 行填补、取舍或进行一些简单的运算使其输出符合算法410和算法417的输入要求,并使 它们的区别加大。对于支持多个验证器的情形,验证器代码需同段始值连接在一起作为编 码408的输入。另外,PIN是否同验证器代码一起作为编码408的输入可以设定为系统可 选方案,若PIN也作为编码408的输入,验证器方也需要存储该用户的PIN,由此构成一 种双因素验证方案,即验证器不仅需要该口令验证器的秘密密钥,也需要用户的PIN。\n算法410和算法417可以是公开的密码算法,也可以是保密的算法;算法410和算法 417可以是相同的,也可以有一些区别;这两个算法都应当是密码学意义上安全的密码算 法,例如加密算法DES,单向杂凑算法SHA等,也可以是密码学意义上安全的伪随机数 发生器PRNG,例如ANSI X9.17标准,FIPS 186标准等所建议的生成伪随机数的方法等。 无论使用哪一种算法或方法,其目的都是使算法410和算法417输出的结果具有很好的随 机性和不可预见性,至于具体使用哪一个算法或方法,并不是本发明的主要内容,因此这 里将可逆的加密算法、单向的杂凑算法或其它的密码算法以及它们的组合等统称为加密处 理(如所述的加密处理-1、加密处理-2、加密处理-1a、加密处理-2a等)。为了举例说明的 方便,这里假定算法410和417都是单向杂凑算法SHA。\n动态口令生成器的秘密密钥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 先与偏移量411在415结合,生成一个新的动态密钥416,再以这个新的动态密钥416作 为密钥与编码412的输出作为算法417的输入。这里在415的结合可以是各种逻辑或算术 运算如模二加等,更安全的是使用一次单向杂凑函数,例如以第二个动态密钥414和偏移 量411输入进SHA,其输出的结果作为新的动态密钥416,因此该结合的选择余地是非常 大的,只要使其输出具有较好的随机性和不可预见性。由于在415的结合作用下,使每一 次生成第二个动态密码420所使用的密钥都不一样。根据第一个动态密钥413,生成一个 能替代所有偏移量的动态变换表418,由该变换表将偏移量411变换成一个m1比特的第 一个动态密码419。\n一种生成动态变换表418的方法是在第一个动态密钥413的作用下,生成长度为r(r 等于2的m1次幂,如m1=8时,r=256)的动态置换表:\n i→Si (0≤i<r,0≤Si<r)。\n这样,偏移量为k时,第一个动态密码419就是Sk。由随机、不可预测的第一个动 态密钥413,创建一个随机、不可预测的置换表是不困难的,效率也是非常高的。这里可 按如下步骤生成:\n首先,设定Si的初始状态。可以设定为明的、任意确定的一个初始状态,例如取S0= r-1,S1=r-2,...,Sr-2=1,Sr-1=0,也可以将Si的初始状态作为口令生成器的密钥,即每个 口令生成器的Si的初始状态都是不一样的,保密的。\n然后,将第一个动态密钥413按序填入K0,K1,...Kr-1中(每个Ki均为m1个比特), 如果第一个动态密钥413不够长,可重复利用该密钥,直到填满整个K0,K1,...Kr-1,执 行下述程序:\n j<==0;\n FOR i FROM 0 TO r-1 DO\n BEGIN\n j<==(j+Si+Ki) MODr;\n R<==Sj;\n Sj<==Si;\n Si<==R;\n END\n由此,就可以得到由动态密钥413决定的一个动态置换表:\n i→Si (0≤i<r,0≤Si<r)。\nm1的取值应不小于最大偏移量所拥有的比特数,通常取r适当地大于最大偏移量值。 这样,由置换表的随机、不可预测性,可以提高第一个动态密码419的随机、不可预测性。 这里以最坏的情况进行分析,设L是分段长度,r等于2的m1次幂,在偏移量为0时, 猜中其对应的第一个动态密码419的概率是1/r;偏移量为1时,假定已知道偏移量为0 时的结果,猜中对应第一个动态密码419的概率是1/(r-1),...;偏移量为L-1时,假定 已知道前面所有结果,猜中对应的第一个动态密码419的概率是1/(r-L+1);对任意一个 偏移量,猜中对应的第一个动态密码419的平均概率P=(1/r+1/(r-1)+...+1/(r-L+1)/L, 当r越大于L,该平均概率P就越小,因此,适当选取比L大一些的r即可满足实际的需 求。例如下面几种情况:\n m1 L 平均概率P\n 8 60 0.4441%\n 8 120 0.5257%\n 8 180 0.6721%\n 8 240 1.1432%\n 9 240 0.2632%\n可见,当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 个比特完全随机、不可预测码的概率。\n另一种生成动态变换表418的方法是在第一个动态密钥413的作用下,生成共L组随 机不可预测码,其中每组均为m1个比特,为叙述方便不妨称为生成随机码组方法。当偏 移量411为k时,则取第k组随机不可预测码作为第一个动态密码419。具体可按如下步 骤生成:\n首先,按照上述方法生成一个动态置换表:i→Si(0≤i<r,0≤Si<r)。\n然后执行如下程序:\n j<==0;\n FOR i FROM 0 TO k DO\n BEGIN\n j<==(j+Si) MODr;\n R<==Sj;\n Sj<==Si;\n Si<==R;\n END\n t<==(Si+Sj))MODr;\n K<==St;\n这里,k是图4的偏移量411的值,K就是所求的第k组随机、不可预测码,即以此 作为第一个动态密码419。按该种方法生成的m1个比特的第一个动态密码419被猜中的 概率均为1/2m1。\n这样一来,我们就达到了隐藏地传递同步因子的目的,使用较少随机、不可预测的比 特码既传递了同步信息,又使口令的每个比特安全可靠,从而克服了US-5887065以明的 形式传递同步信息的种种弊端。\n最后,将第一个动态密码419与第二个动态密码420结合在一起就构成了所要生成的 动态口令421,例如,将第一个动态密码419与第二个动态密码420简单地连接在一起构 成动态口令421,或者将第一个动态密码419的每一个比特按照预先指定的位置插入进第 二个动态密码420之中构成动态口令421等,都是具体的结合方式,这个结合应当是可以 分离的,即依据该结合方式,验证器方可从图5的动态口令421a分离出动态密码419a 和动态密码420a。由于第一个动态密码419与第二个动态密码420是完全无关的随机、 不可预测码,因此猜中动态口令421的概率是猜中第一个动态密码419的概率与猜中第二 个动态密码420的概率之积。对于由生成口令次数确定的动态变量,在生成动态口令421 之后,还需将存储在口令生成器的存储器中的该动态变量自动增一。\n图5是验证器在获得用户的请求和口令后,为验证该动态口令,验证器操作运行原理 的简明流程图。验证器拥有一个信息库501,它包含授权用户信息或口令生成器的秘密密 钥,以及验证器每次验证后所记录的、用于同步口令生成器动态变量的有关信息。验证器 接收到用户ID 506(或用生成器的序列号替代用户ID,以下均假设为用户ID)和动态口令 421a后,如果是基于时间的动态口令,还需根据验证器的时钟,记录下接收到该动态口 令的时间。依据用户ID 506从信息库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<r,0≤Si<r),再按 如下程序即得其逆置换:\n FOR i FROM 0 TO r-1 DO\n BEGIN\n J<==Si;\n Qj<==i;\n END\n由此得到逆置换表:i→Qi(0≤i<r,0≤Qi<r)。将从动态口令421a分离的动态密 码419a(如为i)经变换表418a变换,生成所需偏移量411a(如为Qi),在503判断还 原的偏移量411a是否在估计的偏移量范围内,如果偏移量411a在该范围内,则在406a 依据此时在407a取得的段始值和偏移量411a还原出一个动态变量;如果偏移量411a不 在该范围内,则执行步骤504。\n对应于另一种生成动态变换表418的方法,是以在502中估计的偏移量范围中的每个 偏移量值作为k,执行前面描述的生成随机码组的方法,得到相应结果K,若K与动态密 码419a匹配,则认为k就是所需的偏移量411a,并在406a依据此时在407a取得的段始 值和偏移量411a还原出一个动态变量;若在估计的偏移量范围内都没有匹配的结果,则 执行步骤504。\n在504询问是否还有其它估计的段始值(最多只可能有两个段始值),若还有,则返回 至407a取下一个估计段始值再进行上述过程。如果没有其它估计段始值了,则在505拒 绝访问,判定该口令不正确,不是授权用户。在这里,绝大部分的非法口令都会被排除掉, 而无需再进行后面进一步的操作,因此,较好地解决了US-4885778中所存在的,不能有 效排除非法口令的问题。下表是各种条件下,排除非法口令的概率,这里设第一动态密码 419的长度为8个比特,即m1=8:\n所估计偏移量范围内偏移量的个数 排除非法口令的平均概率\n1 99.609%\n2 99.219%\n3 98.828%\n4 98.437%\n5 98.047%\n6 97.656%\n7 97.266%\n8 96.875%\n9 96.484%\n10 96.094%\n因此,只要L<256,设定第一个动态密码419的长度为8个比特是较理想的。因为, 价格低廉而流行的单片机是8位机,运行上述生成动态变换表的程序的效率会非常高,因 此选择8个比特的第一个动态密码419无论在安全需求、运行效率、空间大小等各方面都 是较好的一个折衷。当然根据特定的需要,实际地加长或缩小第一个动态密码419的比特 数也是可以的。例如,增加一个比特,在同样条件下,排除非法口令的平均概率就会进一 步地提高。\n在406a依据在407a所取的估计段始值和偏移量411a还原出一个动态变量,例如用 该段始值与偏移量411a之和还原出一个动态变量,在406a还原出的动态变量经编码412a 后和动态密钥414a同时作为算法417a的输入参数。另一种情况是,动态密钥414a先与 偏移量411a在415a结合后生成一个新的动态密钥416a,然后再与编码412a的输出一起 同时作为算法417a的输入参数。算法417a的输出或输出的一部分作为验证码420b,验 证码420b与从动态口令421a中分离出的动态密码420a在511进行比较,如果不匹配, 则返回至504进行上面所述的操作。如果匹配,则在507判断在406a还原的动态变量是 否大于信息库501中记录的该口令生成器最近一次成功访问所用的动态变量(简称最近一 次动态变量),如果不大于此,在505拒绝访问,这就彻底杜绝了重放攻击;如果大于此, 则验证器认为该口令是合法的,该用户是授权用户,在509允许其访问系统资源或提供指 定服务等,同时,在510将406a步骤中所还原的动态变量用来替代信息库中存储的最近 一次动态变量,作为新的最近一次动态变量。另外,如果是基于时间的动态变量,在510 还要将在406a还原的动态变量与验证器接收到该动态口令时所记录的时间所确定的动态 变量(图6的601步骤所确定的T)之间的差值作为偏差diff,存入信息库中,以替代原有 的偏差。\n图8所示口令生成和口令验证时的流程图是图4和图5的几种替代方案,算法417 的输入密钥可以有三种方式,第一种是用秘密密钥405或其中一部分直接作为算法417 的密钥,第二种是秘密密钥405同段始值407进行运算(例如用SHA算法作用,即它们 同时作为SHA算法的输入参数)后,取其输出或其输出的一部分作为算法417的密钥, 第三种是由秘密密钥405同段始值407进行运算(例如用SHA算法作用)后,其结果或 结果的一部分再与偏移量411进行运算(例如用SHA算法作用),最后取其输出作为算 法417的输入密钥。这里叙述其步骤如下,\na)要生成口令时,动态口令生成器的微处理器执行以下步骤:\na1)根据预先给定的长度和位置对动态变量进行分段,确定当前动态变量406的段始 值407和偏移量411;\na2)在步骤801对秘密密钥405、段始值407、偏移量411进行加密处理-1,得出第一 动态密码419;在步骤802对秘密密钥405、动态变量406进行加密处理-2,得出第二动态密 码420;\na3)将动态密码419和动态密码420结合,构成动态口令421;\nb)将动态口令421传送至验证器。\nc)要验证口令时,验证器的微处理器执行以下步骤:\nc1)将接收到的动态口令421a分离成动态密码419a和动态密码420a;根据验证方动 态变量在502估计段始值和偏移量范围;\nc2)在801a步骤对收到的动态密码419a、秘密密钥405a和在407a取得的估计段始值 进行加密处理-1a,得到一个偏移量411a;\nc3)在503判断还原的偏移量411a是否在估计的偏移量范围内,若在允许的估计偏移 量范围内,则执行406a步骤,由偏移量411a与在407a取得的估计段始值一起还原出一个动 态变量,在802a步骤对秘密密钥405a和在406a还原的动态变量进行加密处理-2a,得到验 证码420b,将验证码420b与所收到的动态密码420a在511比较,若匹配则用户合法,在509 允许用户访问,验证过程结束;若不匹配或该值所确定的偏移量不在所估计的偏移量范围 内,则在504判断是否还有另外的估计段始值,若无则用户为非法,在505拒绝用户访问, 验证过程结束;若有则取下一个估计段始值,转步骤c2)。\n在步骤a2)中,还可对秘密密钥405、动态变量406和段始值407进行加密处理-2,得 出动态密码420;或对秘密密钥405、动态变量406、段始值407和偏移量411进行加密处理 -2,得出动态密码420。\n相应地,在步骤c3)中,还可对秘密密钥405a、在406a还原的动态变量和在407a取得 的估计段始值进行加密处理-2a,得到验证码420b;或对秘密密钥405a、在406a还原的动 态变量、在407a取得的估计段始值和偏移量411a进行加密处理-2a,得到验证码420b。\n图6是验证器方在接收到用户的口令后,依据自己的时钟和信息库中有关信息,估计 口令生成器方生成口令时动态变量时间的段始值和相应偏移量的范围,即就是对502过程 的详细说明。在这里,应事先说明的是,验证器方所使用的基本时间单位、分段以及位置 的确定等要求都应当与口令生成器方一致,前面已对它们作了说明,不再赘述。验证器 接收到用户的ID和口令后,先在601中记录此时的时间,并根据该时间确定动态变量T。 501信息库中的t是该用户上一次,也就是最近一次口令生成器生成并已成功登录的动态 口令所用的时间动态变量。t0是该用户口令生成器初次生成并已成功登录的动态口令所 用的时间动态变量。偏差diff就是最近一次口令生成器生成并已成功登录的动态口令所用 的动态变量与当时在601中获得的时间确定动态变量T的差值(不妨设定为上次的t减去 上次的T,当然颠倒过来也可以,但意义相反),它反映了该口令生成器时钟与验证器时 钟的偏移程度,当diff<0,表示验证器的时钟比该口令生成器的时钟相对地快diff个时间 单位,反之则是慢diff个时间单位。为便于计算,这里的动态变量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利用已知的偏差diff估计在d2 个月里会产生的偏差σ,当d1或者d2等于零时,设定σ等于0,即无需考虑此偏差,否则 计算σ=(diff/d1)×d2。在607根据d2的大小确定系统允许估计值误差的范围[c1,c2],因 为d2越大,影响时钟同步的不可预知的因素就会越多,各种估计值(如σ)的误差也会加大; 可以根据实际需要和具体情况确定范围[c1,c2],例如可如下设定其取值:\n 当d2=0,取c1=-2,c2=+1;\n 当d2=1,取c1=-3,c2=+2;\n 当d2=2,取c1=-3,c2=+3;\n不难看出,范围[c1,c2]就决定了验证器方估计偏移量范围内的偏移量个数。另一种 办法是,为了简化计算,可以省去σ的计算(即设定σ=0),并适当地将如上确定的[c1,c2] 加以扩大即可,此时,就可以省去信息库中参数t0。例如:\n 当d2=0,取c1=-2,c2=+1;\n 当d2=1,取c1=-3,c2=+3;\n 当d2=2,取c1=-4,c2=+4;\n按口令生成器同样的分段标准,根据在601确定的动态变量T,获得其偏移量r和段 始值R,然后在608根据606、607和603步骤的结果计算出对偏移量的估计值,小的值 b1=r+diff+σ+c1,大的值b2=r+diff+σ+c2。在609,如果b2<0,则在610取紧邻 R之前的一个段始值R1,偏移量范围取[b1+max,b2+max],这里max表示最大偏移量值; 否则在611如果b1<0,则在612取段始值R1,偏移量范围[b1+max,max],和段始值R, 偏移量范围[0,b2];否则在613,如果b1>max,则在614取紧邻R之后的一个段始值 R2,偏移量范围[b1-max,b2-max];否则在615,如果b2>max,则在616取段始值R2, 偏移量范围[0,b2-max],和段始值R,偏移量范围[b1,max];否则在617取段始值R, 偏移量范围[b1,b2]。以上判断顺序并不是唯一的,例如可先判定b1是否大于max等等, 另外,也可以先以diff是否大于零为序进行判断。因此,这里判断的顺序和方式是次要的, 主要的是这里总共只会出现5种可能发生的对段始值和偏移量的估计情况,并且只有两种 情况下才会出现在612和在616中需估计两个段始值。\n图7是验证器方在接收到用户的口令后,依据信息库中的信息,估计口令生成器方生 成口令时,以口令生成次数为动态变量的段始值和相应偏移量的范围,即也是对502过程 的详细说明。501信息库中的c是该用户上一次,也就是最近一次口令生成器生成的已成 功登录的口令所用的动态变量(即所用的生成口令的次数)。验证器506接收到用户的ID 和口令后,在701从库中取出c值并将c值增一,按口令生成器同样的分段标准,取动态 变量c+1的偏移量r和段始值R,在704计算对偏移量的估计值,小的值b1=r,大的值 b2=r+d,这里d值是事先确定的允许口令生成器连续生成的口令,而这些口令又没有在 验证器方成功使用的次数,d值可以是由系统统一确定,也可以是因不同的用户而具体确 定,并且跟踪每个用户使用的情况来调整,其作用相当于基于时间动态变量中允许误差范 围[c1,c2],但是所确定的d值必须足小于已设定的段长度L。在707,如果b2大于max, 则在708取段始值R,偏移量范围[b1,max],和取紧邻R之后的一个段始值R2,偏移量 范围[0,b2-max];否则在709取段始值R,偏移量范围[b1,b2]。同上一样,这里判断的 顺序和方式是次要的,主要的是这里共只会出现2种可能发生的对段始值和偏移量的估计 情况,并且只有一种情况下才会出现在708中需估计两个段始值。\n为了便于描述,在权利要求中使用了一些新的术语,这里将新术语与原有术语之间的 对应关系说明如下:\n新术语 原有术语\n第一秘密密钥 秘密密钥405\n第二秘密密钥 秘密密钥405a\n第一动态变量 动态变量406\n第二动态变量 在601确定的动态变量T,701确定的动态变量\n第三动态变量 在406a还原的动态变量\n第一段始值 段始值407\n第二段始值 在602确定的段始值R,703确定的段始值R\n第一偏移量 偏移量411\n第二偏移量 在603确定的偏移量r,702确定的偏移量r\n第三偏移量 偏移量411a\n第一加密处理 在801实现的加密处理-1\n第二加密处理 在802实现的加密处理-2\n第三加密处理 在801a实现的加密处理-1a\n第四加密处理 在802a实现的加密处理-2a\n第一动态密码 动态密码419\n第二动态密码 动态密码420\n第三动态密码 动态密码419a\n第四动态密码 动态密码420a\n第一加密算法 算法410\n第二加密算法 算法417\n第三加密算法 算法410a\n第四加密算法 算法417a\n第一动态密钥 动态密钥413\n第二动态密钥 动态密钥414\n第三动态密钥 动态密钥413a\n第四动态密钥 动态密钥414a\n第五动态密钥 动态密钥416\n第六动态密钥 动态密钥416a\n第一动态变换表 动态变换表418\n第二动态变换表 动态变换表418a\n第一编码 编码408\n第二编码 编码412\n第三编码 编码408a\n第四编码 编码412a\n上面已结合各种特定实施例描述了本发明,熟悉本领域的技术人员将理解可在不脱离 权利要求书中所陈述的发明精神与范围之下对其作出无数种变化,例如,动态口令的变化 可以不止单一地由时间决定,或单一地由生成口令的次数决定,而是可以由时间和生成口 令的次数这两个变化因素共同来决定动态口令的变化等。
法律信息
- 2011-09-14
未缴年费专利权终止
IPC(主分类): H04L 9/00
专利号: ZL 00106192.5
申请日: 2000.04.28
授权公告日: 2004.03.17
- 2011-03-30
文件的公告送达
文件的公告送达失败
收件人: 张静
文件名称: 专利权终止通知书
- 2010-08-18
文件的公告送达
文件的公告送达失败
收件人: 张静
文件名称: 缴费通知书
- 2004-03-17
- 2001-11-14
- 2001-05-09
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |