一种动态口令的生成及认证方法与系统的制作方法

文档序号:7860254阅读:128来源:国知局
专利名称:一种动态口令的生成及认证方法与系统的制作方法
技术领域
本发明涉及身份认证领域,特别涉及一种动态口令的生成及认证方法与系统
背景技术
动态口令在身份认证领域的应用日益广泛,现有技术中,动态口令分为时间型动态口令、事件型动态口令及挑战应答型动态口令。普通时间型动态口令或者带时间参与计算的挑战应答型动态口令,在一个动态口令变化周期仅能产生一个动态口令,出于安全性考虑,如果口令被认证服务器认证通过后,就不能重复使用了。如果想进行认证,必须等待一段时间,等到达下一个时间周期开始,生成下一个不同的动态口令才能进行,不能满足在短时间内进行多次身份认证的场合的需要;普通事件型的动态口令,存在动态令牌不断产生动态口令而不与服务器做认证 时,令牌与服务器失步的情况,且普通事件型的动态口令引入的次数为可预测动态因子,存在一定的安全隐患。

发明内容
为解决现有技术中存在的问题,本发明提供了一种动态口令的生成及认证方法及系统,引入一组数据,参与时间型动态口令的产生,且在一个时间周期内该组数据中的各个数据可以循环参与动态口令的生成。根据本发明的一方面,提供了一种动态口令生成及认证的方法,包括SI :令牌接收到生成动态口令命令,根据所述令牌内部的第一计时器所计时间生成第一动态因子;所述令牌检查到预设条件时,对所述第一偏移指针进行初始化;S2 :所述令牌判断第一偏移指针是否为无效状态,是则报错,否则继续;S3:所述令牌根据所述第一偏移指针从第一数据组中获取当前数据,调用预设算法,根据所述第一动态因子、所述当前数据,计算得到第一动态口令,并判断所述当前数据是否为所述第一组数据组中的最后一个数据,是则将所述第一偏移指针设为无效状态,否则将所述第一偏移指针指向当前数据的下一个数据;S4:服务器接收到用户输入的第二动态口令,根据服务器内部的第二计时器所计时间得到第二动态因子;S5 :根据所述第二动态因子及认证窗口值,生成一组动态因子,得到认证窗口 ;S6:调用所述预设算法,根据所述认证窗口中的动态因子及服务器内部存储的第二数据组中的各数据,计算生成一组动态口令,验证所述一组动态口令中是否存在与所述第二动态口令一致的动态口令,是则认证通过,否则认证失败。具体地,所述第一数据组与所述第二数据组一致,包含预设个数的有顺序且各不相同的数据;所述当前数据为所述第一偏移指针指向的数据。
进一步地,所述步骤SI中根据所述令牌内部的第一计时器所计时间生成第一动态因子具体为用所述第一计时器所计秒数除以第一预设时长值,对得到的商取整得到所述第一动态因子;所述步骤S4中,根据服务器内部的第二计时器所计时间得到第二动态因子具体为用所述第二计时器所计秒数除以所述第一预设时长值,对得到的商取整得到所述第二动态因子。其中,所述令牌检查到预设条件时,对所述第一偏移指针进行初始化具体为所述令牌实时监测所述第一计时器所计时间,每隔所述第一预设时长,对所述第一偏移指针进行初始化;
所述对所述第一偏移指针进行初始化具体为将所述第一偏移指针指向所述第一数据组中的第一个数据。或者,所述令牌检查到预设条件时,对所述第一偏移指针进行初始化具体为所述令牌生成第一动态因子之后,判断所述第一动态因子与第一缓存区中的数据是否一致,若不一致则对所述第一偏移指针进行初始化;所述令牌对所述第一偏移指针进行初始化之后,用所述第一动态因子更新所述第一缓存区中的数据;所述对所述第一偏移指针进行初始化具体为将所述第一偏移指针指向所述第一数据组中的第一个数据。进一步地,所述步骤S6中计算生成一组动态口令具体为调用所述预设算法,对所述认证窗口中的每个动态因子与第二数据中的各个数据的组合得到的数据分别进行计算,得到所述一组动态口令。或者,所述步骤S6具体包括步骤a:按预设顺序调用所述认证窗口中的第一个动态因子;步骤b:依次将所述第二数据组中的各个数据与调用的动态因子组合,调用预设算法对组合得到的各个数据进行计算得到所述一组动态口令;步骤c:验证所述一组动态口令中是否存在与所述第二动态口令一致的动态口令,是则认证通过,否则执行步骤d ;步骤d:判断所述调用的动态因子是否为所述认证窗口中的最后一个动态因子,是则认证失败,否则调用下一个动态因子,返回步骤b。进一步地,所述步骤S6中,当验证所述一组动态口令中存在与所述第二动态口令一致的动态口令时,还包括S7:所述服务器调用第二缓存区中的数据,将与所述第二动态口令一致的动态口令对应的动态因子与所述第二缓存区中的数据进行比较,若大于,则认证通过,执行步骤S8 ;若小于,则认证失败;若等于则执行S9 ;S8 :用与所述第二动态口令一致的动态口令对应的动态因子更新所述第二缓存区中的数据,并设置第二偏移指针指向第二数据组中与所述第二动态口令一致的动态口令对应的数据;S9 :判断与所述第二动态口令一致的动态口令对应的数据在第二数据组中的顺序是否在所述第二偏移指针指向的数据之后,是则认证通过,设置第二偏移指针指向第二数据组中与所述第二动态口令一致的动态口令对应的数据,否则认证失败。优选地,所述步骤SI之后还包括令牌提示用户输交易账号、交易金额、挑战码的步骤;所述步骤S4之前还包括服务器生成挑战码的步骤;所述步骤S3中根据所述第一动态因子、所述当前数据,计算得到第一动态口令具体为将所述第一动态因子、所述当前数据与令牌密钥、用户输入令牌的账号、金额、挑战码进行组合,并用所述预设算法对组合得到的数据进行计算得到所述第一动态口令;所述步骤S6中调用所述预设算法,根据所述认证窗口中的动态因子及服务器内部存储的第二数据组中的各数据,计算生成一组动态口令具体为
依次将所述认证窗口中的各个动态因子与第二数据组中的各数据、令牌密钥、月艮务器接收到的用户输入的账号、金额、服务器生成的挑战码分别进行组合,并用所述预设算法对组合得到的各数据分别进行计算得到所述一组动态口令。或者,所述步骤S6中生成一组动态口令具体包括将第二缓存区中的数据与所述认证窗口中的动态因子进行比对,从所述认证窗口中获取等于或大于所述第二缓存区中的数据的动态因子;依次将大于所述第二缓存区中的数据的各动态因子与所述第二数据组中的各个数据分别进行组合,调用所述预设算法对组合得到的数据分别进行计算,得到第一部分动态口令;将等于所述第二缓存区中的数据的动态因子分别与所述第二数据组中第二偏移指针指向的数据之后的各个数据分别进行组合,调用所述预设算法,对组合得到各数据分别进行计算得到第二部分动态口令; 所述第一部分动态口令与所述第二部分动态口令组成所述一组动态口令。进一步地,所述步骤S6中,当验证所述一组动态口令中存在与所述第二动态口令一致的动态口令时,还包括用与所述第二动态口令一致的动态口令对应的动态因子更新所述第二缓存区中的数据,并将所述第二偏移指针指向与所述第二动态口令一致的动态口令对应的第二数据组中的数据。根据本发明的另外一个方面,提供了一种动态口令生成及认证的系统,包括令牌和服务器;所述令牌包括第一接收模块,用于接收生成动态口令命令;第一生成模块,用于当所述第一接收模块接收到生成动态口令命令时,根据令牌内部的第一计时器所计时间生成第一动态因子;操作模块,用于每隔第一预设时长,对所述第一偏移指针初始化一次;或者当判断所述第一动态因子与第一缓存区中的数据不一致时,对所述第一偏移指针进行初始化,并用所述第一动态因子更新第一缓存区中的数据;第一计算模块,用于根据所述第一偏移指针从第一数据组中获取当前数据,调用预设算法,根据所述第一动态因子及所述当前数据,计算得到第一动态口令;第一判断模块,用于在所述第一计算模块计算得到第一动态口令后,判断当前数据是否为第一数据组中的最后一个数据;设置模块,用于当所述当前数据不为最后一个数据时,将所述第一偏移指针指向所述第一数据组中当前数据的下一个数据;当所述当前数据为最后一个数据时,将所述第一偏移指针设为无效状态,等待初始化;所述服务器包括第二接收模块,用于接收用户通过主机输入的第二动态口令;第二生成模块,用于根据所述服务器内部的第二计时器所计时间得到第二动态因子;并根据所述第二动态因子及认证窗口值,生成一组动态因子,得到认证窗口 ;第二计算模块,用于调用所述预设算法,根据所述认证窗口中的动态因子及服务器内部存储的第二数据组中的各数据,计算生成一组动态口令;
验证模块用于验证所述一组动态口令中是否存在与所述第二动态口令一致的动态口令。进一步地,所述第二计算模块包括第一调用单元,用于调用所述预设算法及所述认证窗口中的第一动态因子;第一组合单元,用于依次将所述认证窗口中的各个动态因子与所述第二数据组中的各个数据分别进行组合;第一处理单元,用于用所述预设算法对所述第一组合单元组合得到的各数据分别进行计算,得到所述一组动态口令。或者,所述第二计算模块包括第二调用单元,用于调用所述预设算法及依次调用所述认证窗口中的动态因子;第二组合单元,用于将所述第二数据组中的各个数据分别与调用的动态因子组合;第二处理单元,用于用所述预设算法对所述组合单元组合得到的数据进行计算得到所述一组动态口令;所述验证模块包括第一验证单元,用于验证所述第二处理单元计算得到的所述一组动态口令中,是否存在与所述第二动态口令一致的动态口令;第一判断单元,用于当所述第一验证单元验证所述一组动态口令中不存在与所述第二动态口令一致的动态口令时,判断调用的动态因子是否为所述认证窗口中的最后一个动态因子,当判断当前动态因子不为最后一个动态因子时,调用下一个动态因子,所述第二组合单元工作。进一步地,所述系统还包括比较模块,用于当所述验证模块验证所述一组动态口令中有与所述第二动态口令一致的动态口令时,将与所述第二动态口令一致的动态口令对应的动态因子与第二缓存区中的数据进行比较,若大于则认证通过,第一更新模块工作,若小于则认证失败,若等于则第二判断模块工作;所述第一更新模块,用于用与所述第二动态口令一致的动态口令对应的动态因子更新所述第二缓存区中的数据,并设置第二偏移指针指向所述第二数据组中与所述第二动态口令一致的动态口令对应的数据;
所述第二判断模块,用于判断在所述第二数据组中与所述第二动态口令一致的动态口令对应的数据在第二数据组中的顺序是否在所述第二偏移指针指向的数据之后,是则认证通过,设置第二偏移指针指向第二数据组中与所述第二动态口令一致的动态口令对应的数据,否则认证失败。或者,所述第二计算模块包括查找单元,用于从所述认证窗口中查找到等于或大于第二缓存区中的数据的动态因子;第三处理单元,用于将大于所述第二缓存区中的数据的动态因子依次分别与所述第二数据组中的各个数据进行组合,调用所述预设算法对组合得到的数据分别进行计算,得到第一部分动态口令;将等于所述第二缓存区中的数据的动态因子分别与所述第二数据组中第二偏移指针指向的数据之后的各个数据进行组合,调用所述预设算法,对组合得到各数据分别进行计算得到第二部分动态口令;将所述第一部分动态口令与所述第二部分动态口令组成所述一组动态口令。 进一步地,所述系统还包括第二更新模块,用于当所述验证模块验证所述一组动态口令中存在与所述第二动态口令一致的动态口令时,用与所述第二动态口令一致的动态口令对应的动态因子更新所述第二缓存区中的数据,并将所述第二偏移指针指向与所述第二动态口令一致的动态口令对应的第二数据组中的数据。所述第一接收模块还用于接收用户输入令牌的数据;所述第二接收模块还用于接收用户通过主机输入到服务器的数据;所述第二生成模块还用于生成挑战码。进一步地,所述第一计算模块包括第三组合单元,用于将所述第一动态因子、所述当前数据、令牌密钥与用户输入令牌的数据进行组合;第四处理单元,用于调用所述预设算法对所述第三组合单元组合得到的数据进行计算得到所述第一动态口令。通过本发明提供的方案,在时间型动态令牌及事件型动态令牌的基础上,提高了动态口令认证的安全性,且满足了短时间内需要进行多次身份认证的场合的需要,为身份认证过程中认证模式提供了多种选择。


图I为本发明实施例I提供的一种动态口令的生成及认证方法流程图;图2为本发明实施例I提供的一种动态口令的生成及认证方法的另一种实现过程流程图;图3为本发明实施例I提供的一种动态口令的生成及认证方法的再一种实现过程流程图;图4为本发明实施例2提供的一种动态口令的生成及认证系统方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例I本发明实施例I提供了一种动态口令的生成及认证方法,具体包括步骤101 :令牌接收到触发生成动态口令的命令;优选地,在本实施例中,所述生成动态口令的命令可以为按键触发信息,该步骤之后还可以包括令牌提示用户输入到令牌的挑战码、交易账号、交易金额等数据。在本实施例中,所述令牌可以有多种动态口令类型选择,例如有不同的按键以供用户选择生成登录账户、修改账户信息、转账、交易等类型的动态口令,并按照与服务器事 先约定,提示用户输入相应的数据。步骤102 :令牌根据内部第一计时器所计时间及第一预设时长,生成第一动态因子;优选地,在本实施例中,所述第一动态因子为所述第一计时器所计时间包含的完整的所述第一预设时长的个数,具体地,在本实施例中,生成动态因子具体为用所述计时器所计时间值除以所述第一预设时长值,对得到的商取整即得到所述第一动态因子。步骤103 :判断所述第一动态因子是否与第一缓存区中的数据一致,是则执行步骤104,否则初始化第一偏移指针,并用所述第一动态因子更新所述第一缓存区中的数据,执行步骤104 ;优选地,在本实施例中,所述第一偏移指针指向第一数据组中的某个数据,当所述第一偏移指针被初始化后,所述第一偏移指针指向所述第一数据组中的第一个数据。所述第一缓存区中存储的数据可以为令牌上一次生成动态口令时所生成的动态因子,还可以为上一次初始化第一偏移指针时对应的动态因子。在本实施例中,所述第一偏移指针还可以根据所述计时器所计时间进行初始化,根据所述计时器,每隔所述第一预设时长将所述第一偏移指针初始化一次,相应地,删除步骤103,步骤102之后直接执行步骤104。步骤104 :根据第一偏移指针从所述第一数据组中获取当前数据,并调用预设算法对当前数据与第一动态因子进行计算,生成第一动态口令,所述第一偏移指针指向所述第一数据组中当前数据的下一数据;优选地,在本实施例中,当步骤101之前还包括令牌提示用户输入挑战码、交易账号、交易金额等数据时,用户输入到令牌的数据、当前数据、所述第一动态因子、令牌密钥均参与生成动态口令。生成第一动态口令的具体为调用预设的算法如SHA1、SM3等,对上述数据组合得到的数据进行计算,从计算结果中提取预设位数的数据得到所述第一动态口令。特别地,在本实施例中,本步骤中所述第一偏移指针指向当前数据的下一个数据之前还包括验证当前数据是否为第二数据组中的最后一个数据,是则将所述第一偏移指针设为无效状态,等待初始化,否则再将所述第一偏移指针执行当前数据的下一数据。相应地,该步骤之前还包括令牌判断所述第一偏移指针是否为无效状态的步骤,若为无效状态则报错,若不为无效状态再执行步骤104。所述第一数据组中的数据各不相同,顺序、个数固定,可以为一组不规则的数据,也可以为一组规则变化的数据,如递增、递减的数据等。步骤105 :服务器接收到用户输入的第二动态口令,根据服务器内部的第二计时器所计时间及第一预设时长生成第二动态因子;优选地,在本实施例中,服务器通过主机接收到用户输入的第二动态口令。生成第二动态因子具体为第二计时器所计时间除以所述预设时长得到的商取整后加服务器记录的漂移值得到。步骤105之前还包括,服务器接收到用户发送的操作请求,通过主机提示用户输入动态口令的步骤,特别地,当事先约定需要挑战码参与生成动态口令时,该步骤前还包括 服务器生成挑战码的步骤。步骤106 :根据所述第二动态因子及认证窗口值,生成一组动态因子,得到认证窗Π ;优选地,在本实施例中,以所述认证窗口值为2为例,则生成的一组动态因子包括所述第二动态因子的值减I得到的第三动态因子、第二动态因子、所述第二动态因子的值加I得到的第四动态因子。步骤107 :服务器调用认证窗口中的第二动态因子,根据所述第二动态因子及服务器内部的第二数据组中的各数据,生成第一组动态口令;优选地,在本实施例中,所述第二数据组中的数据、数据个数及数据顺序与所述第一数据组相同。服务器生成第一组动态口令具体为调用预设的算法,将第二动态因子与第二数据组中的各个数据分别进行组合,对组合得到的各数据分别进行计算得到第一组动态口令;生成每个动态口令的算法及过程与步骤104中生成方式一致。特别地,当所述令牌与所述服务器事先约定用户输入的信息或挑战码参与生成动态口令时,则该步骤中,与令牌生成第一动态口令的实现过程相同,用户通过主机输入到服务器中的数据及服务器生成的挑战码中相应的数据参与生成第一组动态口令。本实施例提供一种优选地方式以清楚说明该生成动态口令的过程,以所述第二数据组中各数据依次为0x 00 00 00 00 00 00 00 09十个数据、第二动态因子为Ox 0000 00 00 01 56 56 01、挑战码为 Ox 31 32 33 34 35 36 37 38-39 30、令牌密钥为 Ox 80d0 3f 19 3f e5 Oc 2d_de 8a 84 46 bf a2 88 dc 35 92 65 lc,所述预设算法SM3为例,具体过程为将所述密钥与所述第二动态因子顺序拼接、再分别与第二数据组中的10个数据分别进行顺序拼接得到10个拼接数据、分别在10个拼接数据后再拼接挑战码得到10个组合数据,用所述预设算法对上述10个组合数据分别进行计算,得到10份摘要,分别从各份摘要中截取低位端4个字节数据,均转化为十进制数,分别从10个十进制数中截取低位8位数据得到所述第一组动态口令。步骤108 :服务器验证第一组动态口令中是否存在与第二动态口令一致的动态口令,是则执行步骤111,否则执行步骤109 ;步骤109 :所述服务器调用认证窗口中的第二动态因子的下一个动态因子,并根据调用的动态因子及第二数据组,生成第二组动态口令,判断所述第二组动态口令中是否有与第二动态口令一致的动态口令,是则执行步骤111,否则执行步骤110 ;
本实施例中,生成第二组动态口令的过程参见步骤107。步骤110 :所述服务器调用认证窗口中当前调用的动态因子的下一个动态因子,根据当前调用的动态因子及所述第二数据组生成第三组动态口令,判断所述第三组动态口令中是否有与所述第二动态口令一致的动态口令,是则执行步骤111 ;否则认证失败,报错;生成第三组动态口令的过程参见步骤107。优选地,在本实施例中,所述认证窗口值为2,从而认证窗口中有三个动态因子,调用动态因子的先后顺序为先调用第二动态因子、再第二动态因子加减I得到的动态因子。所述认证窗口值还可以为其他值,则相应地,所述认证窗口中还包括其他动态因子,在该步骤中第三组动态口令中没有与所述第二动态口令一致的动态口令时,逐次调用所述其 他动态因子来生成动态口令并认证,调用其余动态因子的顺序按与第二动态因子差值的绝对值由小到大的顺序。步骤111 :用与所述第二动态口令一致的动态口令对应的动态因子与服务器中第二缓存区中的数据比较;若对应的动态因子小于第二缓存区中的数据,则认证失败,报错;若等于,则执行步骤112;若大于,则认证通过,用所述对应的动态因子更新第二缓存区中的数据,并将第二偏移指针初始化。优选地,在本实施例中,所述第二偏移指针初始化后指向第二数据组中的第一个数据。步骤112 :判断与所述第二动态口令一致的动态口令对应的第二数据组中的数据在第二数据组中的顺序是否在第二偏移指针指向的数据之后,是则认证通过,用所述对应的动态因子的值更新第二缓存区中的数据,并将第二偏移指针指向所述对应的第二数据组中的数据,否则认证失败,报错。优选地,在本实施例中,所述第二偏移指针指向的数据为上一次认证通过的动态口令对应的第二数据组中的数据。参见图2,步骤107——步骤110可以替换为步骤207 :根据第二数据组及认证窗口中的动态因子,生成第四组动态口令;优选地,在本实施例中,根据所述认证窗口中的各个动态因子、第二数据组中的各个数据得到上述第四组动态口令组,具体地,所述第四组动态口令包括第一组动态口令、第二组动态口令及第三组动态口令的所有动态口令,生成动态口令的方式参见步骤107。具体地,在本实施例中,所述认证窗口值为2,所述第二数据组中有10个数据,则相应地,将第二动态因子上下浮动I得到三个不同的动态因子,分别根据三个动态因子与第二数据组中的各个数据生成的第四组动态口令,得到的所述第四组动态口令组中包含30个动态口令。步骤208 :判断上述第四组动态口令中是否存在与所述第二动态口令一致的动态口令,是则继续执行步骤111,否则认证失败,报错。参见图3,优选地,在本实施例中,步骤107——112还可以替换为步骤307 :判断所述认证窗口中是否存在与所述第二缓存区中的数据一致的动态因子,若否,则执行步骤308 ;若是,则执行步骤309 ;步骤308 :根据第二数据组及认证窗口中的各个动态因子,生成第四组动态口令,执行步骤310 ;优选地,该步骤具体参见步骤207。步骤309 :获取所述认证窗口中大于或等于第二缓存区中的数据的动态因子,根据获取到的各动态因子、第二偏移指针及第二数据组中的各数据,生成第五组动态口令,执行步骤310 ;具体地,在本实施例中,所述认证窗口的值为2,若所述认证窗口中的第二动态因 子与所述第二缓存区中的数据一致,则该步骤具体为对第二动态因子与第二数据组中各个数据分别进行计算得到第一部分动态口令;根据第二偏移指针指向的数据,取该数据之后的各个数据分别与获取到的大于第二动态因子的各动态因子生成第二部分动态口令,所述第一部分动态口令与第二部分动态口令组成所述第五组动态口令。步骤310 :判断生成的一组动态口令中是否存在与所述第二动态口令一致的动态口令,是则认证通过,用与所述第二动态口令一致的动态口令对应的动态因子更新第二缓存区中的数据,并将第二偏移指针指向第二数据组中与第二动态口令一致的动态口令对应的数据,否则认证失败,报错。实施例2参见图4,本发明实施例2提供了一种动态口令的生成及认证系统,包括令牌和服务器,其中令牌包括第一接收模块401,用于接收生成动态口令命令;第一生成模块402,用于当所述第一接收模块401接收到生成动态口令命令时,根据令牌内部的第一计时器所计时间生成第一动态因子;操作模块403,用于每隔第一预设时长,对所述第一偏移指针初始化一次;或者当判断所述第一动态因子与第一缓存区中的数据不一致时,对所述第一偏移指针进行初始化,并用所述第一动态因子更新第一缓存区中的数据;第一计算模块404,用于根据第一偏移指针从第一数据组中获取当前数据,调用预设算法,根据所述第一动态因子及所述当前数据,计算得到第一动态口令;第一判断模块405,用于在所述第一计算模块404计算得到第一动态口令后,判断当前数据是否为第一数据组中的最后一个数据;设置模块406,用于当所述当前数据不为最后一个数据时,将所述第一偏移指针指向第一数据组中当前数据的下一个数据;当所述当前数据为最后一个数据时,将所述第一偏移指针设为无效状态,等待初始化;其中,服务器包括第二接收模块407,用于接收用户通过主机输入的第二动态口令;第二生成模块408,用于根据服务器内部的第二计时器所计时间得到第二动态因子;并根据所述第二动态因子及认证窗口值,生成一组动态因子,得到认证窗口 ; 第二计算模块409,用于调用所述预设算法,根据所述认证窗口中的动态因子及服务器内部存储的第二数据组中的各数据,计算生成一组动态口令;验证模块410,用于验证所述一组动态口令中是否存在与所述第二动态口令一致的动态口令。本实施例系统中的服务器还包括比较模块411,用于当所述验证模块410验证所述一组动态口令中有与所述第二动态口令一致的动态口令时,将与所述第二动态口令一致的动态口令对应的动态因子与第二缓存区中的数据进行比较,若大于则认证通过,第一更新模块工作412,若小于则认证失败,若等于则第二判断模块413工作;所述第一更新模块412,用于用与所述第二动态口令一致的动态口令对应的动态因子更新所述第二缓存区中的数据,并设置第二偏移指针指向所述第二数据组中与所述第二动态口令一致的动态口令对应的数据;
所述第二判断模块413,用于判断与所述第二动态口令一致的动态口令对应的数据在第二数据组中的顺序是否在所述第二偏移指针指向的数据之后,是则认证通过,设置第二偏移指针指向第二数据组中与所述第二动态口令一致的动态口令对应的数据,否则认证失败。所述第一接收模块401还用于接收用户输入的令牌数据;所述第二接收模块407还用于接收用户通过主机输入到服务器的数据;所述第二生成模块408还用于生成挑战码。所述第一计算模块404包括第三组合单元4041,用于将所述第一动态因子、所述当前数据、令牌密钥与用户输入令牌的数据进行组合;第四处理单元4042,用于调用所述预设算法对所述第三组合单元4041组合得到的数据进行计算得到所述第一动态口令。所述第二计算模块409包括第一调用单元4091,用于调用所述预设算法及所述认证窗口中的第一动态因子;第一组合单元4092,用于将所述第二数据组中的各个数据依次分别与所述认证窗口中的各个动态因子进行组合;第一处理单元4093,用于用所述预设算法对所述第一组合单元4092组合得到的各数据分别进行计算,得到所述一组动态口令。优选地,在本实施例中所述第二计算模块409还可以替换为包括第二调用单元,用于调用所述预设算法,用于依次调用所述认证窗口中的动态因子;第二组合单元,用于将所述第二数据组中的各个数据分别与调用的动态因子组合;第二处理单元,用于用所述预设算法对所述第一组合单元组合得到的数据进行计算得到所述一组动态口令; 相应地,所述验证模块410包括第一验证单元,用于验证所述第二处理单元计算得到的所述一组动态口令中是否存在与所述第二动态口令一致的动态口令;
第一判断单元,用于当所述第一验证单元4101验证所述一组动态口令中不存在与所述第二动态口令一致的动态口令时,判断当前调用的动态因子是否为所述认证窗口中的最后一个动态因子,当判断当前动态因子不为最后一个动态因子时,调用下一个动态因子,所述第二组合单元工作。或者,所述第二计算模块409包括查找单元,用于从所述认证窗口中查找到等于或大于第二缓存区中的数据的动态因子;第三处理单元,用于将大于所述第二缓存区中的数据的动态因子依次分别与所述第二数据组中的各个数据进行组合,调用所述预设算法对组合得到的数据分别进行计算,得到第一部分动态口令;将等于所述第二缓存区中的数据的动态因子分别与所述第二数据组中第二偏移指针指向的数据之后的各个数据进行组合,调用所述预设算法,对组合得到各数据分别进行计算得到第二部分动态口令;将所述第一部分动态口令与所述第二部分动 态口令组成所述一组动态口令。相应地,所述系统还包括第二更新模块,用于当所述验证模块410验证所述一组动态口令中存在与所述第二动态口令一致的动态口令时,用与所述第二动态口令一致的动态口令对应的动态因子更新所述第二缓存区中的数据,并将所述第二偏移指针指向与所述第二动态口令一致的动态口令对应的第二数据组中的数据。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种动态口令的生成及认证方法,其特征在于,包括 Si:令牌接收到生成动态口令命令,根据所述令牌内部的第一计时器所计时间生成第一动态因子; 所述令牌检查到预设条件时,对所述第一偏移指针进行初始化; 52:所述令牌判断第一偏移指针是否为无效状态,是则报错,否则继续; 53:所述令牌根据所述第一偏移指针从第一数据组中获取当前数据,调用预设算法,根据所述第一动态因子、所述当前数据,计算得到第一动态口令,并判断所述当前数据是否为所述第一组数据组中的最后一个数据,是则将所述第一偏移指针设为无效状态,否则将所述第一偏移指针指向当前数据的下一个数据; S4:服务器接收到用户输入的第二动态口令,根据服务器内部的第二计时器所计时间得到第二动态因子; 55:根据所述第二动态因子及认证窗口值,生成一组动态因子,得到认证窗口 ; 56:调用所述预设算法,根据所述认证窗口中的动态因子及服务器内部存储的第二数据组中的各数据,计算生成一组动态口令,验证所述一组动态口令中是否存在与所述第二动态口令一致的动态口令,是则认证通过,否则认证失败。
2.如权利要求I所述的方法,其特征在于,所述第一数据组与所述第二数据组一致,包含预设个数的有顺序且各不相同的数据; 所述当前数据为所述第一偏移指针指向的数据。
3.如权利要求2所述的方法,其特征在于,所述步骤SI中根据所述令牌内部的第一计时器所计时间生成第一动态因子具体为用所述第一计时器所计秒数除以第一预设时长值,对得到的商取整得到所述第一动态因子; 所述步骤S4中,根据服务器内部的第二计时器所计时间得到第二动态因子具体为用所述第二计时器所计秒数除以所述第一预设时长值,对得到的商取整得到所述第二动态因子。
4.如权利要求3所述的方法,其特征在于,所述令牌检查到预设条件时,对所述第一偏移指针进行初始化具体为所述令牌实时监测所述第一计时器所计时间,每隔所述第一预设时长,对所述第一偏移指针进行初始化; 所述对所述第一偏移指针进行初始化具体为将所述第一偏移指针指向所述第一数据组中的第一个数据。
5.如权利要求3所述的方法,其特征在于,所述令牌检查到预设条件时,对所述第一偏移指针进行初始化具体为所述令牌生成第一动态因子之后,判断所述第一动态因子与第一缓存区中的数据是否一致,若不一致则对所述第一偏移指针进行初始化; 所述令牌对所述第一偏移指针进行初始化之后,用所述第一动态因子更新所述第一缓存区中的数据; 所述对所述第一偏移指针进行初始化具体为将所述第一偏移指针指向所述第一数据组中的第一个数据。
6.如权利要求2所述的方法,其特征在于,所述步骤S6中计算生成一组动态口令具体为调用所述预设算法,对所述认证窗口中的每个动态因子与第二数据中的各个数据的组合得到的数据分别进行计算,得到所述一组动态口令。
7.如权利要求2所述的方法,其特征在于,所述步骤S6具体包括 步骤a:按预设顺序调用所述认证窗口中的第一个动态因子; 步骤b:依次将所述第二数据组中的各个数据与调用的动态因子组合,调用预设算法对组合得到的各个数据进行计算得到所述ー组动态ロ令; 步骤c:验证所述ー组动态ロ令中是否存在与所述第二动态ロ令一致的动态ロ令,是则认证通过,否则执行步骤d ; 步骤d:判断所述调用的动态因子是否为所述认证窗口中的最后ー个动态因子,是则认证失败,否则调用下一个动态因子,返回步骤b。
8.如权利要求6或7所述的方法,其特征在于,所述步骤S6中,当验证所述ー组动态ロ令中存在与所述第二动态ロ令一致的动态ロ令时,还包括 57:所述服务器调用第二缓存区中的数据,将与所述第二动态ロ令一致的动态ロ令对应的动态因子与所述第二缓存区中的数据进行比较,若大于,则认证通过,执行步骤S8 ;若小于,则认证失败;若等于则执行S9 ; 58:用与所述第二动态ロ令一致的动态ロ令对应的动态因子更新所述第二缓存区中的数据,并设置第二偏移指针指向第二数据组中与所述第二动态ロ令一致的动态ロ令对应的数据; 59:判断与所述第二动态ロ令一致的动态ロ令对应的数据在第二数据组中的顺序是否在所述第二偏移指针指向的数据之后,是则认证通过,设置第二偏移指针指向第二数据组中与所述第二动态ロ令一致的动态ロ令对应的数据,否则认证失败。
9.如权利要求I所述的方法,其特征在于,所述步骤SI之后还包括令牌提示用户输交易账号、交易金額、挑战码的步骤; 所述步骤S4之前还包括服务器生成挑战码的步骤; 所述步骤S3中根据所述第一动态因子、所述当前数据,计算得到第一动态ロ令具体为 将所述第一动态因子、所述当前数据与令牌密钥、用户输入令牌的账号、金額、挑战码进行组合,并用所述预设算法对组合得到的数据进行计算得到所述第一动态ロ令; 所述步骤S6中调用所述预设算法,根据所述认证窗口中的动态因子及服务器内部存储的第二数据组中的各数据,计算生成一组动态ロ令具体为 依次将所述认证窗口中的各个动态因子与第二数据组中的各数据、令牌密钥、服务器接收到的用户输入的账号、金額、服务器生成的挑战码分别进行组合,并用所述预设算法对组合得到的各数据分别进行计算得到所述ー组动态ロ令。
10.如权利要求I所述的方法,其特征在于,所述步骤S6中生成一组动态ロ令具体包括 将第二缓存区中的数据与所述认证窗ロ中的动态因子进行比对,从所述认证窗ロ中获取等于或大于所述第二缓存区中的数据的动态因子; 依次将大于所述第二缓存区中的数据的各动态因子与所述第二数据组中的各个数据分别进行组合,调用所述预设算法对组合得到的数据分别进行计算,得到第一部分动态ロ令;将等于所述第二缓存区中的数据的动态因子分别与所述第二数据组中第二偏移指针指向的数据之后的各个数据分别进行组合,调用所述预设算法,对组合得到各数据分别进行计算得到第二部分动态口令; 所述第一部分动态口令与所述第二部分动态口令组成所述一组动态口令。
11.如权利要求10所述的方法,其特征在于,所述步骤S6中,当验证所述一组动态口令中存在与所述第二动态口令一致的动态口令时,还包括 用与所述第二动态口令一致的动态口令对应的动态因子更新所述第二缓存区中的数据,并将所述第二偏移指针指向与所述第二动态口令一致的动态口令对应的第二数据组中的数据。
12.一种动态口令的生成及认证系统,其特征在于,包括令牌和服务器,所述令牌包括 第一接收模块,用于接收生成动态口令命令; 第一生成模块,用于当所述第一接收模块接收到生成动态口令命令时,根据令牌内部的第一计时器所计时间生成第一动态因子; 操作模块,用于每隔第一预设时长,对所述第一偏移指针初始化一次;或者当判断所述第一动态因子与第一缓存区中的数据不一致时,对所述第一偏移指针进行初始化,并用所述第一动态因子更新第一缓存区中的数据; 第一计算模块,用于根据所述第一偏移指针从第一数据组中获取当前数据,调用预设算法,根据所述第一动态因子及所述当前数据,计算得到第一动态口令; 第一判断模块,用于在所述第一计算模块计算得到第一动态口令后,判断当前数据是否为第一数据组中的最后一个数据; 设置模块,用于当所述当前数据不为最后一个数据时,将所述第一偏移指针指向所述第一数据组中当前数据的下一个数据;当所述当前数据为最后一个数据时,将所述第一偏移指针设为无效状态,等待初始化; 所述服务器包括 第二接收模块,用于接收用户通过主机输入的第二动态口令; 第二生成模块,用于根据所述服务器内部的第二计时器所计时间得到第二动态因子;并根据所述第二动态因子及认证窗口值,生成一组动态因子,得到认证窗口 ; 第二计算模块,用于调用所述预设算法,根据所述认证窗口中的动态因子及服务器内部存储的第二数据组中的各数据,计算生成一组动态口令; 验证模块用于验证所述一组动态口令中是否存在与所述第二动态口令一致的动态口令。
13.如权利要求12所述的系统,其特征在于,所述第二计算模块包括 第一调用单元,用于调用所述预设算法及所述认证窗口中的第一动态因子; 第一组合单元,用于依次将所述认证窗口中的各个动态因子与所述第二数据组中的各个数据分别进行组合; 第一处理单元,用于用所述预设算法对所述第一组合单元组合得到的各数据分别进行计算,得到所述一组动态口令。
14.如权利要求12所述的系统,其特征在于,所述第二计算模块包括 第二调用单元,用于调用所述预设算法及依次调用所述认证窗口中的动态因子; 第二组合单元,用于将所述第二数据组中的各个数据分别与调用的动态因子组合;第二处理单元,用于用所述预设算法对所述组合单元组合得到的数据进行计算得到所述ー组动态ロ令; 所述验证模块包括 第一验证单元,用于验证所述第二处理单元计算得到的所述ー组动态ロ令中,是否存在与所述第二动态ロ令一致的动态ロ令; 第一判断単元,用于当所述第一验证单元验证所述ー组动态ロ令中不存在与所述第二动态ロ令一致的动态ロ令时,判断调用的动态因子是否为所述认证窗口中的最后ー个动态因子,当判断当前动态因子不为最后一个动态因子时,调用下一个动态因子,所述第二組合单元工作。
15.如权利要求13或14所述的系统,其特征在于,所述系统还包括 比较模块,用于当所述验证模块验证所述一组动态ロ令中有与所述第二动态ロ令一致的动态ロ令时,将与所述第二动态ロ令一致的动态ロ令对应的动态因子与第二缓存区中的数据进行比较,若大于则认证通过,第一更新模块工作,若小于则认证失败,若等于则第二判断模块工作; 所述第一更新模块,用于用与所述第二动态ロ令一致的动态ロ令对应的动态因子更新所述第二缓存区中的数据,并设置第二偏移指针指向所述第二数据组中与所述第二动态ロ令一致的动态ロ令对应的数据; 所述第二判断模块,用于判断在所述第二数据组中与所述第二动态ロ令一致的动态ロ令对应的数据在第二数据组中的顺序是否在所述第二偏移指针指向的数据之后,是则认证通过,设置第二偏移指针指向第二数据组中与所述第二动态ロ令一致的动态ロ令对应的数据,否则认证失败。
16.如权利要求12所述的系统,其特征在于,所述第二计算模块包括 查找单元,用于从所述认证窗口中查找到等于或大于第二缓存区中的数据的动态因子; 第三处理单元,用于将大于所述第二缓存区中的数据的动态因子依次分别与所述第二数据组中的各个数据进行组合,调用所述预设算法对组合得到的数据分别进行计算,得到第一部分动态ロ令;将等于所述第二缓存区中的数据的动态因子分别与所述第二数据组中第二偏移指针指向的数据之后的各个数据进行组合,调用所述预设算法,对组合得到各数据分别进行计算得到第二部分动态ロ令;将所述第一部分动态ロ令与所述第二部分动态ロ令组成所述ー组动态ロ令。
17.如权利要求16所述的系统,其特征在于,所述系统还包括 第二更新模块,用于当所述验证模块验证所述一组动态ロ令中存在与所述第二动态ロ令一致的动态ロ令时,用与所述第二动态ロ令一致的动态ロ令对应的动态因子更新所述第ニ缓存区中的数据,并将所述第二偏移指针指向与所述第二动态ロ令一致的动态ロ令对应的第二数据组中的数据。
18.如权利要求12所述的系统,其特征在干, 所述第一接收模块还用于接收用户输入令牌的数据; 所述第二接收模块还用于接收用户通过主机输入到服务器的数据; 所述第二生成模块还用于生成挑战码。
19.如权利要求18所述的系统,其特征在于,所述第一计算模块包括 第三组合单元,用于将所述第一动态因子、所述当前数据、令牌密钥与用户输入令牌的数据进行组合; 第四处理单元,用于调用所述预设算法对所述第三组合单元组合得到的数据进行计算得到所述第一动态口令。
全文摘要
本发明公布了一种动态口令生成及认证的方法及系统,涉及身份认证领域,包括令牌接收到生成动态口令命令,根据第一计时器生成第一动态因子;根据第一偏移指针从第一数据组中获取当前数据,并根据第一动态因子、当前数据生成第一动态口令;服务器接收到用户输入的第二动态口令,根据第二计时器得到第二动态因子;根据第二动态因子及认证窗口值,得到认证窗口;根据所述认证窗口中的动态因子及第二数据组中的各数据,计算生成一组动态口令,验证所述一组动态口令中是否存在与所述第二动态口令一致的动态口令。通过上述方案,解决了时间型令牌不能在短时间内多次生成的问题,又避免了事件型令牌不断生成动态口令与服务器产生失步的情况。
文档编号H04L9/32GK102843236SQ201210337308
公开日2012年12月26日 申请日期2012年9月12日 优先权日2012年9月12日
发明者陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1