专利名称:一种基于预运算的密码卡动态认证方法及系统的制作方法
技术领域:
本发明涉及一种动态认证方法和系统,尤其涉及一种基于预运算的密码卡动态认证方法及系统。
背景技术:
在计算机网络中,最常见而且最简单的访问控制方法是使用口令,通过对口令的匹配来确认用户的合法性。口令不安全是网络系统中普遍存在的隐患。据美国某专业安全协会对近千名公司网络管理员的调查表明,有60%的系统首先被攻击和突破的部位是口令,而烦琐的口令设置又给用户带来很多麻烦,对此系统管理员感到进退两难。
随着互联网技术及电子移动商务的迅猛发展,各种口令欺诈、企业员工内外勾结伪造冒用合法用户身份,非法入侵企业核心机密、窃取泄露破坏企业资源,非法使用资源,各种欺诈者假冒银行及交易网站,套用窃取用户密码及交易信用卡账号,盗用用户资金等时有发生。
申请号为200410098462.8、发明名称为“基于动态密码表的动态密码生成和认证系统及方法”的中国专利申请,公开了一种基于动态密码表的动态密码生成和认证系统及方法。其原理是密码表生成器根据不同的用户分别生成一个随机数组成的动态密码表(简称密码表或表),将表绑定到对应的账户上,并以纸面或电子的形式提供给用户,再口头或通信约定初始有效码位置。有效码只能用一次,下次用时有效码将变为表中下一个密码,若有效码在表尾,下一个有效码变为表中第一个,即循环使用密码表。因忘记或需要可通过各种通讯方式重新约定有效码位置,即有效码校准。密码表的更换和有效码校准可随时进行。
该申请采用服务器和客户端同时预计算,也即服务器端已经有预计算的密码暂存,等待与客户端输入的密码进行比较。服务器一旦被入侵,服务器端预计算的密码被获知,那么整个安全机制将失效。而且,该申请只涉及到客户端与验证服务器之间的交互,当遇到很多个需要受保护的资源时,必须设置相同数量的验证服务器才能满足要求,增加了设备投入。
发明内容
本发明的目的在于解决上述问题,提供了一种基于预运算的密码卡动态认证方法及系统,避免口令泄密所带来的安全隐患,最大限度降低了网上交易的风险,提升了电子政务和网上交易服务的安全性。
本发明的技术方案为本发明提供了一种基于预运算的密码卡动态认证方法,用于用户访问受保护资源时的安全认证,其中,所述方法包括大素数据库根据用户编号生成种子值,对该种子值进行预运算,依次生成包含多个密码值的密码组,并将该密码组中的所有密码值按生成的顺序加以保存;认证代理应用服务器每次接收一个密码值,该密码值由用户从该密码组的第一个密码值开始,按上一步的保存顺序依次不重复地输入,且每个密码值使用之后即失效,该认证代理应用服务器在接收该密码值的同时接收用户标识和静态密码,其中用户标识和用户编号一一对应;认证代理应用服务器将该密码值、用户标识和静态密码发送至认证服务器,认证服务器判断用户标识是否合法,根据合法的用户标识找出预存在认证服务器数据库中对应的种子值,该种子值与第一步中由大素数据库生成的种子值相同,该认证服务器根据该种子值及顺序号实时生成相对应的密码值;认证服务器将接收到的静态密码和密码值与认证服务器数据库中预存的静态密码和上一步中生成的密码值作比较,比较两者是否相同,并将比较结果返回认证代理应用服务器;认证代理应用服务器接收比较结果并判明是否合法,若合法则允许用户访问受保护的资源,否则禁止用户访问受保护的资源。
上述的基于预运算的密码卡动态认证方法,其中,第一步中生成密码组的预运算方式包括根据种子值和预设的初始值生成第一个密码值;根据种子值和上一个密码值生成当前的一个密码值;重复上一步直到生成所有的密码值。
上述的基于预运算的密码卡动态认证方法,其中,认证服务器实时生成密码值的运算方式与用户端密码卡生成密码组的预运算方式相同第一次认证时,根据种子值和预设的初始值生成第一个密码值,并保存在认证服务器数据库中,其中初始值与用户端密码卡生成密码组中的预设初始值相同;之后的认证,根据种子值和保存在数据库中的上一次生成的密码值生成当前的一个密码值。
上述的基于预运算的密码卡动态认证方法,其中,所述大素数据库提供的特定种子值具备无限量循环重复的最小概率。
本发明还提供了一种基于预运算的密码卡动态认证系统,用于用户访问受保护资源时的安全认证,所述系统包括密码卡、认证代理应用服务器和认证服务器,其中,该密码卡由一密码生成工具根据用户编号由大素数据库产生种子值,通过预运算生成包含多个密码值的密码组,并按密码生成顺序保存在该密码卡上;该认证代理应用服务器包括认证信息接收单元,每次接收一个由用户按该密码卡上的顺序输入的密码值,同时接收用户标识和静态密码,将认证信息用户标识、静态密码和密码值发送至该认证服务器,其中用户标识和用户卡编号是一一对应的;比较结果接收单元,接收认证服务器发来的比较结果并判明是否合法以决定用户是否具有访问受保护资源的权限,如果比较结果合法,允许用户访问受保护资源,否则禁止用户访问受保护资源;该认证服务器包括认证服务器数据库,存储合法的用户标识、静态密码以及各用户标识对应的种子值;种子值查询单元,接收该认证代理应用服务器发送来的用户标识、静态密码和密码值,根据用户标识查询预存在认证服务器数据库中对应的种子值,该种子值与密码卡中由大素数据库生成提供的种子值相同;密码值生成单元,根据种子值查询单元查询到的种子值实时生成与接收到的密码值相对应的密码值;比较单元,将接收到的静态密码和密码值与预存在认证服务器数据库中的静态密码以及密码值生成单元生成的密码值作比较,比较两者是否相同,将比较结果传送至认证代理应用服务器。
上述的基于预运算的密码卡动态认证系统,其中,所述密码卡是一刮刮卡,该刮刮卡上的所有密码值在使用前均被可刮涂层覆盖并标有顺序号,每次使用时按顺序刮开一个密码值上的涂层显示该次应用的密码值,使用后该密码值失效。
上述的基于预运算的密码卡动态认证系统,其中,所述密码卡是一动态口令点卡,包括动态密码生成单元,密码卡芯片植入该密码生成工具,在信号触发后按生成顺序实时生成一个动态密码;动态密码触发单元,产生一触发信号至动态密码生成单元;动态密码显示单元,显示由动态密码生成单元产生的动态密码;用户加密密码锁定单元,接收由用户设定输入的用户加密密码并加以锁定。
上述的基于预运算的密码卡动态认证系统,其中,该大素数据库提供的特定种子值具备无限量循环重复的最小概率。
上述的基于预运算的密码卡动态认证系统,其中,该密码生成工具根据种子值和预设的初始值生成第一个密码值,接着根据种子值和上一个密码值生成当前的一个密码值,如此循环至生成所有的密码值。
上述的基于预运算的密码卡动态认证系统,其中,该认证服务器中的密码值生成单元在第一次认证时根据种子值和预设的初始值实时生成第一个密码值并加以保存,在之后的认证时根据种子值和上一次生成的密码值实时生成当前的一个密码值并加以保存,其中该密码值生成单元中预设的初始值以及生成方式与密码生成工具中预设的初始值以及生成方式相同。
本发明对比现有技术有如下的有益效果本发明中,根据大素数据库产生的与用户卡编号对应的种子值通过预运算生成多个密码值并按生成顺序保存在密码卡上,用户按照密码卡上的顺序每次输入一个密码值,同时输入用户标识和静态密码,由客户端认证代理应用服务器接收并转发给认证服务器。认证服务器根据经判断为合法的用户标识找到预存在认证服务器数据库中对应的种子值,根据找到的特定种子值实时生成当前密码值,并将认证服务器数据库中的静态密码和刚生成的当前密码值与用户输入的静态密码和密码值作比较,根据比较结果来决定用户是否具有访问受保护资源的权限。本发明相对现有技术操作简单易用,性价比高,实施及集成容易,安全性得到进一步提升。
图1是本发明的基于预运算的密码卡动态认证方法一个较佳实施例的流程图。
图2是本发明的基于预运算的密码卡动态认证系统一个较佳实施例的工作示意图。
图3是本发明的刮刮卡的一个较佳实施例的示意图。
图4是本发明的动态口令点卡的一个较佳实施例的外形示意图。
图5是图4所示实施例的框图。
具体实施例方式
下面结合附图和实施例对本发明作进一步的描述。
图1示出了本发明的基于预运算的动态认证方法的一个实施例的流程。请参见图1,下面是对流程中各步骤的详细描述。
步骤S1大素数据库根据用户卡编号产生种子值,通过预运算生成包含多个密码值的密码组,并将该密码组中的所有密码值按生成的顺序加以保存。
例如,大素数据库根据用户卡编号生成三条由18位数字组成的种子值,经过预运算产生一组由数字组成的18位密码值,将这些密码值按生成时的顺序排列在密码卡上。其中,大素数据库提供的种子值必须具备无限量循环重复的最小概率以保证用户卡编号的唯一性。每张密码卡对应唯一的用户卡编号。
在本实施例中以一密码值生成函数来生成密码组,其中密码值生成函数形式如下long acSeaKESyncAuthGenerateCode(char*acPartKey1,char*acPartKey2,char*acPartKey3,char*acPartKey4),其中形式参数acPartKey1、acPartKey2、acPartKey3、为用户卡编号对应的三条种子值,形式参数acPartKey4初始为空字符串“”,之后为上一次产生的密码值。函数返回值为18位的密码值。为了用户输入的方便,可以按规则取其中的6位作为保存在密码卡上供用户输入的密码值。
从上述函数形式中可看出,密码值的生成过程如下首先,根据种子值和预设的初始值(这里为空字符串)生成第一个密码值,然后根据种子值和上一个密码值生成当前的一个密码值,重复上一步直到生成所有的密码值。
步骤S2认证代理应用服务器作为受保护资源的客户端每次接收一个密码值、用户标识和静态密码。
该密码值由用户输入,而且输入顺序规定为从密码卡的第一个密码开始,按顺序(即密码卡上的保存顺序,也即密码值生成的顺序)逐个输入。密码值的输入不得重复,而且每次使用之后密码值即会失效。而用户标识和用户卡编号存在一一对应的关系。
例如,在密码卡上对这些密码值按生成时的顺序进行编号,当第一次使用密码卡时,输入用户编号、静态密码以及编号为1的密码值,当下一次使用时,输入编号为2的密码值,依此类推。为了与静态密码作区分,我们将用户输入的密码卡上的密码值称为动态密码。
步骤S3认证代理应用服务器将步骤S2中接收到的用户标识、静态密码和动态密码发送至认证服务器。
步骤S4认证服务器判断用户标识是否合法,若合法则进入下一步流程,否则转至步骤S9后结束整个流程或者转至步骤S2重新等待用户输入。
步骤S5认证服务器根据用户标识找出预存在认证服务器数据库中对应的种子值,这里的种子值与步骤S1用于生成密码的种子值相同。认证服务器根据找到的种子值实时同步生成当前动态密码。当前动态密码与认证服务器接收到的密码值相对应。
这里生成当前动态密码的方式与步骤S1的相同。例如,采用与步骤S1相同的生成函数long acSeaKESyncAuthGenerateCode(char*acPartKey1,char*acPartKey2,char*acPartKey3,char*acPartKey4)来实时生成当前动态密码。也即当第一次认证时,根据种子值和预设的初始值生成第一个动态密码,当后续的认证时,根据种子值和上一次生成的动态密码生成当前的一个动态密码。
这里有两点值得注意一点为认证服务器是实时生成当前动态密码的,所谓实时,是指认证服务器并不是预运算出所有的动态密码,存入数据库中待查询,而是在每次验证时才运算出所需的动态密码。另一点是认证服务器上生成的当前动态密码和输入的动态密码是同步对应的。所谓同步对应,是指用户是按照密码生成顺序输入动态密码,认证服务器也是每次按照此顺序实时生成动态密码,两者保持同步。
步骤S6认证服务器将预存在数据库中的静态密码和步骤S5中生成的当前动态密码与接收到的由用户输入的静态密码和动态密码作比较,并比较两者是否相同,将判断结果返回至认证代理应用服务器。
步骤S7认证代理应用服务器接受认证服务器比较结果并判明是否合法,若合法进入步骤S8,若不合法进入步骤S9。
步骤S8允许用户访问受保护的资源。
步骤S9禁止用户访问受保护的资源。
图2示出了本发明的基于预运算的密码卡动态认证系统,请参见图2,认证系统20由刮刮卡21和/或动态口令点卡25(可统称为密码卡)、认证代理应用服务器22和认证服务器23组成。认证服务器23通过中心局域网和互联网与认证代理应用服务器22相连,认证代理应用服务器22包括Web服务器、应用服务器及通讯服务器/路由器。
认证代理应用服务器22安装在所需保护的网络设备或应用系统的终端,当用户访问受保护的资源时,由认证信息接收单元从应用表示层24接收用户输入的用户标识、静态密码和动态密码等认证信息,并将这些认证信息转发到认证服务器23。认证服务器23判断用户标识是否合法,如果合法则通过种子值查询单元根据该用户标识在认证服务器数据库查询对应的种子值,该种子值与密码生成时的种子值相同,密码值生成单元根据找到的种子值实时同步生成当前的动态密码。然后通过比较单元将接收到的用户输入的静态密码、动态密码与认证服务器数据库中静态密码、生成的当前动态密码相比较,判断两者是否相同,并将比较结果返回至认证代理应用服务器22的比较结果接收单元。作为一个示例,认证函数形式为long_stdcall LgetLogin(char acUserName[],char acPIN[],characTokenValue[],int iTokenValueStart,int iTokenValueLen),其中参数acUserName表示用户标识,参数acPIN表示静态密码,参数acTokenValue表示用户认证时的密码卡上的动态密码值,参数iTokenValueStart表示认证时密码卡的动态密码的起始位,参数iTokenValueLen表示认证时输入的令牌密码长度。返回值分别代表以下几种情况认证成功、数据库错误、用户已登录、不存在此用户、不存在此密码卡、此密码卡不属于用户、非法用户、提示再试一次、密码错误等。
认证代理应用服务器22的比较结果接收单元在接收到认证服务器23的比较结果并判明是否合法后决定用户是否具有访问受保护资源的权限,如果合法则允许用户访问受保护资源,否则禁止用户访问受保护资源。
刮刮卡21由一密码生成工具生成包含多个密码值的密码组。首先根据用户编号由大素数据库产生种子值,通过上述的密码生成函数预运算生成多个密码值并按密码生成的顺序保存在该刮刮卡21上。大素数据库提供的种子值必须具备无限量循环重复的最小概率以保证用户编号的唯一性。在一个示例中,种子值是三条素数,生成一组由数字组成的18位密码值。密码值生成的函数形式如下longacSeaKESyncAuthGenerateCode(char*acPartKey1,char*acPartKey2,char*acPartKey3,char*acPartKey4),其中形式参数acPartKey1、acPartKey2、acPartKey3、为3个种子值,形式参数acPartKey4初始为空字符串“”,之后为上一次产生的密码值。函数返回值为18位的密码值。同时,为了操作方便,可按规则截取其中的6位作为刮刮卡上的密码值。
请结合图3,刮刮卡21可以是硬质的纸质或者硬塑卡片,生成的N(例如40~100)个密码值按照生成时的顺序印刷在该刮刮卡21上,并以可刮涂层覆盖,涂层上标记顺序号。登录系统或者需要访问受保护资源时,用户按顺序刮去涂层显示出本次应用的动态密码,该密码只在当前应用中有效,不能重复使用。用户将本次应用的动态密码、静态密码和用户标识通过终端的应用表示层24输入。
请结合图4和图5,动态口令点卡25内部设有动态密码生成单元251、动态密码显示单元252、动态密码触发单元253以及用户加密密码锁定单元254。其中用户加密密码锁定单元254接收用户自设的加密密码并加以保存锁定,动态密码触发单元253检测到用户的相关操作(例如按下按键S),产生一触发信号至动态密码生成单元251。动态密码生成单元251内部植入密码生成工具,在接收到触发信号后利用密码生成工具中的密码生成函数,及由大素数据库根据用户编号提供的种子值,再由种子值按顺序实时生成一个动态密码,然后由动态密码显示单元252在显示屏255上显示由动态密码生成单元251产生的动态密码(图示为472134),同时显示该动态密码的顺序号(图示为7777)。如果用户再次按下按键S,则动态密码触发单元253会再发送一个触发信号,动态密码生成单元251实时产生下一个动态密码及顺序号并显示在显示屏255上。F为加密密码设置锁定键,可由用户自行设定。
密码卡生成工具植入动态口令卡25的芯片,根据大素数据库提供的用户编码对应的种子值由密码卡按键s触发并显示经密码卡芯片按顺序运算产生的计算值(动态密码)及相应的顺序号。该计算值(动态密码)可以密码卡的加密密码(PIN码)锁定键F加以保护。
本发明皆同动态口令双因素密码保护、密码软键盘输入器、USBKEY用户证书载体、IE浏览器128位密钥、SSL传输加密、数字证书等安全手段互为补充,共同构筑网上交易的安全保障体系。
本发明的认证服务器数据库中的数据和动态密码生成的种子值还可受加密保护,存储数据和种子值的数据库均经过加密处理,同一个密码在不同的情况下数据库有不同的密文存在,相同的明文有不同的密文。同时,数据库具有防止篡改功能,为了防止恶意用户采用穷举攻击,系统连续三次密码输错,认证系统会自动锁定。
本发明的发明点在于(1)采用大素数据库提供的种子值以最大限度确保唯一性;(2)认证服务器是实时同步产生对应的动态密码,而不是预运算好后存储在认证服务器数据库中供查询;(3)通过认证代理应用服务器保护访问受限制的资源,一个认证代理应用服务器上可连接多个这样的资源。
上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。
权利要求
1一种基于预运算的密码卡动态认证方法,用于用户访问受保护资源时的安全认证,其特征在于,所述方法包括大素数据库根据用户编号生成种子值,对该种子值进行预运算,依次生成包含多个密码值的密码组,并将该密码组中的所有密码值按生成的顺序加以保存;认证代理应用服务器每次接收一个密码值,该密码值由用户从该密码组的第一个密码值开始,按上一步的保存顺序依次不重复地输入,且每个密码值使用之后即失效,该认证代理应用服务器在接收该密码值的同时接收用户标识和静态密码,其中用户标识和用户编号一一对应;认证代理应用服务器将该密码值、用户标识和静态密码发送至认证服务器,认证服务器判断用户标识是否合法,根据合法的用户标识找出预存在认证服务器数据库中对应的种子值,该种子值与第一步中由大素数据库生成的种子值相同,该认证服务器根据该种子值及顺序号实时生成相对应的密码值;认证服务器将接收到的静态密码和密码值与认证服务器数据库中预存的静态密码和上一步中生成的密码值作比较,比较两者是否相同,并将比较结果返回认证代理应用服务器;认证代理应用服务器接收比较结果并判明是否合法,若合法则允许用户访问受保护的资源,否则禁止用户访问受保护的资源。
2根据权利要求1所述的基于预运算的密码卡动态认证方法,其特征在于,第一步中生成密码组的预运算方式包括根据种子值和预设的初始值生成第一个密码值;根据种子值和上一个密码值生成当前的一个密码值;重复上一步直到生成所有的密码值。
3根据权利要求2所述的基于预运算的密码卡动态认证方法,其特征在于,认证服务器实时生成密码值的运算方式与用户端密码卡生成密码组的预运算方式相同第一次认证时,根据种子值和预设的初始值生成第一个密码值,并保存在认证服务器数据库中,其中初始值与用户端密码卡生成密码组中的预设初始值相同;之后的认证,根据种子值和保存在数据库中的上一次生成的密码值生成当前的一个密码值。
4根据权利要求1所述的基于预运算的密码卡动态认证方法,其特征在于,所述大素数据库提供的特定种子值具备无限量循环重复的最小概率。
5一种基于预运算的密码卡动态认证系统,用于用户访问受保护资源时的安全认证,其特征在于,所述系统包括密码卡、认证代理应用服务器和认证服务器,其中,该密码卡由一密码生成工具根据用户编号由大素数据库产生种子值,通过预运算生成包含多个密码值的密码组,并按密码生成顺序保存在该密码卡上;该认证代理应用服务器包括认证信息接收单元,每次接收一个由用户按该密码卡上的顺序输入的密码值,同时接收用户标识和静态密码,将认证信息用户标识、静态密码和密码值发送至该认证服务器,其中用户标识和用户卡编号是一一对应的;比较结果接收单元,接收认证服务器发来的比较结果并判明是否合法以决定用户是否具有访问受保护资源的权限,如果比较结果合法,允许用户访问受保护资源,否则禁止用户访问受保护资源;该认证服务器包括认证服务器数据库,存储合法的用户标识、静态密码以及各用户标识对应的种子值;种子值查询单元,接收该认证代理应用服务器发送来的用户标识、静态密码和密码值,根据用户标识查询预存在认证服务器数据库中对应的种子值,该种子值与密码卡中由大素数据库生成提供的种子值相同;密码值生成单元,根据种子值查询单元查询到的种子值实时生成与接收到的密码值相对应的密码值;比较单元,将接收到的静态密码和密码值与预存在认证服务器数据库中的静态密码以及密码值生成单元生成的密码值作比较,比较两者是否相同,将比较结果传送至认证代理应用服务器。
6根据权利要求5所述的基于预运算的密码卡动态认证系统,其特征在于,所述密码卡是一刮刮卡,该刮刮卡上的所有密码值在使用前均被可刮涂层覆盖并标有顺序号,每次使用时按顺序刮开一个密码值上的涂层显示该次应用的密码值,使用后该密码值失效。
7根据权利要求5所述的基于预运算的密码卡动态认证系统,其特征在于,所述密码卡是一动态口令点卡,包括动态密码生成单元,密码卡芯片植入该密码生成工具,在信号触发后按生成顺序实时生成一个动态密码;动态密码触发单元,产生一触发信号至动态密码生成单元;动态密码显示单元,显示由动态密码生成单元产生的动态密码;用户加密密码锁定单元,接收由用户设定输入的用户加密密码并加以锁定。
8根据权利要求5所述的基于预运算的密码卡动态认证系统,其特征在于,该大素数据库提供的特定种子值具备无限量循环重复的最小概率。
9根据权利要求5所述的基于预运算的密码卡动态认证系统,其特征在于,该密码生成工具根据种子值和预设的初始值生成第一个密码值,接着根据种子值和上一个密码值生成当前的一个密码值,如此循环至生成所有的密码值。
10根据权利要求9所述的基于预运算的密码卡动态认证系统,其特征在于,该认证服务器中的密码值生成单元在第一次认证时根据种子值和预设的初始值实时生成第一个密码值并加以保存,在之后的认证时根据种子值和上一次生成的密码值实时生成当前的一个密码值并加以保存,其中该密码值生成单元中预设的初始值以及生成方式与密码生成工具中预设的初始值以及生成方式相同。
全文摘要
本发明公开了一种基于预运算的密码卡动态认证方法及系统,避免口令泄密所带来的安全隐患。其技术方案为大素数据库根据用户编号生成种子值,预运算生成密码组后顺序保存;认证代理应用服务器接收动态密码值、用户标识和静态密码并发送至认证服务器;认证服务器根据用户标识找出预存在数据库中的种子值,其与大素数据库生成的种子值相同,根据种子值及顺序号实时生成对应的密码值;认证服务器比较接收到的静态密码和密码值与数据库中预存的静态密码和上一步生成的密码值是否相同,并将比较结果返回认证代理应用服务器;认证代理应用服务器判明比较结果是否合法以确定是否允许访问受保护的资源。本发明应用于动态密码身份认证领域。
文档编号H04L9/32GK1925398SQ20061011646
公开日2007年3月7日 申请日期2006年9月25日 优先权日2006年9月25日
发明者林顺来, 杨路, 陈洪建, 张矩, 林麟, 陈剑星, 张帅 申请人:上海林果科技有限公司