具有种子密钥更新功能的动态令牌及其种子密钥的更新方法
技术领域
本发明涉及一种动态令牌,特别是涉及一种具有种子密钥更新功能的动态令牌及其种子密钥的更新方法。
背景技术
身份认证是信息安全体系的重要组成部分,它的任务是检验信息系统用户身份的合法性和真实性,并按系统授予的权限访问系统资源,将非法访问者拒之门外。
身份认证技术分为:静态口令认证、动态口令认证、生物技术(指纹、虹膜、面容等)认证、通过第三方发放的数字证书(CA)认证等。静态口令认证是计算机系统的早期身份认证产品,因静态口令的静态特性和重复使用性,存在易窃取、易猜测、易破解等安全缺陷,是一种弱身份认证系统,用于安全等级要求较低的信息系统。
动态口令也称一次性口令。动态口令是变动的口令,其变动来源于产生口令的运算因子是变化的。它的主要特性在于每次产生的口令是变化的,并且只能使用一次,因此有效的避免了被猜测、破解和重用等静态口令固有的安全弱点,作为主要的认证技术之一,目前广泛应用于电子商务、远程访问、内部系统访问等的身份认证。
动态令牌是用于产生动态口令的电子终端设备,通常包括内置处理芯片、显示屏,部分设备带有按键装置。动态令牌产生的动态口令需要通过认证服务器软件系统的验证。认证服务器软件系统使用与动态令牌相同的算法、密钥和输入因素(时间值或事件计数器)。在当前时刻或计数器值,动态令牌产生的动态口令与认证服务器软件系统相同,即表明用户使用了正确的动态令牌,从而实现对用户的身份认证。
动态令牌与认证服务器软件系统共享的变动因素包括时间值或事件计数器,这些因素每次都是变化的,作为用于产生动态口令的输入,以保证动态口令每次都是变化的。
动态令牌与认证服务器软件系统之间共享的固定因素包括密钥KEY和变量IV,变量IV用于对密钥KEY或输入的变动因素进行变换。固定因素(KEY,IV)被称为动态令牌和认证服务器软件系统的种子密钥。
动态令牌的种子密钥通常为初始密钥,或可由初始密钥导出。动态令牌使用种子密钥根据当前时间或事件计数器的值生成动态口令。种子密钥用于对输入的时间或事件计数器进行加密或HMAC操作,通过变换运算(通常是模运算)后输出6-8位数字到显示屏,作为动态口令。如果没有种子密钥更新功能,种子密钥可完全由初始密钥导出。因此,动态令牌的安全性依赖于种子密钥的保密性,一旦种子密钥外泄,该动态令牌产生的动态口令可以被其它设备产生,即动态令牌的动态口令不再安全。不具备种子密钥更新功能的动态令牌无法从种子密钥外泄的事故中恢复,意味着该动态令牌不能再使用。
由于初始密钥在投产前经过生产厂商、运输商、中间商和系统运行管理人员,在该过程中初始密钥均有可能被泄露。为保证动态令牌的安全性,应提供一种方法使投产后的动态令牌实际使用的种子密钥不可由初始密钥推算出,以及在投产后可根据需要更新动态令牌的种子密钥。
种子密钥的更新方法可选择:
1.双钥体系的密钥协商或分发。即利用如DH算法、RSA算法或DSA算法协商种子密钥。由于动态令牌的芯片的计算局限性,基于双钥(公开密钥)体系的密钥协商/分发的方法不具可行性,并且该方法易受到中间人攻击的威胁。
2.在客户现场提供密钥更新设备。客户现场提供密钥更新设备需采购大量的设备,并且密钥分发过程存在种子密钥泄露的问题,种子密钥的注入需要额外的工作量,并有可能产生设备损坏。
发明内容
本发明的目的是提供一种具有种子密钥更新功能的动态令牌及其种子密钥更新方法,使动态令牌的发行者或用户能够根据需要安全地更新动态令牌的种子密钥,消除了因动态令牌出厂时初始密钥外泄引起的安全风险;即使动态令牌发行者的种子密钥数据库外泄,也能通过更新动态令牌的种子密钥恢复已经发行的动态令牌的安全性。
本发明的目的是这样实现的:
本发明第一方面提供了一种种子密钥的更新方法,包括以下步骤:
动态令牌接收用户的更新指令,生成随机数序列;
所述动态令牌根据所述随机数序列执行效验算法产生校验码TC,并根据所述随机数序列和初始密钥生成存储在所述动态令牌中的种子密钥;
所述动态令牌显示生成的所述随机数序列和所述校检码TC,操作人员记录显示的所述随机数序列和所述校检码TC;
进入认证服务器提供的更新界面,操作人员输入记录的所述随机数序列和所述校验码TC;
所述认证服务器根据所述输入的随机数序列执行效验算法产生校验码SC,并根据所述输入的校验码TC和所述校验码SC是否相同以判断所述输入的随机数序列与所述动态令牌产生的随机数序列是否一致;和
如果判断所述校验码TC和所述校验码SC相同,则所述认证服务器根据输入的随机数序列和初始密钥生成存储在所述认证服务器中的种子密钥。
其中,所述根据所述随机数序列和初始密钥生成种子密钥进一步包括:
以所述初始密钥为密钥对所述随机数序列进行加密以生成所述种子密钥;
或者,以所述初始密钥和所述随机数序列实施单向杂凑函数的算法以生成所述种子密钥;
或者,采用密钥混合算法对所述初始密钥和所述随机数序列进行混合以生成所述种子密钥。
其中,接收所述更新指令包括:
用户根据预设规则触发动态令牌管理菜单,所述动态令牌管理菜单中包括显示动态令牌序列号、剩余电量、更新种子密钥选项;
如果所述用户选择所述动态令牌管理菜单中所述更新种子密钥的选项之后,则判断接收到所述更新指令。
其中,所述随机数序列为十进制随机数序列,所述十进制随机数序列由所述动态令牌产生的二进制初始随机数序列经模运算转换得到。
其中,所述种子密钥与所述初始密钥具有相同的密钥安全长度。
其中,在所述认证服务器完成更新之后,还包括:
所述动态令牌根据更新的种子密钥生成动态口令,并提供给所述认证服务器;
所述认证服务器根据更新的种子密钥对所述动态口令进行验证;
如果所述认证服务器判断所述动态口令通过验证,则确认所述认证服务器和所述动态令牌完成更新;和
如果所述认证服务器判断所述动态口令未通过验证,则重新执行所述动态令牌的种子密钥更新操作。
本发明的第二方面提出了一种种子密钥的更新系统,包括:
动态令牌,用于接收用户的更新指令,并根据所述更新指令生成随机数序列,和根据所述随机数序列执行效验算法产生校验码TC,并根据所述随机数序列和初始密钥生成存储在所述动态令牌中的种子密钥,并且显示生成的所述随机数序列和所述校验码TC,操作人员记录显示的所述随机数序列和所述校验码TC;
认证服务器,用于向用户提供更新界面,由操作人员向其输入所述记录的随机数序列和校验码TC,以及根据所述输入的随机数序列执行效验算法产生校验码SC,并根据所述输入的校验码TC和所述校验码SC是否相同以判断所述输入的随机数序列与所述动态令牌产生的随机数序列是否一致,且在判断所述校验码TC和所述校验码SC相同时,根据输入的随机数序列和初始密钥生成存储在所述认证服务器中的种子密钥。
其中,所述种子密钥通过以所述初始密钥为密钥对所述随机数序列进行加密生成;
或者,所述种子密钥通过以所述初始密钥和所述随机数序列实施单向杂凑函数的算法生成;
或者,所述种子密钥通过采用密钥混合算法对所述初始密钥和所述随机数序列进行混合生成。
其中,所述随机数序列为十进制随机数序列,所述十进制随机数序列由所述动态令牌产生的二进制初始随机数序列经模运算转换得到。
其中,所述种子密钥与所述初始密钥具有相同的密钥安全长度。
本发明第三方面提出一种具有种子密钥更新功能的动态令牌,包括:
输入模块,用于接收用户的输入;
命令控制模块,用于在所述用户的输入满足预设规则时触发动态令牌管理菜单,在用户选定更新种子密钥选项后,按键进入种子密钥更新状态,调用种子密钥管理模块进行种子密钥的更新;
所述种子密钥管理模块,用于生成随机数序列,并根据所述随机数序列执行效验算法产生校验码TC,以及根据所述随机数序列和初始密钥生成种子密钥;和
密钥存储模块,用于保存生成的所述种子密钥和所述初始密钥。
其中,所述随机数序列为十进制随机数序列,所述十进制随机数序列由所述动态令牌产生的二进制初始随机数序列经模运算转换得到。
其中,所述种子密钥管理模块包括:
随机数产生模块,用于产生二进制随机数;
计算转换模块,用于将所述随机数产生模块产生的二进制随机数转化为所述以十进制表示的随机数序列,并根据所述以十进制表示的随机数序列执行效验算法产生校验码TC;和
密钥更新模块,用于根据所述计算转换模块生成的以十进制表示的随机数序列和所述密钥存储模块中的初始密钥生成种子密钥。
其中,所述密钥更新模块以所述初始密钥为密钥对所述以十进制表示的随机数序列进行加密以生成所述种子密钥;
或者,所述密钥更新模块以所述初始密钥和所述以十进制表示的随机数序列实施单向杂凑函数的算法以生成所述种子密钥;
或者,所述密钥更新模块采用密钥混合算法对所述初始密钥和所述以十进制表示的随机数序列进行混合以生成所述种子密钥。
其中,所述种子密钥与所述初始密钥具有相同的密钥安全长度。
其中,还包括:动态口令计算模块,用于根据所述种子密钥计算动态口令。
其中,还包括:显示控制模块,所述显示控制模块分别与所述命令控制模块、所述种子密钥管理模块、动态口令计算模块和显示模块相连,用于将动态令牌管理菜单、以十进制表示的随机数序列、所述校验码TC和所述动态口令发送至显示模块;
所述显示模块,用于向用户显示动态令牌管理菜单、所述以十进制表示的随机数序列、所述校验码TC和所述动态口令。
其中,所述输入模块为一个或多个按键、按钮或感应开关。
其中,还包括:超时判断模块,用于在用户超过预定时间没有进一步操作之后,停止更新操作并控制所述动态令牌进入休眠状态。
本发明的一种具有种子密钥更新功能的动态令牌及其种子密钥更新方法,可以对动态令牌中的种子密钥进行更新,同时不需要专门的设备,不需要成本很高且耗电的计算芯片,对已有外部按键的动态令牌也不需要对硬件进行改动,从而使动态令牌更加安全、实用。
附图说明
图1为本发明具有种子密钥更新功能的动态令牌的系统结构图;
图2为本发明动态令牌种子密钥更新方法的操作流程图;
图3为本发明与认证服务器软件系统对应的种子密钥的更新的操作流程图;
图4为本发明确认动态令牌与认证服务器软件系统的种子密钥同步更新的操作流程图。
具体实施方式
下面,结合附图详细描述根据本发明的优选实施例。为了便于描述和突出显示本发明,附图中省略了现有技术中已有的相关部件,并将省略对这些公知部件的描述。
如图所示,图1为本发明具有种子密钥更新功能的动态令牌的电路结构图。一种具有更新种子密钥功能的动态令牌,包括:输入模块401、显示模块402、命令控制模块403、显示控制模块404、种子密钥管理模块405、密钥存储模块406、动态口令计算模块407和供电模块。
输入模块401与命令控制模块403相连,显示模块402与显示控制模块404相连,命令控制模块403分别与输入模块401、种子密钥管理模块405、动态口令计算模块407、显示控制模块404相连,显示控制模块404分别与命令控制模块403、种子密钥管理模块405、动态口令计算模块407、显示模块402相连,种子密钥管理模块405分别与命令控制模块403、密钥存储模块406、显示控制模块404相连,动态口令计算模块407分别与命令控制模块403、密钥存储模块406、显示控制模块404相连。
种子密钥管理模块405还包括随机数产生模块4051、计算转换模块4052、密钥更新模块4053,其中:随机数产生模块4051,用于产生二进制随机数Tr,提供给计算转换模块4052;计算转换模块4052,用于将二进制随机数Tr转换为以十进制表示的随机数序列和计算校验码,转换方法通常为对Tr实施十进制的模运算,并按照命令控制模块403的指令输出;密钥更新模块4053,使用输出的以十进制表示的随机数序列更新密钥存储模块内的种子密钥,种子密钥的更新方法可以是以初始密钥作为密钥,对随机数序列进行加密(如AES,DES等)的算法;或以初始密钥与随机数序列实施单向杂凑函数的算法(如MD5,SHA-1等);或其它密钥混合算法对初始密钥和随机数序列进行混合以产生种子密钥。对种子密钥更新算法的要求是生成的种子密钥具有与初始密钥相同的密钥安全长度。
输入模块401:为接收用户的输入的触发装置,可以是一个或多个按键、按钮、感应开关。
显示模块402:为显示装置,用于显示输出的动态口令、随机数序列数字、校验码和工作状态,包括段码显示屏、点阵屏、字符屏和图形屏。
命令控制模块403:用于根据输入模块401的触发动作,调用执行的后续操作。如调用动态口令计算模块407生成动态口令,或调用种子密钥更新模块更新种子密钥。
显示控制模块404:用于接收命令控制模块403、种子密钥管理模块405、动态口令计算模块407输出的数据,驱动显示模块402,显示相应的数据。
密钥存储模块406:用于存储种子密钥管理模块405更新的种子密钥和出厂时预设的初始密钥。
动态口令模块407:接收命令控制模块403的命令,用于根据种子密钥产生动态口令,并传递给显示控制模块404。
供电模块:为所述动态令牌供电。
本实施例所述输入模块401可以是单个触发按键,命令控制模块403接收到触发按键后,按照设定规则(如持续按键10秒后)触发动态令牌管理菜单,在管理菜单内包括显示动态令牌序列号、剩余电量、更新种子密钥选项,用户在选定更新种子密钥选项后,按键进入种子密钥更新状态。所述设计使动态令牌在正常情况下显示动态口令,只有触发了特定的条件后才进入种子密钥更新状态,减少了用户的使用负担及误操作触发机会。
本实施例还包括超时判断模块,用于处理在动态令牌的操作过程中的触发按键超时。在动态令牌只有单个触发按键的情况下,超过设定时间(如60秒)不按键作为放弃种子密钥更新操作的判断条件,同时动态令牌进入休眠状态。超时处理还避免了因用户忘记操作而导致动态令牌一直处于高耗电的工作状态。
如图2,图2为本发明动态令牌种子密钥更新方法的操作流程图。设m为每次输出的十进制随机数Oi的位数,随机数要求的Oi的个数为p,(如m=6,p=4,则随机数序列分4次输出,每次输出6个十进制数,以上设置相当于以80个二进制位更新种子密钥)。为避免动态令牌长时间等待消耗电能,需要对触发装置进行超时控制,在超过设定时间未收到触发操作时,退出动态令牌的种子密钥的更新操作。
更新动态令牌的种子密钥的具体操作步骤包括:
步骤101:通过触发装置,触发动态令牌操作。
步骤102:动态令牌判断本操作是否为动态令牌的种子密钥更新操作。如果是执行步骤103;如果不是,执行步骤121。种子密钥更新的触发操作可使用特定的外部触发装置(按键)触发,也可与其它功能共用一个触发装置。在共用触发装置时,可以利用触发装置切换状态并显示给用户,由用户选择进入种子密钥更新状态;也可规定触发操作的时间长度、触发频率(如连续触发2次)作为触发种子密钥更新操作的条件。
步骤103:进入种子密钥更新操作,完成初始计算,设置O的下标i=1。
步骤104:显示m位的十进制数Oi,(用户需要手工记录动态令牌输出的Oi),O的下标i加1;
步骤105:判断是否有触发操作;如果是执行步骤107;如果不是,执行步骤106;本步骤的触发操作可以是专用的触发装置,也可与其它功能共用一个触发装置。
步骤106:判断是否超时,如果是,转到步骤114。
步骤107:动态令牌判断是否已输出p个Oi,如果不是,回到步骤104;如果是,进入步骤108。
步骤108:计算并显示校验码。本步骤完成后,用户需手工记录动态令牌显示的校验码。本步骤完成后,用户应已记录下O1、O2、..Op和校验码。
步骤109:判断是否有触发操作;如果是执行步骤111;如果不是,执行步骤110。
步骤110:判断是否超时,如果是执行步骤113;如果不是,回到步骤109。如果用户放弃更新操作,可以不进行任何触发操作,待超时后执行步骤113。
步骤111:判断是否触发确认操作,如果是,执行步骤112;如果不是,执行步骤113。本步骤的触发确认操作可以是通过专用的触发装置,也可与其它功能共用一个触发装置。判断方法包括是否触发了专用的触发装置,或者特定的触发操作,或仅仅是启动了触发装置。
步骤112:使用O1、O2..Op及初始密钥更新种子密钥,执行步骤114。
步骤113:执行步骤114。
步骤114:退出动态令牌种子密钥更新操作。
在完成动态令牌的种子密钥更新操作后,需要对认证服务器软件系统对应的动态令牌的种子密钥实施更新操作。
图3为本发明与认证服务器软件系统对应的种子密钥的更新的操作流程图,具体包括步骤:
步骤201:选择认证服务器软件系统种子密钥更新功能。
步骤202:输入要更新的动态令牌的序列号。
步骤203:输入步骤108完成后记录的O1、O2..Op和校验码。
步骤204:计算输入的O1、O2..Op的校验码。本步骤的算法与步骤108的算法一致。
步骤205:比较计算出的校验码是否等于已记录的动态令牌的校验码。如果是,执行步骤206。
步骤206:更新认证服务器软件系统内对应的动态令牌序列号的种子密钥。
步骤207:结束更新操作。
正常情况下,图2和图3的操作已完成了动态令牌与认证服务器软件系统的种子密钥的同步更新。但为避免因误操作导致的动态令牌与认证服务器软件系统的种子密钥更新的不一致,用户和操作人员应执行图4所示的流程。
图4为本发明确认动态令牌与认证服务器软件系统的种子密钥同步更新的操作流程图,具体包括步骤:
步骤301:执行动态令牌种子密钥更新操作。本操作为上述的图2所述的操作。本步骤若成功执行完毕,应记录下O1、O2..Op和校验码。
步骤302:判断是否成功更新动态令牌的种子密钥。如果是,转入步骤303。如果不是转入步骤307。本步骤的判断为根据步骤301的结果,由人工进行判断。
步骤303:以O1、O2..Op和校验码作为输入,执行认证服务器软件系统的种子密钥更新操作。本操作为上述的图3所述的操作。
步骤304:判断是否成功执行认证服务器软件系统的种子密钥更新。如果是,转入步骤305。如果不是,转入步骤306。
步骤305:完成认证服务器软件系统的种子密钥更新功能,转至步骤309。
步骤306:核对是否记录的O1、O2..Op和校验码错误。如果是,执行步骤301,重新执行动态令牌的种子密钥更新操作。如果不是,则应判断步骤303发生为输入错误,转至步骤303重新执行认证服务器软件系统的种子密钥更新操作。
步骤307:在步骤301失败后,决定是否重新执行动态令牌种子密钥更新操作。如果是,转至步骤301。如果不是,转至步骤308。
步骤308:放弃种子密钥更新操作。
步骤309:使用动态令牌产生动态口令。
步骤310:使用认证服务器软件系统对动态口令进行验证。
步骤311:判断动态口令是否通过认证服务器软件系统验证。如果是,转入步骤312。如果不是,说明动态令牌与认证服务器软件系统的种子密钥更新不一致,转入步骤301,重新执行动态令牌的种子密钥更新操作。
步骤312:确认动态令牌与认证服务器软件系统的种子密钥正确地同步更新。
本说明书中所述的只是本发明的几种较佳具体实施例,以上实施例仅用以说明本发明的技术方案而非对本发明的限制。凡本领域技术人员依本发明的构思通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在本发明的范围之内。