产学研创新服务平台(全国)
专利申请类型:实用新型专利;专利名称:一种数据完整性验证方法及装置
专利类型:实用新型专利
专利申请号:CN202311480542.9
专利申请(专利权)人:青海师范大学
权利人地址:青海省西宁市城北区海湖大道延长段38号
专利发明(设计)人:发明人:罗鹏,班玛宝,加羊东周,贡去卓么,多杰才让
专利摘要:本申请公开了一种数据完整性验证方法及装置,该方法包括:第一设备接收来自于第二设备的待验证报文,待验证报文包括第一密文和第一认证标签值,其中,第一密文是第一明文对应的密文,第一认证标签值是第二设备根据第一明文生成的;第一设备解密第一密文得到第二明文;第一设备根据第二明文校验第一认证标签值,以确定待验证报文是否具有完整性。该方法能够提高设备对数据的完整性验证效率。
主权利要求:
1.一种数据完整性验证方法,其特征在于,包括:第一设备接收来自于第二设备的待验证报文,所述待验证报文包括第一密文和第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值是所述第二设备根据所述第一明文生成的;
所述第一设备解密所述第一密文得到第二明文;
所述第一设备根据所述第二明文校验所述第一认证标签值,以确定所述待验证报文是否具有完整性;
所述第一设备根据所述第二明文校验所述第一认证标签值,包括:所述第一设备根据认证标签值的长度从所述待验证报文中获得第三认证标签值,所述认证标签值的长度是所述第一认证标签值的长度;
所述第一设备解密所述第三认证标签值获得第二分组累积值;
所述第一设备根据所述第二明文确定T个数据长度为分组长度的分组明文;
所述第一设备通过累积值算法确定所述T个分组明文对应的第一累积值;
所述第一设备根据所述第二分组累积值和所述第一累积值确定第二序列,所述第二序列指示所述第二明文的最后一个分组明文所欠缺的数据长度;
所述第一设备在所述第二序列满足设定规则时确定所述待验证报文具有完整性。
2.如权利要求1所述的方法,其特征在于,所述第一设备根据所述第二明文校验所述第一认证标签值,还可以通过以下方式实现:所述第一设备根据所述第二明文通过第一规则确定第二认证标签值,其中,所述第一认证标签值是所述第二设备根据所述第一明文通过所述第一规则生成的;
所述第一设备根据所述第一认证标签值和所述第二认证标签值的比较结果确定所述待验证报文是否具有完整性;其中,若所述比较结果为所述第一认证标签值与所述第二认证标签值相同,则确定所述待验证报文具有完整性;若所述比较结果为所述第一认证标签值与所述第二认证标签值不同,则确定所述待验证报文不具有完整性;
所述第一设备根据所述第二明文通过第一规则确定第二认证标签值,包括:所述第一设备根据所述第二明文确定T个数据长度为分组长度的分组明文;
所述第一设备通过累积值算法确定所述T个分组明文对应的第一累积值;
所述第一设备根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第二认证标签值,所述第一序列与所述第二明文的最后一个分组包含的明文长度和所述分组长度有关。
3.如权利要求2所述的方法,其特征在于,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。
4.如权利要求2所述的方法,其特征在于,所述第一累积值与所述T个分组明文满足以下关系式:YT=(f(x)YT‑1)⊕PT‑1;
其中,f(x)表示以x为变量的函数,PT‑1表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT表示所述第一累积值,YT‑1表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。
5.如权利要求4所述的方法,其特征在于,所述第二认证标签值为累积值密文包含的序列;
所述累积值密文满足以下关系式:
Z=F1(YT+1);
其中,F1表示加密算法;
所述YT+1表示第一分组累积值,满足以下关系式:YT+1=YT⊕L;
其中,YT是所述第一累积值,L为所述第一序列。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:所述第一设备根据所述第二序列确定所述第二明文的最后一个分组包含的明文长度;
所述第一设备根据所述明文长度从所述第二明文中确定初始报文。
7.一种数据完整性验证方法,其特征在于,包括:第二设备根据第一明文通过第一规则生成第一认证标签值;
所述第二设备向第一设备发送待验证报文,所述待验证报文包括第一密文和所述第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值用于确定所述待验证报文是否具有完整性;
所述第二设备根据第一明文通过第一规则生成第一认证标签值,包括:所述第二设备根据所述第一明文确定T个数据长度为分组长度的分组明文;
所述第二设备通过累积值算法确定所述T个分组明文对应的第一累积值;
所述第二设备根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第一认证标签值,所述第一序列与所述第一明文的最后一个分组包含的明文长度和所述分组长度有关,所述第一认证标签值用于和第二认证标签值确定所述待验证报文是否具有完整性。
8.如权利要求7所述的方法,其特征在于,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。
9.如权利要求7所述的方法,其特征在于,所述第一累积值与所述T个分组明文满足以下关系式:YT’=(f(x)’YT‑1’)⊕PT‑1’;
其中,f(x)’表示以x为变量的函数,PT‑1’表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT’表示所述第一累积值,YT‑1’表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。
10.如权利要求9所述的方法,其特征在于,所述第一认证标签值为累积值密文包含的序列;
所述累积值密文满足以下关系式:
Z’=F1(YT+1’);
其中,F1表示加密算法;
所述YT+1’表示第一分组累积值,满足以下关系式:YT+1’=YT’⊕L;
其中,YT’是所述第一累积值,L为所述第一序列。
11.一种数据完整性验证装置,其特征在于,包括:获取模块,用于接收来自于第二设备的待验证报文,所述待验证报文包括第一密文和第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值是所述第二设备根据所述第一明文生成的;
处理模块,用于解密所述第一密文得到第二明文;
所述处理模块,还用于根据所述第二明文校验所述第一认证标签值,以确定所述待验证报文是否具有完整性;
所述处理模块具体用于:
根据认证标签值的长度从所述待验证报文中获得第三认证标签值,所述认证标签值的长度是所述第一认证标签值的数据长度;
解密所述第三认证标签值获得第二分组累积值;
根据所述第二明文确定T个数据长度为分组长度的分组明文;
通过累积值算法确定所述T个分组明文对应的第一累积值;
根据所述第二分组累积值和所述第一累积值确定第二序列,所述第二序列指示所述第二明文的最后一个分组明文所欠缺的数据长度;
在所述第二序列满足设定规则时确定所述待验证报文具有完整性。
12.如权利要求11所述的装置,其特征在于,所述根据所述第二明文校验所述第一认证标签值,还可以通过以下方式实现,所述处理模块具体用于:根据所述第二明文通过第一规则确定第二认证标签值,其中,所述第一认证标签值是所述第二设备根据所述第一明文通过所述第一规则生成的;
根据所述第一认证标签值和所述第二认证标签值的比较结果确定所述待验证报文是否具有完整性;其中,若所述比较结果为所述第一认证标签值与所述第二认证标签值相同,则确定所述待验证报文具有完整性;若所述比较结果为所述第一认证标签值与所述第二认证标签值不同,则确定所述待验证报文不具有完整性;
根据所述第二明文通过第一规则确定第二认证标签值,所述处理模块具体用于:根据所述第二明文确定T个数据长度为分组长度的分组明文;
通过累积值算法确定所述T个分组明文对应的第一累积值;
根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第二认证标签值,所述第一序列与所述第二明文的最后一个分组包含的明文长度和所述分组长度有关。
13.如权利要求12所述的装置,其特征在于,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。
14.如权利要求12所述的装置,其特征在于,所述第一累积值与所述T个分组明文满足以下关系式:YT=(f(x)YT‑1)⊕PT‑1;
其中,f(x)表示以x为变量的函数,PT‑1表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT表示所述第一累积值,YT‑1表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。
15.如权利要求14所述的装置,其特征在于,所述第二认证标签值为累积值密文包含的序列;
所述累积值密文满足以下关系式:
Z=F1(YT+1);
其中,F1表示加密算法;
所述YT+1表示第一分组累积值,满足以下关系式:YT+1=YT⊕L;
其中,YT是所述第一累积值,L为所述第一序列。
16.如权利要求11所述的装置,其特征在于,所述处理模块还用于:根据所述第二序列确定所述第二明文的最后一个分组包含的明文长度;
根据所述明文长度从所述第二明文中确定初始报文。
17.一种数据完整性验证装置,其特征在于,包括:处理模块,用于根据第一明文通过第一规则生成第一认证标签值;
所述处理模块,还用于向第一设备发送待验证报文,所述待验证报文包括第一密文和所述第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值用于确定所述待验证报文是否具有完整性;
所述处理模块具体用于:
根据所述第一明文确定T个数据长度为分组长度的分组明文;
通过累积值算法确定所述T个分组明文对应的第一累积值;
根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第一认证标签值,所述第一序列与所述第一明文的最后一个分组包含的明文长度和所述分组长度有关,所述第一认证标签值用于和第二认证标签值确定所述待验证报文是否具有完整性。
18.如权利要求17所述的装置,其特征在于,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。
19.如权利要求17所述的装置,其特征在于,所述第一累积值与所述T个分组明文满足以下关系式:YT’=(f(x)’YT‑1’)⊕PT‑1’;
其中,f(x)’表示以x为变量的函数,PT‑1’表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT’表示所述第一累积值,YT‑1’表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。
20.如权利要求19所述的装置,其特征在于,所述第一认证标签值为累积值密文包含的序列;
所述累积值密文满足以下关系式:
Z’=F1(YT+1’);
其中,F1表示加密算法;
所述YT+1’表示第一分组累积值,满足以下关系式:YT+1’=YT’⊕L;
其中,YT’是所述第一累积值,L为所述第一序列。
21.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~10中任一所述方法的步骤。
22.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1~10中任一所述方法的步骤。 说明书 : 一种数据完整性验证方法及装置技术领域[0001] 本申请实施例涉及信息安全领域,尤其涉及一种数据完整性验证方法及装置。背景技术[0002] 在信息安全领域,为防止密文被篡改,可能需要密码系统中拥有完整性校验功能。目前,实现完整性校验的途径有多种,例如,实现完整性校验的途径由以下三类方案:第一类方案:采用哈希函数(hash)对整个报文计算摘要,第二类方案:采用一种具有认证功能的专门的分组密码算法,第三类方案:采用一种具有认证功能的分组密码工作模式。上述的三类方案中,方案一采用hash函数的缺点是效率低,且程序代码量大。方案二和方案三采用专门的具有认证功能的分组算法或模式,比如分组密码的CCM(counterwithCBC‑MAC)和OCB(offsetcodebook,OCB)模式。而电子密码本模式(electroniccodebock,ECB)、密文分组链接模式(cipherblockchaining,CBC)或计数器模式(counter,CTR)等程序员们熟悉的常见模式不具有认证功能。[0003] 因此,目前加密设备在使用分组密码算法对数据进行加密时,缺乏对加密后的数据进行完整性验证,有待改进。发明内容[0004] 本申请实施例提供一种数据完整性验证方法及装置,用以使加密设备在使用分组密码算法对报文数据进行加密时,能够生成用于验证报文数据完整性的累积数据,使解密设备获得在解密报文数据后可根据累积数据验证报文数据的完整性,可提高设备对数据的完整性验证效率。[0005] 第一方面,本申请实施例提供的一种数据完整性验证方法,包括:[0006] 第一设备接收来自于第二设备的待验证报文,所述待验证报文包括第一密文和第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值是所述第二设备根据所述第一明文生成的;所述第一设备解密所述第一密文得到第二明文;所述第一设备根据所述第二明文校验所述第一认证标签值,以确定所述待验证报文是否具有完整性。[0007] 根据该方法,第一设备可接收来自于第二设备的待验证明文,待验证明文中包括第一密文和第一认证标签值。所述第一设备解密第一密文后确定的第二明文用于校验第一认证标签值,验证结果用于确定待验证明文是否可信或者用于确定待验证报文是否具有完整性,提高设备对数据的完整性验证效率。[0008] 在一种可能的设计中,所述第一设备根据所述第二明文校验所述第一认证标签值,包括:所述第一设备根据所述第二明文通过第一规则确定第二认证标签值,其中,所述第一认证标签值是所述第二设备根据所述第一明文通过所述第一规则生成的;所述第一设备根据所述第一认证标签值和所述第二认证标签值的比较结果确定所述待验证报文是否具有完整性。[0009] 根据该设计,第一设备可通过第二明文进行累积运算、乘法、异或和加密运算,得到累积值密文,根据累积值密文和所述第一认证标签值的长度确定第二认证标签值,提高第一设备获得第二认证标签值的效率。[0010] 在一种可能的设计中,所述第一设备根据所述第二明文通过第一规则确定第二认证标签值,包括:所述第一设备根据所述第二明文确定T个数据长度为分组长度的分组明文;所述第一设备通过累积值算法确定所述T个分组明文对应的第一累积值;所述第一设备根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第二认证标签值,所述第一序列与所述第二明文的最后一个分组包含的明文长度和所述分组长度有关。[0011] 根据该设计,第一设备可根据第二明文进行乘法和异或运算及加密生成第一累积值,可提高获得第一累积值的准确性。[0012] 在一种可能的设计中,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。[0013] 根据该设计,第一认证标签值和所述第二认证标签值的长度可以经由协商确定,例如均为分组长度。[0014] 在一种可能的设计中,所述第一累积值与所述T个分组明文满足以下关系式:YT=(f(x)YT‑1)⊕PT‑1;其中,f(x)表示以x为变量的函数,PT‑1表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT表示所述第一累积值,YT‑1表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。[0015] 根据该设计,第一设备可将分组明文通过异或累积运算,将异或累积运算的结果与一个函数相乘,该函数的选取可根据累积运算的需求确定。该函数与异或累积运算相乘得到第一累积值,第一累积值用于确定认证标签值,可调整累积运算过程的灵活性,提高确定认证标签值的效率。[0016] 在一种可能的设计中,所述第二认证标签值为累积值密文包含的序列;所述累积值密文满足以下关系式:Z=F1(YT+1);其中,F1表示加密算法;所述YT+1表示第一分组累积值,满足以下关系式:YT+1=YT⊕L;其中,YT是所述第一累积值,L为所述第一序列。[0017] 根据该设计,第一设备可通过累计算法确定累积值密文,并根据认证标签值的长度从累积值密文中确定第二认证标签值。[0018] 在一种可能的设计中,所述第一设备根据所述第二明文校验所述第一认证标签值,包括:所述第一设备根据认证标签值的长度从所述待验证报文中获得第三认证标签值,所述认证标签值的长度是所述第一认证标签值的长度;所述第一设备解密所述第三认证标签值获得第二分组累积值;所述第一设备根据所述第二明文确定T个数据长度为分组长度的分组明文;所述第一设备通过累积值算法确定所述T个分组明文对应的第一累积值;所述第一设备根据所述第二分组累积值和所述第一累积值确定第二序列;所述第一设备在所述第二序列满足设定规则时确定所述待验证报文具有完整性。[0019] 根据该设计,第一设备可根据第一明文进行乘法和异或运算及加密生成累积值密文,可提高获得累积值密文的准确性。其中,f(x)的选取可根据计算需要确定,比如若需要简化计算过程,提高计算效率,可选取f(x)为简单函数,适合有限域上快速计算,比如f(x)‑1=x或者f(x)=x 。若需要获得较长数据长度的累积值密文,需要累积值较为随机,可选取f(x)为项数较多的多项式函数。[0020] 在一种可能的设计中,所述方法还包括:所述第一设备根据所述第二序列确定所述第二明文的最后一个分组包含的明文长度;所述第一设备根据所述明文长度从所述第二明文中确定初始报文。[0021] 根据该设计,第二序列为满足第一规则的序列,例如,第二序列包括多个字节,每个字节可用于指示分组长度与第二明文的最后一个分组包含的明文长度的差,该差值即填充序列的长度,因此第一设备可以根据该差值确定填充序列的长度,从而可以从第二明文中删除填充比特以获得初始报文。[0022] 第二方面,本申请实施例还提供的一种数据完整性验证方法,包括:[0023] 第二设备根据第一明文通过第一规则生成第一认证标签值;所述第二设备向第一设备发送待验证报文,所述待验证报文包括第一密文和所述第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值用于确定所述待验证报文是否具有完整性。[0024] 第二方面及第二方面各个可能的设计的有益效果可以参照第一方面及相应的可能的设计中对于有益效果的描述,不再赘述。[0025] 在一种可能的设计中,所述第二设备根据第一明文通过第一规则生成第一认证标签值,包括:所述第二设备根据所述第一明文确定T个数据长度为分组长度的分组明文;所述第二设备通过累积值算法确定所述T个分组明文对应的第一累积值;所述第二设备根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第一认证标签值,所述第一序列与所述第一明文的最后一个分组包含的明文长度和所述分组长度有关,所述第一认证标签值用于和第二认证标签值确定所述待验证报文是否具有完整性。[0026] 在一种可能的设计中,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。[0027] 在一种可能的设计中,所述第一累积值与所述T个分组明文满足以下关系式:YT’=(f(x)’YT‑1’)⊕PT‑1’;其中,f(x)’表示以x为变量的函数,PT‑1’表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT’表示所述第一累积值,YT‑1’表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。[0028] 在一种可能的设计中,所述第一认证标签值为累积值密文包含的序列;所述累积值密文满足以下关系式:Z’=F1(YT+1’);其中,F1表示加密算法;所述YT+1’表示第一分组累积值,满足以下关系式:YT+1’=YT’⊕L;其中,YT’是所述第一累积值,L为所述第一序列。[0029] 第三方面,本申请实施例还提供的一种数据完整性验证装置,包括获取模块和处理模块。其中:[0030] 获取模块,用于接收来自于第二设备的待验证报文,所述待验证报文包括第一密文和第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值是所述第二设备根据所述第一明文生成的;处理模块,用于解密所述第一密文得到第二明文;所述处理模块,还用于根据所述第二明文校验所述第一认证标签值,以确定所述待验证报文是否具有完整性。[0031] 在一种可能的设计中,所述处理模块具体用于:根据所述第二明文通过第一规则确定第二认证标签值,其中,所述第一认证标签值是所述第二设备根据所述第一明文通过所述第一规则生成的;根据所述第一认证标签值和所述第二认证标签值的比较结果确定所述待验证报文是否具有完整性。[0032] 在一种可能的设计中,所述处理模块具体用于:根据所述第二明文确定T个数据长度为分组长度的分组明文;通过累积值算法确定所述T个分组明文对应的第一累积值;根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第二认证标签值,所述第一序列与所述第二明文的最后一个分组包含的明文长度和所述分组长度有关。[0033] 在一种可能的设计中,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。[0034] 在一种可能的设计中,所述第一累积值与所述T个分组明文满足以下关系式:YT=(f(x)YT‑1)⊕PT‑1;其中,f(x)表示以x为变量的函数,PT‑1表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT表示所述第一累积值,YT‑1表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。[0035] 在一种可能的设计中,所述第二认证标签值为累积值密文包含的序列;所述累积值密文满足以下关系式:Z=F1(YT+1);其中,F1表示加密算法;所述YT+1表示第一分组累积值,满足以下关系式:YT+1=YT⊕L;其中,YT是所述第一累积值,L为所述第一序列。[0036] 在一种可能的设计中,所述处理模块具体用于:根据认证标签值的长度从所述待验证报文中获得第三认证标签值,所述认证标签值的长度是所述第一认证标签值的长度;解密所述第三认证标签值获得第二分组累积值;根据所述第二明文确定T个数据长度为分组长度的分组明文;通过累积值算法确定所述T个分组明文对应的第一累积值;根据所述第二分组累积值和所述第一累积值确定第二序列;在所述第二序列满足设定规则时确定所述待验证报文具有完整性。[0037] 在一种可能的设计中,所述处理模块还用于:根据所述第二序列确定所述第二明文的最后一个分组包含的明文长度;根据所述明文长度从所述第二明文中确定初始报文。[0038] 第四方面,本申请实施例还提供的一种数据完整性验证装置,包括处理模块。其中:[0039] 处理模块,用于根据第一明文通过第一规则生成第一认证标签值;所述处理模块,还用于向第一设备发送待验证报文,所述待验证报文包括第一密文和所述第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值用于确定所述待验证报文是否具有完整性。[0040] 在一种可能的设计中,所述处理模块具体用于:根据所述第一明文确定T个数据长度为分组长度的分组明文;通过累积值算法确定所述T个分组明文对应的第一累积值;根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第一认证标签值,所述第一序列与所述第一明文的最后一个分组包含的明文长度和所述分组长度有关,所述第一认证标签值用于和第二认证标签值确定所述待验证报文是否具有完整性。[0041] 在一种可能的设计中,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。[0042] 在一种可能的设计中,所述第一累积值与所述T个分组明文满足以下关系式:YT’=(f(x)’YT‑1’)⊕PT‑1’;其中,f(x)’表示以x为变量的函数,PT‑1’表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT’表示所述第一累积值,YT‑1’表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。[0043] 在一种可能的设计中,所述第一认证标签值为累积值密文包含的序列;所述累积值密文满足以下关系式:Z’=F1(YT+1’);其中,F1表示加密算法;所述YT+1’表示第一分组累积值,满足以下关系式:YT+1’=YT’⊕L;其中,YT’是所述第一累积值,L为所述第一序列。[0044] 第五方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现第一方面、第二方面及其任意一种设计的方法。[0045] 第六方面,本申请实施例还提供了一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器实现第一方面、第二方面及其任意一种设计的方法。[0046] 第三方面至第六方面及其任意一种设计所带来的技术效果可参见第一方面和第二方面中对应的设计所带来的技术效果,此处不再赘述。附图说明[0047] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0048] 图1为本申请实施例提供的一种数据完整性验证方法的流程示意图;[0049] 图2为本申请实施例提供的一种装置结构示意图;[0050] 图3为本申请实施例提供的另一种装置结构示意图。具体实施方式[0051] 为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以按不同于此处的顺序执行所示出或描述的步骤。[0052] 本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。[0053] 本申请技术方案中,对数据的采集、传播、使用等,均符合国家相关法律法规要求。[0054] 在介绍本申请实施例所提供的一种数据完整性验证方法之前,为了便于理解,下面首先对本申请实施例的技术背景进行详细介绍。[0055] 在信息安全领域,为防止密文被篡改,可能需要密码系统中拥有完整性校验功能。目前,实现完整性校验的途径有多种,例如,实现完整性校验的途径由以下三类方案:方案一:采用哈希函数(hash)对整个报文计算摘要,方案二:采用一种具有认证功能的专门的分组密码算法,方案三:采用一种具有认证功能的分组密码工作模式。上述的三类方案中,方案一采用hash函数的缺点是效率低,且程序代码量大。方案二和方案三采用专门的具有认证功能的分组算法,比如分组密码的CCM(counterwith CBC‑MAC)和OCB(offsetcodebook,OCB)模式,而程序员们熟悉的常见模式,比如电子密码本模式(electroniccodebock,ECB)、密文分组链接模式(cipherblockchaining,CBC)、输出反馈模式(OutputFeedback,OFB)和计数器模式(counter,CTR)等,不具有认证功能。因此,目前设备在使用分组密码算法加密数据时,缺少在加密的同时生成认证标签用于认证数据的完整性,有待改进。[0056] 为了解决以上问题,本申请提供了一种数据完整性验证方法,能够使加密设备用分组密码算法对报文进行加密时,可根据初始数据生成分组报文,加密设备可根据分组报文进行累积运算及加密生成第一认证标签值,并加密分组报文得到分组密文,将分组密文和第一认证标签值确定报文密文,将报文密文发送至解密设备。解密设备可获取加密设备发送的报文密文中的分组密文作为待验证密文,根据解密得到的待验证明文进行累积运算及加密得到待验证的认证标签值,根据加密设备发送的认证标签值和解密设备自身生成的待验证的认证标签值确定待验证报文是否具有完整性,以及确定待验证明文是否可信,提高解密设备对报文的完整性验证效率。[0057] 图1示例性的示出了一种数据完整性验证方法的流程示意图。示例性的,该方法的执行主体是第一设备。其中,第一设备可以是解密设备,第二设备可以是加密设备。在本申请中,第一设备可和第二设备可根据加密模式事先约定相同的认证标签值的数据长度,比如第二设备使用ECB算法确定第一认证标签值的数据长度,生成一定长度的第一认证标签值,则第一设备可使用相同的ECB算法验证第一认证标签值。本申请中,长度和数据长度可以互相替换。[0058] 参考图1所示流程,以第一设备是执行主体为例,本申请实施例提供的方法可步骤包括:[0059] 步骤101,第一设备接收来自于第二设备的待验证报文,待验证报文包括第一密文和第一认证标签值。[0060] 步骤102,所述第一设备解密第一密文得到第二明文;[0061] 步骤103,所述第一设备根据所述第二明文校验所述第一认证标签值,以确定所述待验证报文是否具有完整性。[0062] 可选的,在步骤101之前,第二设备可生成第一密文,向第一设备发送第一密文。[0063] 可选的,下面首先说明第二设备生成待验证报文的过程。[0064] 可选的,第二设备可作为加密设备,第一设备可作为解密设备。第二设备和第一设备可约定使用相同的加密模式,可约定相同的认证标签值的数据长度。第二设备可和第一设备根据相同的认证标签值的数据长度分别生成第一认证标签值和第二认证标签值。第二设备可根据加密模式确定认证标签值的数据长度,根据第一明文获得第一认证标签值。[0065] 可选的,第二设备可获得第一明文。[0066] 可选的,第二设备和第一设备可事先约定加密模式,根据该加密模式实现约定相同的第一认证标签值的数据长度。任一加密模式均需要约定认证标签值的数据长度使第二设备和第一设备生成认证标签值。例如,认证标签值的数据长度可以是分组长度或者小于分组长度,不具体限定。[0067] 可选的,第二设备可和第一设备约定一种加密模式,并在该加密模式中,第二设备可采用比特填充第一明文,并根据填充后的明文获得第一密文,使得第一明文填充后的长度为分组长度的整数倍。第二设备可和第一设备约定其他加密模式,在其他加密模式中,第二设备可不填充第一明文,即不要求第一密文加密前的长度是分组长度的整数倍。[0068] 例如,第二设备确定分组长度N为128比特,第二设备获得第一明文,第一明文的数据长度为1328比特,1328比特并非128比特的整数倍。若第二设备确定加密式为需要对第一明文进行填充,即第二设备需要对1328比特填加80比特“0”后得到1408比特的数据,第二设备可确定第一序列L为一格式化常数,L可以是根据填充比特长度80确定的格式化常数,例如按照16进制可表示为:0x50505050505050505050505050505050;又如,L按二进制展开成比特为010100000101000001010000……01010000。L可用于确定认证标签值,确定方式将在下文中进行说明。第二设备可将第一明文记为m,将m与数据“0”进行拼接,得到m|0…0,符号“|”表示将两个符号串连接成一串。第二设备可在第一明文的低位拼接数据0。或者,第二设备也可在第一明文之前拼接数据0。第二设备可将m|0…0分为11组分组明文,即T等于11。[0069] 又如,若第一明文的数据长度为1280比特,则第二设备可将第一明文分为10组分组明文。每组分组明文均为128比特。或者,第二设备可确定加密模式为不填充明文,则第二设备可根据加密模式,直接将1240比特的初始报文分为10组分组明文,最后一组分组明文为88比特。[0070] 也就是说,第一序列与第一明文的最后一个分组明文的长度和分组长度有关。其中,第一序列的长度同分组长度。另外,在需要通过比特填充第一明文的情况下,第一序列可用于指示填充比特的长度。例如,分组长度为128的情况下,第一序列可以包含16字节,每个字节携带相同的信息用于指示填充比特的长度。比如在上面的例子中,填充比特为80比特,填充的值为80比特的“0”,即第一序列L的每个字节等于01010000,16进制的“0x50”表示十进制的“80”,表示填充数据为长度为80比特的“0”。[0071] 因此,若约定的加密模式为需要在第一明文的最后一个分组的明文的长度小于分组长度时进行填充的模式,且第一明文的最后一个分组包含的明文长度小于分组长度,则取第一序列的长度等于分组长度减去第一明文的最后一个分组包含的明文长度,也就是,在第一明文的最后一个分组明文的长度小于分组长度的情况下,将最后一个分组的明文长度通过填充“0”,补为满组。填充“0”的比特数被记入到第一序列中的每个字节。[0072] 例如,第一明文的最后一个分组包含的明文长度为127比特,分组长度为128比特,需要填充1比特“0”,第一序列的长度为128比特,取第一序列为128比特的规则序列:0000000100000001……00000001。[0073] 可以理解,在初始报文的数据长度不等于分组长度的整数倍的情况下,第二设备是否对初始报文进行填充使之长度等于分组长度的整数倍,可以是第一设备与第二设备约定的,或者可以是与加密方式有关的,本申请不作为限定。此外,如果需要填充,则填充序列的长度也可以是第一设备与第二设备约定的,或者可以是与加密方式有关的,本申请不作为限定;此时若第二设备不填充初始报文,则密文不完整。[0074] 若约定的加密模式为在第一明文的最后一个分组的明文的长度小于分组长度时不需要填充的模式,且第一明文的最后一个分组包含的明文长度小于分组长度,仍取第一序列的长度等于分组长度。例如,分组长度为128的情况下,第一序列可以包含16字节,每个字节携带相同的信息用于指示该最后一个分组欠缺的数据长度。比如最后一个分组长度为48,欠缺的数据长度为80,即每个字节均用于指示80。[0075] 若第一明文的最后一个分组包含的明文长度等于分组长度,无论加密模式是否为需要填充的模式,取第一序列的长度等于分组长度。例如,分组长度为128的情况下,第一序列可以包含16字节的“0”。[0076] 可选的,第二设备可根据第一明文通过第一规则生成第一认证标签值。第一规则可包括对第一明文进行分组累积及加密。第二设备可将第一明文分为T个数据长度为分组长度的分组明文,将T个分组明文通过累积值算法确定第一累积值。第二设备可将T个分组明文通过累积值算法确定T个分组明文对应的第一累积值。确定第一累积值的过程如下:[0077] 第二设备可确定初始的累积值。第二设备可将T组分组明文分别记为第一组分组明文、第二组分组明文、……、第T组分组明文。初始的累积值可取全为零的字符串。第二设备可将初始的累积值经过移位处理后与第一组分组明文进行移位异或运算,得到第一组累积值。第二设备可根据第一组累积值经过移位处理后与第二组分组明文进行移位异或运算,得到第二组累积值。本申请中,经过移位处理可以理解为有限域上乘以f(x)。依次类推,第二设备可得到第T组累积值,将第T组累积值称为第一累积值。第二设备可将第T组累积值与第一序列进行异或运算,得到第(T+1)组累积值,第(T+1)组累积值称为第一分组累积值。第二设备可确定累积值存储单元,在累积值存储单元中存储累积值。[0078] 可选的,第二设备可将累积值和分组明文均记为系数为0或1、次数至多为N‑1的多N‑1项式。第二设备可将累积值转化为函数,累积值可记为Yi’,函数可记为Yi(x)’=cN‑1x +cN‑N‑22x +…+c1x+c0,i=0、1、2、……T‑1。例如,假设第二设备获得第一明文的分组明文,分组明文可表示为P0’、P1’、……、P9’,其中P9’的值可表示为128比特的数据:0x1000000010000000100000000000CCDD,其中C表示1100,D表示1101,则P9’的值为0x1000000012410000000100000000000(1100)(1100)(1101)(1101)。第二设备可将P9’表示为多项式:x92 60 15 14 13 12 11 10 9 8 7 6+……+x +……+x +……+(1*x +1*x +0*x +0*x )+(1*x +1*x +0*x+0*x)+(1*x+1*x5 4 3 2 1 0+0*x+1*x)+(1*x +1*x+0*x+1*x)。其中,若P9’的某位的值为0,则P9’中该位的值可转化a b c d a b c为0*x+0*x+0*x+0*x 。若P9’的某位的值为1,则P9’中该位的值可转化为0*x+0*x+0*x +d1*x,可以理解,其中的a、b、c、d可根据具体分组明文的值确定。同理,第二设备可将Yi’转化为函数Yi(x)’。[0079] 可选的,第二设备可确定分组长度,根据分组长度构建伽罗华域,可根据分组长度选择相应次数的一个不可约多项式,该不可约多项式即伽罗华域的模多项式。第二设备可根据该不可约多项式对累积值进行乘模运算,使得模运算后的累积值属于伽罗华域中的元素,若经过模运算后的累积值属于伽罗华域中的元素,则累积值能够作为一个数据分组被方便地加密或解密。伽罗华域上乘法和加法运算均可在计算机处理器中快速完成,而且若在某一比特上出现错误,经过伽罗华域上乘法后可使该错误扩散到分组累积值的多个比特位中。[0080] 可选的,第二设备可在有限域中将f(x)’与累积值对应的Yi’函数做乘法运算,若第二设备取为f(x)’=x,则x与累积值Yi’相乘,即将累积值Yi’左移。又如,第二设备可将f‑1 ‑1(x)’取为f(x)’=x ,则x 与累积值Yi’相乘,即将累积值Yi’右移。经过移位处理后的累积值可表示为Yi+1’。[0081] 可选的,第一累积值可满足以下关系式:[0082] Y1’=(f(x)’Y0’)⊕P0’;[0083] Y2’=(f(x)’Y1’)⊕P1’;[0084] ……;[0085] YT’=(f(x)’YT‑1’)⊕PT‑1’;[0086] 其中,P0’……PT‑1’分别表示第1组分组明文……第T组分组明文,T为自然数,Y0’、Y1’、……、YT’分别表示第二设备的初始的累积值、第一组累积值、……、第T组累积值,Y0’可为零字符串,f(x)’Yi’表示在有限域中做f(x)’与Yi’函数的乘法运算,f(x)’表示以x为变量的某函数,f(x)’在运算时Yi被看作以x为变量的多项式,⊕表示按位进行异或运算。[0087] 可选的,第二设备还可取f(x)’为变量x对应的函数。第二设备可取f(x)’为伽罗华域中的元素,即f(x)’的函数式中的最高次数小于128。比如,第二设备可取f(x)’=x,或者,3 2 2 2 3 127 126第二设备还可取f(x)’=x。也可取x+1、x、x+1、x+x+1、x+1、……或x +x +…+1。[0088] 例如,第二设备可选取f(x)’=x,可确定初始的累积值Y0’=0,确定P0’。第二设备可P0’转化为多项式P0(x)’。第二设备可将Y0’转化为函数,函数可记为Y0(x)’,Y0(x)’=0*a b dx0*x +0*x +……+0*x 。第二设备可在域中计算Y1’=(f(x)’Y0’)⊕P0’=(xY0(x)’)⊕P0127 126(x)’。第二设备可得到Y1’,可将Y1’转化为函数Y1(x)’,假设Y1(x)’为A127x +A126x +…+A1x+A0。第二设备可在域中计算Y1(x)’=(f(x)’Y0’)⊕P0’=(xY0(x)’)⊕P0(x)’。第二设备可在127 126域中计算Y2’=(f(x)’Y1’)⊕P1’=(xY1(x)’)⊕P1(x)’,即将Y1(x)’=A127x +A126x +…+128 127 2A1x+A0中的每一项乘以x,得到xY1(x)’=A127x +A126x +…+A1x+A0x。若A127=1,由于xY1(x)’的次数为128,为保证累积值仍在有限域内,即保证Y1(x)’的次数不大于127,第二设备128 9 8 7 5 4可选取q(x)为(x +x+x+x+x+x+1),对Y1(x)’进行模运算,模运算后的Y1(x)’可表示为Y1(x)128’,Y1(x)128’属于有限域。[0089] 可选的,当第二设备取f(x)=x或f(x)=x‑1时,计算累积值的过程较为简单,容易实现,获得累积值的效率较高。当f(x)取次数较高且项数较多的函数时,计算出累积值的安全性较高,可提高认证标签值的安全性,但计算累积值的过程需要对两个较大的多项式相乘以及模运算,导致获得累积值的效率较低。因此第二设备和第一设备双方可根据需要确定f(x)。[0090] 第二设备将根据Y1(x)128’继续进行分组明文进行乘法和累积运算,得到的累积值满足以下关系式:[0091] Y2(x)’=((xY1(x)128)’)⊕P2(x)’。[0092] 同理,第二设备可依次得到累积值Y1’、Y2’、……YT’。[0093] 可选的,第二设备可将第一累积值与第一序列作异或运算,根据异或结果得到第二设备的分组累积值YT+1’。第二设备可根据分组加密算法对分组累积值YT+1’进行加密得到第二设备的累积值密文。[0094] 例如,取f(x)=x,累积值密文可满足以下关系式:[0095] YT+1’=YT’⊕L;(公式1)[0096] Z’=ENCK(YT+1’);[0097] 其中,Z’表示累积值密文,ENCK(YT+1’)表示根据分组加密算法对分组累积值进行加密,L表示第一序列。[0098] 例如,数据长为1328比特,第二设备取T等于11,根据11个分组明文P0’、P1’、……P10’确定第11组累积值Y10’,将Y10’左乘得到xY10’,将xY10’与第一序列L进行异或运算得到第12组分组累积值Y11’,其中P0’、P1’、……P10’均为128比特的分组明文,L是128比特的格式化常数:0x50505050505050505050505050505050,指示分组明文P10’中0x50=80比特是填充的。第二设备可得到第12个分组累积值Y11’。第二设备可根据分组加密算法对分组累积值Y11’进行加密,得到加密结果ENCK(Y11’)作为累积值密文。进一步,第二设备可以根据认证标签值的数据长度,从累计值密文中确定满足该长度的第一认证标签值。[0099] 可选的,第二设备可将累积值密文中的分组长度或小于分组长度的数据作为第一认证标签值。比如,第二设备可对1328比特的第一明文与80比特的L进行填充得到1408比特,按128比特可将1408比特的明文分为11组,每组明文为128比特,第二设备可由11组分组明文得到累积值Y10’,将xY10’与L进行异或得到Y11’,可对Y11’进行加密得到累积值密文Z’,可从Z’中选取128比特的数据作为第一认证标签值。[0100] 又如,第二设备可对1328比特的第一明文分为11组,前10组分组明文为128比特,第11组分组明文为48比特。第二设备可由11组分组明文得到分组累积值Y10’,将xY10’与L进行异或得到Y11’,可对Y11’进行加密得到128比特的累积值密文Z’。第二设备可和第一设备根据加密模式确定认证标签值的长度为96比特,则第二设备可将128比特的Z’数据中选取前96比特的数据作为第一认证标签值。[0101] 可选的,分组加密算法可以是ECB、OFB、CFB、CBC或CTR模式。第二设备可根据分组加密算法及加密模式对第(T+1)组累积值进行加密。[0102] 可选的,第二设备可根据第一明文进行分组加密得到第一密文。[0103] 例如,第二设备可得到第一明文的分组明文P0’、P1’、……P10’。第二设备可使用ECB模式对分组明文P0’、P1’、……P10’进行分组加密,得到密文ECB(P0’)、……ECB(P10’)。[0104] 可选的,第二设备可根据密文和第一认证标签值组成报文密文。[0105] 下面对步骤101进行说明。[0106] 步骤101,第一设备接收来自于第二设备的待验证报文,所述待验证报文包括第一密文和第一认证标签值。[0107] 可选的,第一设备可获得第二设备发送的第一密文和第一认证标签值。[0108] 可选的,由于在第二设备向第一设备发送第一密文和第一认证标签值时,可能由于传输过程中的干扰导致第一设备接收的第一密文不等于第二设备发送的第一密文,因此将第一设备接收的报文作为待验证报文,将第一设备接收的第一密文作为待验证密文,根据待验证密文解密得到第二明文。[0109] 步骤102,第一设备解密第一密文得到第二明文。[0110] 可选的,第一设备可采用与第二设备相同的分组算法和加密模式解密T组第一密文进行解密,得到第二明文。比如,第一设备可获得11组第一密文ECB(P0)……ECB(P10)和第一认证标签值。第一设备可采用ECB模式对ECB(P0)……ECB(P10)进行解密,可得到解密后的第二明文P0、P1、……、P10。[0111] 可选的,第一设备对第二明文进行累积运算及加密生成第二认证标签值。第一设备可确定第一序列。第一序列可记为L。[0112] 可选的,第一设备可根据第二明文确定T个数据长度为分组长度的分组明文,通过累积值算法确定T个分组明文对应的第一累积值。第一设备可根据T个分组明文进行乘法和异或运算,得到T个第一累积值,在将第一累积值与第一序列作异或运算确定第一分组累积值。进一步,第一设备可对第一分组累积值加密运以获得累积值密文。[0113] 可选的,累积值密文Z满足以下关系式:[0114] Y1=(f(x)Y0)⊕P0;[0115] Y2=(f(x)Y1)⊕P1;[0116] Y3=(f(x)Y2)⊕P2;[0117] ……;[0118] YT=(f(x)YT‑1)⊕PT‑1;[0119] YT+1=YT⊕L;[0120] Z=F1(YT+1)。[0121] 其中,Pi表示第i组第二明文,i=0、1、2、……T‑1,T为自然数,Y0为零字符串,Y1表示根据第1个分组明文确定的累积值,Y2表示根据第1个分组明文至第2个分组明文确定的累积值,依次可知,YT‑1表示根据T个分组明文中的第1个分组明文至第T个分组明文确定的第二累积值,f(x)Yi表示在有限域中做f(x)与Yi函数的乘法运算,f(x)表示变量x对应的任一函数,⊕表示按位进行异或运算,L即第一序列。Z表示累积值密文,F1表示加密算法,例如可以采用分组加密算法。比如,F1(YT+1)=ENCK(YT+1),此时表示根据分组加密算法对第一分组累积值YT+1进行加密。[0122] 例如,第一设备可选取f(x)=x,可确定Y0=0,确定P0。第一设备可将P0转化为多项a b式P0(x)。第一设备可将Y0转化为函数Y0,函数Y0可记为Y0(x),Y0(x)=0*x0*x+0*x+……+0*dx。第一设备可在域中计算Y1=(f(x)Y0)⊕P0=(xY0(x))⊕P0(x)。第一设备可得到Y1,可将Y1127 126转化为函数Y1,函数Y1可记为Y1(x),假设Y1(x)为A127x +A126x +…+A1x+A0。第一设备可在域中计算Y1(x)=(f(x)Y0)⊕P0=(xY0(x))⊕P0(x)。第一设备可在域中计算Y2=(f(x)Y1)⊕127 126P1=(xY1(x))⊕P1(x),即将Y1(x)=A127x +A126x +…+A1x+A0中的每一项左乘x,得到xY1128 127 2(x)等于A127x +A126x +…+A1x+A0x。若A127=1,由于xY1(x)的最高次项为128,由xY1(x)⊕P1(x)得到的Y2(x)的最高次项等于128,为保证由Y2(x)得到的累积值仍在有限域内,第一设128 9 8 7 5 4备可选取q(x)为(x +x +x+x +x+x +1),根据q(x)进行模运算后得到Y2(x)128,Y2(x)128属于有限域。同理,Y3(x)可以满足以下关系式:[0123] Y3(x)=((xY2(x)128))⊕P2(x)。[0124] 同理,第一设备可依次得到累积值Y1、Y2、……YT。[0125] 可选的,比如共有10个明文分组时,累积值密文Z可满足以下关系式:[0126] Y11=Y10⊕L;(公式2)[0127] Z=F1(Y11);[0128] 其中,累积值密文用于产生第二认证标签值。F1表示加密算法,例如可以采用分组加密算法。比如,F1(Y11)=ENCK(Y11)。ENCK(Y11)可表示根据分组加密算法对第一分组累积值Y11进行加密。L表示第一序列。第一设备可根据约定的加密模式,将累积值密文中的满足认证标签值的数据长度要求的序列作为第二认证标签值。[0129] 可选的,第一设备在确定第一设备的累积值的过程中,可取f(x)=x,则f(x)Y0可‑1表示对累积值Y0进行左移。第一设备可取f(x)=x ,则f(x)Y0可表示对累积值Y0进行右移,f‑1 127 126(x)=x 即等于对Y0进行右乘,即Y0f(x)。假设Y1(x)为A127x +A126x +…+A1x+A0。第一设备可在域中计算:[0130] Y1(x)=(f(x)Y0)⊕P0=(x‑1Y0(x))⊕P0(x)。第一设备可在域中计算Y2=(f(x)Y1)‑1 127 126⊕P1=(x Y1(x))⊕P1(x),即将Y1(x)=A127x +A126x +…+A1x+A0中的每一项除以x,得到x‑1 126 125 2 ‑1 ‑1 127 8 7 6 4Y1(x)=A127x +A126x +…+A2x+A2x+A1+A0x 。若A0=1,需将x 转化为x +x+x +x+x +3x。这是因为[0131] x·(x127+x8+x7+x6+x4+x3)=x128+x9+x8+x7+x5+x4≡1mod(x128+x9+x8+x7+x5+x4+1),≡表示恒等于。[0132] 可选的,第一设备根据第一认证标签值和第二认证标签值的比较结果确定待验证报文是否具有完整性,可根据第一认证标签值和第二认证标签值的比较结果确定待验证明文是否可信。[0133] 可选的,若比较结果为第二认证标签值与第一认证标签值相同,第一设备可确定待验证报文具有完整性,可确定待验证明文可信。若比较结果为第二认证标签值与第一认证标签值不相同,第一设备可确定待验证报文不具有完整性,可确定第二明文不可信。[0134] 可选的,(一)在一种示例性的验证方式中,第一明文正好是整数倍分组长度,不需要填充,即L是128长度的0序列,此时:[0135] 第二设备和第一设备约定加密模式和解密模式,仍以明文共有10个分组且分组长度为128比特为例,第二设备的长度为1280比特的初始报文刚好分为10个分组,且每个分组长度均为128比特。也就是说,此时第一明文包含10个长度为128比特的分组明文,分别计为:P0’、P1’、……、P9’。第二设备取初始的累积值Y0’=0,取f(x)’=x并确定累计值密文Z’。以分组加密算法为例,累积值密文Z’可以满足以下关系式:[0136] Y1’=(xY0’)⊕P0’;[0137] Y2’=(xY1’)⊕P1’;[0138] ……;[0139] Y10’=(xY9’)⊕P9’;[0140] Y11’=Y10’⊕L;[0141] Z’=ENCK(Y11’);[0142] 以认证标签值的长度是128比特为例,第二设备可从Z’中选取128比特作为第一认证标签值,向第一设备发送待验证报文,其中可以包含第一密文和第一认证标签值,第一密文可以是对第一明文加密后获得的密文。相应的,第一设备可以根据认证标签值的长度获得待验证报文中的128比特的第一认证标签值。第一设备对待验证报文中的第一密文解密,获得第二明文,并基于公式2确定累积值密文Z。第一设备取初始的累积值Y0=0,取f(x)=x。以分组加密算法为例,累积值密文Z可以满足以下关系式:[0143] Y1=(xY0)⊕P0;[0144] Y2=(xY1)⊕P1;[0145] ……;[0146] Y10=(xY9)⊕P9;[0147] Y11=Y10⊕L;[0148] Z=ENCK(Y11);[0149] 第一设备可从Z中选取128比特的数据作为第二认证标签值。若待验证报文准确的传输至第一设备,则第一认证标签值应等于第二认证标签值,第一设备可比对第二认证标签值与第一认证标签值是否相等以确定待验证报文具有完整性。由于这个示例中第二设备未对初始报文作做填充,即初始报文等于第一明文,因此第二明文应等于初始报文。若第二认证标签值不等于第一认证标签值,则第一设备可确定待验证报文不具有完整性,以及解密后的P0、……、P9不可信。[0150] (二)一种示例性的验证方式中,初始报文不是整数倍分组长度,需要填充80比特,并且第一设备与第二设备未约定填充比特的长度,此时为了使初始报文成为整块,第二设备可通过在初始报文末尾填充数值使初始报文整合成满组,然后加密得到整组密文,在密文后添加认证标签值。[0151] 可选的,第一设备可以从接收到的待验证报文中根据分组长度获得第三认证标签值,若接收准确,则第三认证标签值与第一认证标签值相等。第一设备还可通过解密第三认证标签值获得第二分组累积值。此外,第一设备还可根据第一密文解密获得第二明文,并采用全文中描述的方法,根据第二明文确定第一累积值。进一步的,第一设备可以根据第二分组累积值和第一累积值,尝试确定第二序列。在解密和接收正确的情况下,第一设备获得的第一累积值与第二设备根据第一明文所确定的第一累积值相等,因此第二分组累积值、第一累积值以及第二序列之间是满足公式1(和/或公式2)的,因此第一设备可以通过公式1进行逆运算,解出第二分组累积值和第一累积值对应的第二序列。如果能够解出满足前述第二序列的生成规则的序列,则可以验证解密和接收成功,即可以验证待验证报文具有完整性。[0152] 举例来说,第一设备接收第一密文和第三认证标签值,解密第一密文确定第二明文。第一设备通过第一规则确定第二明文对应的第一累积值YT,并且,第一设备解密第三认证标签值以确定第二分组累积值YT+1,例如,若第二设备采用ENCK函数加密YT+1’,则相应的,第一设备可基于ENCK函数的逆函数求解第三认证标签值以获得第二分组累积值YT+1。[0153] 进一步的,第一设备可将第一累积值YT和第二分组累积值YT+1代入以下关系式:[0154] YT+1=YT⊕L;[0155] 其中,通过以上关系式,第一设备可计算出第二序列L,并确定第二序列L是否是满足生成规则的序列。比如,第二序列是否是重复的多个字节,每个字节的值均相同。[0156] 另外,如果第一设备能够解出满足前述第一序列的生成规则的第二序列,还可以根据第二序列确定填充序列的数据长度。例如,按照第二序列的生成方式的描述,第二序列可以指示第二明文的最后一个分组明文所欠缺的数据长度,若第一设备确定第一密文的长度为分组长度的整数倍,且第二明文的最后一个分组明文所欠缺的数据长度不为零,则可以确定该欠缺的数据长度为填充比特的长度。例如,待验证报文长1536比特,第一密文长1408比特,认证标签值长度为128比特,并且第一设备根据第二明文对应的第一累积值YT和第二分组累积值YT+1通过以上关系是确定的第二序列L为0x50505050505050505050505050505050,则第一设备可以获知加密前的初始报文的最后一个分组明文欠80比特,即初始报文长为1408‑80=1328比特,相应的,第一设备可以从解密第一密文获得的第二明文中去掉80比特的填充比特,剩余部分作为有效明文。[0157] (三)在一种示例性的验证方式中,第一设备和第二设备约定加密模式和解密模式,第二设备不对初始报文进行填充,将初始报文分组得到分组明文,加密分组明文得到第一密文,第一密文和初始报文的数据长度一致。第二设备在第一密文后加上了认证标签后,明文与密文只相差一个认证标签的长度。比如,第二设备确定初始报文为1328比特,第一密文为1328比特,第一认证标签值为96比特,待验证报文为1424比特。第一设备接收第一密文和第一认证标签值,获得第二明文的长度为1328比特,根据分组长度128比特可确定第二明文的最后一个分组明文为48比特,因此可确定第一序列L的长度为80比特,从而取第一序列为80比特的规则序列。第一设备得到L,可以由第二明文的分组明文计算出YT,由YT和L异或得到YT+1,加密YT+1得到Z=ENCK(YT+1),取Z中的80比特的作为第二认证标签值,即使认证标签的长度比分组长度短,也能比对认证值。[0158] 例如,在认证标签值的长度为96比特时,第一设备得到第二明文为1328比特,用第二明文除以128比特得到1280和余数48,48比特和128比特差80比特,因此第一设备可进一步知道L为128比特:0x50505050505050505050505050505050。其中,在不需要添加填充比特的情况下,待验证报文的长度为1328+128=1424比特。[0159] 第一设备还可根据认证标签值的长度为96比特,从待验证报文中取96比特的值作为第三认证标签值,其余1328比特为第一密文。第一设备还可解密第一密文获得第二明文。进一步的,第一设备可以参照本申请中的方式,根据第二明文和第一序列L确定第二认证标签值,并在第三认证标签值与第二认证标签值一致的情况下确定待验证报文是否具有完整性,否则,则在第三认证标签值与第二认证标签值不一致的情况下确定待验证报文不具有完整性。[0160] 基于相同的技术构思,本申请示例性的提供了一种数据完整性验证装置。该装置可以用于执行以上方法实施例所述的动作。在该实施例中,装置的结构可以如图2所示。[0161] 如图2所示,本申请示例性的提供一种数据完整性验证装置可包括获取模块201和处理模块202。[0162] 其中,在实现本申请中第一设备的功能时,获取模块201,用于接收来自于第二设备的待验证报文,所述待验证报文包括第一密文和第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值是所述第二设备根据所述第一明文生成的;处理模块202,用于解密所述第一密文得到第二明文;所述处理模块202,还用于根据所述第二明文校验所述第一认证标签值,以确定所述待验证报文是否具有完整性。[0163] 在一种可能的设计中,所述处理模块202具体用于:根据所述第二明文通过第一规则确定第二认证标签值,其中,所述第一认证标签值是所述第二设备根据所述第一明文通过所述第一规则生成的;根据所述第一认证标签值和所述第二认证标签值的比较结果确定所述待验证报文是否具有完整性。[0164] 在一种可能的设计中,所述处理模块202具体用于:根据所述第二明文确定T个数据长度为分组长度的分组明文;通过累积值算法确定所述T个分组明文对应的第一累积值;根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第二认证标签值,所述第一序列与所述第二明文的最后一个分组包含的明文长度和所述分组长度有关。[0165] 在一种可能的设计中,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。[0166] 在一种可能的设计中,所述第一累积值与所述T个分组明文满足以下关系式:YT=(f(x)YT‑1)⊕PT‑1;其中,f(x)表示以x为变量的函数,PT‑1表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT表示所述第一累积值,YT‑1表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。[0167] 在一种可能的设计中,所述第二认证标签值为累积值密文包含的序列;所述累积值密文满足以下关系式:Z=F1(YT+1);其中,F1表示加密算法;所述YT+1表示第一分组累积值,满足以下关系式:YT+1=YT⊕L;其中,YT是所述第一累积值,L为所述第一序列。[0168] 在一种可能的设计中,所述处理模块202具体用于:根据认证标签值的长度从所述待验证报文中获得第三认证标签值,所述认证标签值的长度是所述第一认证标签值的数据长度;解密所述第三认证标签值获得第二分组累积值;根据所述第二明文确定T个数据长度为分组长度的分组明文;通过累积值算法确定所述T个分组明文对应的第一累积值;根据所述第二分组累积值和所述第一累积值确定第二序列;在所述第二序列满足设定规则时确定所述待验证报文具有完整性。[0169] 在一种可能的设计中,所述处理模块202还用于:根据所述第二序列确定所述第二明文的最后一个分组包含的明文长度;根据所述明文长度从所述第二明文中确定初始报文。[0170] 其中,在实现本申请中第二设备的功能时,处理模块202,用于根据第一明文通过第一规则生成第一认证标签值;所述处理模块202,还用于向第一设备发送待验证报文,所述待验证报文包括第一密文和所述第一认证标签值,其中,所述第一密文是第一明文对应的密文,所述第一认证标签值用于确定所述待验证报文是否具有完整性。[0171] 在一种可能的设计中,所述处理模块202具体用于:根据所述第一明文确定T个数据长度为分组长度的分组明文;通过累积值算法确定所述T个分组明文对应的第一累积值;根据数据长度为所述分组长度的第一序列和所述第一累积值确定所述第一认证标签值,所述第一序列与所述第一明文的最后一个分组包含的明文长度和所述分组长度有关,所述第一认证标签值用于和第二认证标签值确定所述待验证报文是否具有完整性。[0172] 在一种可能的设计中,所述第一认证标签值和所述第二认证标签值的长度均为所述分组长度。[0173] 在一种可能的设计中,所述第一累积值与所述T个分组明文满足以下关系式:YT’=(f(x)’YT‑1’)⊕PT‑1’;其中,f(x)’表示以x为变量的函数,PT‑1’表示所述T个分组明文中的第T个分组明文,⊕表示异或运算,YT’表示所述第一累积值,YT‑1’表示根据所述T个分组明文中的第1个分组明文至第T‑1个分组明文确定的第二累积值。[0174] 在一种可能的设计中,所述第一认证标签值为累积值密文包含的序列;所述累积值密文满足以下关系式:Z’=F1(YT+1’);其中,F1表示加密算法;所述YT+1’表示第一分组累积值,满足以下关系式:YT+1’=YT’⊕L;其中,YT’是所述第一累积值,L为所述第一序列。[0175] 与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种电子设备。该电子设备可以用于执行以上方法实施例所述的动作。在该实施例中,电子设备的结构可以如图3所示,包括存储器301以及一个或多个处理器302。[0176] 存储器301,用于存储处理器302执行的计算机程序。存储器301可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。[0177] 存储器301可以是易失性存储器(volatilememory),例如随机存取存储器(random‑accessmemory,RAM);存储器301也可以是非易失性存储器(non‑volatilememory),例如只读存储器,快闪存储器(flashmemory),硬盘(harddiskdrive,HDD)或固态硬盘(solid‑statedrive,SSD)、或者存储器301是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器301可以是上述存储器的分组合。[0178] 处理器302,可以包括一个或多个中央处理单元(centralprocessingunit,CPU)或者为数字处理单元等。所述处理器302,用于调用存储器301中存储的计算机程序时实现上述方法。[0179] 本申请实施例中不限定上述存储器301和处理器302之间的具体连接介质。作为一种示例,本申请实施例在图3中以存储器301和处理器302之间通过总线303连接,总线303在图3中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线303可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0180] 可选的,处理器302可用于执行以上由获取模块201和处理模块202中任意一项或多项执行的动作。[0181] 根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的方法。[0182] 程序产品可以采用一个或多个可读介质的任意分组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的分组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的分组合。[0183] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
专利地区:青海
专利申请日期:2023-11-08
专利公开日期:2024-10-22
专利公告号:CN117527351B