CN103731272B - 一种身份认证方法、系统及设备 - Google Patents

一种身份认证方法、系统及设备 Download PDF

Info

Publication number
CN103731272B
CN103731272B CN201410004757.8A CN201410004757A CN103731272B CN 103731272 B CN103731272 B CN 103731272B CN 201410004757 A CN201410004757 A CN 201410004757A CN 103731272 B CN103731272 B CN 103731272B
Authority
CN
China
Prior art keywords
data
module
hash
cut position
obtains
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410004757.8A
Other languages
English (en)
Other versions
CN103731272A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201410004757.8A priority Critical patent/CN103731272B/zh
Publication of CN103731272A publication Critical patent/CN103731272A/zh
Priority to US15/108,788 priority patent/US10084602B2/en
Priority to PCT/CN2015/070091 priority patent/WO2015101350A1/zh
Application granted granted Critical
Publication of CN103731272B publication Critical patent/CN103731272B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0872Generation of secret information including derivation or calculation of cryptographic keys or passwords using geo-location information, e.g. location data, time, relative position or proximity to other entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种身份认证方法、系统及设备,动态令牌根据不同的用途代码生成不同的计算密钥,并根据各个计算密钥生成分别适用于各个应用场景的动态口令;相应地,认证服务器根据不同的用途代码对适用于各个应用场景的动态口令进行认证,降低了用于生成动态口令的密钥被窃取的风险,提高了令牌认证系统的安全性。

Description

一种身份认证方法、系统及设备
技术领域
本发明涉及信息安全领域,特别涉及一种身份认证方法、系统及设备。
背景技术
动态令牌是一种用于生成动态口令的设备,广泛应用于网银、电信运营商和电子政务等应用领域。动态令牌所生成的动态口令可用于身份认证,能够有效提高身份认证的安全性。
发明人在实现本发明的过程中,发现现有技术至少存在以下缺陷:
动态令牌根据自身保存的种子密钥生成动态口令,该种子密钥是动态令牌中保存的唯一的密钥信息,一旦被窃取,将无法保证身份认证的安全性。
发明内容
本发明提供了一种身份认证方法、系统及设备,以解决现有技术中的令牌认证系统的安全性缺陷。
本发明提供了一种身份认证方法,应用于包括动态令牌、客户端和认证服务器的系统中,所述方法包括以下步骤:
所述认证服务器接收来自所述客户端的第一操作请求,生成第一挑战码,将所述第一挑战码保存为与所述第一操作请求中的身份信息相对应的信息,将所述第一挑战码发送给所述客户端;
所述客户端显示所述第一挑战码;
当所述动态令牌获取到用户输入的所述第一挑战码,检测到第一按键被触发时,所述动态令牌对自身保存的工作密钥和第一用途代码进行散列,将得到的第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述第一挑战码进行散列,得到第二散列数据;
所述动态令牌对所述第二散列数据进行截位,将得到的第一截位结果作为第一认证口令进行显示;
所述客户端获取用户输入的所述第一认证口令,生成包含所述第一认证口令和身份信息的第一认证请求,将所述第一认证请求发送给所述认证服务器;
所述认证服务器获取所述第一认证请求中的身份信息,检索与所述第一认证请求中的身份信息对应的工作密钥和第一挑战码,对检索到的工作密钥和自身保存的所述第一用途代码进行散列,将得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和检索到的所述第一挑战码进行散列,得到第四散列数据;
所述认证服务器对所述第四散列数据进行截位,将得到的第二截位结果作为计算得到的第一认证口令,判断所述计算得到的第一认证口令是否与从所述第一认证请求中获取的第一认证口令匹配,如果是,则向所述客户端发送认证成功消息;否则,向所述客户端发送认证失败消息。
本发明还提供了一种动态令牌的工作方法,包括以下步骤:
A1、所述动态令牌等待用户触发按键;
A2、当所述动态令牌的按键被触发时,所述动态令牌对被触发的按键进行判断,如果是第一按键,则执行步骤A3;如果是第二按键,则执行步骤A5;
A3、所述动态令牌获取用户输入的登录挑战码,对自身保存的工作密钥和第一用途代码进行散列,将得到的第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述登录挑战码进行散列,得到第二散列数据;
A4、所述动态令牌对所述第二散列数据进行截位,将得到的第一截位结果作为登录口令进行显示,并返回步骤A1;
A5、所述动态令牌获取用户输入的签名挑战码,对自身保存的工作密钥和第二用途代码进行散列,将得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和所述签名挑战码进行散列,得到第四散列数据
A6、所述动态令牌对所述第四散列数据进行截位,将得到的第二截位结果作为签名口令进行显示,并返回步骤A1。
本发明还提供了一种认证服务器的工作方法,包括以下步骤:
C1、所述认证服务器等待接收来自客户端的请求;
C2、当接收到来自所述客户端的请求后,所述认证服务器对接收到的请求进行判断,如果是登录请求,则执行步骤C3;如果是登录认证请求,则执行步骤C4;如果是签名请求,则执行步骤C6;如果是签名认证请求,则执行步骤C7;
C3、所述认证服务器生成登录挑战码,将所述登录挑战码保存为与所述登录请求中的身份信息相对应的信息,将所述登录挑战码发送给所述客户端,并返回步骤C1;
C4、所述认证服务器检索与所述登录认证请求中的身份信息对应的工作密钥和登录挑战码,对检索到的工作密钥和自身保存的第一用途代码进行散列,将得到的第十二散列数据作为第四计算密钥,对所述第四计算密钥、第五时间信息和检索到的登录挑战码进行散列,得到第十三散列数据;
C5、所述认证服务器对所述第十三散列数据进行截位,将得到的第七截位结果作为计算得到的登录口令,判断所述计算得到的登录口令是否与从所述登录认证请求中获取的登录口令匹配,如果是,则向所述客户端发送认证成功消息,并返回步骤C1;否则,向所述客户端发送认证失败消息,并返回步骤C1;
C6、所述认证服务器生成签名挑战码,将所述签名挑战码保存为与所述签名请求中的身份信息相对应的信息,将所述签名挑战码发送给所述客户端,并返回步骤C1;
C7、所述认证服务器检索与所述签名认证请求中的身份信息对应的工作密钥和签名挑战码,对检索到的工作密钥和自身保存的第二用途代码进行散列,将得到的第十四散列数据作为第五计算密钥,对所述第五计算密钥、第六时间信息和检索到的签名挑战码进行散列,得到第十五散列数据;
C7、所述认证服务器对所述第十五散列数据进行截位,将得到的第八截位结果作为计算得到的签名口令,判断所述计算得到的签名口令是否与从签名认证请求中获取的签名口令匹配,如果是,则向所述客户端发送认证成功消息,并返回步骤C1;否则,向所述客户端发送认证失败消息,并返回步骤C1。
本发明还提供了一种身份认证系统,包括动态令牌、客户端和认证服务器,所述认证服务器包括:
第一接收模块,用于接收来自所述客户端的第一操作请求;
第一生成模块,用于在所述第一接收模块接收到所述第一操作请求后,生成第一挑战码,将所述第一挑战码保存为与所述第一操作请求中的身份信息相对应的信息;
第一发送模块,用于将所述第一生成模块生成的所述第一挑战码发送给所述客户端;
所述客户端包括:
第二发送模块,用于向所述认证服务器发送所述第一操作请求;
第二接收模块,用于接收来自所述认证服务器的所述第一挑战码;
第一显示模块,用于显示所述第一挑战码;
所述动态令牌包括:
第一存储模块,用于保存工作密钥和第一用途代码;
第一获取模块,用于获取用户输入的所述第一挑战码;
检测模块,用于检测按键;
第一散列模块,用于在所述检测模块检测到第一按键被触发时,对所述第一存储模块保存的工作密钥和第一用途代码进行散列,得到第一散列数据;
第二散列模块,用于将所述第一散列模块散列得到的所述第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述第一获取模块获取到的所述第一挑战码进行散列,得到第二散列数据;
第一截位模块,用于对所述第二散列模块散列得到的所述第二散列数据进行截位,得到第一截位结果;
第二显示模块,用于将所述第一截位模块截位得到的第一截位结果作为第一认证口令进行显示;
所述客户端还包括:
第二获取模块,用于获取用户输入的所述第一认证口令;
第二生成模块,用于生成包含身份信息和所述第一认证口令的第一认证请求;
所述第二发送模块,还用于将所述第二生成模块生成的所述第一认证请求发送给所述认证服务器;
所述认证服务器中的所述第一接收模块,还用于接收来自所述客户端的所述第一认证请求;
所述认证服务器还包括:
第二存储模块,用于保存所述第一用途代码;
第三获取模块,用于获取所述第一接收模块接收到的所述第一认证请求中的身份信息;
检索模块,用于检索与所述第一认证请求中的身份信息对应的工作密钥和第一挑战码;
第三散列模块,用于对所述检索模块检索到的工作密钥和所述第二存储模块保存的所述第一用途代码进行散列,得到第三散列数据;
第四散列模块,用于将所述第三散列模块散列得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和检索到的所述第一挑战码进行散列,得到第四散列数据;
第二截位模块,用于对所述第四散列模块散列得到的所述第四散列数据进行截位,得到第二截位结果;
第一判断模块,用于将所述第二截位模块截位得到的所述第二截位结果作为计算得到的第一认证口令,判断所述计算得到的第一认证口令是否与从所述第一认证请求中获取的第一认证口令匹配;
所述第一发送模块,还用于在所述第一判断模块判断出所述计算得到的第一认证口令与从所述第一认证请求中获取的第一认证口令匹配时,向所述客户端发送认证成功消息;在所述第一判断模块判断出所述计算得到的第一认证口令与从所述第一认证请求中获取的第一认证口令不匹配时,向所述客户端发送认证失败消息;
所述客户端中的所述第二接收模块,还用于接收来自所述认证服务器的认证成功消息或认证失败消息。
本发明还提供了一种动态令牌,包括:
存储模块,用于保存工作密钥、第一用途代码和第二用途代码;
获取模块,用于获取用户输入的登录挑战码和签名挑战码;
检测模块,用于检测按键;
第一判断模块,用于在所述检测模块检测到所述动态令牌的按键被触发时,对被触发的按键进行判断;
第一散列模块,用于在所述第一判断模块判断出所述被触发的按键为第一按键时,对所述存储模块保存的工作密钥和第一用途代码进行散列,得到第一散列数据;在所述第一判断模块判断出所述被触发的按键为第二按键时,对所述存储模块保存的工作密钥和第二用途代码进行散列,得到第三散列数据;
第二散列模块,用于将所述第一散列模块散列得到的第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述获取模块获取的登录挑战码进行散列,得到第二散列数据;将所述第一散列模块散列得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和所述获取模块获取的签名挑战码进行散列,得到第四散列数据;
截位模块,用于对所述第二散列模块散列得到的第二散列数据进行截位,得到第一截位结果;对所述第二散列模块散列得到的第四散列数据进行截位,得到第二截位结果;
显示模块,用于将所述截位模块截位得到的第一截位结果作为登录口令进行显示,将所述截位模块截位得到的第二截位结果作为签名口令进行显示。
本发明还提供了一种认证服务器,包括:
存储模块,用于保存第一用途代码和第二用途代码;
接收模块,用于接收来自客户端的请求;
第一判断模块,用于对所述接收模块接收到的请求进行判断;
第一生成模块,用于在所述第一判断模块判断所述接收到的请求为登录请求时,生成登录挑战码,将所述登录挑战码保存为与所述登录请求中的身份信息相对应的信息;在所述第一判断模块判断所述接收到的请求为签名请求时,生成签名挑战码,将所述签名挑战码保存为与所述签名请求中的身份信息相对应的信息;
发送模块,用于将所述第一生成模块生成的所述登录挑战码和所述签名挑战码发送给所述客户端;
检索模块,用于在所述第一判断模块判断出所述接收到的请求为登录认证请求时,检索与所述登录认证请求中的身份信息对应的工作密钥和登录挑战码;在所述第一判断模块判断出所述接收到的请求为签名认证请求时,检索与所述签名认证请求中的身份信息对应的工作密钥和签名挑战码;
第一散列模块,用于对所述检索模块检索到的工作密钥和所述存储模块保存的第一用途代码进行散列,得到第十二散列数据;对所述检索模块检索到的工作密钥和所述存储模块保存的第二用途代码进行散列,得到第十四散列数据;
第二散列模块,用于将所述第一散列模块散列得到的所述第十二散列数据作为第四计算密钥,对所述第四计算密钥、第五时间信息和所述检索模块检索到的登录挑战码进行散列,得到第十三散列数据;将所述第一散列模块散列得到的第十四散列数据作为第五计算密钥,对所述第五计算密钥、第六时间信息和检索到的签名挑战码进行散列,得到第十五散列数据;
截位模块,用于对所述第二散列模块散列得到的所述第十三散列数据进行截位,得到第七截位结果;对所述第二散列模块散列得到的所述第十五散列数据进行截位,得到第八截位结果;
第二判断模块,用于将所述截位模块截位得到的第七截位结果作为计算得到的登录口令,判断所述计算得到的登录口令是否与从所述登录认证请求中获取的登录口令匹配;将所述截位模块截位得到的第八截位结果作为计算得到的签名口令,判断所述计算得到的签名口令是否与从所述签名认证请求中获取的签名口令匹配;
所述发送模块,还用于在所述第二判断模块判断出所述计算得到的登录口令与从所述登录认证请求中获取的登录口令匹配时,向所述客户端发送认证成功消息;在所述第二判断模块判断出所述计算得到的登录口令与从所述登录认证请求中获取的登录口令不匹配时,向所述客户端发送认证失败消息;在所述第二判断模块判断出所述计算得到的签名口令与从所述签名认证请求中获取的签名口令匹配时,向所述客户端发送认证成功消息;在所述第二判断模块判断出所述计算得到的签名口令与从所述签名认证请求中获取的签名口令不匹配时,向所述客户端发送认证失败消息。
本发明达到的有益效果:动态令牌根据不同的用途代码生成不同的计算密钥,并根据各个计算密钥生成分别适用于各个应用场景的动态口令;相应地,认证服务器根据不同的用途代码对适用于各个应用场景的动态口令进行认证,降低了用于生成动态口令的密钥被窃取的风险,提高了令牌认证系统的安全性。
附图说明
图1为本发明实施例一中的一种身份认证方法流程图;
图2为本发明实施例一中的另一种身份认证方法流程图;
图3为本发明实施例一中的动态令牌的解锁方法流程图;
图4为本发明实施例一中的动态令牌的同步方法流程图;
图5为本发明实施例一中的动态令牌的激活方法流程图;
图6和图7为本发明实施例二中的动态令牌的工作方法流程图;
图8和图9为本发明实施例二中的认证服务器的工作方法流程图;
图10为本发明实施例三中的身份认证系统的结构示意图;
图11为本发明实施例四中的动态令牌的结构示意图;
图12为本发明实施例四中的认证服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的技术方案应用于包括动态令牌、客户端和认证服务器的令牌认证系统中,其中,动态令牌用于生成动态口令,认证服务器用于通过客户端获取动态令牌生成的动态口令,对动态口令进行认证,并将认证结果返回给客户端,通过客户端显示认证结果。
实施例一
如图1所示,为本发明实施例一中的一种身份认证方法流程图,包括以下步骤:
步骤101,客户端向认证服务器发送第一操作请求。
其中,第一操作请求可以包含身份信息,该身份信息可以是用户名,也可以是令牌序列号,还可以是用于标识动态令牌用户的身份的其他信息。
步骤102,认证服务器生成第一挑战码,将该第一挑战码保存为与第一操作请求中的身份信息相对应的信息。
具体地,当第一操作请求为登录请求时,认证服务器可以生成随机数,将该随机数保存为与第一操作请求中的身份信息对应的第一挑战码。其中,认证服务器生成的随机数可以是长度为6字节的数据,例如,“012345”。
当第一操作请求为签名请求时,认证服务器可以将业务数据的部分或全部保存为与第一操作请求中的身份信息对应的第一挑战码;也可以生成随机数,将该随机数与业务数据的部分或全部进行组合,将组合得到的数据保存为与第一操作请求中的身份信息对应的第一挑战码。
步骤103,认证服务器向客户端发送第一挑战码。
步骤104,客户端显示第一挑战码。
步骤105,动态令牌获取用户输入的第一挑战码。
步骤106,动态令牌检测到第一按键被触发,对自身保存的工作密钥和第一用途代码进行散列,将得到的第一散列数据作为第一计算密钥。
具体地,动态令牌可以将自身保存的工作密钥和第一用途代码组合成第一数据,对第一数据进行填充,得到第一消息,并对第一消息进行分组,对得到的分组数据进行迭代压缩,得到第一散列数据。
本实施例中,工作密钥可以是长度为32字节的数据,第一用途代码可以是长度为4字节的数据,根据工作密钥和第一用途代码散列得到的第一散列数据可以是长度为32字节的数据。
例如,动态令牌中的第一用途代码为“00000001”,工作密钥为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”,根据工作密钥和第一用途代码散列得到的第一散列数据为“27AD795688C800C1FC2C1787FDDA3FB4E8A9108B538C96E666BB860B1FDA3E56”。
步骤107,动态令牌对第一计算密钥、第一时间信息和第一挑战码进行散列,得到第二散列数据。
具体地,动态令牌可以将第一计算密钥、第一时间信息以及用户输入的第一挑战码组合成第二数据,对第二数据进行填充,得到第二消息,并对第二消息进行分组,对得到的分组数据进行迭代压缩,得到第二散列数据。
本实施例中,第一计算密钥可以是长度为32字节的数据,第一时间信息可以是长度为8字节的数据,用户输入的第一挑战码可以是长度为6字节的数据,根据第一计算密钥、第一时间信息和第一挑战码散列得到的第二散列数据可以是长度为32字节的数据。
例如,第一时间信息为“00000000015829CE”,用户输入的第一挑战码为“012345”,第一计算密钥为“27AD795688C800C1FC2C1787FDDA3FB4E8A9108B538C96E666BB860B1FDA3E56”,动态令牌计算得到的第二散列数据为“57f72a79575d05d01b647192c1fe2f72d593fe275ce3555695f8e25684e38bec”。
步骤108,动态令牌对第二散列数据进行截位,将得到的第一截位结果作为第一认证口令进行显示。
具体地,动态令牌可以对第二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第一截位结果。
本实施例中,第二散列数据是长度为32字节的数据,动态令牌可以将第二散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第一截位结果。
例如,动态令牌计算得到的第二散列数据为“57f72a79575d05d01b647192c1fe2f72d593fe275ce3555695f8e25684e38bec”,第一截位结果为“126092”,即,第一认证口令为“126092”。
步骤109,客户端获取用户输入的第一认证口令。
步骤110,客户端生成包含第一认证口令和身份信息的第一认证请求。
步骤111,客户端向认证服务器发送第一认证请求。
步骤112,认证服务器根据第一认证请求中的身份信息,检索与该身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第一用途代码进行散列,将得到的第三散列数据作为第二计算密钥。
具体地,认证服务器可以将检索到的工作密钥和第一用途代码组合成第三数据,对第三数据进行填充,得到第三消息,并对第三消息进行分组,对得到的分组数据进行迭代压缩,得到第三散列数据。
本实施例中,认证服务器检索到的工作密钥可以是长度为32字节的数据,第一用途代码可以是长度为4字节的数据,根据检索到的工作密钥和第一用途代码散列得到的第三散列数据可以是长度为32字节的数据。
步骤113,认证服务器根据第一认证请求中的身份信息,检索与该身份信息对应的第一挑战码。
步骤114,认证服务器根据令牌偏移时间和系统时间获取第二时间信息,对第二计算密钥、第二时间信息和检索到的第一挑战码进行散列,得到第四散列数据。
具体地,认证服务器可以将第二计算密钥、第二时间信息以及检索到的第一挑战码组合成第四数据,对第四数据进行填充,得到第四消息,并对第四消息进行分组,对得到的分组数据进行迭代压缩,得到第四散列数据。
本实施例中,第二计算密钥可以是长度为32字节的数据,第二时间信息可以是长度为8字节的数据,检索到的第一挑战码可以是长度为6字节的数据,根据第二计算密钥、第二时间信息和检索到的第一挑战码散列得到的第四散列数据可以是长度为32字节的数据。
步骤115,认证服务器对第四散列数据进行截位,将得到的第二截位结果作为计算得到的第一认证口令。
具体地,认证服务器可以对第四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第二截位结果。
本实施例中,第四散列数据是长度为32字节的数据,认证服务器可以将第四散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第二截位结果。
步骤116,认证服务器判断计算得到的第一认证口令是否与从第一认证请求中获取的第一认证口令匹配,如果是,则执行步骤117;否则,执行步骤118。
具体地,认证服务器计算得到的第一认证口令可以是一个口令,相应地,认证服务器可以判断计算得到的第一认证口令是否与从第一认证请求中获取的第一认证口令相同,如果是,则确定计算得到的第一认证口令与从第一认证请求中获取的第一认证口令匹配;否则,确定计算得到的第一认证口令与从第一认证请求中获取的第一认证口令不匹配。
认证服务器计算得到的第一认证口令还可以是多个口令,相应地,认证服务器也可以判断计算得到的第一认证口令是否包含从第一认证请求中获取的第一认证口令,如果是,则确定计算得到的第一认证口令与从第一认证请求中获取的第一认证口令匹配;否则,确定计算得到的第一认证口令与从第一认证请求中获取的第一认证口令不匹配。
步骤117,认证服务器向客户端发送认证成功消息。
步骤118,认证服务器向客户端发送认证失败消息。
本发明实施例中,第一操作请求可以为登录请求,相应地,第一认证口令为登录口令,第一认证请求为登录认证请求;第一操作请求还可以为签名请求,相应地,第一认证口令为签名口令,第一认证请求为签名认证请求。
如图2所示,为本发明实施例一中的另一种身份认证方法流程图,包括以下步骤:
步骤201,客户端向认证服务器发送第二操作请求。
步骤202,认证服务器生成第二挑战码,将该第二挑战码保存为与第二操作请求中的身份信息相对应的信息。
具体地,当第二操作请求为登录请求时,认证服务器可以生成随机数,将该随机数保存为与第二操作请求中的身份信息对应的第二挑战码。其中,认证服务器生成的随机数可以是长度为6字节的数据,例如,“012345”。
当第二操作请求为签名请求时,认证服务器可以将业务数据的部分或全部保存为与第二操作请求中的身份信息对应的第二挑战码;也可以生成随机数,将该随机数与业务数据的部分或全部进行组合,将组合得到的数据保存为与第二操作请求中的身份信息对应的第二挑战码。
步骤203,认证服务器发送第二挑战码给客户端。
步骤204,客户端显示第二挑战码。
步骤205,动态令牌获取用户输入的第二挑战码。
步骤206,动态令牌检测到第二按键被触发,对自身保存的工作密钥和第二用途代码进行散列,将得到的第五散列数据作为第三计算密钥。
具体地,动态令牌可以将自身保存的工作密钥和第二用途代码组合成第五数据,对第五数据进行填充,得到第五消息,并对第五消息进行分组,对得到的分组数据进行迭代压缩,得到第五散列数据。
本实施例中,工作密钥可以是长度为32字节的数据,第二用途代码可以是长度为4字节的数据,根据工作密钥和第二用途代码散列得到的第五散列数据可以是长度为32字节的数据。
例如,动态令牌中的第二用途代码为“00000002”,工作密钥为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”,根据工作密钥和第二用途代码散列得到的第五散列数据为“8D5828922FEBFC8597FC7768A5CD856B45C3A104119BDE8B0E9A418D6A9AB768”。
步骤207,动态令牌对第三计算密钥、第三时间信息和第二挑战码进行散列,得到第六散列数据。
具体地,动态令牌可以将第三计算密钥、第三时间信息以及用户输入的第二挑战码组合成第六数据,对第六数据进行填充,得到第六消息,并对第六消息进行分组,对得到的分组数据进行迭代压缩,得到第六散列数据。
本实施例中,第三计算密钥可以是长度为32字节的数据,第三时间信息可以是长度为8字节的数据,用户输入的第二挑战码可以是长度为6字节的数据,根据第三计算密钥、第三时间信息和第二挑战码散列得到的第六散列数据可以是长度为32字节的数据。
例如,第三时间信息为“00000000015829CE”,用户输入的第二挑战码为“012345”,第三计算密钥为“8D5828922FEBFC8597FC7768A5CD856B45C3A104119BDE8B0E9A418D6A9AB768”,动态令牌计算得到的第六散列数据为“228ff7a222fdf903b7c84926cebe47b42dc7d2e101da3e995dc402169a4b25da”。
步骤208,动态令牌对第六散列数据进行截位,将得到的第三截位结果作为第二认证口令进行显示。
具体地,动态令牌可以对第六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第三截位结果。
本实施例中,第六散列数据是长度为32字节的数据,动态令牌可以将第六散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第三截位结果。
例如,动态令牌计算得到的第六散列数据为“228ff7a222fdf903b7c84926cebe47b42dc7d2e101da3e995dc402169a4b25da”,第三截位结果为“821929”,即,第二认证口令为“821929”。
步骤209,客户端获取用户输入的第二认证口令。
步骤210,客户端生成包含第二认证口令和身份信息的第二认证请求。
步骤211,客户端发送第二认证请求给认证服务器。
步骤212,认证服务器根据第二认证请求中的身份信息,检索与该身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第二用途代码进行散列,将得到的第七散列数据作为第四计算密钥。
具体地,认证服务器可以将检索到的工作密钥和第二用途代码组合成第七数据,对第七数据进行填充,得到第七消息,并对第七消息进行分组,对得到的分组数据进行迭代压缩,得到第七散列数据。
本实施例中,认证服务器检索到的工作密钥可以是长度为32字节的数据,第二用途代码可以是长度为4字节的数据,根据检索到的工作密钥和第二用途代码散列得到的第七散列数据可以是长度为32字节的数据。
步骤213,认证服务器根据第二认证请求中的身份信息,检索与该身份信息对应的第二挑战码。
步骤214,认证服务器根据令牌偏移时间和系统时间获取第四时间信息,对第四计算密钥、第四时间信息和检索到的第二挑战码进行散列,得到第八散列数据。
具体地,认证服务器可以将第四计算密钥、第四时间信息以及检索到的第二挑战码组合成第八数据,对第八数据进行填充,得到第八消息,并对第八消息进行分组,对得到的分组数据进行迭代压缩,得到第八散列数据。
本实施例中,第四计算密钥可以是长度为32字节的数据,第四时间信息可以是长度为8字节的数据,检索到的第二挑战码可以是长度为6字节的数据,根据第四计算密钥、第四时间信息和检索到的第二挑战码散列得到的第八散列数据可以是长度为32字节的数据。
步骤215,认证服务器对第八散列数据进行截位,将得到的第四截位结果作为计算得到的第二认证口令。
具体地,认证服务器可以对第八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第四截位结果。
本实施例中,第八散列数据是长度为32字节的数据,认证服务器可以将第八散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第四截位结果。
步骤216,认证服务器判断计算得到的第二认证口令是否与从第二认证请求中获取的第二认证口令匹配,如果是,则执行步骤217;否则,执行步骤218。
具体地,认证服务器计算得到的第二认证口令可以是一个口令,相应地,认证服务器可以判断计算得到的第二认证口令是否与从第二认证请求中获取的第二认证口令相同,如果是,则确定计算得到的第二认证口令与从第二认证请求中获取的第二认证口令匹配;否则,确定计算得到的第二认证口令与从第二认证请求中获取的第二认证口令不匹配。
认证服务器计算得到的第二认证口令还可以是多个口令,相应地,认证服务器也可以判断计算得到的第二认证口令是否包含从第二认证请求中获取的第二认证口令,如果是,则确定计算得到的第二认证口令与从第二认证请求中获取的第二认证口令匹配;否则,确定计算得到的第二认证口令与从第二认证请求中获取的第二认证口令不匹配。
步骤217,认证服务器向客户端发送认证成功消息。
步骤218,认证服务器向客户端发送认证失败消息。
本发明实施例中,第二操作请求可以为签名请求,相应地,第二认证口令为签名口令,第二认证请求为签名认证请求,第一操作请求为登录请求,第一认证口令为登录口令,第一认证请求为登录认证请求。
第二操作请求还可以为登录请求,相应地,第二认证口令为登录口令,第二认证请求为登录认证请求,第一操作请求为签名请求,第一认证口令为签名口令,第一认证请求为签名认证请求。
当动态令牌被锁定后,动态令牌可执行解锁操作。如图3所示,为本发明实施例一中的动态令牌的解锁方法流程图,包括以下步骤:
步骤301,动态令牌显示令牌锁定信息,生成并显示解锁请求码,提示用户输入解锁码。
步骤302,客户端获取用户输入的解锁请求码。
步骤303,客户端生成包含解锁请求码和身份信息的解锁请求。
步骤304,客户端发送解锁请求给认证服务器。
步骤305,认证服务器根据解锁请求中的身份信息,检索与该身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第三用途代码进行散列,将得到的第九散列数据作为第五计算密钥。
具体地,认证服务器可以将检索到的工作密钥和第三用途代码组合成第九数据,对第九数据进行填充,得到第九消息,并对第九消息进行分组,对得到的分组数据进行迭代压缩,得到第九散列数据。
本实施例中,认证服务器检索到的工作密钥可以是长度为32字节的数据,第三用途代码可以是长度为4字节的数据,根据检索到的工作密钥和第三用途代码散列得到的第九散列数据可以是长度为32字节的数据。
步骤306,认证服务器从解锁请求中获取解锁请求码,对第五计算密钥和解锁请求码散列,得到第十散列数据。
具体地,认证服务器可以将第五计算密钥和获取到的解锁请求码组合成第十数据,对第十数据进行填充,得到第十消息,并对第十消息进行分组,对得到的分组数据进行迭代压缩,得到第十散列数据。
本实施例中,认证服务器获取到的解锁请求码可以是长度为6字节的数据,第五计算密钥可以是长度为32字节的数据,根据第五计算密钥和获取到的解锁请求码散列得到的第十散列数据可以是长度为32字节的数据。
步骤307,认证服务器对第十散列数据进行截位,将得到的第五截位结果作为解锁码,发送解锁码给客户端。
具体地,认证服务器可以对第十散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第五截位结果。
本实施例中,第十散列数据是长度为32字节的数据,认证服务器可以将第十散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第五截位结果。
步骤308,客户端显示解锁码。
步骤309,动态令牌获取用户输入的解锁码。
步骤310,动态令牌检测到第三按键被触发,对自身保存的工作密钥和第三用途代码进行散列,将得到的第十一散列数据作为第六计算密钥。
具体地,动态令牌可以将自身保存的工作密钥和第三用途代码组合成第十一数据,对第十一数据进行填充,得到第十一消息,并对第十一消息进行分组,对得到的分组数据进行迭代压缩,得到第十一散列数据。
本实施例中,工作密钥可以是长度为32字节的数据,第三用途代码可以是长度为4字节的数据,根据工作密钥和第三用途代码散列得到的第十一散列数据可以是长度为32字节的数据。
例如,动态令牌中的第三用途代码为“00000003”,工作密钥为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”,根据工作密钥和第三用途代码散列得到的第十一散列数据为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”。
步骤311,动态令牌对第六计算密钥和解锁请求码进行散列,得到第十二散列数据。
具体地,动态令牌可以将第六计算密钥和解锁请求码组合成第十二数据,对第十二数据进行填充,得到第十二消息,并对第十二消息进行分组,对得到的分组数据进行迭代压缩,得到第十二散列数据。
本实施例中,第六计算密钥可以是长度为32字节的数据,解锁请求码可以是长度为6字节的数据,根据第六计算密钥和解锁请求码散列得到的第十二散列数据可以是长度为32字节的数据。
例如,解锁请求码为“322337”,第六计算密钥为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”,动态令牌计算得到的第十二散列数据为“76d4b125be1942f9e54dd6bcd0bde811673187a74b321084ce0df24c62809123”。
步骤312,动态令牌对第十二散列数据进行截位,得到第六截位结果。
具体地,动态令牌可以对第十二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第六截位结果。
本实施例中,第十二散列数据是长度为32字节的数据,动态令牌可以将第十二散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第六截位结果。
例如,动态令牌计算得到的第十二散列数据为“76d4b125be1942f9e54dd6bcd0bde811673187a74b321084ce0df24c62809123”,第六截位结果为“783109”。
步骤313,动态令牌判断第六截位结果是否与解锁码相同,如果是,则执行步骤314;否则,执行步骤315。
步骤314,动态令牌显示解锁成功信息,对解锁失败次数进行初始化,对开机口令进行重置,保存重置后的开机口令,结束。
步骤315,动态令牌显示解锁失败信息,更新解锁失败次数。
步骤316,动态令牌判断解锁失败次数是否等于第二预设次数,如果是,则执行步骤317;否则,返回步骤301。
步骤317,动态令牌清空自身保存的原始种子密钥和工作密钥,显示令牌自毁信息。
如图4所示,为本发明实施例一中的动态令牌的同步方法流程图,包括以下步骤:
步骤401,动态令牌检测到第四按键被触发,对自身保存的工作密钥和第三用途代码进行散列,将得到的第十一散列数据作为第六计算密钥。
具体地,动态令牌可以将自身保存的工作密钥和第三用途代码组合成第十一数据,对第十一数据进行填充,得到第十一消息,并对第十一消息进行分组,对得到的分组数据进行迭代压缩,得到第十一散列数据。
本实施例中,工作密钥可以是长度为32字节的数据,第三用途代码可以是长度为4字节的数据,根据工作密钥和第三用途代码散列得到的第十一散列数据可以是长度为32字节的数据。
例如,动态令牌中的第三用途代码为“00000003”,工作密钥为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”,根据工作密钥和第三用途代码散列得到的第十一散列数据为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”。
步骤402,动态令牌对第六计算密钥和第五时间信息进行散列,得到第十三散列数据。
具体地,动态令牌可以将第六计算密钥和第五时间信息组合成第十三数据,对第十三数据进行填充,得到第十三消息,并对第十三消息进行分组,对得到的分组数据进行迭代压缩,得到第十三散列数据。
本实施例中,第六计算密钥可以是长度为32字节的数据,第五时间信息可以是长度为8字节的数据,根据第六计算密钥和第五时间信息散列得到的第十三散列数据可以是长度为32字节的数据。
例如,第五时间信息为“00000000015829CE”,第六计算密钥为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”,动态令牌计算得到的第十三散列数据为“e2738d9f6628bb77d6ef329e91c462c6a03ec54c19087fd23779a70530bb4a80”。
步骤403,动态令牌对第十三散列数据进行截位,得到第七截位结果。
具体地,动态令牌可以对第十三散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第七截位结果。
本实施例中,第十三散列数据是长度为32字节的数据,动态令牌可以将第七散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第七截位结果。
例如,动态令牌计算得到的第十三散列数据为“e2738d9f6628bb77d6ef329e91c462c6a03ec54c19087fd23779a70530bb4a80”,第七截位结果为“590109”。
步骤404,动态令牌对第六计算密钥和第六时间信息进行散列,得到第十四散列数据。
具体地,动态令牌可以将第六计算密钥和第六时间信息组合成第十四数据,对第十四数据进行填充,得到第十四消息,并对第十四消息进行分组,对得到的分组数据进行迭代压缩,得到第十四散列数据。其中,第六时间信息晚于第五时间信息。
本实施例中,第六计算密钥可以是长度为32字节的数据,第六时间信息可以是长度为8字节的数据,根据第六计算密钥和第六时间信息散列得到的第十四散列数据可以是长度为32字节的数据。
例如,第六时间信息为“00000000015829CF”,第六计算密钥为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”,动态令牌计算得到的第十四散列数据为“ec3cf5692ca775c90d59dee26870ecd1af67faa0588787608e838c93fe6179d5”。
步骤405,动态令牌对第十四散列数据进行截位,得到第八截位结果,将第七截位结果和第八截位结果分别作为第一同步码和第二同步码显示。
具体地,动态令牌可以对第十四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第八截位结果。
本实施例中,第十四散列数据是长度为32字节的数据,动态令牌可以将第十四散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第八截位结果。
例如,动态令牌计算得到的第十四散列数据为“ec3cf5692ca775c90d59dee26870ecd1af67faa0588787608e838c93fe6179d5”,第八截位结果为“836749”,即,第一同步码为“590109”,第二同步码为“836749”。
步骤406,客户端获取用户输入的第一同步码和第二同步码。
步骤407,客户端生成包含第一同步码、第二同步码和身份信息的同步请求。
步骤408,客户端发送同步请求给认证服务器。
步骤409,认证服务器根据同步请求中的身份信息,检索与该身份信息对应的工作密钥,对该工作密钥和第三用途代码进行散列,将得到的第九散列数据作为第五计算密钥。
具体地,认证服务器可以将检索到的工作密钥和第三用途代码组合成第九数据,对第九数据进行填充,得到第九消息,并对第九消息进行分组,对得到的分组数据进行迭代压缩,得到第九散列数据。
本实施例中,认证服务器检索到的工作密钥可以是长度为32字节的数据,第三用途代码可以是长度为4字节的数据,根据检索到的工作密钥和第三用途代码散列得到的第九散列数据可以是长度为32字节的数据。
步骤410,认证服务器对第五计算密钥和第七时间信息进行散列,得到第十五散列数据。
具体地,认证服务器可以将第五计算密钥和第七时间信息组合成第十五数据,对第十五数据进行填充,得到第十五消息,并对第十五消息进行分组,对得到的分组数据进行迭代压缩,得到第十五散列数据。
本实施例中,第五计算密钥可以是长度为32字节的数据,第七时间信息可以是长度为8字节的数据,根据第五计算密钥和第七时间信息散列得到的第十五散列数据可以是长度为32字节的数据。
步骤411,认证服务器对第十五散列数据进行截位,将得到的第九截位结果作为第一同步口令。
具体地,认证服务器可以对第十五散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第九截位结果。
本实施例中,第十五散列数据是长度为32字节的数据,认证服务器可以将第十五散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第九截位结果。
步骤412,认证服务器判断第一同步口令是否与从同步请求中获取的第一同步码匹配,如果是,则执行步骤414;否则,执行步骤413。
具体地,第一同步口令可以是一个口令,相应地,认证服务器可以判断第一同步口令是否与从同步请求中获取的第一同步码相同,如果是,则确定第一同步口令与从同步请求中获取的第一同步码匹配;否则,确定第一同步口令与从同步请求中获取的第一同步码不匹配。
第一同步口令还可以是多个口令,相应地,认证服务器还可以判断第一同步口令是否包含从同步请求中获取的第一同步码,如果是,则确定第一同步口令与从同步请求中获取的第一同步码匹配;否则,确定第一同步口令与从同步请求中获取的第一同步码不匹配。
步骤413,认证服务器向客户端发送同步失败消息,结束。
步骤414,认证服务器对第五计算密钥和第八时间信息进行散列,得到第十六散列数据。
具体地,认证服务器可以将第五计算密钥和第八时间信息组合成第十六数据,对第十六数据进行填充,得到第十六消息,并对第十六消息进行分组,对得到的分组数据进行迭代压缩,得到第十六散列数据。
本实施例中,第五计算密钥可以是长度为32字节的数据,第八时间信息可以是长度为8字节的数据,根据第五计算密钥和第八时间信息散列得到的第十六散列数据可以是长度为32字节的数据。
步骤415,认证服务器对第十六散列数据进行截位,将得到的第十截位结果作为第二同步口令。
具体地,认证服务器可以对第十六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第十截位结果。
本实施例中,第十六散列数据是长度为32字节的数据,认证服务器可以将第十六散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第十截位结果。
步骤416,认证服务器判断第二同步口令是否与从同步请求中获取的第二同步码匹配,如果是,则执行步骤417;否则,返回步骤413。
具体地,第二同步口令可以是一个口令,相应地,认证服务器可以判断第二同步口令是否与从同步请求中获取的第二同步码相同,如果是,则确定第二同步口令与从同步请求中获取的第二同步码匹配;否则,确定第二同步口令与从同步请求中获取的第二同步码不匹配。
第二同步口令还可以是多个口令,相应地,认证服务器还可以判断第二同步口令是否包含从同步请求中获取的第二同步码,如果是,则确定第二同步口令与从同步请求中获取的第二同步码匹配;否则,确定第二同步口令与从同步请求中获取的第二同步码不匹配。
步骤417,认证服务器判断第二同步码的认证成功时间是否晚于第一同步码的认证成功时间,如果是,则执行步骤418;否则,返回步骤413。
步骤418,认证服务器获取系统时间与第一同步码的认证成功时间之间的差值,将该差值保存为与同步请求中的身份信息对应的令牌偏移时间,向客户端发送同步成功消息。
本发明实施例中,动态令牌根据不同的用途代码生成不同的计算密钥,并根据各个计算密钥生成分别适用于各个应用场景的动态口令;相应地,认证服务器根据不同的用途代码对适用于各个应用场景的动态口令进行认证,降低了用于生成动态口令的密钥被窃取的风险,提高了令牌认证系统的安全性。
如图5所示,为本发明实施例一中的动态令牌的激活方法流程图,包括以下步骤:
步骤501,客户端向认证服务器发送激活请求。
步骤502,认证服务器根据激活请求中的身份信息,检索与该身份信息对应的原始种子密钥。
步骤503,认证服务器生成随机数,对随机数和检索到的原始种子密钥进行散列,得到第十七散列数据。
具体地,认证服务器可以将生成的随机数和检索到的原始种子密钥组合成第十七数据,对第十七数据进行填充,得到第十七消息,并对第十七消息进行分组,对得到的分组数据进行迭代压缩,得到第十七散列数据。
本实施例中,认证服务器生成的随机数可以是长度为6字节的数据,检索到的原始种子密钥可以是长度为32字节的数据,相应地,根据随机数和原始种子密钥散列得到的第十七散列数据可以是长度为32字节的数据。
例如,认证服务器生成的随机数为“123456”,原始种子密钥为“000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F”,认证服务器计算得到的第十七散列数据为“f12cf8c66ed35ca267886d737e1bc9ba846a4d1b316008d561b951ad4662bf54”。
步骤504,认证服务器对第十七散列数据进行截位,将得到的第十一截位结果与生成的随机数进行组合,得到激活码。
具体地,认证服务器可以对第十七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第十一截位结果。
本实施例中,第十七散列数据是长度为32字节的数据,认证服务器可以将第十七散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第十一截位结果。
例如,认证服务器计算得到的第十七散列数据为“f12cf8c66ed35ca267886d737e1bc9ba846a4d1b316008d561b951ad4662bf54”,第十一截位结果为“792518”。认证服务器将第十一截位结果“792518”与随机数“123456”进行组合,得到激活码“123456792518”。
步骤505,认证服务器对激活码和检索到的原始种子密钥进行散列,将得到的第十八散列数据保存为与激活请求中的身份信息对应的工作密钥。
具体地,认证服务器可以将激活码和检索到的原始种子密钥组合成第十八数据,对第十八数据进行填充,得到第十八消息,并对第十八消息进行分组,对得到的分组数据进行迭代压缩,得到第十八散列数据。
本实施例中,激活码可以是长度为12字节的数据,检索到的原始种子密钥可以是长度为32字节的数据,根据激活码和检索到的原始种子密钥散列得到的第十八散列数据可以是长度为32字节的数据。
步骤506,认证服务器发送激活码给客户端。
步骤507,客户端显示激活码。
步骤508,动态令牌获取用户输入的激活码。
步骤509,动态令牌对激活码和自身保存的原始种子密钥进行散列,将得到的第十九散列数据保存为工作密钥。
具体地,动态令牌可以将激活码和自身保存的原始种子密钥组合成第十九数据,对第十九数据进行填充,得到第十九消息,并对第十九消息进行分组,对得到的分组数据进行迭代压缩,得到第十九散列数据。
本实施例中,激活码可以是长度为12字节的数据,原始种子密钥可以是长度为32字节的数据,根据激活码和原始种子密钥散列得到的第十九散列数据可以是长度为32字节的数据。
例如,激活码为“123456792518”,原始种子密钥为“000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F”,相应地,动态令牌计算得到的第十九散列数据为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”。
步骤510,动态令牌设置开机口令,并对设置的开机口令进行保存。
实施例二
本发明实施例二提供了实施例一中所提及的身份认证系统中包含的动态令牌和认证服务器的工作方法。
如图6和图7所示,为本发明实施例二中的动态令牌的工作方法流程图,包括以下步骤:
步骤601,动态令牌上电。
步骤602,动态令牌判断自身是否被锁定,如果是,则执行步骤622;否则,执行步骤603。
步骤603,动态令牌提示用户输入开机口令。
步骤604,当获取到用户输入的开机口令时,动态令牌判断获取的开机口令是否与自身保存的开机口令相同,如果是,则对开机错误次数进行初始化,并执行步骤605;否则,执行步骤620。
步骤605,动态令牌等待用户触发按键。
步骤606,当动态令牌的按键被触发时,动态令牌对被触发的按键进行判断,如果是第一按键,则执行步骤607;如果是第二按键,则执行步骤611;如果是第三按键,则执行步骤615。
步骤607,动态令牌提示用户输入登录挑战码。
步骤608,动态令牌获取用户输入的登录挑战码,对自身保存的工作密钥和第一用途代码进行散列,将得到的第一散列数据作为第一计算密钥。
具体地,动态令牌可以将自身保存的工作密钥和第一用途代码组合成第一数据,对第一数据进行填充,得到第一消息,并对第一消息进行分组,对得到的分组数据进行迭代压缩,得到第一散列数据。
本实施例中,工作密钥可以是长度为32字节的数据,第一用途代码可以是长度为4字节的数据,根据工作密钥和第一用途代码散列得到的第一散列数据可以是长度为32字节的数据。
例如,动态令牌中的第一用途代码为“00000001”,工作密钥为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”,根据工作密钥和第一用途代码散列得到的第一散列数据为“27AD795688C800C1FC2C1787FDDA3FB4E8A9108B538C96E666BB860B1FDA3E56”。
步骤609,动态令牌对第一计算密钥、第一时间信息和登录挑战码进行散列,得到第二散列数据。
具体地,动态令牌可以将第一计算密钥、第一时间信息以及用户输入的登录挑战码组合成第二数据,对第二数据进行填充,得到第二消息,并对第二消息进行分组,对得到的分组数据进行迭代压缩,得到第二散列数据。
本实施例中,第一计算密钥可以是长度为32字节的数据,第一时间信息可以是长度为8字节的数据,用户输入的登录挑战码可以是长度为6字节的数据,根据第一计算密钥、第一时间信息和登录挑战码散列得到的第二散列数据可以是长度为32字节的数据。
例如,第一时间信息为“00000000015829CE”,用户输入的登录挑战码为“012345”,第一计算密钥为“27AD795688C800C1FC2C1787FDDA3FB4E8A9108B538C96E666BB860B1FDA3E56”,动态令牌计算得到的第二散列数据为“57f72a79575d05d01b647192c1fe2f72d593fe275ce3555695f8e25684e38bec”。
步骤610,动态令牌对第二散列数据进行截位,将得到的第一截位结果作为登录口令进行显示,并返回步骤605。
具体地,动态令牌可以对第二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第一截位结果。
本实施例中,第二散列数据是长度为32字节的数据,动态令牌可以将第二散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第一截位结果。
例如,动态令牌计算得到的第二散列数据为“57f72a79575d05d01b647192c1fe2f72d593fe275ce3555695f8e25684e38bec”,第一截位结果为“126092”,即,登录口令为“126092”。
需要说明的是,在本步骤之后,客户端可以获取动态令牌生成的登录口令生成包含登录口令和身份信息的登录认证请求,并将该登录认证请求发送给认证服务器。
步骤611,动态令牌提示用户输入签名挑战码。
步骤612,动态令牌获取用户输入的签名挑战码,对自身保存的工作密钥和第二用途代码进行散列,将得到的第三散列数据作为第二计算密钥。
具体地,动态令牌可以将自身保存的工作密钥和第二用途代码组合成第三数据,对第三数据进行填充,得到第三消息,并对第三消息进行分组,对得到的分组数据进行迭代压缩,得到第三散列数据。
本实施例中,工作密钥可以是长度为32字节的数据,第二用途代码可以是长度为4字节的数据,根据工作密钥和第二用途代码散列得到的第三散列数据可以是长度为32字节的数据。
例如,动态令牌中的第二用途代码为“00000002”,工作密钥为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”,根据工作密钥和第二用途代码散列得到的第三散列数据为“8D5828922FEBFC8597FC7768A5CD856B45C3A104119BDE8B0E9A418D6A9AB768”。
步骤613,动态令牌对第二计算密钥、第二时间信息和签名挑战码进行散列,得到第四散列数据。
具体地,动态令牌可以将第二计算密钥、第二时间信息以及用户输入的签名挑战码组合成第四数据,对第四数据进行填充,得到第四消息,并对第四消息进行分组,对得到的分组数据进行迭代压缩,得到第四散列数据。
本实施例中,第二计算密钥可以是长度为32字节的数据,第二时间信息可以是长度为8字节的数据,用户输入的签名挑战码可以是长度为6字节的数据,根据第二计算密钥、第二时间信息和签名挑战码散列得到的第四散列数据可以是长度为32字节的数据。
例如,第二时间信息为“00000000015829CE”,用户输入的签名挑战码为“012345”,第二计算密钥为“8D5828922FEBFC8597FC7768A5CD856B45C3A104119BDE8B0E9A418D6A9AB768”,动态令牌计算得到的第四散列数据为“228ff7a222fdf903b7c84926cebe47b42dc7d2e101da3e995dc402169a4b25da”。
步骤614,动态令牌对第四散列数据进行截位,将得到的第二截位结果作为签名口令进行显示,并返回步骤605。
具体地,动态令牌可以对第四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第二截位结果。
本实施例中,第四散列数据是长度为32字节的数据,动态令牌可以将第四散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第二截位结果。
例如,动态令牌计算得到的第四散列数据为“228ff7a222fdf903b7c84926cebe47b42dc7d2e101da3e995dc402169a4b25da”,第二截位结果为“821929”,即,签名口令为“821929”。
需要说明的是,在本步骤之后,客户端获取动态令牌生成的签名口令,生成包含签名口令和身份信息的签名认证请求,并将该签名认证请求发送给认证服务器。
步骤615,动态令牌对自身保存的工作密钥和第三用途代码进行散列,将得到的第五散列数据作为第三计算密钥。
具体地,动态令牌可以将自身保存的工作密钥和第三用途代码组合成第五数据,对第五数据进行填充,得到第五消息,并对第五消息进行分组,对得到的分组数据进行迭代压缩,得到第五散列数据。
本实施例中,工作密钥可以是长度为32字节的数据,第三用途代码可以是长度为4字节的数据,根据工作密钥和第三用途代码散列得到的第五散列数据可以是长度为32字节的数据。
例如,动态令牌中的第三用途代码为“00000003”,工作密钥为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”,根据工作密钥和第三用途代码散列得到的第五散列数据为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”。
步骤616,动态令牌对第三计算密钥和第三时间信息进行散列,得到第六散列数据。
具体地,动态令牌可以将第三计算密钥和第三时间信息组合成第六数据,对第六数据进行填充,得到第六消息,并对第六消息进行分组,对得到的分组数据进行迭代压缩,得到第六散列数据。
本实施例中,第三计算密钥可以是长度为32字节的数据,第三时间信息可以是长度为8字节的数据,根据第三计算密钥和第三时间信息散列得到的第六散列数据可以是长度为32字节的数据。
例如,第三时间信息为“00000000015829CE”,第三计算密钥为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”,动态令牌计算得到的第六散列数据为“e2738d9f6628bb77d6ef329e91c462c6a03ec54c19087fd23779a70530bb4a80”。
步骤617,动态令牌对第六散列数据进行截位,得到第三截位结果。
具体地,动态令牌可以对第六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第三截位结果。
本实施例中,第六散列数据是长度为32字节的数据,动态令牌可以将第六散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第三截位结果。
例如,动态令牌计算得到的第六散列数据为“e2738d9f6628bb77d6ef329e91c462c6a03ec54c19087fd23779a70530bb4a80”,第三截位结果为“590109”。
步骤618,动态令牌对第三计算密钥和第四时间信息进行散列,得到第七散列数据。
具体地,动态令牌可以将第三计算密钥和第四时间信息组合成第七数据,对第七数据进行填充,得到第七消息,并对第七消息进行分组,对得到的分组数据进行迭代压缩,得到第七散列数据。其中,第四时间信息晚于第三时间信息。
本实施例中,第三计算密钥可以是长度为32字节的数据,第四时间信息可以是长度为8字节的数据,根据第三计算密钥和第四时间信息散列得到的第七散列数据可以是长度为32字节的数据。
例如,第三时间信息为“00000000015829CF”,第三计算密钥为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”,动态令牌计算得到的第七散列数据为“ec3cf5692ca775c90d59dee26870ecd1af67faa0588787608e838c93fe6179d5”。
步骤619,动态令牌对第七散列数据进行截位,得到第四截位结果,将第三截位结果和第四截位结果分别作为第一同步码和第二同步码进行显示,并返回步骤605。
具体地,动态令牌可以对第七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第四截位结果。
本实施例中,第七散列数据是长度为32字节的数据,动态令牌可以将第七散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第四截位结果。
例如,动态令牌计算得到的第七散列数据为“ec3cf5692ca775c90d59dee26870ecd1af67faa0588787608e838c93fe6179d5”,第四截位结果为“836749”,即,第一同步码为“590109”,第二同步码为“836749”。
需要说明的是,在本步骤之后,客户端可以获取动态令牌生成的第一同步码和第二同步码,生成包含第一同步码、第二同步码和身份信息的同步请求,并将同步请求发送给认证服务器。
步骤620,动态令牌显示口令错误信息,对开机错误次数进行更新。
步骤621,动态令牌判断开机错误次数是否等于第一预设次数,如果是,则执行步骤622;否则,返回步骤603。
步骤622,动态令牌显示令牌锁定信息,生成并显示解锁请求码,提示用户输入解锁码。
需要说明的是,在本步骤之后,客户端可以获取动态令牌生成的解锁请求码,生成包含解锁请求码和身份信息的解锁请求,并将该解锁请求发送给认证服务器。
步骤623,当获取到用户输入的解锁码时,动态令牌对自身保存的工作密钥和第三用途代码进行散列,将得到的第五散列数据作为第三计算密钥。
具体地,动态令牌可以将自身保存的工作密钥和第三用途代码组合成第五数据,对第五数据进行填充,得到第五消息,并对第五消息进行分组,对得到的分组数据进行迭代压缩,得到第五散列数据。
本实施例中,工作密钥可以是长度为32字节的数据,第三用途代码可以是长度为4字节的数据,根据工作密钥和第三用途代码散列得到的第五散列数据可以是长度为32字节的数据。
例如,动态令牌中的第三用途代码为“00000003”,工作密钥为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”,根据工作密钥和第三用途代码散列得到的第五散列数据为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”。
步骤624,动态令牌对第三计算密钥和解锁请求码进行散列,得到第八散列数据。
具体地,动态令牌可以将第三计算密钥和解锁请求码组合成第八数据,对第八数据进行填充,得到第八消息,并对第八消息进行分组,对得到的分组数据进行迭代压缩,得到第八散列数据。
本实施例中,第三计算密钥可以是长度为32字节的数据,解锁请求码可以是长度为6字节的数据,根据第三计算密钥和解锁请求码散列得到的第八散列数据可以是长度为32字节的数据。
例如,解锁请求码为“322337”,第三计算密钥为“AFCC4F6EAC971346E64D5F234505426558B84B61EAF8DFAA18E8DD885BF11E3F”,动态令牌计算得到的第八散列数据为“76d4b125be1942f9e54dd6bcd0bde811673187a74b321084ce0df24c62809123”。
步骤625,动态令牌对第八散列数据进行截位,得到第五截位结果。
具体地,动态令牌可以对第八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;动态令牌使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第五截位结果。
本实施例中,第八散列数据是长度为32字节的数据,动态令牌可以将第八散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,动态令牌获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第五截位结果。
例如,动态令牌计算得到的第八散列数据为“76d4b125be1942f9e54dd6bcd0bde811673187a74b321084ce0df24c62809123”,第五截位结果为“783109”。
步骤626,动态令牌判断第五截位结果是否与获取的解锁码相同,如果是,则执行步骤627;否则,执行步骤629。
步骤627,动态令牌显示解锁成功信息,对解锁失败次数进行初始化。
步骤628,动态令牌对开机口令进行重置,保存重置后的开机口令,对开机错误次数进行初始化,并返回步骤605。
步骤629,动态令牌显示解锁失败信息,对解锁失败次数进行更新。
步骤630,动态令牌判断解锁失败次数是否等于第二预设次数,如果是,则执行步骤631;否则,返回步骤622。
步骤631,动态令牌清空自身保存的原始种子密钥和工作密钥,显示令牌自毁信息,结束流程。
需要说明的是,本发明实施例中的动态令牌需要在完成激活后才能正常工作,即,执行上述图6和图7所示的工作方法流程。本发明实施例中的动态令牌的激活过程包括:动态令牌获取用户输入的激活码,对该激活码和自身保存的原始种子密钥进行散列,将得到的第九散列数据保存为工作密钥;动态令牌设置开机口令,并对设置的开机口令进行保存,对开机错误次数进行初始化。
具体地,动态令牌可以将激活码和自身保存的原始种子密钥组合成第九数据,对第九数据进行填充,得到第九消息,并对第九消息进行分组,对得到的分组数据进行迭代压缩,得到第九散列数据。
本实施例中,激活码可以是长度为12字节的数据,原始种子密钥可以是长度为32字节的数据,根据激活码和原始种子密钥散列得到的第九散列数据可以是长度为32字节的数据。
例如,激活码为“123456792518”,原始种子密钥为“000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F”,相应地,动态令牌计算得到的第九散列数据为“a26d180368a3775b810eb54193804af4c5edc74d3a1dddca28ba700091e99b03”。
其中,动态令牌激活过程中使用的激活码是由认证服务器生成的,认证服务器的工作方法如图8和图9所示,包括以下步骤:
步骤701,认证服务器等待接收来自客户端的请求。
步骤702,当接收到来自客户端的请求后,认证服务器对接收到的请求进行判断,
如果是激活请求,则执行步骤703;
如果是登录请求,则执行步骤707;
如果是登录认证请求,则执行步骤708;
如果是签名请求,则执行步骤715;
如果是签名认证请求,则执行步骤716;
如果是同步请求,则执行步骤723;
如果是解锁请求,则执行步骤733。
步骤703,认证服务器根据激活请求中的身份信息,检索与该身份信息对应的原始种子密钥。
其中,身份信息可以是用户名,也可以是令牌序列号,还可以是用于标识动态令牌用户的身份的其他信息。
步骤704,认证服务器生成第一随机数,对第一随机数和检索到的原始种子密钥进行散列,得到第十散列数据。
具体地,认证服务器可以将第一随机数和检索到的原始种子密钥组合成第十数据,对第十数据进行填充,得到第十消息,并对第十消息进行分组,对得到的分组数据进行迭代压缩,得到第十散列数据。
本实施例中,第一随机数可以是长度为6字节的数据,检索到的原始种子密钥可以是长度为32字节的数据,相应地,根据第一随机数和原始种子密钥散列得到的第十散列数据可以是长度为32字节的数据。
例如,第一随机数为“123456”,原始种子密钥为“000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F”,认证服务器计算得到的第十散列数据为“f12cf8c66ed35ca267886d737e1bc9ba846a4d1b316008d561b951ad4662bf54”。
步骤705,认证服务器对第十散列数据进行截位,将得到的第六截位结果与第一随机数进行组合,得到激活码,并将该激活码发送给客户端。
具体地,认证服务器可以对第十散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第六截位结果。
本实施例中,第十散列数据是长度为32字节的数据,认证服务器可以将第十散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第六截位结果。
例如,认证服务器计算得到的第十散列数据为“f12cf8c66ed35ca267886d737e1bc9ba846a4d1b316008d561b951ad4662bf54”,第六截位结果为“792518”。认证服务器将第六截位结果“792518”与第一随机数“123456”进行组合,得到激活码“123456792518”。
需要说明的是,本步骤之后,客户端可以将接收到的激活码显示给用户。
步骤706,认证服务器对激活码和检索到的原始种子密钥进行散列,将得到的第十一散列数据保存为与激活请求中的身份信息对应的工作密钥,并返回步骤701。
具体地,认证服务器可以将激活码和检索到的原始种子密钥组合成第十一数据,对第十一数据进行填充,得到第十一消息,并对第十一消息进行分组,对得到的分组数据进行迭代压缩,得到第十一散列数据。
本实施例中,激活码可以是长度为12字节的数据,检索到的原始种子密钥可以是长度为32字节的数据,根据激活码和检索到的原始种子密钥散列得到的第十一散列数据可以是长度为32字节的数据。
步骤707,认证服务器生成第二随机数,将该第二随机数保存为与登录请求中的身份信息对应的登录挑战码,将该登录挑战码发送给客户端,并返回步骤701。
其中,第二随机数可以是长度为6字节的数据,例如,“012345”。
需要说明的是,本步骤之后,客户端可以将接收到的登录挑战码显示给用户。
步骤708,认证服务器根据登录认证请求中的身份信息,检索与该身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第一用途代码进行散列,将得到的第十二散列数据作为第四计算密钥。
具体地,认证服务器可以将检索到的工作密钥和第一用途代码组合成第十二数据,对第十二数据进行填充,得到第十二消息,并对第十二消息进行分组,对得到的分组数据进行迭代压缩,得到第十二散列数据。
本实施例中,认证服务器检索到的工作密钥可以是长度为32字节的数据,第一用途代码可以是长度为4字节的数据,根据检索到的工作密钥和第一用途代码散列得到的第十二散列数据可以是长度为32字节的数据。
步骤709,认证服务器根据登录认证请求中的身份信息,检索与该身份信息对应的登录挑战码。
步骤710,认证服务器根据令牌偏移时间和系统时间获取第五时间信息,对第四计算密钥、第五时间信息和检索到的登录挑战码进行散列,得到第十三散列数据。
具体地,认证服务器可以将第四计算密钥、第五时间信息以及检索到的登录挑战码组合成第十三数据,对第十三数据进行填充,得到第十三消息,并对第十三消息进行分组,对得到的分组数据进行迭代压缩,得到第十三散列数据。
本实施例中,第四计算密钥可以是长度为32字节的数据,第五时间信息可以是长度为8字节的数据,检索到的登录挑战码可以是长度为6字节的数据,根据第四计算密钥、第五时间信息和检索到的登录挑战码散列得到的第十三散列数据可以是长度为32字节的数据。
步骤711,认证服务器对第十三散列数据进行截位,将得到的第七截位结果作为计算得到的登录口令。
具体地,认证服务器可以对第十三散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第七截位结果。
本实施例中,第十三散列数据是长度为32字节的数据,认证服务器可以将第十三散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第七截位结果。
步骤712,认证服务器判断计算得到的登录口令是否与从登录认证请求中获取的登录口令匹配,如果是,则执行步骤713;否则,执行步骤714。
具体地,认证服务器计算得到的登录口令可以是一个口令,相应地,认证服务器可以判断计算得到的登录口令是否与从登录请求中获取的登录口令相同,如果是,则确定计算得到的登录口令与从登录请求中获取的登录口令匹配;否则,确定计算得到的登录口令与从登录请求中获取的登录口令不匹配。
认证服务器计算得到的登录口令还可以是多个口令,相应地,认证服务器也可以判断计算得到的登录口令是否包含从登录请求中获取的登录口令,如果是,则确定计算得到的登录口令与从登录请求中获取的登录口令匹配;否则,确定计算得到的登录口令与从登录请求中获取的登录口令不匹配。
步骤713,认证服务器向客户端发送认证成功消息,并返回步骤701。
步骤714,认证服务器向客户端发送认证失败消息,并返回步骤701。
步骤715,认证服务器生成签名挑战码,将签名挑战码保存为与签名请求中的身份信息相对应的信息,将该签名挑战码发送给客户端,并返回步骤701。
具体地,认证服务器可以将业务数据的部分或全部保存为与签名请求中的身份信息对应的签名挑战码;也可以生成第三随机数,将第三随机数与业务数据的部分或全部进行组合,将组合得到的数据保存为与签名请求中的身份信息对应的签名挑战码,其中,签名挑战码可以是长度为6字节的数据,例如,“012345”。
需要说明的是,本步骤之后,客户端可以将接收到的签名挑战码显示给用户。
步骤716,认证服务器根据签名认证请求中的身份信息,检索与该身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第二用途代码进行散列,将得到的第十四散列数据作为第五计算密钥。
具体地,认证服务器可以将检索到的工作密钥和第二用途代码组合成第十四数据,对第十四数据进行填充,得到第十四消息,并对第十四消息进行分组,对得到的分组数据进行迭代压缩,得到第十四散列数据。
本实施例中,认证服务器检索到的工作密钥可以是长度为32字节的数据,第二用途代码可以是长度为4字节的数据,根据检索到的工作密钥和第二用途代码散列得到的第十四散列数据可以是长度为32字节的数据。
步骤717,认证服务器根据签名认证请求中的身份信息,检索与该身份信息对应的签名挑战码。
步骤718,认证服务器根据令牌偏移时间和系统时间获取第六时间信息,对第五计算密钥、第六时间信息和检索到的签名挑战码进行散列,得到第十五散列数据。
具体地,认证服务器可以将第五计算密钥、第六时间信息以及检索到的签名挑战码组合成第十五数据,对第十五数据进行填充,得到第十五消息,并对第十五消息进行分组,对得到的分组数据进行迭代压缩,得到第十五散列数据。
本实施例中,第五计算密钥可以是长度为32字节的数据,第六时间信息可以是长度为8字节的数据,检索到的签名挑战码可以是长度为6字节的数据,根据第五计算密钥、第六时间信息和检索到的签名挑战码散列得到的第十五散列数据可以是长度为32字节的数据。
步骤719,认证服务器对第十五散列数据进行截位,将得到的第八截位结果作为计算得到的签名口令。
具体地,认证服务器可以对第十五散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第八截位结果。
本实施例中,第十五散列数据是长度为32字节的数据,认证服务器可以将第十五散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第八截位结果。
步骤720,认证服务器判断计算得到的签名口令是否与从签名认证请求中获取的签名口令匹配,如果是,则执行步骤721;否则,执行步骤722。
具体地,认证服务器计算得到的签名口令可以是一个口令,相应地,认证服务器可以判断计算得到的签名口令是否与从签名请求中获取的签名口令相同,如果是,则确定计算得到的签名口令与从签名请求中获取的签名口令匹配;否则,确定计算得到的签名口令与从签名请求中获取的签名口令不匹配。
认证服务器计算得到的签名口令还可以是多个口令,相应地,认证服务器也可以判断计算得到的签名口令是否包含从签名请求中获取的签名口令,如果是,则确定计算得到的签名口令与从签名请求中获取的签名口令匹配;否则,确定计算得到的签名口令与从签名请求中获取的签名口令不匹配。
步骤721,认证服务器向客户端发送认证成功消息,并返回步骤701。
需要说明的是,在本步骤之后,客户端可以将接收到的认证成功消息显示给用户。
步骤722,认证服务器向客户端发送认证失败消息,并返回步骤701。
需要说明的是,在本步骤之后,客户端可以将接收到的认证失败消息显示给用户。
步骤723,认证服务器根据同步请求中的身份信息,检索与该身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第三用途代码进行散列,将得到的第十六散列数据作为第六计算密钥。
具体地,认证服务器可以将检索到的工作密钥和第三用途代码组合成第十六数据,对第十六数据进行填充,得到第十六消息,并对第十六消息进行分组,对得到的分组数据进行迭代压缩,得到第十六散列数据。
本实施例中,认证服务器检索到的工作密钥可以是长度为32字节的数据,第三用途代码可以是长度为4字节的数据,根据检索到的工作密钥和第三用途代码散列得到的第十六散列数据可以是长度为32字节的数据。
步骤724,认证服务器对第六计算密钥和第七时间信息进行散列,得到第十七散列数据。
具体地,认证服务器可以将第六计算密钥和第七时间信息组合成第十七数据,对第十七数据进行填充,得到第十七消息,并对第十七消息进行分组,对得到的分组数据进行迭代压缩,得到第十七散列数据。
本实施例中,第六计算密钥可以是长度为32字节的数据,第七时间信息可以是长度为8字节的数据,根据第六计算密钥和第七时间信息散列得到的第十七散列数据可以是长度为32字节的数据。
步骤725,认证服务器对第十七散列数据进行截位,将得到的第九截位结果作为第一同步口令。
具体地,认证服务器可以对第十七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第九截位结果。
本实施例中,第十七散列数据是长度为32字节的数据,认证服务器可以将第十七散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第九截位结果。
步骤726,认证服务器判断第一同步口令是否与从同步请求中获取的第一同步码匹配,如果是,则执行步骤728;否则,执行步骤727。
具体地,第一同步口令可以是一个口令,相应地,认证服务器可以判断第一同步口令是否与从同步请求中获取的第一同步码相同,如果是,则确定第一同步口令与从同步请求中获取的第一同步码匹配;否则,确定第一同步口令与从同步请求中获取的第一同步码不匹配。
第一同步口令还可以是多个口令,相应地,认证服务器还可以判断第一同步口令是否包含从同步请求中获取的第一同步码,如果是,则确定第一同步口令与从同步请求中获取的第一同步码匹配;否则,确定第一同步口令与从同步请求中获取的第一同步码不匹配。
步骤727,认证服务器向客户端发送同步失败消息,并返回步骤701。
需要说明的是,在本步骤之后,客户端可以将接收到的同步失败消息显示给用户。
步骤728,认证服务器对第六计算密钥和第八时间信息进行散列,得到第十八散列数据。
具体地,认证服务器可以将第六计算密钥和第八时间信息组合成第十八数据,对第十八数据进行填充,得到第十八消息,并对第十八消息进行分组,对得到的分组数据进行迭代压缩,得到第十八散列数据。
本实施例中,第六计算密钥可以是长度为32字节的数据,第八时间信息可以是长度为8字节的数据,根据第六计算密钥和第八时间信息散列得到的第十八散列数据可以是长度为32字节的数据。
步骤729,认证服务器对第十八散列数据进行截位,将得到的第十截位结果作为第二同步口令。
具体地,认证服务器可以对第十八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第十截位结果。
本实施例中,第十八散列数据是长度为32字节的数据,认证服务器可以将第十八散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第十截位结果。
步骤730,认证服务器判断第二同步口令是否与从同步请求中获取的第二同步码匹配,如果是,则执行步骤731;否则,返回步骤727。
具体地,第二同步口令可以是一个口令,相应地,认证服务器可以判断第二同步口令是否与从同步请求中获取的第二同步码相同,如果是,则确定第二同步口令与从同步请求中获取的第二同步码匹配;否则,确定第二同步口令与从同步请求中获取的第二同步码不匹配。
第二同步口令还可以是多个口令,相应地,认证服务器还可以判断第二同步口令是否包含从同步请求中获取的第二同步码,如果是,则确定第二同步口令与从同步请求中获取的第二同步码匹配;否则,确定第二同步口令与从同步请求中获取的第二同步码不匹配。
步骤731,认证服务器判断第二同步码的认证成功时间是否晚于第一同步码的认证成功时间,如果是,则执行步骤732;否则,返回步骤727。
步骤732,认证服务器获取系统时间与第一同步码的认证成功时间之间的差值,将该差值保存为与同步请求中的身份信息对应的令牌偏移时间,向客户端发送同步成功消息,并返回步骤701。
需要说明的是,在本步骤之后,客户端可以将接收到的同步成功消息显示给用户。
步骤733,认证服务器根据解锁请求中的身份信息,检索与该身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第三用途代码进行散列,将得到的第十六散列数据作为第六计算密钥。
具体地,认证服务器可以将检索到的工作密钥和第三用途代码组合成第十六数据,对第十六数据进行填充,得到第十六消息,并对第十六消息进行分组,对得到的分组数据进行迭代压缩,得到第十六散列数据。
本实施例中,认证服务器检索到的工作密钥可以是长度为32字节的数据,第三用途代码可以是长度为4字节的数据,根据检索到的工作密钥和第三用途代码散列得到的第十六散列数据可以是长度为32字节的数据。
步骤734,认证服务器从解锁请求中获取解锁请求码,对第六计算密钥和获取到的解锁请求码进行散列,得到第十九散列数据。
具体地,认证服务器可以将第六计算密钥和获取到的解锁请求码组合成第十九数据,对第十九数据进行填充,得到第十九消息,并对第十九消息进行分组,对得到的分组数据进行迭代压缩,得到第十九散列数据。
本实施例中,认证服务器获取到的解锁请求码可以是长度为6字节的数据,第六计算密钥可以是长度为32字节的数据,根据第六计算密钥和获取到的解锁请求码散列得到的第十九散列数据可以是长度为32字节的数据。
步骤735,认证服务器对第十九散列数据进行截位,将得到的第十一截位结果作为解锁码发送给客户端,并返回步骤701。
具体地,认证服务器可以对第十九散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将上述各个字节组分别转换为对应的二进制数;认证服务器使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第十一截位结果。
本实施例中,第十九散列数据是长度为32字节的数据,认证服务器可以将第十九散列数据分为8个字节组,每个字节组包含4个字节,通过对各个字节组中的4个字节进行移位和组合,可将8个字节组转换为8个二进制数。进一步地,认证服务器获取上述8个二进制数相加得到的结果,使用该结果对232取模,在使用得到的取模值对1000000取模,得到第十一截位结果。
需要说明的是,在本步骤之后,客户端可以将接收到的解锁码显示给用户。
本发明实施例中,认证服务器根据不同的用途代码获取相应的计算密钥,并使用获取的计算密钥对适用于各个应用场景的动态口令进行认证,降低了密钥被窃取的风险,提高了令牌认证系统的安全性。
实施例三
本发明实施例三提供了实施例一提及的身份认证系统的组成结构。
如图10所示,为本发明实施例三中的一种身份认证系统结构图,包括认证服务器810、客户端820和动态令牌830。
其中,认证服务器810包括:
第一接收模块811,用于接收来自所述客户端820的第一操作请求;
第一生成模块812,用于在所述第一接收模块811接收到所述第一操作请求后,生成第一挑战码,将所述第一挑战码保存为与所述第一操作请求中的身份信息相对应的信息;
第一发送模块813,用于将所述第一生成模块812生成的所述第一挑战码发送给所述客户端820;
所述客户端820包括:
第二发送模块821,用于向所述认证服务器810发送所述第一操作请求;
第二接收模块822,用于接收来自所述认证服务器810的所述第一挑战码;
第一显示模块823,用于显示所述第一挑战码;
所述动态令牌830包括:
第一存储模块831,用于保存工作密钥和第一用途代码;
第一获取模块832,用于获取用户输入的所述第一挑战码;
检测模块833,用于检测按键;
第一散列模块834,用于在所述检测模块833检测到第一按键被触发时,对所述第一存储模块831保存的工作密钥和第一用途代码进行散列,得到第一散列数据;
第二散列模块835,用于将所述第一散列模块834散列得到的所述第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述第一获取模块832获取到的所述第一挑战码进行散列,得到第二散列数据;
第一截位模块836,用于对所述第二散列模块835散列得到的所述第二散列数据进行截位,得到第一截位结果;
第二显示模块837,用于将所述第一截位模块836截位得到的第一截位结果作为第一认证口令进行显示;
所述客户端820还包括:
第二获取模块824,用于获取用户输入的所述第一认证口令;
第二生成模块825,用于生成包含身份信息和所述第一认证口令的第一认证请求;
所述第二发送模块821,还用于将所述第二生成模块825生成的所述第一认证请求发送给所述认证服务器810;
所述认证服务器810中的所述第一接收模块811,还用于接收来自所述客户端820的所述第一认证请求;
所述认证服务器810还包括:
第二存储模块814,用于保存所述第一用途代码;
第三获取模块815,用于获取所述第一接收模块811接收到的所述第一认证请求中的身份信息;
检索模块816,用于检索与所述第一认证请求中的身份信息对应的工作密钥和第一挑战码;
第三散列模块817,用于对所述检索模块816检索到的工作密钥和所述第二存储模块814保存的所述第一用途代码进行散列,得到第三散列数据;
第四散列模块818,用于将所述第三散列模块817散列得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和检索到的所述第一挑战码进行散列,得到第四散列数据;
第二截位模块819,用于对所述第四散列模块818散列得到的所述第四散列数据进行截位,得到第二截位结果;
第一判断模块841,用于将所述第二截位模块819截位得到的所述第二截位结果作为计算得到的第一认证口令,判断所述计算得到的第一认证口令是否与从所述第一认证请求中获取的第一认证口令匹配;
所述第一发送模块813,还用于在所述第一判断模块841判断出所述计算得到的第一认证口令与从所述第一认证请求中获取的第一认证口令匹配时,向所述客户端820发送认证成功消息;在所述第一判断模块841判断出所述计算得到的第一认证口令与从所述第一认证请求中获取的第一认证口令不匹配时,向所述客户端820发送认证失败消息;
所述客户端820中的所述第二接收模块822,还用于接收来自所述认证服务器810的认证成功消息或认证失败消息。
具体地,所述第一散列模块834,具体用于在所述检测模块833检测到第一按键被触发时,将所述第一存储模块831保存的工作密钥和所述第一用途代码组合成第一数据,对所述第一数据进行填充,得到第一消息,并对所述第一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第一散列数据;
所述第二散列模块835,具体用于将所述第一计算密钥、所述第一时间信息以及所述第一挑战码组合成第二数据,对所述第二数据进行填充,得到第二消息,并对所述第二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第二散列数据;
所述第三散列模块817,具体用于对所述检索模块816检索到的工作密钥和所述第二存储模块814保存的所述第一用途代码组合成第三数据,对所述第三数据进行填充,得到第三消息,并对所述第三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第三散列数据;
所述第四散列模块818,具体用于将所述第二计算密钥、所述第二时间信息以及所述检索到的第一挑战码组合成第四数据,对所述第四数据进行填充,得到第四消息,并对所述第四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第四散列数据。
所述第一截位模块836,具体用于对所述第二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第一截位结果;
所述第二截位模块819,具体用于对所述第四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第二截位结果。
进一步地,所述认证服务器810中的所述第一接收模块811,还用于接收来自所述客户端820的第二操作请求;
相应地,所述第一生成模块812,还用于在所述第一接收模块811接收到所述第二操作请求后,生成第二挑战码,将所述第二挑战码保存为与所述第二操作请求中的身份信息相对应的信息;
所述第一发送模块813,还用于将所述第一生成模块812生成的所述第二挑战码发送给所述客户端820;
所述客户端820中的所述第一显示模块823,还用于显示所述第二挑战码;
所述动态令牌830中的所述第一存储模块831,还用于保存第二用途代码;
所述第一获取模块832,还用于获取用户输入的所述第二挑战码;
所述第一散列模块834,还用于在所述检测模块833检测到第二按键被触发时,对所述第一存储模块831保存的工作密钥和第二用途代码进行散列,得到第五散列数据;
所述第二散列模块835,还用于将所述第二散列模块835散列得到的所述第五散列数据作为第三计算密钥,对所述第三计算密钥、第三时间信息和所述第二挑战码进行散列,得到第六散列数据;
所述第一截位模块836,还用于对所述第六散列数据进行截位,得到第三截位结果;
所述第二显示模块837,还用于将所述第一截位模块836截位得到的第三截位结果作为第二认证口令进行显示;
所述客户端820中的所述第二获取模块824,还用于获取用户输入的所述第二认证口令;
所述第二生成模块825,还用于生成包含所述第二认证口令和身份信息的第二认证请求;
所述第二发送模块821,还用于将所述第二生成模块825生成的所述第二认证请求发送给所述认证服务器810;
所述认证服务器810中的所述第一接收模块811,还用于接收来自所述客户端820的所述第二认证请求;
所述第二存储模块814,还用于保存所述第二用途代码;
所述第三获取模块815,还用于获取所述第二认证请求中的身份信息;
所述检索模块816,还用于检索与所述第二认证请求中的身份信息对应的工作密钥和第二挑战码;
所述第三散列模块817,还用于对所述检索模块816检索到的工作密钥和所述第二存储模块814保存的所述第二用途代码进行散列,得到第七散列数据;
所述第四散列模块818,还用于将所述第三散列模块817散列得到的所述第七散列数据作为第四计算密钥,对所述第四计算密钥、第四时间信息和检索到的所述第二挑战码进行散列,得到第八散列数据;
所述第二截位模块819,还用于对所述第八散列数据进行截位,得到第四截位结果;
所述第一判断模块841,还用于将所述第二截位模块819截位得到的所述第四截位结果作为计算得到的第二认证口令,判断所述计算得到的第二认证口令是否与从所述第二认证请求中获取的第二认证口令匹配;
所述第一发送模块813,还用于在所述第一判断模块841判断出所述计算得到的第二认证口令与从所述第二认证请求中获取的第二认证口令匹配时,向所述客户端820发送认证成功消息;在所述第一判断模块841判断出所述计算得到的第二认证口令与从所述第二认证请求中获取的第二认证口令不匹配时,向所述客户端820发送认证失败消息。
其中,所述第一操作请求为登录请求时,所述第一认证请求为登录认证请求,所述第二操作请求为签名请求,所述第二认证请求为签名认证请求;
所述第一操作请求为签名请求时,所述第一认证请求为签名认证请求,所述第二操作请求为登录请求,所述第二认证请求为登录认证请求。
具体地,所述第一散列模块834,具体用于在所述检测模块833检测到第二按键被触发时,将所述第一存储模块831保存的工作密钥和所述第二用途代码组合成第五数据,对所述第五数据进行填充,得到第五消息,并对所述第五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第五散列数据;
所述第二散列模块835,具体用于将所述第三计算密钥、所述第三时间信息以及所述第二挑战码组合成第六数据,对所述第六数据进行填充,得到第六消息,并对所述第六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第六散列数据;
所述第三散列模块817,具体用于对所述检索模块816检索到的工作密钥和所述第二存储模块814保存的所述第二用途代码组合成第七数据,对所述第七数据进行填充,得到第七消息,并对所述第七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第七散列数据;
所述第四散列模块818,具体用于将所述第四计算密钥、所述第四时间信息以及所述检索到的第二挑战码组合成第八数据,对所述第八数据进行填充,得到第八消息,并对所述第八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第八散列数据。
所述第一截位模块836,具体用于对所述第六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第三截位结果;
所述第二截位模块819,具体用于对所述第八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第四截位结果。
进一步地,所述动态令牌830,还包括:
第三生成模块,用于当所述动态令牌830被锁定后,生成解锁请求码;
所述第二显示模块837,还用于显示所述第三生成模块生成的所述解锁请求码;
所述客户端820中的所述第二获取模块824,还用于获取用户输入的所述解锁请求码;
所述第二生成模块825,还用于生成包含所述解锁请求码和身份信息的解锁请求;
所述第二发送模块821,还用于将所述解锁请求发送给所述认证服务器810;
所述认证服务器810中的所述第一接收模块811,还用于接收所述解锁请求;
所述第二存储模块814,还用于保存第三用途代码;
所述检索模块816,还用于检索与所述解锁请求中的身份信息对应的工作密钥;
所述第三散列模块817,还用于对所述检索模块816检索到的工作密钥和所述第二存储模块814保存的所述第三用途代码进行散列,得到第九散列数据;
所述第三获取模块815,还用于从所述解锁请求中获取所述解锁请求码;
所述第四散列模块818,还用于将所述第三散列模块817散列得到的第九散列数据作为第五计算密钥,对所述第五计算密钥和所述解锁请求码进行散列,得到第十散列数据;
所述第二截位模块819,还用于对所述第十散列数据进行截位,得到第五截位结果;
所述第一发送模块813,还用于将所述第二截位模块819截位得到的第五截位结果作为解锁码发送给所述客户端820;
所述客户端820中的第二接收模块822,还用于接收来自所述认证服务器810的所述解锁码;
所述第一显示模块823,还用于显示所述解锁码;
所述动态令牌830中的所述第一获取模块832,还用于获取用户输入的所述解锁码;
所述第一存储模块831,还用于保存所述第三用途代码;
所述第一散列模块834,还用于在所述检测模块833检测到第三按键被触发时,对所述第一存储模块831保存的工作密钥和所述第三用途代码进行散列,得到第十一散列数据;
所述第二散列模块835,还用于将所述第一散列模块834散列得到的第十一散列数据作为第六计算密钥,对所述第六计算密钥和所述解锁请求码进行散列,得到第十二散列数据;
所述第一截位模块836,还用于对所述第十二散列数据进行截位,得到第六截位结果;
所述第一判断模块841,还用于判断所述第六截位结果是否与所述解锁码相同;
所述第二显示模块837,还用于在所述第一判断模块841判断出所述第六截位结果与所述解锁码相同时,显示解锁成功信息;在所述第一判断模块841判断出所述第六截位结果与所述解锁码不同时,显示解锁失败信息;
所述动态令牌830,还包括:
重置模块,用于在所述第一判断模块841判断出所述第六截位结果与所述解锁码相同时,对开机口令进行重置,保存重置后的开机口令。
进一步地,所述动态令牌830中的所述第一存储模块831,还用于保存原始种子密钥;
所述动态令牌830,还包括:
初始化模块,用于在所述第一判断模块841判断出所述第六截位结果与所述解锁码相同时,对解锁失败次数进行初始化;
更新模块,用于在所述第一判断模块841判断出所述第六截位结果与所述解锁码不同时,对所述解锁失败次数进行更新;
第二判断模块,用于判断所述解锁失败次数是否等于第二预设次数,并在判断出所述解锁失败次数不等于第二预设次数时,触发所述第三生成模块重新生成解锁请求码;
清空模块,用于在所述第二判断模块判断出所述解锁失败次数等于第二预设次数时,清空所述第一存储模块831保存的原始种子密钥和工作密钥;
所述第二显示模块837,还用于在所述第二判断模块判断出所述解锁失败次数等于第二预设次数时,显示令牌自毁信息。
具体地,所述第三散列模块817,具体用于将所述检索模块816检索到的工作密钥和所述第三用途代码组合成第九数据,对所述第九数据进行填充,得到第九消息,并对所述第九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第九散列数据;
所述第四散列模块818,具体用于将所述第五计算密钥和所述解锁请求码组合成第十数据,对所述第十数据进行填充,得到第十消息,并对所述第十消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十散列数据;
所述第一散列模块834,具体用于将所述第一存储模块831保存的工作密钥和第三用途代码组合成第十一数据,对所述第十一数据进行填充,得到第十一消息,并对所述第十一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十一散列数据;
所述第二散列模块835,具体用于将所述第六计算密钥和所述解锁请求码组合成第十二数据,对所述第十二数据进行填充,得到第十二消息,并对所述第十二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十二散列数据。
所述第二截位模块819,具体用于对所述第十散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第五截位结果;
所述第一截位模块836,具体用于对所述第十二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第六截位结果。
进一步地,所述动态令牌830中的所述第一存储模块831,还用于保存第三用途代码;
所述第一散列模块834,还用于在所述检测模块833检测到第四按键被触发时,对所述第一存储模块831保存的工作密钥和第三用途代码进行散列,得到第十一散列数据;
所述第二散列模块835,还用于将所述第一散列模块834散列得到的第十一散列数据作为第六计算密钥,对所述第六计算密钥和第五时间信息进行散列,得到第十三散列数据,对所述第六计算密钥和第六时间信息进行散列,得到第十四散列数据,所述第六时间信息晚于所述第五时间信息;
所述第一截位模块836,还用于对所述第十三散列数据进行截位,得到第七截位结果;对所述第十四散列数据进行截位,得到第八截位结果;
所述第二显示模块837,还用于将所述第七截位结果和所述第八截位结果分别作为第一同步码和第二同步码进行显示;
所述客户端820中的所述第二获取模块824,还用于获取用户输入的所述第一同步码和所述第二同步码;
所述第二生成模块825,还用于生成包含所述第一同步码、所述第二同步码和身份信息的同步请求;
所述第二发送模块821,还用于将所述同步请求发送给所述认证服务器810;
所述认证服务器810中的所述第一接收模块811,还用于接收所述同步请求;
所述第二存储模块814,还用于保存第三用途代码;
所述检索模块816,还用于检索与所述同步请求中的身份信息对应的工作密钥;
所述第三散列模块817,还用于对所述检索模块816检索到的工作密钥和所述第二存储模块814保存的第三用途代码进行散列,得到第九散列数据;
所述第四散列模块818,还用于将所述第三散列模块817散列得到的第九散列数据作为第五计算密钥,对所述第五计算密钥和第七时间信息进行散列,得到第十五散列数据;
所述第二截位模块819,还用于对所述第十五散列数据进行截位,得到第九截位结果;
所述第一判断模块841,还用于将所述第二截位模块819截位得到的第九截位结果作为第一同步口令,判断所述第一同步口令是否与从所述同步请求中获取的第一同步码匹配;
所述第一发送模块813,还用于在所述第一判断模块841判断出所述第一同步口令与从所述同步请求中获取的第一同步码不匹配时,向所述客户端820发送同步失败消息;
所述第四散列模块818,还用于在所述第一判断模块841判断出所述第一同步口令与从所述同步请求中获取的第一同步码匹配时,对所述第五计算密钥和第八时间信息进行散列,得到第十六散列数据;
所述第二截位模块819,还用于对所述第十六散列数据进行截位,得到第十截位结果;
所述第一判断模块841,还用于将所述第二截位模块819截位得到的第十截位结果作为第二同步口令,判断所述第二同步口令是否与从所述同步请求中获取的第二同步码匹配;
所述第一发送模块813,还用于在所述第一判断模块841判断出所述第二同步口令与从所述同步请求中获取的第二同步码不匹配时,向所述客户端820发送同步失败消息;
所述第一判断模块841,还用于在所述第一判断模块841判断出所述第二同步口令与从所述同步请求中获取的第二同步码匹配时,判断所述第二同步码的认证成功时间是否晚于所述第一同步码的认证成功时间;
所述第三获取模块815,还用于在所述第一判断模块841判断出所述第二同步码的认证成功时间晚于所述第一同步码的认证成功时间时,获取系统时间与所述第一同步码的认证成功时间之间的差值,将所述差值保存为与所述同步请求中的身份信息对应的令牌偏移时间;
所述第一发送模块813,还用于在所述第一判断模块841判断出所述第二同步码的认证成功时间晚于所述第一同步码的认证成功时间时,向所述客户端820发送同步成功消息;在所述第一判断模块841判断出所述第二同步码的认证成功时间不晚于所述第一同步码的认证成功时间时,向所述客户端820发送同步失败消息。
具体地,所述第一散列模块834,具体用于将所述第一存储模块831保存的工作密钥和所述第三用途代码组合成第十一数据,对所述第十一数据进行填充,得到第十一消息,并对所述第十一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十一散列数据;
所述第二散列模块835,具体用于将所述第六计算密钥和所述第五时间信息组合成第十三数据,对所述第十三数据进行填充,得到第十三消息,并对所述第十三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十三散列数据;将所述第六计算密钥和所述第六时间信息组合成第十四数据,对所述第十四数据进行填充,得到第十四消息,并对所述第十四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十四散列数据;
所述第三散列模块817,具体用于将所述检索模块816检索到的工作密钥和所述第三用途代码组合成第九数据,对所述第九数据进行填充,得到第九消息,并对所述第九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第九散列数据;
所述第四散列模块818,具体用于将所述第五计算密钥和所述第七时间信息组合成第十五数据,对所述第十五数据进行填充,得到第十五消息,并对所述第十五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十五散列数据;将所述第五计算密钥和所述第八时间信息组合成第十六数据,对所述第十六数据进行填充,得到第十六消息,并对所述第十六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十六散列数据。
所述第一截位模块836,具体用于对所述第十三散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第七截位结果;对所述第十四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第八截位结果;
所述第二截位模块819,具体用于对所述第十五散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第九截位结果;对所述第十六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十截位结果。
进一步地,所述认证服务器810中的所述第一接收模块811,还用于接收来自所述客户端820的激活请求;
所述检索模块816,还用于检索与所述激活请求中的身份信息对应的原始种子密钥;
所述第一生成模块812,还用于在所述第一接收模块811接收到所述解惑请求后,生成随机数;
所述认证服务器810,还包括:
所述第五散列模块,用于对所述第一生成模块812生成的所述随机数和所述检索模块816检索到的原始种子密钥进行散列,得到第十七散列数据;
第三截位模块,用于对所述第十七散列数据进行截位,得到第十一截位结果;
组合模块,用于将所述第三截位模块截位得到的第十一截位结果与所述第一生成模块812生成的所述随机数进行组合,得到激活码;
第六散列模块,用于对所述组合模块组合得到的所述激活码和所述检索模块816检索到的原始种子密钥进行散列,将得到的第十八散列数据保存为与所述激活请求中的身份信息对应的工作密钥;
所述第一发送模块813,还用于将所述组合模块组合得到的所述激活码发送给所述客户端820;
所述客户端820中的所述第二接收模块822,还用于接收所述激活码;
所述第一显示模块823,还用于显示所述激活码;
所述动态令牌830中的所述第一存储模块831,还用于保存原始种子密钥;
所述第一获取模块832,用于获取用户输入的所述激活码;
所述动态令牌830,还包括:
第七散列模块,用于对所述激活码和所述第一存储模块831保存的原始种子密钥进行散列,将得到的第十九散列数据保存为所述工作密钥;
设置模块,用于在所述第七散列模块保存所述工作密钥后,设置开机口令,并对设置的所述开机口令进行保存。
具体地,所述第五散列模块,具体用于将所述随机数和所述检索到的原始种子密钥组合成第十七数据,对所述第十七数据进行填充,得到第十七消息,并对所述第十七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十七散列数据;
所述第六散列模块,具体用于将所述激活码和所述检索到的原始种子密钥组合成第十八数据,对所述第十八数据进行填充,得到第十八消息,并对所述第十八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十八散列数据;
所述第七散列模块,具体用于将所述激活码和所述自身保存的原始种子密钥组合成第十九数据,对所述第十九数据进行填充,得到第十九消息,并对所述第十九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十九散列数据。
所述第三截位模块,具体用于对所述第十七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十一截位结果。
本发明实施例中,动态令牌根据不同的用途代码生成不同的计算密钥,并根据各个计算密钥生成分别适用于各个应用场景的动态口令;相应地,认证服务器根据不同的用途代码对适用于各个应用场景的动态口令进行认证,降低了用于生成动态口令的密钥被窃取的风险,提高了令牌认证系统的安全性。
实施例四
本发明实施例提供了实施例二提及的动态令牌和认证服务器的组成结构。
如图11所示,为本发明实施例四中的动态令牌的结构示意图,包括:
存储模块910,用于保存工作密钥、第一用途代码和第二用途代码;
获取模块920,用于获取用户输入的登录挑战码和签名挑战码;
检测模块930,用于检测按键;
第一判断模块940,用于在所述检测模块930检测到所述动态令牌的按键被触发时,对被触发的按键进行判断;
第一散列模块950,用于在所述第一判断模块940判断出所述被触发的按键为第一按键时,对所述存储模块910保存的工作密钥和第一用途代码进行散列,得到第一散列数据;在所述第一判断模块940判断出所述被触发的按键为第二按键时,对所述存储模块910保存的工作密钥和第二用途代码进行散列,得到第三散列数据;
第二散列模块960,用于将所述第一散列模块950散列得到的第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述获取模块920获取的登录挑战码进行散列,得到第二散列数据;将所述第一散列模块950散列得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和所述获取模块920获取的签名挑战码进行散列,得到第四散列数据;
截位模块970,用于对所述第二散列模块960散列得到的第二散列数据进行截位,得到第一截位结果;对所述第二散列模块960散列得到的第四散列数据进行截位,得到第二截位结果;
显示模块980,用于将所述截位模块970截位得到的第一截位结果作为登录口令进行显示,将所述截位模块970截位得到的第二截位结果作为签名口令进行显示。
具体地,所述第一散列模块950,具体用于将所述工作密钥和所述第一用途代码组合成第一数据,对所述第一数据进行填充,得到第一消息,并对所述第一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第一散列数据;将所述工作密钥和所述第二用途代码组合成第三数据,对所述第三数据进行填充,得到第三消息,并对所述第三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第三散列数据;
所述第二散列模块960,具体用于将所述第一计算密钥、所述第一时间信息以及所述登录挑战码组合成第二数据,对所述第二数据进行填充,得到第二消息,并对所述第二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第二散列数据;将所述第二计算密钥、所述第二时间信息以及所述签名挑战码组合成第四数据,对所述第四数据进行填充,得到第四消息,并对所述第四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第四散列数据。
所述截位模块970,具体用于对所述第二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第一截位结果;对所述第四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第二截位结果。
进一步地,上述存储模块910,还用于保存第三用途代码;
所述第一散列模块950,还用于在所述第一判断模块940判断出所述被触发的按键为第三按键时,对所述存储模块910保存的工作密钥和第三用途代码进行散列,得到第五散列数据;
所述第二散列模块960,还用于将所述第一散列模块950散列得到的第五散列数据作为第三计算密钥,对所述第三计算密钥和第三时间信息进行散列,得到第六散列数据;对所述第三计算密钥和第四时间信息进行散列,得到第七散列数据;
所述截位模块970,还用于对所述第六散列数据进行截位,得到第三截位结果;对所述第七散列数据进行截位,得到第四截位结果;
所述显示模块980,还用于将所述第三截位结果和所述第四截位结果分别作为第一同步码和第二同步码进行显示。
具体地,所述第一散列模块950,具体用于将所述工作密钥和所述第三用途代码组合成第五数据,对所述第五数据进行填充,得到第五消息,并对所述第五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第五散列数据;
所述第二散列模块960,具体用于将所述第三计算密钥和所述第三时间信息组合成第六数据,对所述第六数据进行填充,得到第六消息,并对所述第六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第六散列数据;将所述第三计算密钥和所述第四时间信息组合成第七数据,对所述第七数据进行填充,得到第七消息,并对所述第七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第七散列数据。
所述截位模块970,具体用于对所述第六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第三截位结果;对所述第七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第四截位结果。
进一步地,所述存储模块910,还用于保存原始种子密钥和第三用途代码;
所述获取模块920,还用于获取用户输入的激活码;
所述动态令牌,还包括:
第三散列模块,用于对所述激活码和所述原始种子密钥进行散列,将得到的第九散列数据保存为所述工作密钥;
设置模块,用于在所述第三散列模块保存所述工作密钥后,设置开机口令,并将所述开机口令保存到所述存储模块910中。
具体地,所述第三散列模块,具体用于将所述激活码和所述原始种子密钥组合成第九数据,对所述第九数据进行填充,得到第九消息,并对所述第九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第九散列数据。
进一步地,所述显示模块980,还用于提示用户输入开机口令;
所述获取模块920,还用于获取用户输入的开机口令;
相应地,所述动态令牌,还包括:
第二判断模块,用于判断所述获取模块920获取的开机口令是否与所述存储模块910保存的开机口令相同;
第一初始化模块,用于在所述第二判断模块判断出所述获取模块920获取的开机口令与所述存储模块910保存的开机口令相同时,对开机错误次数进行初始化;
第一更新模块,用于在所述第二判断模块判断出所述获取模块920获取的开机口令与所述存储模块910保存的开机口令不同时,对所述开机错误次数进行更新;
第三判断模块,用于判断所述第一更新模块更新后的所述开机错误次数是否等于第一预设次数;
生成模块,用于在所述第三判断模块判断出所述开机错误次数等于第一预设次数时,生成解锁请求码;
所述显示模块980,还用于显示所述生成模块生成的所述解锁请求码,提示用户输入解锁码;
所述获取模块920,还用于获取用户输入的解锁码;
所述第一散列模块950,还用于对所述存储模块910保存的工作密钥和第三用途代码进行散列,得到第五散列数据;
所述第二散列模块960,还用于将所述第五散列数据作为第三计算密钥,对所述第三计算密钥和解锁请求码进行散列,得到第八散列数据;
所述截位模块970,还用于对所述第八散列数据进行截位,得到第五截位结果;
所述第四判断模块,用于判断所述第五截位结果是否与所述解锁码相同;
所述显示模块980,还用于在所述第四判断模块判断出所述第五截位结果与所述解锁码相同时,显示解锁成功信息;在所述第四判断模块判断出所述第五截位结果与所述解锁码不同时,显示解锁失败信息;
所述设置模块,还用于在所述第四判断模块判断出所述第五截位结果与所述解锁码相同时,对开机口令进行重置,保存重置后的开机口令。
进一步地,上述动态令牌,还包括:
第二初始化模块,用于在所述第四判断模块判断出所述第五截位结果与所述解锁码相同时,对解锁失败次数进行初始化;
第二更新模块,用于在所述第四判断模块判断出所述第五截位结果与所述解锁码不同时,对所述解锁失败次数进行更新;
第五判断模块,用于判断所述解锁失败次数是否等于第二预设次数,并在判断出所述解锁失败次数不等于第二预设次数时,触发所述生成模块生成解锁请求码;
清空模块,用于在所述第五判断模块判断出所述解锁失败次数等于第二预设次数时,清空所述存储模块910保存的原始种子密钥和工作密钥;
所述显示模块980,还用于在所述第五判断模块判断出所述解锁失败次数等于第二预设次数时,显示令牌自毁信息。
进一步地,上述动态令牌,还包括:
第六判断模块,用于在所述动态令牌上电后,判断所述动态令牌是否被锁定,并在判断出所述动态令牌被锁定后,触发所述生成模块生成解锁请求码;在判断出所述动态令牌没有被锁定后,触发所述显示模块980提示用户输入开机口令。
具体地,所述第一散列模块950,具体用于将所述工作密钥和所述第三用途代码组合成第五数据,对所述第五数据进行填充,得到第五消息,并对所述第五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第五散列数据;
所述第二散列模块960,具体用于将所述第三计算密钥和所述解锁请求码组合成第八数据,对所述第八数据进行填充,得到第八消息,并对所述第八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第八散列数据。
所述截位模块970,具体用于对所述第八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第五截位结果。
本发明实施例中,动态令牌根据不同的用途代码生成不同的计算密钥,并根据各个计算密钥生成分别适用于各个应用场景的动态口令,降低了用于生成动态口令的密钥被窃取的风险,提高了令牌认证系统的安全性。
如图12所示,为本发明实施例四中的认证服务器的结构示意图,包括:
存储模块1001,用于保存第一用途代码和第二用途代码;
接收模块1002,用于接收来自客户端的请求;
第一判断模块1003,用于对所述接收模块1002接收到的请求进行判断;
第一生成模块1004,用于在所述第一判断模块1003判断所述接收到的请求为登录请求时,生成登录挑战码,将所述登录挑战码保存为与所述登录请求中的身份信息相对应的信息;在所述第一判断模块1003判断所述接收到的请求为签名请求时,生成签名挑战码,将所述签名挑战码保存为与所述签名请求中的身份信息相对应的信息;
发送模块1005,用于将所述第一生成模块1004生成的所述登录挑战码和所述签名挑战码发送给所述客户端;
检索模块1006,用于在所述第一判断模块1003判断出所述接收到的请求为登录认证请求时,检索与所述登录认证请求中的身份信息对应的工作密钥和登录挑战码;在所述第一判断模块1003判断出所述接收到的请求为签名认证请求时,检索与所述签名认证请求中的身份信息对应的工作密钥和签名挑战码;
第一散列模块1007,用于对所述检索模块1006检索到的工作密钥和所述存储模块1001保存的第一用途代码进行散列,得到第十二散列数据;对所述检索模块1006检索到的工作密钥和所述存储模块1001保存的第二用途代码进行散列,得到第十四散列数据;
第二散列模块1008,用于将所述第一散列模块1007散列得到的所述第十二散列数据作为第四计算密钥,对所述第四计算密钥、第五时间信息和所述检索模块1006检索到的登录挑战码进行散列,得到第十三散列数据;将所述第一散列模块1007散列得到的第十四散列数据作为第五计算密钥,对所述第五计算密钥、第六时间信息和检索到的签名挑战码进行散列,得到第十五散列数据;
截位模块1009,用于对所述第二散列模块1008散列得到的所述第十三散列数据进行截位,得到第七截位结果;对所述第二散列模块1008散列得到的所述第十五散列数据进行截位,得到第八截位结果;
第二判断模块1010,用于将所述截位模块1009截位得到的第七截位结果作为计算得到的登录口令,判断所述计算得到的登录口令是否与从所述登录认证请求中获取的登录口令匹配;将所述截位模块1009截位得到的第八截位结果作为计算得到的签名口令,判断所述计算得到的签名口令是否与从所述签名认证请求中获取的签名口令匹配;
上述发送模块1005,还用于在所述第二判断模块1010判断出所述计算得到的登录口令与从所述登录认证请求中获取的登录口令匹配时,向所述客户端发送认证成功消息;在所述第二判断模块1010判断出所述计算得到的登录口令与从所述登录认证请求中获取的登录口令不匹配时,向所述客户端发送认证失败消息;在所述第二判断模块1010判断出所述计算得到的签名口令与从所述签名认证请求中获取的签名口令匹配时,向所述客户端发送认证成功消息;在所述第二判断模块1010判断出所述计算得到的签名口令与从所述签名认证请求中获取的签名口令不匹配时,向所述客户端发送认证失败消息。
具体地,所述第一散列模块1007,具体用于将所述检索模块1006检索到的工作密钥和所述第一用途代码组合成第十二数据,对所述第十二数据进行填充,得到第十二消息,并对所述第十二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十二散列数据;将所述检索模块1006检索到的工作密钥和所述第二用途代码组合成第十四数据,对所述第十四数据进行填充,得到第十四消息,并对所述第十四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十四散列数据;
所述第二散列模块1008,具体用于将所述第四计算密钥、所述第五时间信息以及所述检索到的登录挑战码组合成第十三数据,对所述第十三数据进行填充,得到第十三消息,并对所述第十三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十三散列数据;将所述第五计算密钥、所述第六时间信息以及所述检索到的签名挑战码组合成第十五数据,对所述第十五数据进行填充,得到第十五消息,并对所述第十五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十五散列数据。
所述截位模块1009,具体用于对所述第十三散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第七截位结果;对第十五散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第八截位结果。
进一步地,所述检索模块1006,还用于在所述第一判断模块1003判断出所述接收到的请求为激活请求时,检索与所述激活请求中的身份信息对应的原始种子密钥;
相应地,所述认证服务器,还包括:
第二生成模块,用于在所述第一判断模块1003判断出所述接收到的请求为激活请求时,生成第一随机数;
所述第一散列模块1007,还用于对所述第二生成模块生成的所述第一随机数和所述检索模块1006检索到的原始种子密钥进行散列,得到第十散列数据;
所述截位模块1009,还用于对所述第十散列数据进行截位,得到第六截位结果;
所述认证服务器,还包括:
组合模块,用于将所述截位模块1009截位得到的第六截位结果与所述第一随机数进行组合,得到激活码;
第三散列模块,用于对所述组合模块组合得到的所述激活码和所述检索模块1006检索到的原始种子密钥进行散列,将得到的第十一散列数据保存为与所述激活请求中的身份信息对应的工作密钥;
所述发送模块1005,还用于向所述客户端发送所述组合模块生成的所述激活码。
具体地,所述第一散列模块1007,具体用于将所述第一随机数和所述检索模块1006检索到的原始种子密钥组合成第十数据,对所述第十数据进行填充,得到第十消息,并对所述第十消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十散列数据。
所述截位模块1009,具体用于对所述第十散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第六截位结果。
进一步地,上述存储模块1001,还用于保存第三用途代码;
所述检索模块1006,还用于在所述第一判断模块1003判断出所述接收到的请求为解锁请求时,检索与所述解锁请求中的身份信息对应的工作密钥;
所述第一散列模块1007,还用于对所述检索模块1006检索到的工作密钥和所述存储模块1001保存的第三用途代码进行散列,得到第十六散列数据;
所述第二散列模块1008,还用于将所述第一散列模块1007散列得到的第十六散列数据作为第六计算密钥,对所述第六计算密钥和从所述解锁请求中获取到的解锁请求码进行散列,得到第十九散列数据;
所述截位模块1009,还用于对所述第十九散列数据进行截位,得到第十一截位结果;
所述发送该模块,还用于将所述截位模块1009截位得到的第十一截位结果作为解锁码发送给所述客户端。
具体地,所述第一散列模块1007,具体用于将所述检索到的工作密钥和所述第三用途代码组合成第十六数据,对所述第十六数据进行填充,得到第十六消息,并对所述第十六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十六散列数据;
所述第二散列模块1008,具体用于将所述第六计算密钥和所述获取到的解锁请求码组合成第十九数据,对所述第十九数据进行填充,得到第十九消息,并对所述第十九消息进行分组,对得到的分组数据进行迭代压缩,得到第所述十九散列数据。
所述截位模块1009,具体用于对所述第十九散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十一截位结果。
进一步地,所述存储模块1001,还用于保存第三用途代码;
所述检索模块1006,还用于在所述第一判断模块1003判断出所述接收到的请求为同步请求时,检索与所述同步请求中的身份信息对应的工作密钥;
所述第一散列模块1007,还用于对所述检索模块1006检索到的工作密钥和所述存储模块1001保存的第三用途代码进行散列,得到第十六散列数据;
所述第二散列模块1008,还用于对所述第一散列模块1007散列得到的第十六散列数据作为第六计算密钥,对所述第六计算密钥和第七时间信息进行散列,得到第十七散列数据;
所述截位模块1009,还用于对所述第十七散列数据进行截位,得到第九截位结果;
第二判断模块1010,还用于将所述截位模块1009截位得到的第九截位结果作为第一同步口令,判断所述第一同步口令是否与从所述同步请求中获取的第一同步码匹配;
所述发送模块1005,还用于在所述第二判断模块1010判断出所述第一同步口令与从所述同步请求中获取的第一同步码不匹配时,向所述客户端发送同步失败消息;
所述认证服务器,还包括:
第四散列模块,用于在所述第二判断模块1010判断出所述第一同步口令与从所述同步请求中获取的第一同步码匹配时,对所述第六计算密钥和第八时间信息进行散列,得到第十八散列数据;
所述截位模块1009,还用于对所述第十八散列数据进行截位,得到第十截位结果;
所述认证服务器,还包括:
第三判断模块,用于将所述截位模块1009截位得到的第十截位结果作为第二同步口令,判断所述第二同步口令是否与从所述同步请求中获取的第二同步码匹配;
第四判断模块,用于在所述第三判断模块判断出所述第二同步口令与从所述同步请求中获取的第二同步码匹配时,判断所述第二同步码的认证成功时间是否晚于所述第一同步码的认证成功时间;
所述获取模块,用于在所述第四判断模块判断出所述第二同步码的认证成功时间晚于所述第一同步码的认证成功时间时,获取系统时间与所述第一同步码的认证成功时间之间的差值,将所述差值保存为与所述同步请求中的身份信息对应的令牌偏移时间;
所述发送模块1005,还用于在所述第三判断模块判断出所述第二同步口令与从所述同步请求中获取的第二同步码不匹配时,向所述客户端发送同步失败消息;在所述第三判断模块判断出所述第二同步口令与从所述同步请求中获取的第二同步码匹配时,向所述客户端发送同步成功消息;在所述第四判断模块判断出所述第二同步码的认证成功时间不晚于所述第一同步码的认证成功时间时,向所述客户端发送同步失败消息。
具体地,所述第一散列模块1007,具体用于所述认证服务器将所述检索到的工作密钥和所述第三用途代码组合成第十六数据,对所述第十六数据进行填充,得到第十六消息,并对所述第十六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十六散列数据;
所述第二散列模块1008,具体用于将所述第六计算密钥和所述第七时间信息组合成第十七数据,对所述第十七数据进行填充,得到第十七消息,并对所述第十七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十七散列数据;
所述第四散列模块,具体用于将所述第六计算密钥和所述第八时间信息组合成第十八数据,对所述第十八数据进行填充,得到第十八消息,并对所述第十八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十八散列数据。
所述截位模块1009,具体用于对第十七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第九截位结果;
对第十八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十截位结果。
本发明实施例中,认证服务器根据不同的用途代码获取相应的计算密钥,并使用获取的计算密钥对适用于各个应用场景的动态口令进行认证,降低了密钥被窃取的风险,提高了令牌认证系统的安全性。
结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (76)

1.一种身份认证方法,应用于包括动态令牌、客户端和认证服务器的系统中,其特征在于,所述方法包括以下步骤:
所述认证服务器接收来自所述客户端的第一操作请求,生成第一挑战码,将所述第一挑战码保存为与所述第一操作请求中的身份信息相对应的信息,将所述第一挑战码发送给所述客户端;
所述客户端显示所述第一挑战码;
当所述动态令牌获取到用户输入的所述第一挑战码,检测到第一按键被触发时,所述动态令牌对自身保存的工作密钥和第一用途代码进行散列,将得到的第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述第一挑战码进行散列,得到第二散列数据;
所述动态令牌对所述第二散列数据进行截位,将得到的第一截位结果作为第一认证口令进行显示;
所述客户端获取用户输入的所述第一认证口令,生成包含所述第一认证口令和身份信息的第一认证请求,将所述第一认证请求发送给所述认证服务器;
所述认证服务器获取所述第一认证请求中的身份信息,检索与所述第一认证请求中的身份信息对应的工作密钥和第一挑战码,对检索到的工作密钥和自身保存的所述第一用途代码进行散列,将得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和检索到的所述第一挑战码进行散列,得到第四散列数据;
所述认证服务器对所述第四散列数据进行截位,将得到的第二截位结果作为计算得到的第一认证口令,判断所述计算得到的第一认证口令是否与从所述第一认证请求中获取的第一认证口令匹配,如果是,则向所述客户端发送认证成功消息;否则,向所述客户端发送认证失败消息;
所述方法还包括:
当所述动态令牌被锁定后,所述动态令牌生成并显示解锁请求码;
所述客户端获取用户输入的所述解锁请求码,生成包含所述解锁请求码和身份信息的解锁请求;
所述客户端将所述解锁请求发送给所述认证服务器;
所述认证服务器检索与所述解锁请求中的身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第三用途代码进行散列,将得到的第九散列数据作为第五计算密钥;
所述认证服务器从所述解锁请求中获取所述解锁请求码,对所述第五计算密钥和所述解锁请求码进行散列,得到第十散列数据;
所述认证服务器对所述第十散列数据进行截位,将得到的第五截位结果作为解锁码发送给所述客户端;
所述客户端显示所述解锁码;
当所述动态令牌获取到用户输入的所述解锁码,检测到第三按键被触发时,所述动态令牌对自身保存的工作密钥和所述第三用途代码进行散列,将得到的第十一散列数据作为第六计算密钥,对所述第六计算密钥和所述解锁请求码进行散列,得到第十二散列数据;
所述动态令牌对所述第十二散列数据进行截位,得到第六截位结果,判断所述第六截位结果是否与所述解锁码相同,如果是,则显示解锁成功信息,对开机口令进行重置,保存重置后的开机口令;否则,显示解锁失败信息。
2.如权利要求1所述的方法,其特征在于,所述动态令牌对自身保存的工作密钥和第一用途代码进行散列,具体为:
所述动态令牌将自身保存的工作密钥和所述第一用途代码组合成第一数据,对所述第一数据进行填充,得到第一消息,并对所述第一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第一散列数据;
所述动态令牌对第一计算密钥、第一时间信息和第一挑战码进行散列,得到第二散列数据,具体为:
所述动态令牌将所述第一计算密钥、所述第一时间信息以及所述第一挑战码组合成第二数据,对所述第二数据进行填充,得到第二消息,并对所述第二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第二散列数据;
所述认证服务器对检索到的工作密钥和自身保存的第一用途代码进行散列,具体为:
所述认证服务器将所述检索到的工作密钥和所述第一用途代码组合成第三数据,对所述第三数据进行填充,得到第三消息,并对所述第三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第三散列数据;
所述认证服务器对第二计算密钥、第二时间信息和检索到的第一挑战码进行散列,得到第四散列数据,具体为:
所述认证服务器将所述第二计算密钥、所述第二时间信息以及所述检索到的第一挑战码组合成第四数据,对所述第四数据进行填充,得到第四消息,并对所述第四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第四散列数据。
3.如权利要求1所述的方法,其特征在于,所述动态令牌对第二散列数据进行截位,具体为:
所述动态令牌对所述第二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第一截位结果;
所述认证服务器对第四散列数据进行截位,具体为:
所述认证服务器对所述第四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第二截位结果。
4.如权利要求1所述的方法,其特征在于,还包括:
所述认证服务器接收来自所述客户端的第二操作请求,生成第二挑战码,将所述第二挑战码保存为与所述第二操作请求中的身份信息相对应的信息,将所述第二挑战码发送给所述客户端;
所述客户端显示所述第二挑战码;
当所述动态令牌获取到用户输入的所述第二挑战码,检测到第二按键被触发时,所述动态令牌对自身保存的工作密钥和第二用途代码进行散列,将得到的第五散列数据作为第三计算密钥,对所述第三计算密钥、第三时间信息和所述第二挑战码进行散列,得到第六散列数据;
所述动态令牌对所述第六散列数据进行截位,将得到的第三截位结果作为第二认证口令进行显示;
所述客户端获取用户输入的所述第二认证口令,生成包含所述第二认证口令和身份信息的第二认证请求,将所述第二认证请求发送给所述认证服务器;
所述认证服务器获取所述第二认证请求中的身份信息,检索与所述第二认证请求中的身份信息对应的工作密钥和第二挑战码,对检索到的工作密钥和自身保存的所述第二用途代码进行散列,将得到的第七散列数据作为第四计算密钥,对所述第四计算密钥、第四时间信息和检索到的所述第二挑战码进行散列,得到第八散列数据;
所述认证服务器对所述第八散列数据进行截位,将得到的第四截位结果作为计算得到的第二认证口令,判断所述计算得到的第二认证口令是否与从所述第二认证请求中获取的第二认证口令匹配,如果是,则向所述客户端发送认证成功消息;否则,向所述客户端发送认证失败消息。
5.如权利要求4所述的方法,其特征在于,所述第一操作请求为登录请求时,所述第一认证请求为登录认证请求,所述第二操作请求为签名请求,所述第二认证请求为签名认证请求;
所述第一操作请求为签名请求时,所述第一认证请求为签名认证请求,所述第二操作请求为登录请求,所述第二认证请求为登录认证请求。
6.如权利要求4所述的方法,其特征在于,所述动态令牌对自身保存的工作密钥和第二用途代码进行散列,具体为:
所述动态令牌将所述自身保存的工作密钥和所述第二用途代码组合成第五数据,对所述第五数据进行填充,得到第五消息,并对所述第五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第五散列数据;
所述动态令牌对第三计算密钥、第三时间信息和第二挑战码进行散列,得到第六散列数据,具体为:
所述动态令牌将所述第三计算密钥、所述第三时间信息以及所述第二挑战码组合成第六数据,对所述第六数据进行填充,得到第六消息,并对所述第六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第六散列数据;
所述认证服务器对检索到的工作密钥和自身保存的第二用途代码进行散列,具体为:
所述认证服务器将所述检索到的工作密钥和第二用途代码组合成第七数据,对所述第七数据进行填充,得到第七消息,并对所述第七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第七散列数据;
所述认证服务器对第四计算密钥、第四时间信息和检索到的第二挑战码进行散列,得到第八散列数据,具体为:
所述认证服务器将所述第四计算密钥、所述第四时间信息以及所述检索到的第二挑战码组合成第八数据,对所述第八数据进行填充,得到第八消息,并对所述第八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第八散列数据。
7.如权利要求4所述的方法,其特征在于,所述动态令牌对第六散列数据进行截位,具体为:
所述动态令牌对所述第六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第三截位结果;
所述认证服务器对第八散列数据进行截位,具体为:
所述认证服务器对所述第八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第四截位结果。
8.如权利要求1所述的方法,其特征在于,所述动态令牌判断出所述第六截位结果与所述解锁码相同之后,还包括:
所述动态令牌对解锁失败次数进行初始化;
所述动态令牌判断出所述第六截位结果与所述解锁码不同之后,还包括:
所述动态令牌对解锁失败次数进行更新,判断所述解锁失败次数是否等于第二预设次数,如果是,清空自身保存的原始种子密钥和工作密钥,显示令牌自毁信息;否则,重新生成并显示解锁请求码,继续根据所述解锁请求码执行解锁操作。
9.如权利要求1所述的方法,其特征在于,所述认证服务器对检索到的工作密钥和自身保存的第三用途代码进行散列,具体为:
所述认证服务器将所述检索到的工作密钥和所述第三用途代码组合成第九数据,对所述第九数据进行填充,得到第九消息,并对所述第九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第九散列数据;
所述认证服务器对所述第五计算密钥和所述解锁请求码进行散列,得到第十散列数据,具体为:
所述认证服务器将所述第五计算密钥和所述解锁请求码组合成第十数据,对所述第十数据进行填充,得到第十消息,并对所述第十消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十散列数据;
所述动态令牌对自身保存的工作密钥和第三用途代码进行散列,具体为:
所述动态令牌将所述自身保存的工作密钥和第三用途代码组合成第十一数据,对所述第十一数据进行填充,得到第十一消息,并对所述第十一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十一散列数据;
所述动态令牌对第六计算密钥和解锁请求码进行散列,得到第十二散列数据,具体为:
所述动态令牌将所述第六计算密钥和所述解锁请求码组合成第十二数据,对所述第十二数据进行填充,得到第十二消息,并对所述第十二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十二散列数据。
10.如权利要求1所述的方法,其特征在于,所述认证服务器对第十散列数据进行截位,具体为:
所述认证服务器对所述第十散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第五截位结果;
所述动态令牌对第十二散列数据进行截位,得到第六截位结果,具体为:
所述动态令牌对所述第十二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第六截位结果。
11.如权利要求1所述的方法,其特征在于,还包括:
当所述动态令牌检测到第四按键被触发时,所述动态令牌对自身保存的工作密钥和第三用途代码进行散列,将得到的第十一散列数据作为第六计算密钥,对所述第六计算密钥和第五时间信息进行散列,得到第十三散列数据,对所述第十三散列数据进行截位,得到第七截位结果;对所述第六计算密钥和第六时间信息进行散列,得到第十四散列数据,对所述第十四散列数据进行截位,得到第八截位结果,将所述第七截位结果和所述第八截位结果分别作为第一同步码和第二同步码进行显示,所述第六时间信息晚于所述第五时间信息;
所述客户端获取用户输入的所述第一同步码和所述第二同步码,生成包含所述第一同步码、所述第二同步码和身份信息的同步请求,将所述同步请求发送给所述认证服务器;
所述认证服务器检索与所述同步请求中的身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第三用途代码进行散列,将得到的第九散列数据作为第五计算密钥,对所述第五计算密钥和第七时间信息进行散列,得到第十五散列数据,对所述第十五散列数据进行截位,将得到的第九截位结果作为第一同步口令,判断所述第一同步口令是否与从所述同步请求中获取的第一同步码匹配,如果不匹配,则向所述客户端发送同步失败消息;如果匹配,则对所述第五计算密钥和第八时间信息进行散列,得到第十六散列数据,对所述第十六散列数据进行截位,将得到的第十截位结果作为第二同步口令,判断所述第二同步口令是否与从所述同步请求中获取的第二同步码匹配,如果不匹配,则向所述客户端发送同步失败消息;如果匹配,则判断第二同步码的认证成功时间是否晚于第一同步码的认证成功时间,如果是,则获取系统时间与所述第一同步码的认证成功时间之间的差值,将所述差值保存为与所述同步请求中的身份信息对应的令牌偏移时间,向所述客户端发送同步成功消息;否则,向所述客户端发送同步失败消息。
12.如权利要求11所述的方法,其特征在于,所述动态令牌对自身保存的工作密钥和第三用途代码进行散列,具体为:
所述动态令牌将所述自身保存的工作密钥和所述第三用途代码组合成第十一数据,对所述第十一数据进行填充,得到第十一消息,并对所述第十一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十一散列数据;
所述动态令牌对第六计算密钥和第五时间信息进行散列,得到第十三散列数据,具体为:
所述动态令牌将所述第六计算密钥和所述第五时间信息组合成第十三数据,对所述第十三数据进行填充,得到第十三消息,并对所述第十三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十三散列数据;
所述动态令牌对第六计算密钥和第六时间信息进行散列,得到第十四散列数据,具体为:
所述动态令牌将所述第六计算密钥和所述第六时间信息组合成第十四数据,对所述第十四数据进行填充,得到第十四消息,并对所述第十四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十四散列数据;
所述认证服务器对检索到的工作密钥和自身保存的第三用途代码进行散列,具体为:
所述认证服务器将所述检索到的工作密钥和所述第三用途代码组合成第九数据,对所述第九数据进行填充,得到第九消息,并对所述第九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第九散列数据;
所述认证服务器对第五计算密钥和第七时间信息进行散列,得到第十五散列数据,具体为:
所述认证服务器将所述第五计算密钥和所述第七时间信息组合成第十五数据,对所述第十五数据进行填充,得到第十五消息,并对所述第十五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十五散列数据;
所述认证服务器对第五计算密钥和第八时间信息进行散列,得到第十六散列数据,具体为:
所述认证服务器将所述第五计算密钥和所述第八时间信息组合成第十六数据,对所述第十六数据进行填充,得到第十六消息,并对所述第十六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十六散列数据。
13.如权利要求11所述的方法,其特征在于,所述动态令牌对第十三散列数据进行截位,得到第七截位结果,具体为:
所述动态令牌对所述第十三散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第七截位结果;
所述动态令牌对第十四散列数据进行截位,得到第八截位结果,具体为:
所述动态令牌对所述第十四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第八截位结果;
所述认证服务器对第十五散列数据进行截位,具体为:
所述认证服务器对所述第十五散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第九截位结果;
所述认证服务器对第十六散列数据进行截位,具体为:
所述认证服务器对所述第十六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十截位结果。
14.如权利要求1所述的方法,其特征在于,还包括:
所述认证服务器接收来自所述客户端的激活请求,检索与所述激活请求中的身份信息对应的原始种子密钥,并生成随机数,对所述随机数和检索到的原始种子密钥进行散列,得到第十七散列数据;
所述认证服务器对所述第十七散列数据进行截位,将得到的第十一截位结果与所述随机数进行组合,得到激活码,对所述激活码和所述检索到的原始种子密钥进行散列,将得到的第十八散列数据保存为与所述激活请求中的身份信息对应的工作密钥,将所述激活码发送给所述客户端;所述客户端显示所述激活码;
所述动态令牌获取用户输入的所述激活码,对所述激活码和自身保存的原始种子密钥进行散列,将得到的第十九散列数据保存为所述工作密钥,设置开机口令,并对设置的所述开机口令进行保存。
15.如权利要求14所述的方法,其特征在于,所述认证服务器对随机数和检索到的原始种子密钥进行散列,得到第十七散列数据,具体为:
所述认证服务器将所述随机数和所述检索到的原始种子密钥组合成第十七数据,对所述第十七数据进行填充,得到第十七消息,并对所述第十七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十七散列数据;
所述认证服务器对激活码和检索到的原始种子密钥进行散列,具体为:
所述认证服务器将所述激活码和所述检索到的原始种子密钥组合成第十八数据,对所述第十八数据进行填充,得到第十八消息,并对所述第十八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十八散列数据;
所述动态令牌对所述激活码和自身保存的原始种子密钥进行散列,具体为:
所述动态令牌将所述激活码和所述自身保存的原始种子密钥组合成第十九数据,对所述第十九数据进行填充,得到第十九消息,并对所述第十九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十九散列数据。
16.如权利要求14所述的方法,其特征在于,所述认证服务器对所述第十七散列数据进行截位,具体为:
所述认证服务器对所述第十七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十一截位结果。
17.一种动态令牌的工作方法,其特征在于,包括以下步骤:
A1、所述动态令牌等待用户触发按键;
A2、当所述动态令牌的按键被触发时,所述动态令牌对被触发的按键进行判断,如果是第一按键,则执行步骤A3;如果是第二按键,则执行步骤A5;
A3、所述动态令牌获取用户输入的登录挑战码,对自身保存的工作密钥和第一用途代码进行散列,将得到的第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述登录挑战码进行散列,得到第二散列数据;
A4、所述动态令牌对所述第二散列数据进行截位,将得到的第一截位结果作为登录口令进行显示,并返回步骤A1;
A5、所述动态令牌获取用户输入的签名挑战码,对自身保存的工作密钥和第二用途代码进行散列,将得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和所述签名挑战码进行散列,得到第四散列数据;
A6、所述动态令牌对所述第四散列数据进行截位,将得到的第二截位结果作为签名口令进行显示,并返回步骤A1;
所述方法还包括:
所述动态令牌获取用户输入的激活码,对所述激活码和自身保存的原始种子密钥进行散列,将得到的第九散列数据保存为所述工作密钥,设置开机口令,并对设置的所述开机口令进行保存;
所述步骤A1之前,还包括:
B1、所述动态令牌提示用户输入开机口令;
B2、当获取到用户输入的开机口令时,所述动态令牌判断获取的开机口令是否与自身保存的开机口令相同,如果是,则对开机错误次数进行初始化,并执行步骤A1;否则,执行步骤B3;
B3、所述动态令牌对所述开机错误次数进行更新,判断所述开机错误次数是否等于第一预设次数,如果是,则执行步骤B4;否则,返回步骤B1;
B4、所述动态令牌生成并显示解锁请求码,提示用户输入解锁码;
B5、当获取到用户输入的解锁码时,所述动态令牌对自身保存的工作密钥和第三用途代码进行散列,将得到的第五散列数据作为第三计算密钥,对所述第三计算密钥和解锁请求码进行散列,得到第八散列数据;
B6、所述动态令牌对所述第八散列数据进行截位,得到第五截位结果,判断所述第五截位结果是否与所述解锁码相同,如果是,则显示解锁成功信息,对开机口令进行重置,保存重置后的开机口令,并执行步骤A1;否则,显示解锁失败信息,返回步骤B4。
18.如权利要求17所述的方法,其特征在于,所述动态令牌对自身保存的工作密钥和第一用途代码进行散列,具体包括:
所述动态令牌将所述自身保存的工作密钥和所述第一用途代码组合成第一数据,对所述第一数据进行填充,得到第一消息,并对所述第一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第一散列数据;
所述动态令牌对第一计算密钥、第一时间信息和登录挑战码进行散列,得到第二散列数据,具体为:
所述动态令牌将所述第一计算密钥、所述第一时间信息以及所述登录挑战码组合成第二数据,对所述第二数据进行填充,得到第二消息,并对所述第二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第二散列数据;
所述动态令牌对自身保存的工作密钥和第二用途代码进行散列,具体为:
所述动态令牌将所述自身保存的工作密钥和所述第二用途代码组合成第三数据,对所述第三数据进行填充,得到第三消息,并对所述第三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第三散列数据;
所述动态令牌对第二计算密钥、第二时间信息和签名挑战码进行散列,得到第四散列数据,具体为:
所述动态令牌将所述第二计算密钥、所述第二时间信息以及所述签名挑战码组合成第四数据,对所述第四数据进行填充,得到第四消息,并对所述第四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第四散列数据。
19.如权利要求17所述的方法,其特征在于,所述动态令牌对第二散列数据进行截位,具体为:
所述动态令牌对所述第二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第一截位结果;
所述动态令牌对第四散列数据进行截位,具体为:
所述动态令牌对所述第四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第二截位结果。
20.如权利要求17所述的方法,其特征在于,所述动态令牌判断出所述被触发的按键为第三按键之后,还包括:
所述动态令牌对自身保存的工作密钥和第三用途代码进行散列,将得到的第五散列数据作为第三计算密钥,对所述第三计算密钥和第三时间信息进行散列,得到第六散列数据,对所述第六散列数据进行截位,得到第三截位结果;对所述第三计算密钥和第四时间信息进行散列,得到第七散列数据,对所述第七散列数据进行截位,得到第四截位结果,将所述第三截位结果和所述第四截位结果分别作为第一同步码和第二同步码进行显示,并返回步骤A1。
21.如权利要求20所述的方法,其特征在于,所述动态令牌对自身保存的工作密钥和第三用途代码进行散列,具体为:
所述动态令牌将所述自身保存的工作密钥和所述第三用途代码组合成第五数据,对所述第五数据进行填充,得到第五消息,并对所述第五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第五散列数据;
所述动态令牌对第三计算密钥和第三时间信息进行散列,得到第六散列数据,具体为:
所述动态令牌将所述第三计算密钥和所述第三时间信息组合成第六数据,对所述第六数据进行填充,得到第六消息,并对所述第六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第六散列数据;
所述动态令牌对第三计算密钥和第四时间信息进行散列,得到第七散列数据,具体为:
所述动态令牌将所述第三计算密钥和所述第四时间信息组合成第七数据,对所述第七数据进行填充,得到第七消息,并对所述第七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第七散列数据。
22.如权利要求20所述的方法,其特征在于,所述动态令牌对所述第六散列数据进行截位,得到第三截位结果,具体为:
所述动态令牌对所述第六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第三截位结果;
所述动态令牌对所述第七散列数据进行截位,得到第四截位结果,具体为:
所述动态令牌对所述第七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第四截位结果。
23.如权利要求17所述的方法,其特征在于,所述动态令牌对所述激活码和自身保存的原始种子密钥进行散列,具体为:
所述动态令牌将所述激活码和所述自身保存的原始种子密钥组合成第九数据,对所述第九数据进行填充,得到第九消息,并对所述第九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第九散列数据。
24.如权利要求17所述的方法,其特征在于,所述动态令牌判断出所述第五截位结果与所述解锁码相同之后,还包括:
所述动态令牌对解锁失败次数进行初始化;
所述动态令牌判断出所述第五截位结果与所述解锁码不同之后,还包括:
所述动态令牌对解锁失败次数进行更新,判断所述解锁失败次数是否等于第二预设次数,如果是,清空自身保存的原始种子密钥和工作密钥,显示令牌自毁信息,结束流程;否则,返回步骤B4。
25.如权利要求17所述的方法,其特征在于,所述步骤B1之前,还包括:
所述动态令牌上电,判断自身是否被锁定,如果是,则执行步骤B4;否则,执行步骤B1。
26.如权利要求17所述的方法,其特征在于,所述动态令牌对自身保存的工作密钥和第三用途代码进行散列,具体为:
所述动态令牌将所述自身保存的工作密钥和所述第三用途代码组合成第五数据,对所述第五数据进行填充,得到第五消息,并对所述第五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第五散列数据;
所述动态令牌对第三计算密钥和解锁请求码进行散列,得到第八散列数据,具体为:
所述动态令牌将所述第三计算密钥和所述解锁请求码组合成第八数据,对所述第八数据进行填充,得到第八消息,并对所述第八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第八散列数据。
27.如权利要求17所述的方法,其特征在于,所述动态令牌对第八散列数据进行截位,得到第五截位结果,具体为:
所述动态令牌对所述第八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第五截位结果。
28.一种认证服务器的工作方法,其特征在于,包括以下步骤:
C1、所述认证服务器等待接收来自客户端的请求;
C2、当接收到来自所述客户端的请求后,所述认证服务器对接收到的请求进行判断,如果是登录请求,则执行步骤C3;如果是登录认证请求,则执行步骤C4;如果是签名请求,则执行步骤C6;如果是签名认证请求,则执行步骤C7;
C3、所述认证服务器生成登录挑战码,将所述登录挑战码保存为与所述登录请求中的身份信息相对应的信息,将所述登录挑战码发送给所述客户端,并返回步骤C1;
C4、所述认证服务器检索与所述登录认证请求中的身份信息对应的工作密钥和登录挑战码,对检索到的工作密钥和自身保存的第一用途代码进行散列,将得到的第十二散列数据作为第四计算密钥,对所述第四计算密钥、第五时间信息和检索到的登录挑战码进行散列,得到第十三散列数据;
C5、所述认证服务器对所述第十三散列数据进行截位,将得到的第七截位结果作为计算得到的登录口令,判断所述计算得到的登录口令是否与从所述登录认证请求中获取的登录口令匹配,如果是,则向所述客户端发送认证成功消息,并返回步骤C1;否则,向所述客户端发送认证失败消息,并返回步骤C1;
C6、所述认证服务器生成签名挑战码,将所述签名挑战码保存为与所述签名请求中的身份信息相对应的信息,将所述签名挑战码发送给所述客户端,并返回步骤C1;
C7、所述认证服务器检索与所述签名认证请求中的身份信息对应的工作密钥和签名挑战码,对检索到的工作密钥和自身保存的第二用途代码进行散列,将得到的第十四散列数据作为第五计算密钥,对所述第五计算密钥、第六时间信息和检索到的签名挑战码进行散列,得到第十五散列数据;
C8、所述认证服务器对所述第十五散列数据进行截位,将得到的第八截位结果作为计算得到的签名口令,判断所述计算得到的签名口令是否与从签名认证请求中获取的签名口令匹配,如果是,则向所述客户端发送认证成功消息,并返回步骤C1;否则,向所述客户端发送认证失败消息,并返回步骤C1;
所述认证服务器判断出所述接收到的请求为解锁请求后,还包括:
所述认证服务器检索与所述解锁请求中的身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第三用途代码进行散列,将得到的第十六散列数据作为第六计算密钥,对所述第六计算密钥和从所述解锁请求中获取到的解锁请求码进行散列,得到第十九散列数据;
所述认证服务器对所述第十九散列数据进行截位,将得到的第十一截位结果作为解锁码发送给所述客户端,并返回步骤C1。
29.如权利要求28所述的方法,其特征在于,所述认证服务器对检索到的工作密钥和自身保存的第一用途代码进行散列,具体为:
所述认证服务器将所述检索到的工作密钥和所述第一用途代码组合成第十二数据,对所述第十二数据进行填充,得到第十二消息,并对所述第十二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十二散列数据;
所述认证服务器对第四计算密钥、第五时间信息和检索到的登录挑战码进行散列,得到第十三散列数据,具体为:
所述认证服务器将所述第四计算密钥、所述第五时间信息以及所述检索到的登录挑战码组合成第十三数据,对所述第十三数据进行填充,得到第十三消息,并对所述第十三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十三散列数据;
所述认证服务器对检索到的工作密钥和自身保存的第二用途代码进行散列,具体为:
所述认证服务器将所述检索到的工作密钥和所述第二用途代码组合成第十四数据,对所述第十四数据进行填充,得到第十四消息,并对所述第十四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十四散列数据;
所述认证服务器对第五计算密钥、第六时间信息和检索到的签名挑战码进行散列,得到第十五散列数据,具体为:
所述认证服务器将所述第五计算密钥、所述第六时间信息以及所述检索到的签名挑战码组合成第十五数据,对所述第十五数据进行填充,得到第十五消息,并对所述第十五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十五散列数据。
30.如权利要求28所述的方法,其特征在于,所述认证服务器对所述第十三散列数据进行截位,得到第七截位结果,具体为:
所述认证服务器对所述第十三散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第七截位结果;
所述认证服务器对所述第十五散列数据进行截位,具体为:
所述认证服务器对第十五散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第八截位结果。
31.如权利要求28所述的方法,其特征在于,所述认证服务器判断出所述接收到的请求为激活请求后,还包括:
所述认证服务器检索与所述激活请求中的身份信息对应的原始种子密钥,生成第一随机数,对所述第一随机数和检索到的原始种子密钥进行散列,得到第十散列数据;
所述认证服务器对所述第十散列数据进行截位,将得到的第六截位结果与所述第一随机数进行组合,得到激活码,对所述激活码和所述检索到的原始种子密钥进行散列,将得到的第十一散列数据保存为与所述激活请求中的身份信息对应的工作密钥,向所述客户端发送所述激活码,并返回步骤C1。
32.如权利要求31所述的方法,其特征在于,所述认证服务器生成第一随机数,对所述第一随机数和检索到的原始种子密钥进行散列,得到第十散列数据,具体为:
所述认证服务器将所述第一随机数和所述检索到的原始种子密钥组合成第十数据,对所述第十数据进行填充,得到第十消息,并对所述第十消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十散列数据。
33.如权利要求31所述的方法,其特征在于,所述认证服务器对所述第十散列数据进行截位,具体为:
所述认证服务器对所述第十散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第六截位结果。
34.如权利要求33所述的方法,其特征在于,所述认证服务器对检索到的工作密钥和自身保存的第三用途代码进行散列,具体为:
所述认证服务器将所述检索到的工作密钥和所述第三用途代码组合成第十六数据,对所述第十六数据进行填充,得到第十六消息,并对所述第十六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十六散列数据;
所述认证服务器对第六计算密钥和获取到的解锁请求码进行散列,得到第十九散列数据,具体为:
所述认证服务器将所述第六计算密钥和所述获取到的解锁请求码组合成第十九数据,对所述第十九数据进行填充,得到第十九消息,并对所述第十九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十九散列数据。
35.如权利要求33所述的方法,其特征在于,所述认证服务器对所述第十九散列数据进行截位,具体为:
所述认证服务器对所述第十九散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十一截位结果。
36.如权利要求28所述的方法,其特征在于,所述认证服务器判断出所述接收到的请求为同步请求后,还包括:
所述认证服务器检索与所述同步请求中的身份信息对应的工作密钥,对检索到的工作密钥和自身保存的第三用途代码进行散列,将得到的第十六散列数据作为第六计算密钥,对所述第六计算密钥和第七时间信息进行散列,得到第十七散列数据;
所述认证服务器对所述第十七散列数据进行截位,将得到的第九截位结果作为第一同步口令,判断所述第一同步口令是否与从所述同步请求中获取的第一同步码匹配;
如果不匹配,所述认证服务器向所述客户端发送同步失败消息,并返回步骤C1;
如果匹配,所述认证服务器对所述第六计算密钥和第八时间信息进行散列,得到第十八散列数据,对所述第十八散列数据进行截位,将得到的第十截位结果作为第二同步口令,判断所述第二同步口令是否与从所述同步请求中获取的第二同步码匹配,如果不匹配,则向所述客户端发送同步失败消息,并返回步骤C1;如果匹配,则判断第二同步码的认证成功时间是否晚于第一同步码的认证成功时间,如果是,则获取系统时间与所述第一同步码的认证成功时间之间的差值,将所述差值保存为与所述同步请求中的身份信息对应的令牌偏移时间,向所述客户端发送同步成功消息,并返回步骤C1;否则,向所述客户端发送同步失败消息,并返回步骤C1。
37.如权利要求36所述的方法,其特征在于,所述认证服务器对检索到的工作密钥和自身保存的第三用途代码进行散列,具体为:
所述认证服务器将所述检索到的工作密钥和所述第三用途代码组合成第十六数据,对所述第十六数据进行填充,得到第十六消息,并对所述第十六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十六散列数据;
所述认证服务器对第六计算密钥和第七时间信息进行散列,得到第十七散列数据,具体为:
所述认证服务器将所述第六计算密钥和所述第七时间信息组合成第十七数据,对所述第十七数据进行填充,得到第十七消息,并对所述第十七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十七散列数据;
所述认证服务器对第六计算密钥和第八时间信息进行散列,得到第十八散列数据,具体为:
所述认证服务器将所述第六计算密钥和所述第八时间信息组合成第十八数据,对所述第十八数据进行填充,得到第十八消息,并对所述第十八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十八散列数据。
38.如权利要求36所述的方法,其特征在于,所述认证服务器对所述第十七散列数据进行截位,具体为:
所述认证服务器对第十七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第九截位结果;
所述认证服务器对第十八散列数据进行截位,具体为:
所述认证服务器对第十八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十截位结果。
39.一种身份认证系统,包括动态令牌、客户端和认证服务器,其特征在于,
所述认证服务器包括:
第一接收模块,用于接收来自所述客户端的第一操作请求;
第一生成模块,用于在所述第一接收模块接收到所述第一操作请求后,生成第一挑战码,将所述第一挑战码保存为与所述第一操作请求中的身份信息相对应的信息;
第一发送模块,用于将所述第一生成模块生成的所述第一挑战码发送给所述客户端;
所述客户端包括:
第二发送模块,用于向所述认证服务器发送所述第一操作请求;
第二接收模块,用于接收来自所述认证服务器的所述第一挑战码;
第一显示模块,用于显示所述第一挑战码;
所述动态令牌包括:
第一存储模块,用于保存工作密钥和第一用途代码;
第一获取模块,用于获取用户输入的所述第一挑战码;
检测模块,用于检测按键;
第一散列模块,用于在所述检测模块检测到第一按键被触发时,对所述第一存储模块保存的工作密钥和第一用途代码进行散列,得到第一散列数据;
第二散列模块,用于将所述第一散列模块散列得到的所述第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述第一获取模块获取到的所述第一挑战码进行散列,得到第二散列数据;
第一截位模块,用于对所述第二散列模块散列得到的所述第二散列数据进行截位,得到第一截位结果;
第二显示模块,用于将所述第一截位模块截位得到的第一截位结果作为第一认证口令进行显示;
所述客户端还包括:
第二获取模块,用于获取用户输入的所述第一认证口令;
第二生成模块,用于生成包含身份信息和所述第一认证口令的第一认证请求;
所述第二发送模块,还用于将所述第二生成模块生成的所述第一认证请求发送给所述认证服务器;
所述认证服务器中的所述第一接收模块,还用于接收来自所述客户端的所述第一认证请求;
所述认证服务器还包括:
第二存储模块,用于保存所述第一用途代码;
第三获取模块,用于获取所述第一接收模块接收到的所述第一认证请求中的身份信息;
检索模块,用于检索与所述第一认证请求中的身份信息对应的工作密钥和第一挑战码;
第三散列模块,用于对所述检索模块检索到的工作密钥和所述第二存储模块保存的所述第一用途代码进行散列,得到第三散列数据;
第四散列模块,用于将所述第三散列模块散列得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和检索到的所述第一挑战码进行散列,得到第四散列数据;
第二截位模块,用于对所述第四散列模块散列得到的所述第四散列数据进行截位,得到第二截位结果;
第一判断模块,用于将所述第二截位模块截位得到的所述第二截位结果作为计算得到的第一认证口令,判断所述计算得到的第一认证口令是否与从所述第一认证请求中获取的第一认证口令匹配;
所述第一发送模块,还用于在所述第一判断模块判断出所述计算得到的第一认证口令与从所述第一认证请求中获取的第一认证口令匹配时,向所述客户端发送认证成功消息;在所述第一判断模块判断出所述计算得到的第一认证口令与从所述第一认证请求中获取的第一认证口令不匹配时,向所述客户端发送认证失败消息;
所述客户端中的所述第二接收模块,还用于接收来自所述认证服务器的认证成功消息或认证失败消息;
所述动态令牌,还包括:
第三生成模块,用于当所述动态令牌被锁定后,生成解锁请求码;
所述第二显示模块,还用于显示所述第三生成模块生成的所述解锁请求码;
所述客户端中的所述第二获取模块,还用于获取用户输入的所述解锁请求码;
所述第二生成模块,还用于生成包含所述解锁请求码和身份信息的解锁请求;
所述第二发送模块,还用于将所述解锁请求发送给所述认证服务器;
所述认证服务器中的所述第一接收模块,还用于接收所述解锁请求;
所述第二存储模块,还用于保存第三用途代码;
所述检索模块,还用于检索与所述解锁请求中的身份信息对应的工作密钥;
所述第三散列模块,还用于对所述检索模块检索到的工作密钥和所述第二存储模块保存的所述第三用途代码进行散列,得到第九散列数据;
所述第三获取模块,还用于从所述解锁请求中获取所述解锁请求码;
所述第四散列模块,还用于将所述第三散列模块散列得到的第九散列数据作为第五计算密钥,对所述第五计算密钥和所述解锁请求码进行散列,得到第十散列数据;
所述第二截位模块,还用于对所述第十散列数据进行截位,得到第五截位结果;
所述第一发送模块,还用于将所述第二截位模块截位得到的第五截位结果作为解锁码发送给所述客户端;
所述客户端中的第二接收模块,还用于接收来自所述认证服务器的所述解锁码;
所述第一显示模块,还用于显示所述解锁码;
所述动态令牌中的所述第一获取模块,还用于获取用户输入的所述解锁码;
所述第一存储模块,还用于保存所述第三用途代码;
所述第一散列模块,还用于在所述检测模块检测到第三按键被触发时,对所述第一存储模块保存的工作密钥和所述第三用途代码进行散列,得到第十一散列数据;
所述第二散列模块,还用于将所述第一散列模块散列得到的第十一散列数据作为第六计算密钥,对所述第六计算密钥和所述解锁请求码进行散列,得到第十二散列数据;
所述第一截位模块,还用于对所述第十二散列数据进行截位,得到第六截位结果;
所述第一判断模块,还用于判断所述第六截位结果是否与所述解锁码相同;
所述第二显示模块,还用于在所述第一判断模块判断出所述第六截位结果与所述解锁码相同时,显示解锁成功信息;在所述第一判断模块判断出所述第六截位结果与所述解锁码不同时,显示解锁失败信息;
所述动态令牌,还包括:
重置模块,用于在所述第一判断模块判断出所述第六截位结果与所述解锁码相同时,对开机口令进行重置,保存重置后的开机口令。
40.如权利要求39所述的系统,其特征在于,
所述第一散列模块,具体用于在所述检测模块检测到第一按键被触发时,将所述第一存储模块保存的工作密钥和所述第一用途代码组合成第一数据,对所述第一数据进行填充,得到第一消息,并对所述第一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第一散列数据;
所述第二散列模块,具体用于将所述第一计算密钥、所述第一时间信息以及所述第一挑战码组合成第二数据,对所述第二数据进行填充,得到第二消息,并对所述第二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第二散列数据;
所述第三散列模块,具体用于对所述检索模块检索到的工作密钥和所述第二存储模块保存的所述第一用途代码组合成第三数据,对所述第三数据进行填充,得到第三消息,并对所述第三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第三散列数据;
所述第四散列模块,具体用于将所述第二计算密钥、所述第二时间信息以及所述检索到的第一挑战码组合成第四数据,对所述第四数据进行填充,得到第四消息,并对所述第四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第四散列数据。
41.如权利要求39所述的系统,其特征在于,
所述第一截位模块,具体用于对所述第二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第一截位结果;
所述第二截位模块,具体用于对所述第四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第二截位结果。
42.如权利要求39所述的系统,其特征在于,
所述认证服务器中的所述第一接收模块,还用于接收来自所述客户端的第二操作请求;
所述第一生成模块,还用于在所述第一接收模块接收到所述第二操作请求后,生成第二挑战码,将所述第二挑战码保存为与所述第二操作请求中的身份信息相对应的信息;
所述第一发送模块,还用于将所述第一生成模块生成的所述第二挑战码发送给所述客户端;
所述客户端中的所述第一显示模块,还用于显示所述第二挑战码;
所述动态令牌中的所述第一存储模块,还用于保存第二用途代码;
所述第一获取模块,还用于获取用户输入的所述第二挑战码;
所述第一散列模块,还用于在所述检测模块检测到第二按键被触发时,对所述第一存储模块保存的工作密钥和第二用途代码进行散列,得到第五散列数据;
所述第二散列模块,还用于将所述第二散列模块散列得到的所述第五散列数据作为第三计算密钥,对所述第三计算密钥、第三时间信息和所述第二挑战码进行散列,得到第六散列数据;
所述第一截位模块,还用于对所述第六散列数据进行截位,得到第三截位结果;
所述第二显示模块,还用于将所述第一截位模块截位得到的第三截位结果作为第二认证口令进行显示;
所述客户端中的所述第二获取模块,还用于获取用户输入的所述第二认证口令;
所述第二生成模块,还用于生成包含所述第二认证口令和身份信息的第二认证请求;
所述第二发送模块,还用于将所述第二生成模块生成的所述第二认证请求发送给所述认证服务器;
所述认证服务器中的所述第一接收模块,还用于接收来自所述客户端的所述第二认证请求;
所述第二存储模块,还用于保存所述第二用途代码;
所述第三获取模块,还用于获取所述第二认证请求中的身份信息;
所述检索模块,还用于检索与所述第二认证请求中的身份信息对应的工作密钥和第二挑战码;
所述第三散列模块,还用于对所述检索模块检索到的工作密钥和所述第二存储模块保存的所述第二用途代码进行散列,得到第七散列数据;
所述第四散列模块,还用于将所述第三散列模块散列得到的所述第七散列数据作为第四计算密钥,对所述第四计算密钥、第四时间信息和检索到的所述第二挑战码进行散列,得到第八散列数据;
所述第二截位模块,还用于对所述第八散列数据进行截位,得到第四截位结果;
所述第一判断模块,还用于将所述第二截位模块截位得到的所述第四截位结果作为计算得到的第二认证口令,判断所述计算得到的第二认证口令是否与从所述第二认证请求中获取的第二认证口令匹配;
所述第一发送模块,还用于在所述第一判断模块判断出所述计算得到的第二认证口令与从所述第二认证请求中获取的第二认证口令匹配时,向所述客户端发送认证成功消息;在所述第一判断模块判断出所述计算得到的第二认证口令与从所述第二认证请求中获取的第二认证口令不匹配时,向所述客户端发送认证失败消息。
43.如权利要求42所述的系统,其特征在于,所述第一操作请求为登录请求时,所述第一认证请求为登录认证请求,所述第二操作请求为签名请求,所述第二认证请求为签名认证请求;
所述第一操作请求为签名请求时,所述第一认证请求为签名认证请求,所述第二操作请求为登录请求,所述第二认证请求为登录认证请求。
44.如权利要求42所述的系统,其特征在于,
所述第一散列模块,具体用于在所述检测模块检测到第二按键被触发时,将所述第一存储模块保存的工作密钥和所述第二用途代码组合成第五数据,对所述第五数据进行填充,得到第五消息,并对所述第五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第五散列数据;
所述第二散列模块,具体用于将所述第三计算密钥、所述第三时间信息以及所述第二挑战码组合成第六数据,对所述第六数据进行填充,得到第六消息,并对所述第六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第六散列数据;
所述第三散列模块,具体用于对所述检索模块检索到的工作密钥和所述第二存储模块保存的所述第二用途代码组合成第七数据,对所述第七数据进行填充,得到第七消息,并对所述第七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第七散列数据;
所述第四散列模块,具体用于将所述第四计算密钥、所述第四时间信息以及所述检索到的第二挑战码组合成第八数据,对所述第八数据进行填充,得到第八消息,并对所述第八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第八散列数据。
45.如权利要求42所述的系统,其特征在于,
所述第一截位模块,具体用于对所述第六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第三截位结果;
所述第二截位模块,具体用于对所述第八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第四截位结果。
46.如权利要求39所述的系统,其特征在于,
所述动态令牌中的所述第一存储模块,还用于保存原始种子密钥;
所述动态令牌,还包括:
初始化模块,用于在所述第一判断模块判断出所述第六截位结果与所述解锁码相同时,对解锁失败次数进行初始化;
更新模块,用于在所述第一判断模块判断出所述第六截位结果与所述解锁码不同时,对所述解锁失败次数进行更新;
第二判断模块,用于判断所述解锁失败次数是否等于第二预设次数,并在判断出所述解锁失败次数不等于第二预设次数时,触发所述第三生成模块重新生成解锁请求码;
清空模块,用于在所述第二判断模块判断出所述解锁失败次数等于第二预设次数时,清空所述第一存储模块保存的原始种子密钥和工作密钥;
所述第二显示模块,还用于在所述第二判断模块判断出所述解锁失败次数等于第二预设次数时,显示令牌自毁信息。
47.如权利要求39所述的系统,其特征在于,
所述第三散列模块,具体用于将所述检索模块检索到的工作密钥和所述第三用途代码组合成第九数据,对所述第九数据进行填充,得到第九消息,并对所述第九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第九散列数据;
所述第四散列模块,具体用于将所述第五计算密钥和所述解锁请求码组合成第十数据,对所述第十数据进行填充,得到第十消息,并对所述第十消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十散列数据;
所述第一散列模块,具体用于将所述第一存储模块保存的工作密钥和第三用途代码组合成第十一数据,对所述第十一数据进行填充,得到第十一消息,并对所述第十一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十一散列数据;
所述第二散列模块,具体用于将所述第六计算密钥和所述解锁请求码组合成第十二数据,对所述第十二数据进行填充,得到第十二消息,并对所述第十二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十二散列数据。
48.如权利要求39所述的系统,其特征在于,
所述第二截位模块,具体用于对所述第十散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第五截位结果;
所述第一截位模块,具体用于对所述第十二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第六截位结果。
49.如权利要求39所述的系统,其特征在于,
所述动态令牌中的所述第一存储模块,还用于保存第三用途代码;
所述第一散列模块,还用于在所述检测模块检测到第四按键被触发时,对所述第一存储模块保存的工作密钥和第三用途代码进行散列,得到第十一散列数据;
所述第二散列模块,还用于将所述第一散列模块散列得到的第十一散列数据作为第六计算密钥,对所述第六计算密钥和第五时间信息进行散列,得到第十三散列数据,对所述第六计算密钥和第六时间信息进行散列,得到第十四散列数据,所述第六时间信息晚于所述第五时间信息;
所述第一截位模块,还用于对所述第十三散列数据进行截位,得到第七截位结果;对所述第十四散列数据进行截位,得到第八截位结果;
所述第二显示模块,还用于将所述第七截位结果和所述第八截位结果分别作为第一同步码和第二同步码进行显示;
所述客户端中的所述第二获取模块,还用于获取用户输入的所述第一同步码和所述第二同步码;
所述第二生成模块,还用于生成包含所述第一同步码、所述第二同步码和身份信息的同步请求;
所述第二发送模块,还用于将所述同步请求发送给所述认证服务器;
所述认证服务器中的所述第一接收模块,还用于接收所述同步请求;
所述第二存储模块,还用于保存第三用途代码;
所述检索模块,还用于检索与所述同步请求中的身份信息对应的工作密钥;
所述第三散列模块,还用于对所述检索模块检索到的工作密钥和所述第二存储模块保存的第三用途代码进行散列,得到第九散列数据;
所述第四散列模块,还用于将所述第三散列模块散列得到的第九散列数据作为第五计算密钥,对所述第五计算密钥和第七时间信息进行散列,得到第十五散列数据;
所述第二截位模块,还用于对所述第十五散列数据进行截位,得到第九截位结果;
所述第一判断模块,还用于将所述第二截位模块截位得到的第九截位结果作为第一同步口令,判断所述第一同步口令是否与从所述同步请求中获取的第一同步码匹配;
所述第一发送模块,还用于在所述第一判断模块判断出所述第一同步口令与从所述同步请求中获取的第一同步码不匹配时,向所述客户端发送同步失败消息;
所述第四散列模块,还用于在所述第一判断模块判断出所述第一同步口令与从所述同步请求中获取的第一同步码匹配时,对所述第五计算密钥和第八时间信息进行散列,得到第十六散列数据;
所述第二截位模块,还用于对所述第十六散列数据进行截位,得到第十截位结果;
所述第一判断模块,还用于将所述第二截位模块截位得到的第十截位结果作为第二同步口令,判断所述第二同步口令是否与从所述同步请求中获取的第二同步码匹配;
所述第一发送模块,还用于在所述第一判断模块判断出所述第二同步口令与从所述同步请求中获取的第二同步码不匹配时,向所述客户端发送同步失败消息;
所述第一判断模块,还用于在所述第一判断模块判断出所述第二同步口令与从所述同步请求中获取的第二同步码匹配时,判断所述第二同步码的认证成功时间是否晚于所述第一同步码的认证成功时间;
所述第三获取模块,还用于在所述第一判断模块判断出所述第二同步码的认证成功时间晚于所述第一同步码的认证成功时间时,获取系统时间与所述第一同步码的认证成功时间之间的差值,将所述差值保存为与所述同步请求中的身份信息对应的令牌偏移时间;
所述第一发送模块,还用于在所述第一判断模块判断出所述第二同步码的认证成功时间晚于所述第一同步码的认证成功时间时,向所述客户端发送同步成功消息;在所述第一判断模块判断出所述第二同步码的认证成功时间不晚于所述第一同步码的认证成功时间时,向所述客户端发送同步失败消息。
50.如权利要求49所述的系统,其特征在于,
所述第一散列模块,具体用于将所述第一存储模块保存的工作密钥和所述第三用途代码组合成第十一数据,对所述第十一数据进行填充,得到第十一消息,并对所述第十一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十一散列数据;
所述第二散列模块,具体用于将所述第六计算密钥和所述第五时间信息组合成第十三数据,对所述第十三数据进行填充,得到第十三消息,并对所述第十三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十三散列数据;将所述第六计算密钥和所述第六时间信息组合成第十四数据,对所述第十四数据进行填充,得到第十四消息,并对所述第十四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十四散列数据;
所述第三散列模块,具体用于将所述检索模块检索到的工作密钥和所述第三用途代码组合成第九数据,对所述第九数据进行填充,得到第九消息,并对所述第九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第九散列数据;
所述第四散列模块,具体用于将所述第五计算密钥和所述第七时间信息组合成第十五数据,对所述第十五数据进行填充,得到第十五消息,并对所述第十五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十五散列数据;将所述第五计算密钥和所述第八时间信息组合成第十六数据,对所述第十六数据进行填充,得到第十六消息,并对所述第十六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十六散列数据。
51.如权利要求49所述的系统,其特征在于,
所述第一截位模块,具体用于对所述第十三散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第七截位结果;对所述第十四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第八截位结果;
所述第二截位模块,具体用于对所述第十五散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第九截位结果;对所述第十六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十截位结果。
52.如权利要求39所述的系统,其特征在于,
所述认证服务器中的所述第一接收模块,还用于接收来自所述客户端的激活请求;
所述检索模块,还用于检索与所述激活请求中的身份信息对应的原始种子密钥;
所述第一生成模块,还用于在所述第一接收模块接收到所述激活请求后,生成随机数;
所述认证服务器,还包括:
第五散列模块,用于对所述第一生成模块生成的所述随机数和所述检索模块检索到的原始种子密钥进行散列,得到第十七散列数据;
第三截位模块,用于对所述第十七散列数据进行截位,得到第十一截位结果;
组合模块,用于将所述第三截位模块截位得到的第十一截位结果与所述第一生成模块生成的所述随机数进行组合,得到激活码;
第六散列模块,用于对所述组合模块组合得到的所述激活码和所述检索模块检索到的原始种子密钥进行散列,将得到的第十八散列数据保存为与所述激活请求中的身份信息对应的工作密钥;
所述第一发送模块,还用于将所述组合模块组合得到的所述激活码发送给所述客户端;
所述客户端中的所述第二接收模块,还用于接收所述激活码;
所述第一显示模块,还用于显示所述激活码;
所述动态令牌中的所述第一存储模块,还用于保存原始种子密钥;
所述第一获取模块,用于获取用户输入的所述激活码;
所述动态令牌,还包括:
第七散列模块,用于对所述激活码和所述第一存储模块保存的原始种子密钥进行散列,将得到的第十九散列数据保存为所述工作密钥;
设置模块,用于在所述第七散列模块保存所述工作密钥后,设置开机口令,并对设置的所述开机口令进行保存。
53.如权利要求52所述的系统,其特征在于,
所述第五散列模块,具体用于将所述随机数和所述检索到的原始种子密钥组合成第十七数据,对所述第十七数据进行填充,得到第十七消息,并对所述第十七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十七散列数据;
所述第六散列模块,具体用于将所述激活码和所述检索到的原始种子密钥组合成第十八数据,对所述第十八数据进行填充,得到第十八消息,并对所述第十八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十八散列数据;
所述第七散列模块,具体用于将所述激活码和自身保存的所述原始种子密钥组合成第十九数据,对所述第十九数据进行填充,得到第十九消息,并对所述第十九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十九散列数据。
54.如权利要求52所述的系统,其特征在于,
所述第三截位模块,具体用于对所述第十七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十一截位结果。
55.一种动态令牌,其特征在于,包括:
存储模块,用于保存工作密钥、第一用途代码和第二用途代码;
获取模块,用于获取用户输入的登录挑战码和签名挑战码;
检测模块,用于检测按键;
第一判断模块,用于在所述检测模块检测到所述动态令牌的按键被触发时,对被触发的按键进行判断;
第一散列模块,用于在所述第一判断模块判断出所述被触发的按键为第一按键时,对所述存储模块保存的工作密钥和第一用途代码进行散列,得到第一散列数据;在所述第一判断模块判断出所述被触发的按键为第二按键时,对所述存储模块保存的工作密钥和第二用途代码进行散列,得到第三散列数据;
第二散列模块,用于将所述第一散列模块散列得到的第一散列数据作为第一计算密钥,对所述第一计算密钥、第一时间信息和所述获取模块获取的登录挑战码进行散列,得到第二散列数据;将所述第一散列模块散列得到的第三散列数据作为第二计算密钥,对所述第二计算密钥、第二时间信息和所述获取模块获取的签名挑战码进行散列,得到第四散列数据;
截位模块,用于对所述第二散列模块散列得到的第二散列数据进行截位,得到第一截位结果;对所述第二散列模块散列得到的第四散列数据进行截位,得到第二截位结果;
显示模块,用于将所述截位模块截位得到的第一截位结果作为登录口令进行显示,将所述截位模块截位得到的第二截位结果作为签名口令进行显示;
所述存储模块,还用于保存原始种子密钥和第三用途代码;
所述获取模块,还用于获取用户输入的激活码;
所述动态令牌,还包括:
第三散列模块,用于对所述激活码和所述原始种子密钥进行散列,将得到的第九散列数据保存为所述工作密钥;
设置模块,用于在所述第三散列模块保存所述工作模块后,设置开机口令,并将所述开机口令保存到所述存储模块中;
所述显示模块,还用于提示用户输入开机口令;
所述获取模块,还用于获取用户输入的开机口令;
所述动态令牌,还包括:
第二判断模块,用于判断所述获取模块获取的开机口令是否与所述存储模块保存的开机口令相同;
第一初始化模块,用于在所述第二判断模块判断出所述获取模块获取的开机口令与所述存储模块保存的开机口令相同时,对开机错误次数进行初始化;
第一更新模块,用于在所述第二判断模块判断出所述获取模块获取的开机口令与所述存储模块保存的开机口令不同时,对所述开机错误次数进行更新;
第三判断模块,用于判断所述第一更新模块更新后的所述开机错误次数是否等于第一预设次数;
生成模块,用于在所述第三判断模块判断出所述开机错误次数等于第一预设次数时,生成解锁请求码;
所述显示模块,还用于显示所述生成模块生成的所述解锁请求码,提示用户输入解锁码;
所述获取模块,还用于获取用户输入的解锁码;
所述第一散列模块,还用于对所述存储模块保存的工作密钥和第三用途代码进行散列,得到第五散列数据;
所述第二散列模块,还用于将所述第五散列数据作为第三计算密钥,对所述第三计算密钥和解锁请求码进行散列,得到第八散列数据;
所述截位模块,还用于对所述第八散列数据进行截位,得到第五截位结果;
第四判断模块,用于判断所述第五截位结果是否与所述解锁码相同;
所述显示模块,还用于在所述第四判断模块判断出所述第五截位结果与所述解锁码相同时,显示解锁成功信息;在所述第四判断模块判断出所述第五截位结果与所述解锁码不同时,显示解锁失败信息;
所述设置模块,还用于在所述第四判断模块判断出所述第五截位结果与所述解锁码相同时,对开机口令进行重置,保存重置后的开机口令。
56.如权利要求55所述的动态令牌,其特征在于,
所述第一散列模块,具体用于将所述工作密钥和所述第一用途代码组合成第一数据,对所述第一数据进行填充,得到第一消息,并对所述第一消息进行分组,对得到的分组数据进行迭代压缩,得到所述第一散列数据;将所述工作密钥和所述第二用途代码组合成第三数据,对所述第三数据进行填充,得到第三消息,并对所述第三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第三散列数据;
所述第二散列模块,具体用于将所述第一计算密钥、所述第一时间信息以及所述登录挑战码组合成第二数据,对所述第二数据进行填充,得到第二消息,并对所述第二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第二散列数据;将所述第二计算密钥、所述第二时间信息以及所述签名挑战码组合成第四数据,对所述第四数据进行填充,得到第四消息,并对所述第四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第四散列数据。
57.如权利要求55所述的动态令牌,其特征在于,
所述截位模块,具体用于对所述第二散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第一截位结果;对所述第四散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第二截位结果。
58.如权利要求55所述的动态令牌,其特征在于,
所述存储模块,还用于保存第三用途代码;
所述第一散列模块,还用于在所述第一判断模块判断出所述被触发的按键为第三按键时,对所述存储模块保存的工作密钥和第三用途代码进行散列,得到第五散列数据;
所述第二散列模块,还用于将所述第一散列模块散列得到的第五散列数据作为第三计算密钥,对所述第三计算密钥和第三时间信息进行散列,得到第六散列数据;对所述第三计算密钥和第四时间信息进行散列,得到第七散列数据;
所述截位模块,还用于对所述第六散列数据进行截位,得到第三截位结果;对所述第七散列数据进行截位,得到第四截位结果;
所述显示模块,还用于将所述第三截位结果和所述第四截位结果分别作为第一同步码和第二同步码进行显示。
59.如权利要求58所述的动态令牌,其特征在于,
所述第一散列模块,具体用于将所述工作密钥和所述第三用途代码组合成第五数据,对所述第五数据进行填充,得到第五消息,并对所述第五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第五散列数据;
所述第二散列模块,具体用于将所述第三计算密钥和所述第三时间信息组合成第六数据,对所述第六数据进行填充,得到第六消息,并对所述第六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第六散列数据;将所述第三计算密钥和所述第四时间信息组合成第七数据,对所述第七数据进行填充,得到第七消息,并对所述第七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第七散列数据。
60.如权利要求58所述的动态令牌,其特征在于,
所述截位模块,具体用于对所述第六散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第三截位结果;对所述第七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第四截位结果。
61.如权利要求55所述的动态令牌,其特征在于,
所述第三散列模块,具体用于将所述激活码和所述原始种子密钥组合成第九数据,对所述第九数据进行填充,得到第九消息,并对所述第九消息进行分组,对得到的分组数据进行迭代压缩,得到所述第九散列数据。
62.如权利要求55所述的动态令牌,其特征在于,还包括:
第二初始化模块,用于在所述第四判断模块判断出所述第五截位结果与所述解锁码相同时,对解锁失败次数进行初始化;
第二更新模块,用于在所述第四判断模块判断出所述第五截位结果与所述解锁码不同时,对所述解锁失败次数进行更新;
第五判断模块,用于判断所述解锁失败次数是否等于第二预设次数,并在判断出所述解锁失败次数不等于第二预设次数时,触发所述生成模块生成解锁请求码;
清空模块,用于在所述第五判断模块判断出所述解锁失败次数等于第二预设次数时,清空所述存储模块保存的原始种子密钥和工作密钥;
所述显示模块,还用于在所述第五判断模块判断出所述解锁失败次数等于第二预设次数时,显示令牌自毁信息。
63.如权利要求55所述的动态令牌,其特征在于,还包括:
第六判断模块,用于在所述动态令牌上电后,判断所述动态令牌是否被锁定,并在判断出所述动态令牌被锁定后,触发所述生成模块生成解锁请求码;在判断出所述动态令牌没有被锁定后,触发所述显示模块提示用户输入开机口令。
64.如权利要求55所述的动态令牌,其特征在于,
所述第一散列模块,具体用于将所述工作密钥和所述第三用途代码组合成第五数据,对所述第五数据进行填充,得到第五消息,并对所述第五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第五散列数据;
所述第二散列模块,具体用于将所述第三计算密钥和所述解锁请求码组合成第八数据,对所述第八数据进行填充,得到第八消息,并对所述第八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第八散列数据。
65.如权利要求55所述的动态令牌,其特征在于,
所述截位模块,具体用于对所述第八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第五截位结果。
66.一种认证服务器,其特征在于,包括:
存储模块,用于保存第一用途代码和第二用途代码;
接收模块,用于接收来自客户端的请求;
第一判断模块,用于对所述接收模块接收到的请求进行判断;
第一生成模块,用于在所述第一判断模块判断所述接收到的请求为登录请求时,生成登录挑战码,将所述登录挑战码保存为与所述登录请求中的身份信息相对应的信息;在所述第一判断模块判断所述接收到的请求为签名请求时,生成签名挑战码,将所述签名挑战码保存为与所述签名请求中的身份信息相对应的信息;
发送模块,用于将所述第一生成模块生成的所述登录挑战码和所述签名挑战码发送给所述客户端;
检索模块,用于在所述第一判断模块判断出所述接收到的请求为登录认证请求时,检索与所述登录认证请求中的身份信息对应的工作密钥和登录挑战码;在所述第一判断模块判断出所述接收到的请求为签名认证请求时,检索与所述签名认证请求中的身份信息对应的工作密钥和签名挑战码;
第一散列模块,用于对所述检索模块检索到的工作密钥和所述存储模块保存的第一用途代码进行散列,得到第十二散列数据;对所述检索模块检索到的工作密钥和所述存储模块保存的第二用途代码进行散列,得到第十四散列数据;
第二散列模块,用于将所述第一散列模块散列得到的所述第十二散列数据作为第四计算密钥,对所述第四计算密钥、第五时间信息和所述检索模块检索到的登录挑战码进行散列,得到第十三散列数据;将所述第一散列模块散列得到的第十四散列数据作为第五计算密钥,对所述第五计算密钥、第六时间信息和检索到的签名挑战码进行散列,得到第十五散列数据;
截位模块,用于对所述第二散列模块散列得到的所述第十三散列数据进行截位,得到第七截位结果;对所述第二散列模块散列得到的所述第十五散列数据进行截位,得到第八截位结果;
第二判断模块,用于将所述截位模块截位得到的第七截位结果作为计算得到的登录口令,判断所述计算得到的登录口令是否与从所述登录认证请求中获取的登录口令匹配;将所述截位模块截位得到的第八截位结果作为计算得到的签名口令,判断所述计算得到的签名口令是否与从所述签名认证请求中获取的签名口令匹配;
所述发送模块,还用于在所述第二判断模块判断出所述计算得到的登录口令与从所述登录认证请求中获取的登录口令匹配时,向所述客户端发送认证成功消息;在所述第二判断模块判断出所述计算得到的登录口令与从所述登录认证请求中获取的登录口令不匹配时,向所述客户端发送认证失败消息;在所述第二判断模块判断出所述计算得到的签名口令与从所述签名认证请求中获取的签名口令匹配时,向所述客户端发送认证成功消息;在所述第二判断模块判断出所述计算得到的签名口令与从所述签名认证请求中获取的签名口令不匹配时,向所述客户端发送认证失败消息;
所述存储模块,还用于保存第三用途代码;
所述检索模块,还用于在所述第一判断模块判断出所述接收到的请求为解锁请求时,检索与所述解锁请求中的身份信息对应的工作密钥;
所述第一散列模块,还用于对所述检索模块检索到的工作密钥和所述存储模块保存的第三用途代码进行散列,得到第十六散列数据;
所述第二散列模块,还用于将所述第一散列模块散列得到的第十六散列数据作为第六计算密钥,对所述第六计算密钥和从所述解锁请求中获取到的解锁请求码进行散列,得到第十九散列数据;
所述截位模块,还用于对所述第十九散列数据进行截位,得到第十一截位结果;
所述发送模块,还用于将所述截位模块截位得到的第十一截位结果作为解锁码发送给所述客户端。
67.如权利要求66所述的认证服务器,其特征在于,
所述第一散列模块,具体用于将所述检索模块检索到的工作密钥和所述第一用途代码组合成第十二数据,对所述第十二数据进行填充,得到第十二消息,并对所述第十二消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十二散列数据;将所述检索模块检索到的工作密钥和所述第二用途代码组合成第十四数据,对所述第十四数据进行填充,得到第十四消息,并对所述第十四消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十四散列数据;
所述第二散列模块,具体用于将所述第四计算密钥、所述第五时间信息以及所述检索到的登录挑战码组合成第十三数据,对所述第十三数据进行填充,得到第十三消息,并对所述第十三消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十三散列数据;将所述第五计算密钥、所述第六时间信息以及所述检索到的签名挑战码组合成第十五数据,对所述第十五数据进行填充,得到第十五消息,并对所述第十五消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十五散列数据。
68.如权利要求66所述的认证服务器,其特征在于,
所述截位模块,具体用于对所述第十三散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到第七截位结果;对第十五散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第八截位结果。
69.如权利要求66所述的认证服务器,其特征在于,
所述检索模块,还用于在所述第一判断模块判断出所述接收到的请求为激活请求时,检索与所述激活请求中的身份信息对应的原始种子密钥;
所述认证服务器,还包括:
第二生成模块,用于在所述第一判断模块判断出所述接收到的请求为激活请求时,生成第一随机数;
所述第一散列模块,还用于对所述第二生成模块生成的所述第一随机数和所述检索模块检索到的原始种子密钥进行散列,得到第十散列数据;
所述截位模块,还用于对所述第十散列数据进行截位,得到第六截位结果;
所述认证服务器,还包括:
组合模块,用于将所述截位模块截位得到的第六截位结果与所述第一随机数进行组合,得到激活码;
第三散列模块,用于对所述组合模块组合得到的所述激活码和所述检索模块检索到的原始种子密钥进行散列,将得到的第十一散列数据保存为与所述激活请求中的身份信息对应的工作密钥;
所述发送模块,还用于向所述客户端发送所述组合模块生成的所述激活码。
70.如权利要求69所述的认证服务器,其特征在于,
所述第一散列模块,具体用于将所述第一随机数和所述检索模块检索到的原始种子密钥组合成第十数据,对所述第十数据进行填充,得到第十消息,并对所述第十消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十散列数据。
71.如权利要求69所述的认证服务器,其特征在于,
所述截位模块,具体用于对所述第十散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第六截位结果。
72.如权利要求66所述的认证服务器,其特征在于,
所述第一散列模块,具体用于将所述检索到的工作密钥和所述第三用途代码组合成第十六数据,对所述第十六数据进行填充,得到第十六消息,并对所述第十六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十六散列数据;
所述第二散列模块,具体用于将所述第六计算密钥和所述获取到的解锁请求码组合成第十九数据,对所述第十九数据进行填充,得到第十九消息,并对所述第十九消息进行分组,对得到的分组数据进行迭代压缩,得到第所述十九散列数据。
73.如权利要求66所述的认证服务器,其特征在于,
所述截位模块,具体用于对所述第十九散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十一截位结果。
74.如权利要求66所述的认证服务器,其特征在于,
所述存储模块,还用于保存第三用途代码;
所述检索模块,还用于在所述第一判断模块判断出所述接收到的请求为同步请求时,检索与所述同步请求中的身份信息对应的工作密钥;
所述第一散列模块,还用于对所述检索模块检索到的工作密钥和所述存储模块保存的第三用途代码进行散列,得到第十六散列数据;
所述第二散列模块,还用于对所述第一散列模块散列得到的第十六散列数据作为第六计算密钥,对所述第六计算密钥和第七时间信息进行散列,得到第十七散列数据;
所述截位模块,还用于对所述第十七散列数据进行截位,得到第九截位结果;
所述第二判断模块,还用于将所述截位模块截位得到的第九截位结果作为第一同步口令,判断所述第一同步口令是否与从所述同步请求中获取的第一同步码匹配;
所述发送模块,还用于在所述第二判断模块判断出所述第一同步口令与从所述同步请求中获取的第一同步码不匹配时,向所述客户端发送同步失败消息;
所述认证服务器,还包括:
第四散列模块,用于在所述第二判断模块判断出所述第一同步口令与从所述同步请求中获取的第一同步码匹配时,对所述第六计算密钥和第八时间信息进行散列,得到第十八散列数据;
所述截位模块,还用于对所述第十八散列数据进行截位,得到第十截位结果;
所述认证服务器,还包括:
第三判断模块,用于将所述截位模块截位得到的第十截位结果作为第二同步口令,判断所述第二同步口令是否与从所述同步请求中获取的第二同步码匹配;
第四判断模块,用于在所述第三判断模块判断出所述第二同步口令与从所述同步请求中获取的第二同步码匹配时,判断所述第二同步码的认证成功时间是否晚于所述第一同步码的认证成功时间;
所述获取模块,用于在所述第四判断模块判断出所述第二同步码的认证成功时间晚于所述第一同步码的认证成功时间时,获取系统时间与所述第一同步码的认证成功时间之间的差值,将所述差值保存为与所述同步请求中的身份信息对应的令牌偏移时间;
所述发送模块,还用于在所述第三判断模块判断出所述第二同步口令与从所述同步请求中获取的第二同步码不匹配时,向所述客户端发送同步失败消息;在所述第三判断模块判断出所述第二同步口令与从所述同步请求中获取的第二同步码匹配时,向所述客户端发送同步成功消息;在所述第四判断模块判断出所述第二同步码的认证成功时间不晚于所述第一同步码的认证成功时间时,向所述客户端发送同步失败消息。
75.如权利要求74所述的认证服务器,其特征在于,
所述第一散列模块,具体用于所述认证服务器将所述检索到的工作密钥和所述第三用途代码组合成第十六数据,对所述第十六数据进行填充,得到第十六消息,并对所述第十六消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十六散列数据;
所述第二散列模块,具体用于将所述第六计算密钥和所述第七时间信息组合成第十七数据,对所述第十七数据进行填充,得到第十七消息,并对所述第十七消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十七散列数据;
所述第四散列模块,具体用于将所述第六计算密钥和所述第八时间信息组合成第十八数据,对所述第十八数据进行填充,得到第十八消息,并对所述第十八消息进行分组,对得到的分组数据进行迭代压缩,得到所述第十八散列数据。
76.如权利要求74所述的认证服务器,其特征在于,
所述截位模块,具体用于对第十七散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第九截位结果;
对第十八散列数据进行分组,得到多个字节组,通过对各个字节组包含的字节进行移位和组合,将所述各个字节组分别转换为对应的二进制数,使用转换得到的所有二进制数的和对第一预设值进行取模,并使用得到的取模值对第二预设值进行取模,得到所述第十截位结果。
CN201410004757.8A 2014-01-06 2014-01-06 一种身份认证方法、系统及设备 Active CN103731272B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201410004757.8A CN103731272B (zh) 2014-01-06 2014-01-06 一种身份认证方法、系统及设备
US15/108,788 US10084602B2 (en) 2014-01-06 2015-01-05 Dynamic token and a working method thereof
PCT/CN2015/070091 WO2015101350A1 (zh) 2014-01-06 2015-01-05 一种身份认证方法、系统及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410004757.8A CN103731272B (zh) 2014-01-06 2014-01-06 一种身份认证方法、系统及设备

Publications (2)

Publication Number Publication Date
CN103731272A CN103731272A (zh) 2014-04-16
CN103731272B true CN103731272B (zh) 2017-06-06

Family

ID=50455207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410004757.8A Active CN103731272B (zh) 2014-01-06 2014-01-06 一种身份认证方法、系统及设备

Country Status (3)

Country Link
US (1) US10084602B2 (zh)
CN (1) CN103731272B (zh)
WO (1) WO2015101350A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103731272B (zh) * 2014-01-06 2017-06-06 飞天诚信科技股份有限公司 一种身份认证方法、系统及设备
CN104104687B (zh) * 2014-07-28 2017-02-22 飞天诚信科技股份有限公司 一种安全登录的方法和系统
CN104184590B (zh) * 2014-09-01 2017-06-06 飞天诚信科技股份有限公司 一种激活动态令牌的方法和装置
CN104200136B (zh) * 2014-09-01 2017-03-29 飞天诚信科技股份有限公司 一种加密锁的自适应通讯方法
WO2016049870A1 (zh) * 2014-09-30 2016-04-07 宇龙计算机通信科技(深圳)有限公司 动态登录凭据的生成方法及系统
CN104506321B (zh) * 2014-12-15 2017-12-19 飞天诚信科技股份有限公司 一种更新动态令牌中种子数据的方法
CN104519066B (zh) * 2014-12-23 2017-11-28 飞天诚信科技股份有限公司 一种激活移动终端令牌的方法
WO2017005961A1 (en) * 2015-07-09 2017-01-12 Nokia Technologies Oy Token based authentication
CN106549756B (zh) * 2015-09-21 2019-11-08 阿里巴巴集团控股有限公司 一种加密的方法及装置
CN105471903B (zh) * 2015-12-31 2018-11-02 中国建设银行股份有限公司 电子锁激活信息的产生方法及相关系统、设备和开锁方法
CN105515780B (zh) * 2016-01-12 2018-11-13 浙江神州量子通信技术有限公司 基于量子密钥的身份认证系统和方法
CN107294909B (zh) * 2016-04-04 2020-10-02 汪风珍 一种电子身份实名认证的产品和方法
CN107437996B (zh) * 2016-05-27 2020-02-21 宇龙计算机通信科技(深圳)有限公司 一种身份认证的方法、装置及终端
CN117692170A (zh) 2016-09-15 2024-03-12 美商纳兹控股有限责任公司 通信方法和设备、折叠数据的方法和系统以及计算机
EP3413508A1 (en) * 2017-06-06 2018-12-12 Thomson Licensing Devices and methods for client device authentication
MY181840A (en) 2016-11-04 2021-01-08 Thomson Licensing Devices and methods for client device authentication
CN107147675A (zh) * 2017-06-25 2017-09-08 深圳市成星自动化系统有限公司 基于特征码的身份验证方法和系统
CN108900471B (zh) * 2018-05-31 2022-02-25 北京证大向上金融信息服务有限公司 用于传输数据的服务器、客户端、网络系统及方法
TWI772648B (zh) * 2019-06-03 2022-08-01 銓鴻資訊有限公司 基於集體驗證的部分資料驗證方法
CN110211268B (zh) * 2019-06-04 2021-07-20 北京一砂信息技术有限公司 一种时效性随机密码解锁智能锁的系统、方法及存储介质
CN110519047A (zh) * 2019-07-15 2019-11-29 上海林果实业股份有限公司 令牌激活方法及装置
US11216411B2 (en) * 2019-08-06 2022-01-04 Micro Focus Llc Transforming data associated with a file based on file system attributes
CN111131307B (zh) * 2019-12-31 2021-09-28 奇安信科技集团股份有限公司 一种控制访问权限的方法及系统
CN112217632B (zh) * 2020-10-12 2023-09-08 国网数字科技控股有限公司 一种基于智能合约和哈希链的身份认证方法及装置
CN114095154B (zh) * 2021-10-12 2023-06-27 福建升腾资讯有限公司 一种App登录的动态口令实现方法、装置、设备和介质
CN114513593B (zh) * 2022-01-25 2024-04-16 重庆医药高等专科学校 一种海量图片采集工作方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3595109B2 (ja) * 1997-05-28 2004-12-02 日本ユニシス株式会社 認証装置、端末装置、および、それら装置における認証方法、並びに、記憶媒体
CN1142653C (zh) * 2000-04-28 2004-03-17 杨宏伟 动态口令认证系统及方法
CN1937498A (zh) * 2006-10-09 2007-03-28 网之易信息技术(北京)有限公司 一种动态密码认证方法、系统及装置
CN101188495B (zh) * 2007-12-04 2010-08-25 兆日科技(深圳)有限公司 一种实现强口令认证方式的安全系统及方法
CN101577917A (zh) * 2009-06-16 2009-11-11 深圳市星龙基电子技术有限公司 一种安全的基于手机的动态密码验证方法
WO2011050745A1 (zh) * 2009-10-30 2011-05-05 北京飞天诚信科技有限公司 认证方法及系统
CN102307095B (zh) * 2011-04-27 2014-08-27 上海动联信息技术股份有限公司 一种动态令牌种子密钥注入和变形方法
CN102315943B (zh) * 2011-09-29 2014-04-23 上海动联信息技术股份有限公司 具备种子密钥自动变形的动态令牌、动态密码认证系统及方法
US20130089205A1 (en) * 2011-10-07 2013-04-11 F2Ware, Inc. Token Provisioning Method
US8966268B2 (en) * 2011-12-30 2015-02-24 Vasco Data Security, Inc. Strong authentication token with visual output of PKI signatures
CN103220145B (zh) * 2013-04-03 2015-06-17 天地融科技股份有限公司 电子签名令牌响应操作请求的方法、系统及电子签名令牌
CN103391195B (zh) * 2013-07-01 2016-04-06 飞天诚信科技股份有限公司 一种动态令牌的工作方法
CN103731272B (zh) * 2014-01-06 2017-06-06 飞天诚信科技股份有限公司 一种身份认证方法、系统及设备

Also Published As

Publication number Publication date
CN103731272A (zh) 2014-04-16
US10084602B2 (en) 2018-09-25
US20160330028A1 (en) 2016-11-10
WO2015101350A1 (zh) 2015-07-09

Similar Documents

Publication Publication Date Title
CN103731272B (zh) 一种身份认证方法、系统及设备
CN105516195B (zh) 一种基于应用平台登录的安全认证系统及其认证方法
US6959394B1 (en) Splitting knowledge of a password
CN104519066B (zh) 一种激活移动终端令牌的方法
CN104700007B (zh) 一种手势印象密码的设置及应用方法
AU2002246210B2 (en) Cryptographic authentication with ephemeral modules
CN104917766B (zh) 一种二维码安全认证方法
CN103607281B (zh) 一种安全设备的解锁方法和系统
JP2008524727A5 (zh)
CN109389727A (zh) 开锁方法、系统及计算机可读存储介质
CN106603234A (zh) 一种设备身份认证的方法、装置和系统
CA2037071A1 (en) Method and apparatus for verification of passwords
RU2007130340A (ru) Способ создания безопасного кода, способы его использования и программируемое устройство для осуществления способа
CN110191086A (zh) 智能家具远程安全控制方法、装置、计算机设备及存储介质
US20180041505A1 (en) Method for generating a key and access control method
GB2050021A (en) Method and means for securing the distribution of encoding keys
JP2000315999A (ja) 暗号鍵生成方法
Parmar et al. Generation of secure one-time password based on image authentication
JP2006166433A (ja) バイオメトリックパラメータをデータベースに安全に記憶するための方法及びシステム、並びに、バイオメトリックパラメータをデータベースに安全に記憶してユーザを認証するための方法
CN104506321B (zh) 一种更新动态令牌中种子数据的方法
CN105846994B (zh) 一种物理层隐写方法及系统
Groza et al. Highly efficient authentication for CAN by identifier reallocation with ordered CMACs
CN105635075A (zh) 登录云终端的方法、云终端、云服务器及云系统
CN111882719A (zh) 一种基于动态密码的密码防盗方法、装置及智能锁具
CN107241192A (zh) 一种使用指纹key进行登录的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
OL01 Intention to license declared
OL01 Intention to license declared