一种验证信息完整性的方法和系统的制作方法

文档序号:7857251阅读:332来源:国知局
专利名称:一种验证信息完整性的方法和系统的制作方法
技术领域
本发明涉及信息安全领域,尤其涉及一种验证信息完整性的方法和系统。
背景技术
现有技术利用可信计算技术和双线性对的签密方案(一种同时实现数字签名和加密的密码技术)提出了一个物联网安全传输模型,满足了物联网的ONS (Object NamingService,对象名解析服务)查询以及物品信息传输两个环节的安全需求,具有安全性、匿名性、可信性和抗攻击性等特点。然而,现有技术需要进行较为复杂的计算,对物联网节点设备的运算能力提出了较高要求。与数字签名相比,消息认证码(MAC)的计算复杂度相对较小,更适合应用于实际的物联网节点设备。轻量化的密码算法、密码协议以及可设定安全等级的密码技术属于物联网安全体系的关键技术。但是,传统的MAC机制只能用于验证消息 完整性,不能抵御重放攻击。另一方面,作为物联网所使用的主要网络架构之一,无线传感器网络存在节点控制、节点捕获等固有的安全威胁。因此,应用于物联网的安全机制还应考虑如何防止上述威胁导致的安全风险影响整个安全体系。

发明内容
本发明的目的是为了克服现有技术的不足,提供了一种验证信息完整性的方法和系统,其具有安全性高、防重放、适用于多种环境的特点。本发明提供的一种验证信息完整性的方法,包括步骤SI :消息认证码生成设备接收主机发送的待发送消息,更新并获取第一动态因子;步骤S2 :所述消息认证码生成设备对所述第一动态因子做单向变换,得到第一数值;步骤S3 :所述消息认证码生成设备更新所述第一动态因子,并获取当前第一动态因子;步骤S4 :所述消息认证码生成设备对所述待发送消息和当前第一动态因子计算得到第一消息认证码,根据所述待发送消息、所述第一数值和所述第一消息认证码生成传输报文;步骤S5 :所述消息认证码生成设备向所述主机发送所述传输报文;步骤S6 :所述主机接收所述传输报文,将所述传输报文发送给认证服务器;步骤S7 :所述认证服务器接收所述传输报文并对其拆分;步骤S8 :所述认证服务器更新其内部存储的第二动态因子并获取当前第二动态因子,根据当前第二动态因子生成验证窗口 ;步骤S9 :所述认证服务器依序对所述验证窗口的各个动态因子做单向变换,得到
一系列第二数值;步骤SlO :所述认证服务器用所述验证窗口中的第二动态因子和与其对应的第二数值对拆分结果进行验证,如验证通过,则给所述主机返回消息完整的信息;如验证失败,则给所述主机返回消息不完整的信息。所述第一动态因子与所述第二动态因子类型相同,具体为时间因子或事件因子或时间因子与事件因子计算得到的结果。当所述第一动态因子与所述第二动态因子为事件因子时,所述步骤S4具体包括所述消息认证码生成设备对所述待发送消息和当前第一动态因子进行加密计算,得到所述第一消息认证码,将所述待发送消息、所述第一数值和所述第一消息认证码组合,得到所述传输报文;所述步骤S7中所述认证服务器对所述传输报文拆分得到拆分后的第一数值、拆分后的消息、拆分后的第一消息认证码;所述步骤SlO具体包括
步骤S10-1 :所述认证服务器依序将所述验证窗口中的所述第二数值与所述拆分后的第一数值比对,如果存在与所述拆分后的第一数值一致的第二数值,则将当前第二动态因子设置为与所述第一数值一致的第二数值所对应的动态因子;否则,给所述主机返回完整性验证失败的信息;步骤S10-2 :所述认证服务器更新并获取当前第二动态因子;步骤S10-3 :所述认证服务器对所述拆分后的消息和当前第二动态因子计算得到第二消息认证码;步骤S10-4 :所述认证服务器比对所述第二消息认证码和所述拆分后的第一消息认证码;如果一致,则验证通过,给所述主机返回消息完整的信息;否则,给所述主机返回消息不完整的信息。当所述第一动态因子与所述第二动态因子为时间因子时,所述步骤S4-步骤S7替换为步骤S4’ 所述消息认证码生成设备使用密钥对设备标识、所述待发送消息和当前第一动态因子计算得到所述第一消息认证码,并将所述第一消息认证码和所述第一数值发送给所述主机;步骤S5’ 所述主机从所述消息认证码生成设备中获取所述设备标识,将所述设备标识、所述待发送消息、接收到的所述第一数值和所述第一消息认证码组合,得到所述传输报文,将所述传输报文发送给所述认证服务器;步骤S6’ 所述认证服务器接收所述传输报文并对其进行拆分,如果拆分成功,则得到所述设备标识、所述待发送消息、所述第一数值和所述第一消息认证码,执行步骤S7’ ;否则,向所述主机返回验证失败的响应;步骤S7’ 所述认证服务器根据所述设备标识检索对应的密钥,如果检索到,则执行步骤S8 ;否则,向所述主机返回所述验证失败的响应。所述步骤SlO具体包括步骤S10-1’ 所述认证服务器依序将所述验证窗口中的所述第二数值与所述拆分得到的第一数值比对,如果存在与所述拆分得到的第一数值一致的所述第二数值,则将当前第二动态因子设置为与所述第一数值一致的第二数值所对应的动态因子;否则,给所述主机返回完整性验证失败的信息;
步骤S10-2’ 所述认证服务器更新并获取当前第二动态因子;步骤S10-3’ 所述认证服务器使用所述检索到的密钥对所述设备标识、所述拆分后消息和当前第二动态因子计算得到第二消息认证码;步骤S10-4’ 所述认证服务器比对所述第二消息认证码和拆分得到的所述第一消息认证码;如果一致,则验证通过,给所述主机返回消息完整的信息;否则,给所述主机返回消息不完整的信息。根据所述时间因子与所述事件因子得到所述第一动态因子,所述步骤S4-步骤S7替换为步骤S4’ ’ 所述消息认证码生成设备按照摘要算法对所述设备标识、内置时钟当前时刻、待发送消息和当前第一动态因子进行计算,得到第一摘要,对所述第一摘要进行加密,得到数字签名,将所述数字签名作为所述第一消息认证码,将所述第一消息认证码和第一数值发送给所述主机; 步骤S5’ ’ 所述主机从所述消息认证码生成设备中获取所述设备标识和当前时亥IJ,将所述设备标识、当前时刻、所述待发送消息、接收到的所述第一数值和所述第一消息认证码组合,得到所述传输报文,将所述传输报文发送给所述认证服务器;步骤S6’ ’ 所述认证服务器接收所述传输报文并对其拆分,如果拆分成功,则得到所述设备标识、时刻、消息、所述第一数值和所述第一消息认证码,执行步骤S7’ ’ ;否则,向所述主机返回验证失败的响应;步骤S7’ ’ 所述认证服务器根据所述设备标识检索对应的第二动态因子和公钥,如果检索到,则执行步骤S8 ;否则,向所述主机返回所述验证失败的响应。所述步骤SlO具体包括步骤S10-1’ ’ 所述认证服务器使用所述公钥对所述拆分后的第一消息认证码进行解密,得到所述第一摘要;步骤S10-2’ ’ 所述认证服务器按所述照摘要算法依次对所述第二数值、所述设备标识、所述时刻、所述消息进行计算,得到第二摘要;步骤S10-3’’ 所述认证服务器比较所述第二摘要和所述第一摘要,如果一致,给所述主机返回消息完整信息;否则,给所述主机返回消息不完整信息。所述传输报文组合方式是预先设定的,包括依序拼接、分段拼接。所述拆分传输报文的方式与所述传输报文的组合方式互逆。所述更新并获取所述第一动态因子的方法具体为所述消息认证码生成设备将当前保存的计数值自加预先设定的步长,以所述计数值作为所述第一动态因子。所述步骤S4中使用对称加密算法对所述待发送的消息和当前第一动态因子计算得到第一消息认证码。所述步骤S8中生成所述验证窗口具体为以所述认证服务器当前计数值为起点,根据预定的幅度值生成一系列动态因子,即生成所述验证窗口。所述更新并获取所述第一动态因子的方法具体为所述消息认证码生成设备获取内置时钟当前时刻,以所述时刻作为所述第一动态因子。所述更新并获取所述第一动态因子的方法具体为所述消息认证码生成设备根据内置时钟当前时刻以及预先设定的步长确定所述第一动态因子。
所述步骤S4’中使用对称加密算法对所述设备标识、所述待发送消息和当前第一动态因子计算得到所述第一消息认证码。所述步骤S8中生成验证窗口具体为以所述认证服务器当前时刻为中点,根据所述预定的幅度值和所述预先设定的步长生成一系列动态因子,即生成所述验证窗口。所述步骤S8中还包括根据当前保存的最近验证成功时刻,从所述验证窗口中去掉所述最近验证成功时刻之前的部分。所述步骤SlO中,验证通过后还包括更新并保存所述最近验证成功时刻。
所述更新并获取所述第一动态因子的方法具体为所述消息认证码生成设备将当前保存的计数值自加所述预先设定的步长,并获取内置时钟当前时刻,对计数值和当前时刻进行计算,以计算结果作为所述第一动态因子。所述生成验证窗口具体为以所述认证服务器当前计时值为中点,根据预定的幅度值和所述预先设定的步长生成一系列时刻;以所述认证服务器当前计数值为起点,根据预定的幅度值生成一系列计数值,对所述对应的时刻与所述对应的计数值进行计算,得到一系列动态因子,即生成所述验证窗口。步骤S10-1’ ’替换为步骤S10-1’ ’ -I :所述认证服务器根据所述设备标识寻找对应的生成消息验证码的设备,如找到则使用所述设备对应公钥对所述拆分后的第一消息认证码进行解密,得到所述第一摘要,如找不到则给所述主机返回验证失败信息。本发明提供的一种验证信息完整性的系统,包括消息认证码生成设备、主机和认证服务器;所述消息认证码生成设备包括第一存储模块、第一接收模块、第一获取模块、第一计算模块、第二计算模块、组合模块、第一发送模块;所述第一存储模块,用于存储第一动态因子;所述第一接收模块,用于接收所述主机发送的待发送消息;所述第一获取模块,用于更新所述第一存储模块中的所述第一动态因子并从中获取当前第一动态因子;所述第一计算模块,用于对当前第一动态因子做单向变换,得到第一数值;所述第二计算模块,用于对所述待发送消息和当前第一动态因子计算得到所述第一消息认证码;所述生成模块,用于根据所述待发送消息、所述第一数值和所述第一消息认证码生成所述传输报文;所述第一发送模块,用于向所述主机发送所述传输报文;所述主机包括第二接收模块和第二发送模块;所述第二接收模块,用于接收所述传输报文;所述第二发送模块,用于将所述传输报文发送给所述认证服务器,并将所述待发送信息发送给所述消息认证码生成设备;所述认证服务器包括第三接收模块、拆分模块、第二存储模块、第二获取模块、窗口模块、第三计算模块、验证模块、第三发送模块;所述第三接收模块,用于接收所述传输报文;
所述拆分模块,用于对所述传输报文进行拆分;所述第二存储模块,用于存储第二动态因子;所述第二获取模块,用于更新所述第二存储模块中的第二动态因子并从中获取当前第二动态因子;所述窗口模块,用于根据所述第二获取模块获取的当前第二动态因子计算得到多个动态因子,并进行存储;所述第三计算模块,用于对所述验证窗口的所述各个动态因子做单向变换,得到所述一系列第二数值;所述验证模块,用于用所述验证窗口中的第二动态因子和与其对应的第二数值对所述拆分模块的拆分结果进行验证;
所述第三发送模块,用于将所述验证模块的验证结果返回给主机。所述拆分模块拆分得到信息、第一数值和第一消息认证码,所述验证模块包括第一比较单元,第一计算单元,第二比较单元;所述第一比较单元,用于比较所述第二数值与所述第一数值是否相同;所述第一计算单元,用于对所述消息和当前第二动态因子计算得到所述第二消息认证码;所述第二比较单元,用于比较所述第二消息认证码和所述第一消息认证码是否相同。所述消息认证码生成设备中的所述组合模块也可以放在所述主机中,所述第一发送模块还用于将所述第一消息认证码和所述第一数值发送给所述主机,所述第二接收模块还用于接收所述第一发送模块发送的所述第一消息认证码和所述第一数值;所述主机还包括第三获取模块,用于从所述消息认证码生成设备中获取所述设备标识;所述组合模块具体用于将所述待发送消息、所述第一数值、设备标识和所述第一消息认证码组合,得到所述传输报文。所述第二存储模块还用于存储最近验证成功时刻。所述认证服务器还包括检索模块,用于根据所述设备标识检索对应的密钥。所述验证模块包括第一比较单元,第一计算单元,第二比较单元;所述第一比较单元,用于比较所述第二数值与所述第一数值是否相同;所述第一计算单元,用于对所述设备标识、所述消息和当前第二动态因子计算得到所述第二消息认证码;所述第二比较单元,用于比较所述第二消息认证码和所述第一消息认证码是否相同。所述第一获取模块包括第一获取单元、第二获取单元和第一计算单元;所述第一获取单元,用于获取所述消息认证码生成设备的计数值;所述第二获取单元,用于获取所述消息认证码生成设备的内置时钟当前时刻;所述第一计算单元,用于对所述计数值和内置时钟当前时刻进行计算,得到所述第一动态因子。所述消息认证码生成设备中的所述组合模块也可以放在所述主机中,所述第一发送模块还用于将所述第一消息认证码和所述第一数值发送给所述主机,所述第二接收模块还用于接收所述第一发送模块发送的所述第一消息认证码和所述第一数值;所述主机还包括第二获取模块,用于从所述消息认证码生成设备中获取所述设备标识、计数值和当前时刻;生成模块,用于根据所述计数值和所述当前时刻生成所述第一数值;所述组合模块具体用于将所述设备标识、当前时刻、消息、所述第一数值和所述第一消息认证码组合,得到所述传输报文。31、根据权利要求30所述的系统,其特征在于,所述第三获取模块包括第三获取单元、第四获取单元和第二计算单元;所述第三获取单元,用于获取所述认证服务器的计数值;所述第四获取单元,用于获取所述认证服务器的内置时钟当前时刻;
所述第二计算单元,用于对所述计数值和所述内置时钟当前时刻进行计算,得到第二动态因子;所述窗口模块,具体用于根据所述第三获取单元获取的计数值和第四获取单元获取的当前时刻生成多个动态因子,并进行存储。所述验证模块包括第三计算单元、第四计算单元和比较单元;所述第三计算单元,用于对所述拆分得到的第一消息认证码进行解密,得到第一摘要;所述第四计算单元,用于按照摘要算法依次对所述验证窗口中的动态因子、所述设备标识、所述时刻和所述消息进行计算,得到第二摘要;所述比较单元,用于比较所述第二摘要和所述第一摘要是否相同。所述认证服务器还包括检查模块,用于检查拆分得到的时刻的合法性。本发明与现有技术相比,具有以下优点安全性高本发明中计算消息认证码所使用的动态因子不在传输网络中出现,能够有效避免被攻击者伪造;防重放本发明中使用的动态因子是非重复的,具有“一次一密”的特性,能够有效地抵御重放攻击;若使用时间作为动态因子,还可具备时间戳的效果;适用于多种环境本发明以单向变换为基础,不包含高强度的密码运算,适用于性能受限的环境。


图I是本发明实施例I提供的一种验证信息完整性的方法的流程图;图2是本发明实施例2提供的一种验证信息完整性的方法的流程图;图3是本发明实施例3提供的一种验证信息完整性的方法的流程图;图4是本发明实施例4提供的一种验证信息完整性的系统的方框示意图;图5是本发明实施例5提供的一种验证信息完整性的系统的方框示意图;图6是本发明实施例6提供的一种验证信息完整性的系统的方框示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例I本发明的实施例I提供一种验证信息完整性的方法,如图I所示,包括步骤101 :消息认证码生成设备接收待发送消息,更新并获取第一动态因子;本实施例中的待发送消息由主机发送给消息认证码生成设备;在本实施例中,所述更新并获取第一动态因子的方法具体为消息认证码生成设备将当前设备保存的计数值自加预先设定的步长,以计数值作 为第一动态因子;优选的本实施例中计数值自加I;例如,接收待发送的消息时,消息认证码生成设备当前保存的计数值为100,则第一动态因子为101,相应地,此时的计数值更新为101 ;本实施例中,第一动态因子是事件因子;更新时的步长是预先设定的,除了 I之外也可以是其他非O数值;步骤102 :消息认证码生成设备对第一动态因子按照第一预设规则做单向变换,得到第一数值;优选地,在本实施例中,第一预设规则为SHA-I算法;除此之外,也可使用其他算法,如 MD5、SHA-256 等;步骤103 :消息认证码生成设备更新第一动态因子,并获取当前第一动态因子;更新第一动态因子的方法与步骤101相同,在此不在赘述;若更新前第一动态因子为101,则当前第一动态因子为102 ;步骤104 :消息认证码生成设备对待发送消息和当前第一动态因子按照第二预设规则计算得到第一消息认证码,将待发送消息、第一数值和第一消息认证码组合,得到传输报文;优选地,在本实施例中,第二预设规则为RFC2104所规定的HMAC方法;除此之外,也可使用其他方法,如对称加密等;本实施例中,组合方式是预先设定的;优选地,在本实施例中,将待发送的消息、第一数值和第一消息认证码依序拼接,得到传输报文。除此之外,还可使用其他可逆的组合方式,如分段拼接等;消息认证码生成设备再次计算消息认证码时,从当前计数值开始,如本实施例中可从102开始;本实施例中,可在步骤101中使用当前计数值,相应地,在步骤104之后进行更新当前计数值操作;步骤105 :消息认证码生成设备向主机发送传输报文;步骤106 :主机接收传输报文,将传输报文发送给认证服务器;本实施例中,步骤107-步骤113为认证服务器对传输报文进行验证的实现方法;步骤107 :认证服务器接收传输报文并将其拆分为消息、第一数值和第一消息认证码;本实施例中拆分报文的方法和与步骤104中拼接报文的方法互逆;
步骤108 :认证服务器更新第二动态因子并获取当前第二动态因子,根据当前第二动态因子生成验证窗口;在本实施例中,第二动 态因子保存于认证服务器中,认证服务器的第二动态因子类型与生成传输报文时消息认证码生成设备的第一动态因子类型相同,更新并获取当前第二动态因子的方法与步骤101中更新并获取第一动态因子的方法相同;具体地,在本实施例中,使用事件因子;所述生成验证窗口具体为以当前计数值为起点,根据预定的幅度值生成一系列动态因子;例如,当前计数值为95,幅度值为10,则生成的验证窗口为96,97,98,99,100,101,102,103,104,105 ;步骤109 :认证服务器依序按照第一预设规则对验证窗口的各个动态因子做单向变换,得到一系列第二数值;本步骤使用的单向变换方法与步骤102中相同;步骤110 :认证服务器依序将各个第二数值与所述第一数值比对,如果存在与所述第一数值一致的第二数值,则将第二动态因子设置为与第一数值一致的第二数值所对应的动态因子;否则,给主机返回完整性验证失败的信息;例如,如果由101单向变换而来的第二数值与所述第一数值相同,则将第二动态因子设置为101 ;步骤111 :认证服务器更新并获取第二动态因子;更新的具体方法与步骤101相同,在此不再赘述;若更新前第二动态因子为101,则当前第二动态因子为102 ;步骤112 :认证服务器将拆分得到的消息和当前第二动态因子按照第二预设规则计算得到第二消息认证码;生成第二消息认证码的方法与步骤104相同,在此不再赘述。步骤113 :认证服务器比对第二消息认证码和第一消息认证码。如果一致,则验证通过,给主机返回消息完整的信息;否则,给主机返回消息不完整的信息。实施例2本发明的实施例2提供一种验证信息完整性的方法,如图2所示,包括步骤201 :消息认证码生成设备接收待发送消息,更新并获取第一动态因子;在本实施例中,所述获取第一动态因子具体为时间因子,具体地,所述更新并获取第一动态因子的方法具体为消息认证码生成设备获取内置时钟当前时刻,以该时刻作为第一动态因子;进一步地,还可以为消息认证码生成设备根据内置时钟的当前时刻以及预先约定的步长确定第一动态因子;例如,当前时刻为12:00:20,步长为I分钟,则第一动态因子为12:01:20 ;步骤202 :消息认证码生成设备按照第一预设规则对第一动态因子做单向变换,得到第一数值;优选地,在本实施例中,使用SHA-I算法做单向变换。除此之外,也可使用其他算法,如 MD5、SHA-256 等。
步骤203 :当消息认证码生成设备等待第一动态因子更新后,获取当前第一动态因子;步骤204 :消息认证码生成设备将设备标识、待发送消息和当前第一动态因子按照第二预设规则计算得到第一消息认证码;本实施例中,设备标识预先存储在消息认证码生成设备内部,用于标识消息认证码生成设备的信息和对应的密钥,本实施例中的密钥为对称密钥;优选地,在本实施例中,使用RFC6287所规定的OTP方法计算消息认证码。相应地,消息认证码生成设备预置有生成OTP所需的密钥;步骤204具体为用对称密钥对设备标识、待发送消息和当前第一动态因子进行
加密生成第一消息认证码;步骤205 :消息认证码生成设备向主机发送第一数值和第一消息认证码,主机从消息认证码生成设备获取设备标识;步骤206 :主机将设备标识、待发送消息、第一数值和第一消息认证码组合,得到传输报文,将传输报文发送给认证服务器;本实施例中,组合方式是预先设定的。优选地,在本实施例中,将设备标识、待发送的消息、第一数值和第一消息认证码依序拼接,得到传输报文。除此之外,还可使用其他可逆的组合方式,如分段拼接等;从步骤207开始,为认证服务器对传输报文的进行处理的方法;步骤207 :认证服务器接收传输报文并将其拆分为设备标识、消息、第一数值和第一消息认证码,如果拆分成功,执行步骤208,否则,向主机返回验证失败的响应;本实施例中拆分报文的方法和与步骤205中拼接报文的方法互逆;步骤208 :认证服务器根据设备标识检索对应的密钥。如果检索到对应的密钥,执行步骤209,否则,向主机返回验证失败的响应;进一步地,在本实施例中,检索结果还可包括动态因子参数,例如时间偏移值;步骤209 :认证服务器根据服务器端的内置时钟更新第二动态因子并获取当前第二动态因子,根据当前第二动态因子生成验证窗口 ;在本实施例中,认证服务器更新并获取第二动态因子的方法与步骤201中更新并获取第一动态因子的方法相同;具体地,在本实施例中,使用时间因子;本实施例中,所述生成验证窗口的方法具体为以当前时刻为中点,根据预定的幅度和步长生成一系列动态因子。例如,当前时刻为12:00:00,幅度为11,步长为I秒,则生成的验证窗口为11:59:56, 11:59:57, 11:59:58, 11:59:59, 12:00:00, 12:00:01, 12:00:02,12:00:03, 12:00:04, 12:00:05 ;进一步地,在检索结果包括动态因子参数的情况下,则根据参数对验证窗口进行调整。例如,偏移值为I秒,则调整后的验证窗口为11:59:57,11:59:58,11:59:59,12:00:00,12:00:01,12:00:02, 12:00:03,12:00:04,12:00:05,12:00:06 ;进一步地,所述生成验证窗口还包括
根据当前保存的“最近验证成功时刻”,从动态因子序列中去掉最近验证成功时刻之前的部分。例如,当前保存的“最近验证成功时刻”为11:59:58,则去掉后的验证窗口为11:59:59, 12:00:00, 12:00:01, 12:00:02, 12:00:03, 12:00:04,12:00:05 ;步骤210 :认证服务器依序按照第一预设规则对验证窗口的各个动态因子做单向变换,得到一系列第二数值;本步骤使用的单向变换方法与步骤202中相同;步骤211 :认证服务器依序将各个第二数值与所述第一数值比对。如果存在与所 述第一数值一致的第二数值,则将第二动态因子设置为与第一数值一致的第二数值所对应的动态因子;否则,给主机返回完整性验证失败信息;例如,如果由12:00:01单向变换而来的第二数值与所述第一数值相同,则将第二动态因子设置为12:00:01 ;步骤212 :当认证服务器检测到第二动态因子更新后,获取当前第二动态因子;更新的具体方法与步骤201相同,在此不再赘述;若更新前第二动态因子为12:00:01,则当前第二动态因子为12:00:02 ;步骤213 :认证服务器根据设备标识、检索得到的密钥、拆分得到的消息和当前第二动态因子按照第二预设规则生成第二消息认证码;具体地,生成第二消息认证码的方法与步骤204相同,在此不再赘述;步骤214 :认证服务器比对第二消息认证码和第一消息认证码,如果一致,则验证通过,给主机返回消息完整信息;否则,给主机返回消息不完整信息;本实施例中,验证通过后还包括更新最近验证成功时刻,如在本实施例中将最近验证成功时刻更新为12:00:01。实施例3本发明的实施例3提供一种验证信息完整性的方法,如图3所示,包括步骤301 :消息认证码生成设备接收待发送消息,更新并获取第一动态因子;在本实施例中,所述更新并获取第一动态因子的方法具体为消息认证码生成设备将当前保存的计数值自加预先设定的步长(例如自加1),并获取内置时钟当前时刻,按照第一预设规则对这两个数值进行计算,以计算结果作为第一动态因子;本实施例中,第一预设规则包括加、减、异或、同或等运算;具体地,本实施例中将这两个值相加得到第一动态因子;步骤302 :消息认证码生成设备对第一动态因子按照第二预设规则做单向变换,得到第一数值;优选地,在本实施例中,使用SHA-I算法做单向变换;除此之外,也可使用其他算法,如 MD5、SHA-256 等;步骤303 :消息认证码生成设备更新第一动态因子,并获取当前第一动态因子;更新第一动态因子的方法与步骤301相同,在此不在赘述;步骤304 :消息认证码生成设备将设备标识、内置时钟当前时刻、待发送消息和当前第一动态因子按照第三预设规则计算得到第一消息认证码;具体地,在本实施例中,消息认证码生成设备使用自身私钥对设备标识、内置时钟当前时刻、待发送消息和当前第一动态因子进行签名生成第一消息认证码;本实施例中,设备标识是消息认证码生成设备的标识,认证服务器可以通过设备标识检索生成消息验证码的设备及 其对应的公钥;步骤305 :消息认证码生成设备向主机发送第一数值和第一消息认证码,主机从消息认证码生成设备获取设备标识和当前时刻;步骤306 :主机将设备标识、当前时刻、待发送消息、第一数值和第一消息认证码组合,得到传输报文,将传输报文发送给认证服务器消息认证码生成设备向主机发送传输报文;本实施例中步骤307-步骤311为认证服务器对接收到的传输报文进行验证的实现过程;步骤307 :认证服务器接收传输报文并将其拆分为设备标识、时刻、消息、第一数值和第一消息认证码;如果拆分成功,继续;否则,向主机返回验证失败的响应;本实施例中拆分报文的方法和与步骤305中拼接报文的方法互逆;步骤308 :认证服务器根据设备标识在服务器端检索对应的第二动态因子参数和公钥。如果检索到,则执行步骤309,否则,向主机返回验证失败的响应;具体地,在本实施例中,所述第二动态因子参数包括计数值和时间偏移值;步骤309 :认证服务器更新第二动态因子并获取当前第二动态因子,根据当前第二动态因子生成验证窗口;在本实施例中,所述更新第二动态因子具体为更新计数值,并根据当前时刻和时间偏移值获取计时值;本实施例中,所述生成验证窗口的方法具体为以计时值为中点,根据预定的幅度和步长生成一系列时刻;以当前计数值为起点,根据预定的幅度值生成一系列计数值,将对应的时刻与对应的计数值按照第一预设规则进行计算,得到一系列动态因子,生成验证窗口 ;也可以根据拆分得到的时刻和检索得到的时间偏移确定时间值,根据预定的幅度和步长生成一系列时刻值,将各个时刻值与对应的计数值按照第一预设规则进行计算,得到一系列动态因子,生成验证窗口步骤310 :认证服务器依序按照第二预设规则对验证窗口的各个动态因子做单向变换,得到一系列第二数值;本步骤使用的单向变换方法与步骤302中相同;步骤311 :认证服务器依序将各个第二数值与设备标识、时刻、消息按预设规则组成验证报文,比较验证报文与第一消息认证码是否对应,如果是,给主机返回消息完整信息,将第二动态因子更新为所对应的动态因子;否则,给主机返回完整性验证失败信息;具体地,本实施例中该步骤为步骤311-1 :认证服务器使用消息验证码生成设备的公钥对拆分得到的第一消息认证码进行解密,得到第一摘要;本实施例中,该步骤也可以为认证服务器根据设备标识寻找对应的生成消息验证码的设备,如找到则使用该设备对应公钥对拆分得到的第一消息认证码进行解密,得到第一摘要,如找不到则给主机返回验证失败信息;步骤311-2 :认证服务器按照摘要算法对各个第二数值、拆分得到的设备标识、时亥IJ、消息进行计算,得到第二摘要;步骤311-3 :认证服务器比较第二摘要和第 一摘要是否相同,如果一致,给主机返回消息完整信息;否则,给主机返回完整性验证失败信息;本实施例中,验证通过后还包括更新最近验证成功时刻。进一步地,在步骤311判断为是时,本实施例还包括步骤312 :检查拆分得到的时刻合法性;如果合法,则给主机返回消息完整信息,否则,给主机返回完整性验证失败信息;具体地,检查拆分得到的时刻是否在最近验证成功时刻之后,如果是,则不合法,否则,合法;或者,检查拆分得到的时刻是否在服务器端有记录,如果有,则不合法,否则,合法,并保存该时刻。实施例4本发明的实施例4根据实施例I中的方法提供一种验证信息完整性的系统,如图4所示,包括消息认证码生成设备41、主机42和认证服务器43 ;消息认证码生成设备41包括第一存储模块41-1,第一接收模块41_2、第一获取模块41-3、第一计算模块41-4、第二计算模块41-5、组合模块41_6、第一发送模块41_7 ;第一存储模块41-1,用于存储第一动态因子;第一接收模块41-2,用于接收主机42发送的待发送消息;第一获取模块41-3,用于更新第一存储模块41-1中的第一动态因子并从中并获取当前第一动态因子;第一计算模块41-4,用于对当前第一动态因子做单向变换,得到第一数值;第二计算模块41-5,用于对待发送消息和当前第一动态因子计算得到第一消息认证码;组合模块41-6,用于将待发送消息、第一数值和第一消息认证码组合,得到传输报文;第一发送模块41-7,用于向主机42发送传输报文;主机42包括第二接收模块42-1和第二发送模块42_2 ;第二接收模块42-1,用于接收传输报文;第二发送模块42-2,用于将传输报文发送给认证服务器43,并将待发送信息发送给消息认证码生成设备41 ;认证服务器43包括第三接收模块43-1、拆分模块43_2、第二存储模块43_3、第二获取模块43-4、窗口模块43-5、第三计算模块43-6、验证模块43_7、第三发送模块43_8 ;第三接收模块43-1,用于接收传输报文;拆分模块43-2,用于将第三接收模块43-1接收到的传输报文拆分为消息、第一数值和第一消息认证码;第二存储模块41-3,用于存储第二动态因子;
第二获取模块43-4,用于更新第二存储模块41-3中的第二动态因子并从中获取当前第二动态因子;窗口模块43-5,用于对根据第二获取模块43-4获取的当前动第二态因子计算得到多个动态因子,并进行存储;第三计算模块43-6,用于对窗口模块43-5中的各个动态因子做单向变换,得到一系列第二数值;验证模块43-7,用于用窗口模块53-6中的第二动态因子和与其对应的第二数值对所述拆分模块43-2的拆分结果进行验证;具体地,验证模块43-7包括第一比较单元43-71,第一计算单元43-72,第二比较单元43-73 ;
第一比较单元43-71,用于比较验证窗口中的第二数值与第一数值是否相同;第一计算单元43-72,用于对消息和当前第二动态因子计算得到第二消息认证码;第二比较单元43-73,用于比较第二消息认证码和第一消息认证码是否相同;第三发送模块43-8,用于向主机发送所述消息完整的信息和所述消息不完整的信息;具体地,本实施例中,消息认证码生成设备的实现方式为以计数值为第一动态因子的A型设备;A型设备是一次性的消息认证码生成设备。该设备为DIE形态,便于与其他模块集成封装;以低功耗的单片机芯片为硬件平台,通过计数器生成有序非重复序列;固件、设备标识以及密钥等信息一次性写入,写入后熔丝以防止被攻击者篡改;内部信息和固件保存于易失的随机存储器,一旦断电即销毁所有数据,减少捕获风险。A型设备适用于通信数据量小、成本控制要求严格、使用环境风险较高的感知层节点。实施例5本发明的实施例5根据实施例2中的方法提供一种验证信息完整性的系统,如图5所示,包括消息认证码生成设备51、主机52和认证服务器53 ;消息认证码生成设备51包括第一存储模块51-1、第一接收模块51-2、第一获取模块51-3、第一计算模块51-4、第二计算模块51-5、第一发送模块51_6 ;第一存储模块51-1,用于存储第一动态因子;第一接收模块51-2,用于接收主机52发送的待发送消息;第一获取模块51-3,用于更新第一存储模块51-1中的第一动态因子并从中并获取当前第一动态因子;第一计算模块51-4,用于对当前第一动态因子做单向变换,得到第一数值;第二计算模块51-5,用于根据密钥对设备标识、待发送消息和当前第一动态因子计算得到第一消息认证码;第一发送模块51-6,用于向主机发送第一消息认证码和第一数值;主机52包括第二接收模块52-1、第二获取模块52_2、组合模块52_3和第二发送模块52-4 ;第二接收模块52-1,用于接收第一消息认证码和第一数值;第二获取模块52-2,用于从消息认证码生成设备51中获取设备标识;
组合模块52-3,用于将设备标识、待发送消息、第一数值和第一消息认证码组合,得到传输报文;第二发送模块52-4,用于将传输报文发送给认证服务器,并将待发送信息发送给消息认证码生成设备51 ;认证服务器53包括第三接收模块53-1、拆分模块53_2、检索模块53_3、第二存储模块53-4、第三获取模块53-5、窗口模块53-6、第三计算模块53_7、验证模块53_8、第三发送模块53-9 ;第三接收模块53-1,用于接收传输报文;拆分模块53-2,用于将第三接收模块53-1接收到的传输报文拆分为设备标识、消
息、第一数值和第一消息认证码;检索模块53-3,用于根据设备标识检索对应的密钥;第二存储模块51-4,用于存储第二动态因子;第三获取模块53-5,用于更新第二存储模块51-4中的第二动态因子并从中获取当前第二动态因子;窗口模块53-6,用于对根据第三获取模块53-5获取的当前动第二态因子计算得到多个动态因子,并进行存储;第三计算模块53-7,用于对窗口模块53-6中的各个动态因子做单向变换,得到一系列第二数值;验证模块53-8,用于用窗口模块53-6中的第二动态因子和与其对应的第二数值对所述拆分模块的拆分结果进行验证;具体地,验证模块53-8包括第一比较单元53-81,第一计算单元53-82,第二比较单元53-83 ;第一比较单元53-81,用于比较第三计算模块53_7得到的第二数值与第一数值是否相同;第一计算单元53-82,用于对设备标识、消息和当前第二动态因子计算得到第二消息认证码;第二比较单元53-83,用于比较第二消息认证码和第一消息认证码是否相同;第三发送模块53-9,用于向主机发送消息完整的信息和消息不完整的信息;具体地,本实施例中,消息认证码生成设备的实现方式为以当前时刻为第一动态因子的B型设备出型设备是具备时间戳特性的消息认证码生成设备。该设备为存储卡(TF卡)规格,通过SDIO协议与上位机通信;以内置时钟的低功耗智能卡芯片为硬件平台,通过时钟脉冲生成有序非重复序列;内置固件在生产阶段烧写,设备ID、密钥等信息的写入权限受固件控制,获取授权后可以更新;固件及内部信息受智能卡芯片保护,具备“拆片即毁”的特性。B型设备适用于数据通信量较小、成本控制要求相对宽松、使用环境风险较低、安全要求较高的感知层节点。实施例6本发明的实施例6根据实施例3中的方法提供一种验证信息完整性的系统,如图6所示,包括消息认证码生成设备61、主机62和认证服务器63 ;消息认证码生成设备61包括第一存储模块61-1、第一接收模块61-2、第一获取模块61-3、第一计算模块61-4、第二计算模块61-5、第一发送模块61_6 ;第一存储模块61-1,用于存储第一动态因子;第一接收模块61-2,用于接收主机62发送的待发送消息;第一获取模块61-3,用于更新第一存储模块61-1中的第一动态因子并从中并获取当前第一动态因子;具体地,第一获取模块61-3包括第一获取单元61-31、第二获取单元61-32和第一计算单元61-33 ;第一获取单元61-31,用于获取消息认证码生成设备的计数值;第二获取单元61-32,用于获取消息认证码生成设备的内置时钟当前时刻; 第一计算单元61-33,用于对计数值和内置时钟当前时刻进行计算,得到第一动态因子;第一计算模块61-4,用于对当前第一动态因子做单向变换,得到第一数值;第二计算模块61-5,用于对设备标识、内置时钟当前时刻、待发送消息和当前第一动态因子计算得到第一消息认证码;第一发送模块61-6,用于向主机62发送第一消息认证码和第一数值;主机62包括第二接收模块62-1、第二获取模块62_2、生成模块62_3、组合模块
62-4和第二发送模块62-5 ;第二接收模块62-1,用于接收第一消息认证码和第一数值;第二获取模块62-2,用于获取设备标识、计数值和当前时刻;生成模块62-3,用于根据计数值和当前时刻生成第一数值;组合模块62-4,用于将设备标识、当前时刻、待发送消息、第一数值和第一消息认证码组合,得到传输报文;第二发送模块62-5,用于将传输报文发送给认证服务器63,并将待发送信息发送给消息认证码生成设备61 ;认证服务器63包括第三接收模块63-1、拆分模块63_2、检索模块63_3、第二存储模块63-4、第三获取模块63-5、窗口模块63-6、第三计算模块63_7、验证模块63_8、检查模块63-9和第三发送模块63-10 ;第三接收模块63-1,用于接收传输报文;拆分模块63-2,用于将第三接收模块63-1接收到的传输报文拆分为设备标识、时亥IJ、消息、第一数值和第一消息认证码;检索模块63-3,用于根据设备标识检索对应的第二动态因子参数;第二存储模块61-4,用于存储第二动态因子;第三获取模块63-5,用于更新第二存储模块61-4中的第二动态因子并从中获取当前第二动态因子;具体地,第三获取模块63-5包括第三获取单元63-51、第四获取单元63-52和第二计算单元63-53 ;第三获取单元63-51,用于获取认证服务器的计数值;第四获取单元63-52,用于获取认证服务器的内置时钟当前时刻;第二计算单元63-53,用于对计数值和内置时钟当前时刻进行计算,得到第二动态因子;窗口模块63-6,用于对根据第三获取模块63-51获取的计数值和第四获取单元
63-52获取的当前时刻生成得到多个动态因子,并进行存储;第三计算模块63-7,用于对验证窗口的各个动态因子做单向变换,得到一系列第
二数值;验证模块63-8,用于比较验证报文与第一消息认证码是否对应;具体地,比较模块63-8包括第三计算单元63-81、第四计算单元63-82和比较单兀 63_83 ;第三计算单元63-81,用于对拆分得到的第一消息认证码进行解密,得到第一摘 要;第四计算单元63-82,用于按照摘要算法对验证窗口中的各个动态因子、设备标识、时刻和消息进行计算,得到第二摘要;比较单元63-83,用于比较第二摘要和第一摘要是否相同;检查模块63-9,用于检查拆分得到的时刻的合法性;第三发送模块63-10,用于输出所述消息完整的信息和所述消息不完整的信息;具体地,本实施例中,消息认证码生成设备的实现方式为以计数值和时刻值的计算结果为第一动态因子的C型设备;C型设备是增强型的信息安全设备,用数字签名代替A/B型设备所使用的消息认证码。该设备以支持非对称密钥算法(如RSA)的智能卡芯片为硬件平台,具有较大的存储空间,能够生成非对称密钥对及存储数字证书。C型设备有助于实现物联网安全传输机制与基于数字证书和PKI的互联网安全体系的对接,适用于数据通信量较大、成本控制要求宽松、使用环境风险低的网络层或应用层节点。C型设备有USB Key、IC卡等多种形态,以适应不同的节点环境。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种验证信息完整性的方法,其特征在于,所述方法包括 步骤SI :消息认证码生成设备接收主机发送的待发送消息,更新并获取第一动态因子; 步骤S2 :所述消息认证码生成设备对所述第一动态因子做单向变换,得到第一数值; 步骤S3 :所述消息认证码生成设备更新所述第一动态因子,并获取当前第一动态因子; 步骤S4 :所述消息认证码生成设备对所述待发送消息和当前第一动态因子计算得到第一消息认证码,根据所述待发送消息、所述第一数值和所述第一消息认证码生成传输报文; 步骤S5 :所述消息认证码生成设备向所述主机发送所述传输报文; 步骤S6 :所述主机接收所述传输报文,将所述传输报文发送给认证服务器; 步骤S7 :所述认证服务器接收所述传输报文并对其拆分; 步骤S8 :所述认证服务器更新其内部存储的第二动态因子并获取当前第二动态因子,根据当前第二动态因子生成验证窗口; 步骤S9 :所述认证服务器依序对所述验证窗口的各个动态因子做单向变换,得到一系列第二数值; 步骤SlO :所述认证服务器用所述验证窗口中的第二动态因子和与其对应的第二数值对拆分结果进行验证,如验证通过,则给所述主机返回消息完整的信息;如验证失败,则给所述主机返回消息不完整的信息。
2.根据权利要求I所述的方法,其特征在于,所述第一动态因子与所述第二动态因子类型相同,具体为时间因子或事件因子或时间因子与事件因子计算得到的结果。
3.根据权利要求2所述的方法,其特征在于,当所述第一动态因子与所述第二动态因子为事件因子时,所述步骤S4具体包括所述消息认证码生成设备对所述待发送消息和当前第一动态因子进行加密计算,得到所述第一消息认证码,将所述待发送消息、所述第一数值和所述第一消息认证码组合,得到所述传输报文。
4.根据权利要求3所述的方法,其特征在于,所述步骤S7中所述认证服务器对所述传输报文拆分得到拆分后的第一数值、拆分后的消息、拆分后的第一消息认证码; 所述步骤SlO具体包括 步骤S10-1 :所述认证服务器依序将所述验证窗口中的所述第二数值与所述拆分后的第一数值比对,如果存在与所述拆分后的第一数值一致的第二数值,则将当前第二动态因子设置为与所述第一数值一致的第二数值所对应的动态因子;否则,给所述主机返回完整性验证失败的信息; 步骤S10-2 :所述认证服务器更新并获取当前第二动态因子; 步骤S10-3 :所述认证服务器对所述拆分后的消息和当前第二动态因子计算得到第二消息认证码; 步骤S10-4 :所述认证服务器比对所述第二消息认证码和所述拆分后的第一消息认证码;如果一致,则验证通过,给所述主机返回消息完整的信息;否则,给所述主机返回消息不完整的信息。
5.根据权利要求2所述的方法,其特征在于,当所述第一动态因子与所述第二动态因子为时间因子时,所述步骤S4-步骤S7替换为 步骤S4’ 所述消息认证码生成设备使用密钥对设备标识、所述待发送消息和当前第一动态因子计算得到所述第一消息认证码,并将所述第一消息认证码和第一数值发送给所述主机; 步骤S5’ 所述主机从所述消息认证码生成设备中获取所述设备标识将所述设备标识、所述待发送消息、接收到的所述第一数值和所述第一消息认证码组合,得到所述传输报文,将所述传输报文发送给所述认证服务器; 步骤S6’ 所述认证服务器接收所述传输报文并对其进行拆分,如果拆分成功,则得到所述设备标识、所述待发送消息、所述第一数值和所述第一消息认证码,执行步骤S7’ ;否则,向所述主机返回验证失败的响应; 步骤S7’ 所述认证服务器根据所述设备标识检索对应的密钥,如果检索到,则执行步骤S8 ;否则,向所述主机返回所述验证失败的响应。
6.根据权利要求5所述的方法,其特征在于,所述步骤SlO具体包括 步骤sio-r:所述认证服务器依序将所述验证窗口中的所述第二数值与所述拆分得到的第一数值比对,如果存在与所述拆分得到的第一数值一致的所述第二数值,则将当前第二动态因子设置为与所述第一数值一致的第二数值所对应的动态因子;否则,给所述主机返回完整性验证失败的信息; 步骤S10-2’ 所述认证服务器更新并获取当前第二动态因子; 步骤S10-3’ 所述认证服务器使用所述检索到的密钥对所述设备标识、所述拆分后消息和当前第二动态因子计算得到第二消息认证码; 步骤S10-4’ 所述认证服务器比对所述第二消息认证码和拆分得到的所述第一消息认证码;如果一致,则验证通过,给所述主机返回消息完整的信息;否则,给所述主机返回消息不完整的信息。
7.根据权利要求2所述的方法,其特征在于,根据所述时间因子与所述事件因子得到所述第一动态因子,所述步骤S4-步骤S7替换为 步骤S4’ ’ 所述消息认证码生成设备按照摘要算法对所述设备标识、内置时钟当前时刻、待发送消息和当前第一动态因子进行计算,得到第一摘要,对所述第一摘要进行加密,得到数字签名,将所述数字签名作为所述第一消息认证码,将所述第一消息认证码和第一数值发送给所述主机; 步骤S5’ ’ 所述主机从所述消息认证码生成设备中获取所述设备标识和当前时刻,将所述设备标识、当前时刻、所述待发送消息、接收到的所述第一数值和所述第一消息认证码组合,得到所述传输报文,将所述传输报文发送给所述认证服务器; 步骤S6’ ’ 所述认证服务器接收所述传输报文并对其拆分,如果拆分成功,则得到所述设备标识、时刻、消息、所述第一数值和所述第一消息认证码,执行步骤S7’ ’ ;否则,向所述主机返回验证失败的响应; 步骤S7’ ’ 所述认证服务器根据所述设备标识检索对应的第二动态因子和公钥,如果检索到,则执行步骤S8 ;否则,向所述主机返回所述验证失败的响应。
8.根据权利要求7所述的方法,其特征在于,所述步骤SlO具体包括 步骤S10-1’ ’ 所述认证服务器使用所述公钥对所述拆分后的第一消息认证码进行解密,得到所述第一摘要; 步骤S10-2’ ’ 所述认证服务器按所述照摘要算法依次对所述第二数值、所述设备标识、所述时刻、所述消息进行计算,得到第二摘要; 步骤S10-3’’ 所述认证服务器比较所述第二摘要和所述第一摘要,如果一致,给所述主机返回消息完整信息;否则,给所述主机返回消息不完整信息。
9.根据权利要求2、4、6任意一项所述的方法,其特征在于,所述传输报文组合方式是预先设定的,包括依序拼接、分段拼接。
10.根据权利要求9所述的方法,其特征在于,所述拆分传输报文的方式与所述传输报文的组合方式互逆。
11.根据权利要求4所述的方法,其特征在于,所述更新并获取所述第一动态因子的方法具体为所述消息认证码生成设备将当前保存的计数值自加预先设定的步长,以所述计数值作为所述第一动态因子。
12.根据权利要求11所述的方法,其特征在于,所述步骤S4中使用对称加密算法对所述待发送的消息和当前第一动态因子计算得到第一消息认证码。
13.根据权利要求11所述的方法,其特征在于,所述步骤S8中生成所述验证窗口具体为以所述认证服务器当前计数值为起点,根据预定的幅度值生成一系列动态因子,即生成所述验证窗口。
14.根据权利要求5所述的方法,其特征在于,所述更新并获取所述第一动态因子的方法具体为所述消息认证码生成设备获取内置时钟当前时刻,以所述时刻作为所述第一动态因子。
15.根据权利要求5所述的方法,其特征在于,所述更新并获取所述第一动态因子的方法具体为所述消息认证码生成设备根据内置时钟当前时刻以及预先设定的步长确定所述第一动态因子。
16.根据权利要求5所述的方法,其特征在于,所述步骤S4’中使用对称加密算法对所述设备标识、所述待发送消息和当前第一动态因子计算得到所述第一消息认证码。
17.根据权利要求14或15所述的方法,其特征在于,所述步骤S8中生成验证窗口具体为以所述认证服务器当前时刻为中点,根据所述预定的幅度值和所述预先设定的步长生成一系列动态因子,即生成所述验证窗口。
18.根据权利要求6所述的方法,其特征在于,所述步骤S8中还包括根据当前保存的最近验证成功时刻,从所述验证窗口中去掉所述最近验证成功时刻之前的部分。
19.根据权利要求18所述的方法,其特征在于,所述步骤SlO中,验证通过后还包括更新并保存所述最近验证成功时刻。
20.根据权利要求7所述的方法,其特征在于,所述更新并获取所述第一动态因子的方法具体为所述消息认证码生成设备将当前保存的计数值自加所述预先设定的步长,并获取内置时钟当前时刻,对计数值和当前时刻进行计算,以计算结果作为所述第一动态因子。
21.根据权利要求20所述的方法,其特征在于,所述生成验证窗口具体为以所述认证服务器当前计时值为中点,根据预定的幅度值和所述预先设定的步长生成一系列时刻;以所述认证服务器当前计数值为起点,根据预定的幅度值生成一系列计数值,对所述对应的时刻与所述对应的计数值进行计算,得到一系列动态因子,即生成所述验证窗口。
22.根据权利要求8所述的方法,其特征在于,步骤S10-1’’替换为 步骤S10-1’’ -I :所述认证服务器根据所述设备标识寻找对应的生成消息验证码的设备,如找到则使用所述设备对应公钥对所述拆分后的第一消息认证码进行解密,得到所述第一摘要,如找不到则给所述主机返回验证失败信息。
23.一种验证信息完整性的系统,其特征在于,包括消息认证码生成设备、主机和认证服务器; 所述消息认证码生成设备包括第一存储模块、第一接收模块、第一获取模块、第一计算模块、第二计算模块、组合模块、第一发送模块; 所述第一存储模块,用于存储第一动态因子; 所述第一接收模块,用于接收所述主机发送的待发送消息; 所述第一获取模块,用于更新所述第一存储模块中的所述第一动态因子并从中获取当前第一动态因子; 所述第一计算模块,用于对当前第一动态因子做单向变换,得到第一数值; 所述第二计算模块,用于对所述待发送消息和当前第一动态因子计算得到所述第一消息认证码; 所述生成模块,用于根据所述待发送消息、所述第一数值和所述第一消息认证码生成所述传输报文; 所述第一发送模块,用于向所述主机发送所述传输报文; 所述主机包括第二接收模块和第二发送模块; 所述第二接收模块,用于接收所述传输报文; 所述第二发送模块,用于将所述传输报文发送给所述认证服务器,并将所述待发送信息发送给所述消息认证码生成设备; 所述认证服务器包括第三接收模块、拆分模块、第二存储模块、第二获取模块、窗口模块、第三计算模块、验证模块、第三发送模块; 所述第三接收模块,用于接收所述传输报文; 所述拆分模块,用于对所述传输报文进行拆分; 所述第二存储模块,用于存储第二动态因子; 所述第二获取模块,用于更新所述第二存储模块中的第二动态因子并从中获取当前第二动态因子; 所述窗口模块,用于根据所述第二获取模块获取的当前第二动态因子计算得到多个动态因子,并进行存储; 所述第三计算模块,用于对所述验证窗口的所述各个动态因子做单向变换,得到所述一系列第二数值; 所述验证模块,用于用所述验证窗口中的第二动态因子和与其对应的第二数值对所述拆分模块的拆分结果进行验证; 所述第三发送模块,用于将所述验证模块的验证结果返回给主机。
24.根据权利要求23所述的系统,其特征在于,所述拆分模块拆分得到信息、第一数值和第一消息认证码,所述验证模块包括第一比较单元,第一计算单元,第二比较单元; 所述第一比较单元,用于比较所述第二数值与所述第一数值是否相同;所述第一计算单元,用于对所述消息和当前第二动态因子计算得到所述第二消息认证码; 所述第二比较单元,用于比较所述第二消息认证码和所述第一消息认证码是否相同。
25.根据权利要求23所述的系统,其特征在于,所述消息认证码生成设备中的所述组合模块也可以放在所述主机中,所述第一发送模块还用于将所述第一消息认证码和所述第一数值发送给所述主机,所述第二接收模块还用于接收所述第一发送模块发送的所述第一消息认证码和所述第一数值;所述主机还包括第三获取模块,用于从所述消息认证码生成设备中获取所述设备标识; 所述组合模块具体用于将所述待发送消息、所述第一数值、设备标识和所述第一消息认证码组合,得到所述传输报文。
26.根据权利要求23所述的系统,其特征在于,所述第二存储模块还用于存储最近验证成功时刻。
27.根据权利要求25所述的系统,其特征在于,所述认证服务器还包括检索模块,用于根据所述设备标识检索对应的密钥。
28.根据权利要求25所述的系统,其特征在于,所述验证模块包括第一比较单元,第一计算单元,第二比较单元; 所述第一比较单元,用于比较所述第二数值与所述第一数值是否相同; 所述第一计算单元,用于对所述设备标识、所述消息和当前第二动态因子计算得到所述第二消息认证码; 所述第二比较单元,用于比较所述第二消息认证码和所述第一消息认证码是否相同。
29.根据权利要求23所述的系统,其特征在于,所述第一获取模块包括第一获取单元、第二获取单元和第一计算单元; 所述第一获取单元,用于获取所述消息认证码生成设备的计数值; 所述第二获取单元,用于获取所述消息认证码生成设备的内置时钟当前时刻; 所述第一计算单元,用于对所述计数值和内置时钟当前时刻进行计算,得到所述第一动态因子。
30.根据权利要求29所述的系统,其特征在于,所述消息认证码生成设备中的所述组合模块也可以放在所述主机中,所述第一发送模块还用于将所述第一消息认证码和所述第一数值发送给所述主机,所述第二接收模块还用于接收所述第一发送模块发送的所述第一消息认证码和所述第一数值;所述主机还包括 第二获取模块,用于从所述消息认证码生成设备中获取所述设备标识、计数值和当前时刻; 生成模块,用于根据所述计数值和所述当前时刻生成所述第一数值; 所述组合模块具体用于将所述设备标识、当前时刻、消息、所述第一数值和所述第一消息认证码组合,得到所述传输报文。
31.根据权利要求30所述的系统,其特征在于,所述第三获取模块包括第三获取单元、第四获取单元和第二计算单元; 所述第三获取单元,用于获取所述认证服务器的计数值; 所述第四获取单元,用于获取所述认证服务器的内置时钟当前时刻;所述第二计算单元,用于对所述计数值和所述内置时钟当前时刻进行计算,得到第二动态因子; 所述窗口模块,具体用于根据所述第三获取单元获取的计数值和第四获取单元获取的当前时刻生成多个动态因子,并进行存储。
32.根据权利要求31所述的系统,其特征在于,所述验证模块包括第三计算单元、第四计算单元和比较单元; 所述第三计算单元,用于对所述拆分得到的第一消息认证码进行解密,得到第一摘要; 所述第四计算单元,用于按照摘要算法依次对所述验证窗口中的动态因子、所述设备标识、所述时刻和所述消息进行计算,得到第二摘要; 所述比较单元,用于比较所述第二摘要和所述第一摘要是否相同。
33.根据权利要求32所述的系统,其特征在于,所述认证服务器还包括检查模块,用于检查拆分得到的时刻的合法性。
全文摘要
本发明公开一种验证信息完整性的方法和系统,所述方法包括消息认证码生成设备接收待发送的消息,更新第一动态因子,对第一动态因子做单向变换得到第一数值,更新当前第一动态因子,计算得到第一消息认证码,生成传输报文;消息认证码生成设备通过主机将传输报文发送给认证服务器;认证服务器接收传输报文并拆分,更新第二动态因子,根据第二动态因子生成验证窗口,对验证窗口的各个动态因子做单向变换得到一系列第二数值,用验证窗口中的第二动态因子和第二数值对拆分结果进行验证。本发明中计算消息认证码所使用的动态因子不在传输网络中出现,能够有效避免被攻击者伪造,有效地抵御重放攻击。
文档编号H04L9/32GK102761560SQ201210272370
公开日2012年10月31日 申请日期2012年8月1日 优先权日2012年8月1日
发明者于华章, 陆舟 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1