本发明属于密码学,具体涉及一种加解密一致的低延迟轻量级分组密码加密和解密方法。
背景技术:
1、近年来,各种数字设备被广泛应用于各个领域,小型计算设备在物联网领域已经成为不可缺少的一部分,但是其中敏感数据的安全性面临着资源受限所带来的挑战。有几个重要的应用场景非常需要低延迟加密和即时响应时间,例如对工业物联网、存储器设备(例如固态硬盘)的即时认证等,一些fpga嵌入式应用也具有相似的要求。传统分组密码算法中,如aes、des等,其安全性得到了广泛认可,但是在低延迟、轻量级等应用场景中,其效率存在瓶颈。轻量级分组密码由于其低计算和存储的特点,能在有限的资源下为这些小型计算设备提供可靠的安全保护。此外,大多数fpga设计中存在最大时钟频率限制,因此无法采用高度流水线架构以实现低延迟,更为优越的方案是采用全展开架构。在全展开架构中,加密操作的固有属性决定了算法的延迟,所以保持加密算法的计算深度和资源消耗相对较低至关重要。因此在算法设计中权衡算法的延迟和实现成本是有挑战的,并且在全展开结构中对设计方案的低延迟优化是值得研究的。
2、基于上述讨论,需要一种加解密一致的低延迟轻量级分组密码实现方法,既能提供实时的安全防护,又具备较高的加解密速度。
技术实现思路
1、本发明的目的是提供一种加解密一致的低延迟轻量级分组密码实现方法,在传统spn结构的基础上结合新型三轮even-mansour方案。在部件中提出了一种混合使用基于字的4分支对合映射和一个基于比特的置换操作的方案。此外提出了一种低延迟的4比特s盒,提供最佳的实现效率和安全性能。
2、为了实现上述技术目的,本发明的技术方案是,
3、一种加解密一致的低延迟轻量级分组密码加密方法,包括以下步骤:
4、步骤一:获取64比特的初始明文数据p和128比特的初始密钥数据k,然后将128比特的初始密钥数据均分成两个部分k=k0||k1;
5、步骤二:对p执行第一轮包括三个步骤的even-mansour操作:
6、①将p与k0异或得到s0;
7、②将s0迭代执行6轮前向轮函数r(δ;k1)得到s1,s1=r(s0;k1);其中前向轮函数r(δ;k1)包括以下五个按顺序执行的操作:比特置换permutebits、字混淆mixword、s盒替换subcell、异或轮密钥k1和异或轮常数,δ表示函数中需要输入的量;
8、③将s1与密钥k0′异或得到s2;其中密钥k0′是k0循环右移1位与k0右移63位异或的结果;
9、步骤三:对s2执行第二轮even-mansour操作:首先执行中间迭代函数s3=rm(s2),然后将s3异或密钥k0得到s4;其中中间迭代函数rm(δ)包括以下三个按顺序执行的操作:s盒替换subcell、字混淆mixword和逆s盒替换insubcell;
10、步骤四:对s4执行第三轮even-mansour操作:首先迭代执行6轮后向轮函数s5=r-1(s4;k1),然后将s5与密钥k0′异或,得到最终密文c;其中后向轮函数r-1(δ;k1)包括以下五个按顺序执行的操作:异或轮密钥k1、异或轮常数、逆s盒替换insubcell、字混淆mixword和逆比特置换inpermutebits。
11、一种加解密一致的低延迟轻量级分组密码解密方法,基于所述的加密方法获得的明文p,包括以下步骤:
12、步骤1,获取64比特的密文数据c和128比特的初始密钥数据k,然后将128比特的初始密钥数据均分成两个部分k=k0||k1;
13、步骤2,对c执行第一轮包括三个步骤的even-mansour操作:
14、步骤201,将c与k0′异或得到s5;其中密钥k0′是k0循环右移1位与k0右移63位异或的结果;
15、步骤202,迭代执行6轮前向轮函数r(s5;k1)得到s4;其中前向轮函数r(δ;k1)包括以下五个按顺序执行的操作:比特置换permutebits、字混淆mixword、s盒替换subcell、异或轮密钥k1和异或轮常数;其中异或轮常数步骤中,所使用的轮常数顺序与加密时相反;
16、步骤203,将s4与密钥k0异或得到s3;
17、步骤3:对s3执行第二轮even-mansour操作:首先执行中间迭代函数s2=rm(s3),然后将s2异或密钥k0′得到s1;其中中间迭代函数rm(δ)包括以下三个按顺序执行的操作:s盒替换subcell、字混淆mixword和逆s盒替换insubcell:
18、步骤4:对s1执行第三轮even-mansour操作:首先迭代执行6轮后向轮函数s0=r-1(s1;k1),然后将s0与密钥k0异或,得到初始明文数据p;其中后向轮函数r-1(δ;k1)包括以下五个按顺序执行的操作:异或轮密钥k1、异或轮常数、逆s盒替换insubcell、字混淆mixword和逆比特置换inpermutebits;其中异或轮常数步骤中,所使用的轮常数顺序与加密时相反。
19、进一步地,所述的加密方法或解密方法,所述的比特置换permutebits包括:
20、将比特置换permutebits输入的64比特数据记为b=b0||b1||···||b63,根据permutebits,对输入的第i比特置换为gm(i)比特,输出的数据记为x=x0||x1||…||x63;其中对应的置换值如下:
21、当i={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}时,gm(i)={18,22,30,26,17,21,29,25,16,20,28,24,19,23,31,27,54,58,62,50,53,57,61,49,52,56,60,48,55,59,63,51,2,6,14,10,1,5,13,9,0,4,12,8,3,7,15,11,38,42,46,34,37,41,45,33,36,40,44,32,39,43,47,35}。
22、进一步地,所述的加密方法或解密方法,所述的字混淆mixword包括:
23、将字混淆mixword输入的64比特数据记为x,将x从高位至低位划分为四个分支,每个分支为16比特,即一个字;取0~15比特位作为x0分支,16~31比特位作为x1分支,32~47比特位作为x2分支,48~63比特位作为x3分支;然后将x0与x1异或后再循环左移5比特得到temp1,x2与x3异或后再循环左移9比特得到temp2,然后将x0、x1分别异或temp1得到y0、y1,将x2、x3分别异或temp2得到y2、y3,最后按照y0、y1、y2和y3的顺序拼接得到64比特的结果数据。
24、进一步地,所述的加密方法或解密方法,所述的s盒替换subcell包括:
25、将输入s盒替换subcell操作的64比特数据记为f,将f从高位至低位分为16部分,则每1部分包括4比特数据,将这4比特数据记为f3、f2、f1和f0;每个4比特部分使用s盒的逻辑运算公式进行替换;s盒的输出从高位至低位为e3、e2、e1和e0,s盒输入和输出分别为16进制中0-f中的一个数;s盒的逻辑运算公式为:
26、
27、进一步地,所述的加密方法,步骤二中步骤②的异或轮常数包括:
28、将输入的64比特数据按轮数来异或预设的1-6轮次的轮常数,从而得到相应轮次的加密数据,其中1-6轮次的每个轮常数均为64比特位的数据;
29、步骤四中后向轮函数r-1(s4;k1)的异或轮常数操作包括:将输入的64比特数据异或7-12轮次的轮常数,从而得到相应轮次的加密数据,其中7-12轮次的轮常数通过以下方式获得:
30、取64比特的固定常数α,记轮参数为rc,则其中下标i表示轮数,i=1,2,...11,12。
31、进一步地,所述的解密方法,所述的步骤202中,异或轮常数采用7-12轮次的预设轮常数,但是使用轮常数的顺序与加密时相反,即第一轮中使用轮数为12的常数,最后一轮使用轮数为7的常数;
32、所述的步骤4中,异或轮常数采用1-6轮次的预设轮常数,但是使用轮常数的顺序与加密时相反,即第一轮中使用轮数为6的常数,最后一轮使用轮数为1的常数。
33、进一步地,所述的加密方法或解密方法,逆s盒替换insubcell操作包括:将输入逆s盒替换insubcell操作的64比特数据记为u,将u从高位至低位分为16部分,则每1部分包括4比特数据,将这4比特数据分别记为u3、u2、u1和u0;每个4比特部分使用逆s盒的逻辑运算公式进行替换;逆s盒的输出从高位至低位为v3、v2、v1和v0,逆s盒输入和输出分别为16进制中0-f中的一个数;逆s盒的逻辑运算公式为:
34、v3=(not(u3 nand(u2 nand u0)))nor((u3 or u1)nor(u2 xor u0))
35、v2=(u2 nor(u1 xnor u0))nor((u2 and u0)nor(u3 xnor u1))
36、v1=(u2 nor((not u1)nor(u3 nor u0)))nor((u3 xnor u2)nor(u1 xor u0))
37、v0=(u2 nand(not u1))nand((not u0)nand(u3 nand u1))。
38、进一步地,所述的加密方法或解密方法,逆比特置换inpcrmutcbits操作包括:将输入逆比特置换inpermutebits操作的64比特数据记为r=r0||r1||···||r63,根据置换函数gm-1,对输入的第i比特置换为输出的gm-1比特,inpermutebits对应的置换值如下:当i={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}时,gm-1={40,36,32,44,41,37,33,45,43,39,35,47,42,38,34,46,8,4,0,12,9,5,1,13,11,7,3,15,10,6,2,14,59,55,51,63,56,52,48,60,57,53,49,61,58,54,50,62,27,23,19,31,24,20,16,28,25,21,17,29,26,22,18,30}。
39、本发明的技术效果在于,加密和解密的整体结构采用一种新的三轮even-mansour方案,其中,前向轮与后向轮互为逆操作,中间使用k0与k0′交替,保证算法的加解密一致,硬件实现中可以共享加解密电路以较少面积。并提出了一个基于字的四分支对合映射和一个基于比特的置换操作,在线性层结合使用使得2轮实现完全扩散,保证扩散性同时进一步增加加密强度。本发明的非线性层能够结合nand、nor、and、or逻辑门处理信号的输入输出,通过对逻辑门进行由下至上的电路搜索,构建低延迟轻量级s盒。s盒中的信号延迟低于prince、qarma和midori,面积比midori减少了10.13%,定点数为0。本发明中使用的s盒有助于减少延迟和面积。
1.一种加解密一致的低延迟轻量级分组密码加密方法,其特征在于,包括以下步骤:
2.一种加解密一致的低延迟轻量级分组密码解密方法,其特征在于,基于如权利要求1所述的加密方法获得的密文c,包括以下步骤:
3.根据权利要求1所述的加密方法或权利要求2所述的解密方法,其特征在于,所述的比特置换permutebits包括:
4.根据权利要求1所述的加密方法或权利要求2所述的解密方法,其特征在于,所述的字混淆mixword包括:
5.根据权利要求1所述的加密方法或权利要求2所述的解密方法,其特征在于,所述的s盒替换subcell包括:
6.根据权利要求1所述的加密方法,其特征在于,步骤二中步骤②的异或轮常数包括:
7.根据权利要求6所述的解密方法,其特征在于,所述的步骤202中,异或轮常数采用7-12轮次的预设轮常数,但是使用轮常数的顺序与加密时相反,即第一轮中使用轮数为12的常数,最后一轮使用轮数为7的常数;
8.根据权利要求1所述的加密方法或权利要求2所述的解密方法,其特征在于,逆s盒替换insubcell操作包括:将输入逆s盒替换insubcell操作的64比特数据记为u,将u从高位至低位分为16部分,则每1部分包括4比特数据,将这4比特数据分别记为u3、u2、u1和u0;每个4比特部分使用逆s盒的逻辑运算公式进行替换;逆s盒的输出从高位至低位为υ3、υ2、υ1和υ0,逆s盒输入和输出分别为16进制中0-f中的一个数;逆s盒的逻辑运算公式为:
9.根据权利要求1所述的加密方法或权利要求2所述的解密方法,其特征在于,逆比特置换inpermutebits操作包括:将输入逆比特置换inpermutebits操作的64比特数据记为r=r0||r1||…||r63,根据置换函数gm-1,对输入的第i比特置换为输出的gm-1比特,inpermutebits对应的置换值如下:当i={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}时,gm-1={40,36,32,44,41,37,33,45,43,39,35,47,42,38,34,46,8,4,0,12,9,5,1,13,11,7,3,15,10,6,2,14,59,55,51,63,56,52,48,60,57,53,49,61,58,54,50,62,27,23,19,31,24,20,16,28,25,21,17,29,26,22,18,30}。