一种数据认证码的生成方法技术

技术编号:17011617 阅读:18 留言:0更新日期:2018-01-11 08:21
本发明专利技术公开了一种数据认证码的生成方法,包括:设置一个固定的任意长度的二进制字符串为MAC函数的初始向量值MAC0;调用MAC函数,以当前存在的最后一个输出的MAC值MACi‑1作为初始向量,以没有生成数据认证码的当前数据Mi对应的字符串作为输入,输出相应的MAC值MACi,作为当前数据Mi的非公开验证数据认证码,并存储、发送该MAC值MACi到寄存服务器;根据公开验证周期策略,以最后一个生成的非公开数据认证码对应的MAC值MACi作为输入,输出当前数据Mi的公开可验证数据认证码,并存储、发送到寄存服务器。本发明专利技术生成的当前数据的数据认证码能够对之前所有数据进行认证,不仅降低数据丢失风险,增强数据认证的可靠性和安全性,而且提高数据认证效率。

【技术实现步骤摘要】
一种数据认证码的生成方法
本专利技术涉及数据认证技术,具体涉及一种数据认证码的生成方法。
技术介绍
随着网络技术和大数据概念的发展,保证数据完整性的数据认证技术变得更为关键,无论是在政府、金融、电力、医疗、航天、航运行业等任意行业,在通信过程中,保证数据安全,不被损坏,都是实现数据存储、提高系统可靠性的重中之重,一旦数据被破坏,将会带来不可弥补的损失。目前,采用的数据认证技术主要为消息认证码、数字签名方案等,只逐条对当前的增量数据进行认证,而无法保证之前所有数据的安全性,这种只对当前增量数据进行验证的方案,无法对之前的数据存进行认证,存在丢失、损坏风险;如果要对之前全部数据进行认证,需要对所有数据重新处理,数据处理量十分大,特别是对于具有公开性验证性的数字签名,由于其计算速度较为缓慢,如果逐条对增量数据进行认证,随着数据量的增加,整个认证过程将需要较长时间,不仅数据认证效率较低,且延迟明显,影响用户体验。
技术实现思路
本专利技术所要解决的技术问题是现有的逐条对当前增量数据进行认证生成的数据认证码,只反映当前增量数据的完整性,无法对之前所有数据的完整性进行认证,存在丢失、损坏风险,如果要对之前全部数据进行认证,需要对所有数据重新处理,数据处理量十分大,数据认证效率较低,延迟明显,影响用户体验,尤其是在要求认证码为公开时认证速度极为缓慢,以上缺陷更为明显。为了解决上述技术问题,本专利技术所采用的技术方案是提供一种数据认证码的生成方法,该方法配置在可与寄存服务器通信的用户端,包括以下步骤:为系统设置消息认证码函数初始向量值MAC0,初始向量值MAC0为一个固定的任意长度的二进制字符串;调用消息认证码函数,以当前存在的最后一个输出的MAC值MACi-1作为初始向量,以没有生成数据认证码的当前数据Mi对应的字符串作为输入,输出相应的MAC值MACi,作为当前数据Mi的非公开验证数据认证码,并存储、发送该MAC值MACi到寄存服务器;根据公开验证周期策略,以最后一个生成的非公开数据认证码对应的MAC值MACi作为输入,输出当前数据Mi的公开可验证数据认证码,并存储、发送到寄存服务器。在上述方法中,在根据公开验证周期策略,生成当前数据Mi的公开可验证数据认证码时,先对输入的最后一个输出的MAC值MACi的正确性进行检验,检验正确后,才开始进行生成当前数据Mi的公开可验证数据认证码的计算。在上述方法中,公开验证周期策略包括:对于每条数据都实时生成;仅对当前最后输出的MAC值MACi对应的数据生成;仅在系统空闲时对当前最后输出的MAC值MACi对应的数据生成;按照一定时间周期对当前最后输出的MAC值MACi对应的数据生成。在上述方法中,根据隐私保护需要,对新接收的数据加密,再对加密后的数据生成非公开验证数据认证码和公开可验证数据认证码;密钥由用户管理。在上述方法中,所述消息认证码函数为支持认证消息的异或运算且分级处理的算法。在上述方法中,所述消息认证码函数包括CMAC算法、HMAC算法。在上述方法中,所述公开可验证数据认证码为数字签名或多重签名等非对称签名算法。在上述方法中,当MAC函数为NISTSP800-38B中定义的CMAC消息认证码算法时,生成用户U与用户A之间数字验证码的具体包括以下步骤:步骤11、用户U与用户A确定一个签名周期N,开启通道UA,初始化所有参数和密钥,计算MAC初始向量值MAC0=0;步骤12、从用户A处收到一个新数据Mi,用户U加密得到其加密数据E为安全分组加密算法,kENC为加密密钥;步骤13、查找本地记录是否存在上一次MAC值MACi-1,如果存在,执行步骤14;否则,将向寄存服务器发送提取数据请求,寄存服务器将用户U最近一次的签名σq、与该签名对应的数据开始所有未经消息认证码函数处理的数据以及所有未经消息认证码函数处理的数据对应的MAC值发送给用户U,用户U对其检验正确后,执行步骤14;步骤14、用户U将上一个MAC值MACi-1和本次加密后的数据mi作为输入,计算本次MAC值MACi;其中,CMAC为RFC4493中AES-CMAC标准算法中的AES替换为任意安全分组加密算法E时的MAC算法,kMAC为消息认证码函数密钥;步骤15、判断是否是签名周期,若不是,向寄存服务器发送本次MAC值MACi以及加密后的数据mi;若是,用户U对最新的MAC值MACi签名,并将加密后数据mi、本次MAC值MACi及其签名σi发送给寄存服务器存储;步骤16、判断交易通道是否终止,如未终止,则回到步骤12;否则,用户U查找本地存储的最新数据,判断数据是否正确,如果无误,则用户U终止与寄存服务器的通信,如果数据丢失,则向寄存服务器发送提取数据请求,寄存服务器将将用户U最近一次的签名σq、与该签名对应的数据开始的所有数据以及所有数据对应的MAC值发给用户U,用户U检验正确,向寄存服务器发送对MACi的签名σi。在上述方法中,当MAC函数为RFC2104中定义的HMAC算法时,生成用户U与用户A之间数字验证码的具体包括以下步骤:步骤21、用户U与用户A确定一个签名周期N,生成所有密钥、固定初始向量IV、RFC2104标准中指定的常数ipad和opad,计算其中,kMAC为用户认证码生成密钥;步骤22、从A处收到一个新数据Mi,用户U加密得到加密数据E为安全分组加密算法;步骤23、查找本地记录是否存在MACi-1,如果存在,执行步骤24;否则,数据丢失,将向寄存服务器发送提取数据请求,寄存服务器将用户U最近一次的签σq、与该签名对应的数据起的所有数据以及所有数据对应的MAC值发送给用户U,用户U检验正确后,执行步骤24;步骤24、用户U将上一个MAC值MACi-1和本次加密后的数据mi作为输入,计算本次MAC值步骤25、判断是否是签名周期,若不是,向寄存服务器发送本次数据对应的MAC值MACi以及加密后的数据mi;若是,则用户U对最新的MAC值MACi签名,将本次加密后的数据mi,本次MAC值MACi及其签名σi发送给寄存服务器存储;步骤26、判断认证流程是否终止,如未终止,则回到步骤22;否则,用户U查找本地存储的最新数据,判断数据是否正确,如果无误则用户U与寄存服务器的本次雇佣关系终止,如果数据丢失,则向寄存服务器发送提取数据请求,寄存服务器将将用户U最近一次的签名σq、与该签名对应的数据开始的所有数据以及所有数据对应的MAC值发给用户U,用户U检验正确,向寄存服务器发送对MACi的签名σi。本专利技术利用生成的当前数据的数据认证码(公开数据认证码和非公开数据认证码)能够对之前所有数据进行认证,这样,只要验证最后一条数据的数据认证码的正确性,就能保证之前所有数据认证码的正确性,不需要对增量数据逐条进行公开验证,不仅降低数据丢失风险,增强数据认证的可靠性和安全性,而且提高数据认证效率;同时,本专利技术生成的数据认证码还具有公开可验证、防伪造和不可抵赖性,在产生纠纷时,能够提供事实依据,特别的,本专利技术可用于区块链离链数据的完整性保护。附图说明图1为本专利技术提供的一种数据认证码的生成方法的流程图;图2为应用本专利技术的一种区块链离链数据的安全存储系统的结构框图;图3为利用本专利技术生成用户U与用户A之间数字验证码的具体流程图;图4本文档来自技高网...
一种数据认证码的生成方法

【技术保护点】
一种数据认证码的生成方法,该方法配置在可与寄存服务器通信的用户端,其特征在于,包括以下步骤:为系统设置消息认证码函数初始向量MAC0,初始向量MAC0为一个固定的二进制字符串;调用消息认证码函数,以当前存在的最后一个输出的MAC值MACi‑1作为初始向量,以没有生成数据认证码的当前数据Mi对应的字符串作为输入,输出相应的MAC值MACi,作为当前数据Mi的非公开验证数据认证码,并存储、发送该MAC值MACi到寄存服务器;根据公开验证周期策略,以最后一个生成的非公开数据认证码对应的MAC值MACi作为输入,输出当前数据Mi的公开可验证数据认证码,并存储、发送到寄存服务器。

【技术特征摘要】
1.一种数据认证码的生成方法,该方法配置在可与寄存服务器通信的用户端,其特征在于,包括以下步骤:为系统设置消息认证码函数初始向量MAC0,初始向量MAC0为一个固定的二进制字符串;调用消息认证码函数,以当前存在的最后一个输出的MAC值MACi-1作为初始向量,以没有生成数据认证码的当前数据Mi对应的字符串作为输入,输出相应的MAC值MACi,作为当前数据Mi的非公开验证数据认证码,并存储、发送该MAC值MACi到寄存服务器;根据公开验证周期策略,以最后一个生成的非公开数据认证码对应的MAC值MACi作为输入,输出当前数据Mi的公开可验证数据认证码,并存储、发送到寄存服务器。2.如权利要求1所述的方法,其特征在于,在根据公开验证周期策略,生成当前数据Mi的公开可验证数据认证码时,先对输入的最后一个输出的MAC值MACi的正确性进行检验,检验正确后,才开始进行生成当前数据Mi的公开可验证数据认证码的计算。3.如权利要求1所述的方法,其特征在于,公开验证周期策略包括:对于每条数据都实时生成;仅对当前最后输出的MAC值MACi对应的数据生成;仅在系统空闲时对当前最后输出的MAC值MACi对应的数据生成;按照一定时间周期对当前最后输出的MAC值MACi对应的数据生成。4.如权利要求1所述的方法,其特征在于,根据隐私保护需要,对新接收的数据加密,再对加密后的数据生成非公开验证数据认证码和公开可验证数据认证码;密钥由用户管理。5.如权利要求1所述的方法,其特征在于,所述消息认证码函数为支持认证消息的异或运算且分级处理的算法。6.如权利要求5所述的方法,其特征在于,所述消息认证码函数包括CMAC算法、HMAC算法。7.如权利要求6所述的方法,其特征在于,所述公开可验证数据认证码为数字签名或多重签名等非对称签名算法。8.如权利要求7所述的方法,其特征在于,当MAC函数为NISTSP800-38B中定义的CMAC消息认证码算法时,生成用户U与用户A之间数字验证码的具体包括以下步骤:步骤11、用户U与用户A确定一个签名周期N,开启通道UA,初始化所有参数和密钥,计算MAC初始向量值MAC0=0;步骤12、从用户A处收到一个新数据Mi,用户U加密得到其加密数据E为安全分组加密算法,kENC为加密密钥;步骤13、查找本地记录是否存在上一次MAC值MACi-1,如果存在,执行步骤14;否则,将向寄存服务器发送提取数据请求,寄存服务器将用户U最近一次的签名σq、与该签名对应的数据开始所有未经消息认证码函数处理的数据以及所有未经消息认证码函数处理的数据对应的MAC值发送给用户U,...

【专利技术属性】
技术研发人员:王晶
申请(专利权)人:北京中星仝创科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1