本发明属于密码学领域,尤其涉及一种轻量级aerogel分组密码的实现方法。
背景技术:
:随着物联网(lot)的发展,无线传感器网络(wsn)和无线射频识别(rfid)等微型电子设备在日常生活中被广泛应用,由于其存在计算能力较弱、存储空间较小等限制条件,为此轻量级分组密码应运而生。轻量级密码算法主要由加密算法、解密算法和密钥扩展算法三个子算法组成,其加密和解密使用同一密钥进行操作。一般情况下,轻量级密码算法为分组密码,分组密码是将输入消息或明文分成等长的固定的明文分组,分组长度一般为64位和128位。扩散性和混淆性是分组密码的两大原则,有效保证了分组密码算法的安全性,轻量级分组密码的算法结构一般为spn结构和feistel结构,其中spn结构的扩散性优于feistel结构,但feistel结构的混淆性更好。常见的轻量级分组密码算法有present、piccolo、rectangle、roadrunnr等。目前轻量级分组密码面临的主要问题是如何适应于资源受限设备、易于软硬件快速实现的同时又具有抵抗一些经典攻击的能力。技术实现要素:本发明目的:针对资源受限环境下的数据安全性,本发明提供了一种轻量级aerogel分组密码的实现方法,实现成本低、易于软硬件快速实现,且保证数据加密的安全性。本发明在线性层设计了一种具有自反性的fp置换方法,使加解密更紧凑。设计采用二维变换技术,使该方法中改变输入一位,2轮加密后可影响到每一位密文,增强了扩散程度,提高数据加密的安全性。fp置换采用4位逐字排位,不仅易于硬件实现,对于8位和32位的微处理器平台的软件也易于实现。本发明设计了一种密钥扩展方法。利用循环位移,非线性变换和轮数动态异或的技术,结合完善的数学理论,保证了密钥扩展的位翻转时间大于加密所需时间,并且使在第23轮的密钥是初始密钥的一个非线性函数,提高了安全性。本发明加密和解密基本一致。本发明解密算法只需将加密算法中的非线性层的s盒用逆s盒代替。本发明的技术方案如下:一种轻量级aerogel分组密码的加密实现方法,包括以下步骤:a:获取明文数据和初始密钥;b:将明文数据和初始密钥分别分成每组64位的明文数据组和80位的初始密钥数据组,且每组明文数据组对应一组初始密钥数据;c:通过轮函数进行加密操作,加密的轮函数包括线性层和非线性层,其中线性层包含轮密钥加、fp置换和列混淆变换,非线性层包含s盒变换;加密的轮函数操作是首先对每组明文数据通过相应组的密钥数据进行轮密钥加,然后再依次s盒变换、fp置换和列混淆变换,得到中间数据组;d:分别对每组初始密钥执行密钥扩展操作,得到80位的中间密钥组;e:将中间数据作为明文数据组,将中间密钥作为密钥数据组,重复步骤c和步骤d以进行nr轮迭代加密,其中nr取值为28,得到加密结果。所述的轻量级aerogel分组密码的加密实现方法,所述的步骤c的轮密钥加,包括以下步骤:如果nr=1,将每组初始密钥的高64位对64位的明文依次进行异或操作,得到中间结果作为中间数据组;如果1<nr≤28,将前一轮迭代得到的中间密钥组,每组依次取高64位对64位的中间数据组进行异或操作,得到中间结果。所述的轻量级aerogel分组密码的加密实现方法,所述的步骤c的fp置换包括以下步骤:将经过s盒变换后得到的结果,每组64位记作z,则z=z0||z1||z2||z3||z4||z5||z6||z7||z8||z9||z10||z11||z12||z13||z14||z15,经过fp置换后:z′=z0||z7||z10||z13||z4||z11||z14||z1||z8||z15||z2||z5||z12||z3||z6||z9。所述的轻量级aerogel分组密码的加密实现方法,所述的步骤c的列混淆变换,是将数据结果进行方阵排列,再对方阵的列采用异或混淆的方式,步骤如下:c1:将加密中fp置换操作之后得到中间结果,每组64位记作x,则采用方阵排列得其中yn为4位,0≤n≤15;c2:将y0、y1、y2、y3进行异或混淆,结果记作y′n(,0≤n≤15:得到异或混淆后的y′0、y′1、y′2、y′3,将上述操作以基于有限域gf(22)上的乘法变换表示,则运算表达式为,矩阵则c3:对剩余的y4-y15依次进行同样的异或混淆,得出64位y′=x×m,其中l1,l2,l3与l0矩阵大小相同。所述的轻量级aerogel分组密码的加密实现方法,所述的步骤d包括以下处理步骤:e1:如果nr=1,将每组80位的初始密钥记作k=h0||h1||h2||h3,其中hj为20位,0≤j≤3,ki记作初始密钥的第i位,0≤i≤79;如果2≤nr≤27,将前一轮迭代得到的中间密钥组,每组记作k=h0||h1||h2||h3,其中hj包括20位,0≤j≤3,ki记作每组中间密钥的第i位,0≤i≤79;设k′为密钥扩展后的每组中间密钥结果;e2:循环位移,每组取h0||h1进行左循环位移,位移数为9,得到第一中间轮密钥;e3:轮数动态异或,将当前轮数nr转算成5位的二进制数,再将步骤e2得到的每组第一中间轮密钥,选取k39、k38、k37、k36、k35依次与轮数动态异或,得到第二中间轮密钥;e4:非线性变换,将步骤e3得到的每组第二中间轮密钥,选取k3、k2、k1、k0进行非线性变换,得到第三中间轮密钥,其中采用的s盒与步骤c所用s盒一致;e5:线性变换,将步骤e4得到的每组第三中间轮密钥,再分成m0,m1,m2,m3)共4部分,其中mj为20位,0≤j≤3,进行线性变换操作k′=m0||m2||m3||m1,得到中间密钥。一种轻量级aerogel分组密码的解密实现方法,包括以下步骤:a:获取密文数据和初始密钥,其中密文数据为根据权利要求1-6任一所述的方法得到的加密结果,初始密钥为权利要求1-6任一所述的方法中的初始密钥;b:将密文数据和初始密钥分别分成每组64位的密文数据组和80位的初始密钥数据组,且每组密文数据组对应一组初始密钥数据,对应关系与权利要求1-6任一所述的方法中的对应关系一致;c:依次对每组初始密钥执行密钥扩展操作,并重复迭代扩展nr次,并记录每次迭代得到的80位的中间密钥组;d:进行解密操作,解密的轮函数包括线性层和非线性层,其中线性层包含轮密钥加、fp置换、列混淆变换,非线性层包含逆s盒变换,解密的轮函数操作为依次对每组待解密数据进行列混淆变换、fp置换、逆s盒变换,然后对每组密文数据组通过相应组的密钥数据进行轮密钥加,得到中间数据,接下来重复步骤d以进行nr轮迭代解密,其中nr取值为28,且迭代过程中,在进行轮密钥加时,第一次是使用步骤c中迭代扩展nr次得到的中间密钥组,第二次是使用步骤c中迭代扩展nr-1次得到的中间密钥组,依次类推,得到解密结果。所述的轻量级aerogel分组密码的解密实现方法,所述的步骤d的列混淆变换,是将密文数据进行方阵排列,再对方阵的列采用异或混淆的方式,步骤如下:d1:将密文数据每组64位记作x,则采用方阵排列得其中yn为4位,0≤n≤15;d2:将y0、y1、y2、y3进行异或混淆,结果记作y′n,0≤n≤15:得到异或混淆后的y′0、y′1、y′2、y′3,将上述操作以基于有限域gf(22)上的乘法变换表示,则运算表达式为,矩阵则d3:对剩余的y4-y15依次进行同样的异或混淆,得出64位y′=x×m,其中l1,l2,l3与l0矩阵大小相同。所述的轻量级aerogel分组密码的加密实现方法,所述的步骤d的fp置换包括以下步骤:将经过列混淆变换后得到的结果,每组64位记作z,再从高位到低位以每4位进行划分,z=z0||z1||z2||z3||z4||z5||z6||z7||z8||z9||z10||z11||z12||z13||z14||z15,经过fp置换后:z′=z0||z7||z10||z13||z4||z11||z14||z1||z8||z15||z2||z5||z12||z3||z6||z9。所述的轻量级aerogel分组密码的解密实现方法,所述的步骤d包括以下处理步骤:e1:如果nr=1,将每组80位的初始密钥记作k=h0||h1||h2||h3,其中hj为20位,0≤j≤3,ki记作初始密钥的第i位,0≤i≤79;如果2≤nr≤27,将前一轮迭代得到的中间密钥组,每组记作k=h0||h1||h2||h3,其中hj包括20位,0≤j≤3,ki记作每组中间密钥的第i位,0≤i≤79;设k′为密钥扩展后的每组中间密钥结果;e2:循环位移,每组取h0||h1进行左循环位移,位移数为9,得到第一中间轮密钥;e3:轮数动态异或,将当前轮数nr转算成5位的二进制数,再将步骤e2得到的每组第一中间轮密钥,选取k39、k38、k37、k36、k35依次与轮数动态异或,得到第二中间轮密钥;e4:非线性变换,将步骤e3得到的每组第二中间轮密钥,选取k3、k2、k1、k0进行非线性变换,得到第三中间轮密钥,其中采用的s盒与步骤c所用s盒一致;e5:线性变换,将步骤e4得到的每组第三中间轮密钥,再分成m0,m1,m2,m3共4部分,其中mj为20位,0≤j≤3,进行线性变换操作k′=m0||m2||m3||m1,得到中间密钥。所述的轻量级aerogel分组密码的解密实现方法,所述的步骤d的轮密钥加,包括以下步骤:将相应的中间密钥组的高64位对64位的明文依次进行异或操作,即得到轮密钥加的操作结果。所述的方法,s盒变换,是采用piccolo算法的s盒。本发明的技术效果在于,提供了一种轻量级aerogel分组密码的实现方法,该方法采用spn结构,为了易于硬件实现的同时也易于软件实现,fp置换采用采用4位逐字排位技术;为使资源可以最大化利用,fp置换采用二维变换技术,具有自反性。列混淆变换采用异或技术进行混淆,从线性代数的角度看,采用4个基于gf(2^2)上的对合矩阵结合的方式,因此,数据解密时只需将非线性层的s盒用逆s盒代替,轮密钥加、fp置换、列混淆变换与加密一致;线性层部分本发明实现方法优于present算法对明文的扩散性,并且本发明实现方法线性层部分加解密一致,相对于present算法更紧凑;密钥扩展部分,利用循环位移,非线性变换和轮数动态异或的技术,保证了密钥扩展的位翻转时间大于加密所需时间,增强了扩散性,并且使在第23轮的密钥是初始密钥的一个非线性函数。综上所述,本发明加密算法和解密算法基本一致、具有结构简洁、实现成本低、易于软硬件的快速实现且能抵抗已知攻击的特点。附图说明图1为本发明所述一种轻量级aerogel分组密码的实现方法加密结构图;图2为本发明所述一种轻量级aerogel分组密码的实现方法解密结构图;图3为本发明所述实现方法的二维变换技术的布置状态图;图4为本发明所述实现方法的密钥扩展示意图。具体实施方式下面结合附图对本发明做进一步的说明。轻量级分组密码aerogel采用spn结构。明文/密文分组长度为64比特,密钥分组长度为64比特,迭代轮数nr为28轮。加密结构如图1所示,加密的轮函数包括线性层和非线性层,其中线性层包含轮密钥加(add_roundkey)、fp置换(fp_layer)、列混淆变换(mix_column),非线性层包含s盒变换(sub_swap)。解密结构如图2所示,解密的轮函数包括线性层和非线性层,其中线性层包含轮密钥加(add_roundkey)、fp置换(fp_layer)、列混淆变换(mix_column),非线性层包含逆s盒变换(rsub_swap)。aerogel加密描述如下算法1;算法1:aerogel加密输入:p(明文),k(密钥);输出:c(密文);1.v←p;2.fori=1tonr=28do;3.add_roundkey(v,k);4.sub_swap(v);5.fp_layer(v);6.mix_column(v);7.endfor8.c←v;线性层:1.轮密钥加:如果nr=1,将每组初始密钥的高64位对64位的明文依次进行异或操作,则输出结果p′=p⊕k,得到中间结果;如果1≤nr≤28,将前一轮迭代得到的中间数据记作vi,中间轮密钥记作keyi(1≤i≤28),每组依次取高64位对64位的中间数据进行异或操作,则输出结果v′=v(nr-1)⊕key(nr-1),得到中间结果;中间轮密钥由密钥扩展操作产生,图4为密钥扩展示意图,其具体步骤如下:1)如果nr=1,将每组80位的初始密钥记作k=h0||h1||h2||h3,其中hj为20位(0≤j≤3),ki记作初始密钥的第i位(1≤i≤79),例:k79为初始密钥的第79位,则:h0=k79||k78||k77||k76||k75||k74||k73||k72||k71||k70||k69||k68||k67||k66||k65||k64||k63||k62||k61||k60(h0为初始密钥的高20位);如果1<nr≤28,将前一轮迭代得到的中间密钥组,每组记作k=h0||h1||h2||h3,其中hj为20位(0<j≤3),ki记作每组中间密钥的第i位(0≤i≤79),例:k79为每组中间密钥的第79位,则:h0=k79||k78||k77||k76||k75||k74||k73||k72||k71||k70||k69||k68||k67||k66||k65||k64||k63||k62||k61||k60(h0为每组中间密钥的高20位);2)循环位移技术。每组取h0||h1进行左循环位移,位移数为9,得到第一中间轮密钥,即输入为:k79||k78||k77||k76||k75||k74||k73||k72||k71||k70||k69||k68||k67||k66||k65||k64||k63||k62k59||k58||k57||k56||k55||k54||k53||k52||k51||k50||k49||k48||k47||k46||k45||k44||k43||k42||k41||k40,输出为:k70||k69||k68||k67||k66||k65||k64||k63||k62||k61||k60||k59||k58||k57||k56||k55||k54||k53||k52||k51||k50||k49||k48||k47||k46||k45||k44||k43||k42||k41||k40||k79||k78||k77||k76||k75||k74||k73||k72||k71;循环位移技术保证了密钥扩展的位翻转时间大于加密所需时间提高了加密的安全性。3)轮数动态异或技术。轮数nr转算成5位的二进制数,再将步骤e2得到的每组第一中间轮密钥,选取k39、k38、k37、k36、k35依次与轮数动态异或,k′39||k′38||k′37||k′36||k′35=(k39||k38||k37||k36||k35)⊕nr,得到第二中间轮密钥;4)非线性变换技术。步骤3得到的每组第二中间轮密钥,选取k3、k2、k1、k0进行非线性变换,k′3||k′2||k′1||k′0=sbox(k3||k2||k1||k0),得到第三中间轮密钥,其中采用的s盒与步骤c所用s盒一致;本实施例中是采用piccolo算法的s盒,也可格局需要采用其他s盒。非线性变换技术使在第23轮的密钥是初始密钥的一个非线性函数。5)线性变换技术。将步骤4得到的每组第三中间轮密钥,再分成(h0,h1,h2,h3)4部分,进行线性变换操作,则k′=h0||h2||h3||h1,得到中间轮密钥。2.fp置换:将s盒变换后得到中间结果,每组64位记作z,且每4位记作一个zi,其中i取0-15,则z=z0||z1||z2||z3||z4||z5||z6||z7||z8||z9||z10||z11||z12||z13||z14||z15。本实施例中的变换规则,是利用正方形的顶点,将z0、z1、z2、z3、z4、z5、z6、z7、z8、z9、z10、z11、z12、z13、z14、z15分成4组,分别为{z0、z1、z2、z3}、{z4、z5、z6、z7}、{z8、z9、z10、z11}、{z12、z13、z14、z15},每个顶点布置一组,按顺时针进行布置,同时每组的第一个zi布置在正方形的顶点上,组内的另外三个依次按顺时针旋转布置,布置状态如图3,如图3中左上角的0点即代表z0的位置,其他依次类推。在进行变换时,根据图3上不同组的各点位置来进行变换,假设有2个点q,r同处在一条线上,则代表它们相关联,二维变换后q置换到r所处的位置,r置换到q所处的位置;假设t点没有与之相关联的点,则二维变换后位置不变。这里将正方形的四条边以及两条对角线的两端均认定是处在同一条线上,以每组按顺时针布置的点来说,其中第一个点是布置在顶点上,另外三个依次对应正方形的两条边和对角线,以第一组来说,z0布置在顶点上,是对应正方形最上方的边的一端,是对应从左上到右下的对角线的一端,则是对应正方形左侧这条边的一端。那么对应的,z1与z7是处在同一条线也就是正方形最上方的边,则二维变换后z1置换到z7所处的位置,z7置换到z1所处的位置。但是每组的点中,被布置在顶点位置的则认为没有与其他点相关联。也就是说,z0没有与之相关联的点,则二维变换后位置不变;由上述可知,经过二维变换后z′=z0||z7||z10||z13||z4||z11||z14||z1||z8||z15||z2||z5||z12||z3||z6||z9。而根据点布置形式的不同,比如按每组点在正方形四个顶点上是按逆时针布置,或者顺序变化,可以扩展出不同的置换形式。故.fp置换的规则是,将密码均分为16块,每4块组成一个组,每组布置在矩形的一个顶点上,每个顶点上的块代表矩形的该顶点、以及连接该顶点的两条边和一条对角线的一端,在置换时,代表顶点的块不进行置换,代表边或对角线一端的块与另一端交换。这种二维变换技术使fp置换具有自反性,加密和解密时可以共同使用,不需要额外的逆置换,置换表如表1所示;表1fp置换012345678910111213141507101341114181525123693.列混淆变换:将数据结果进行方阵排列,再对方阵的列采用异或混淆的方式,其方式步骤如下:1)将加密/解密中fp置换操作之后得到中间结果,每组64位记作x,则可以采用方阵排列得其中yn为4位(1<n≤15);2)将异或混淆后的结果记作y′n(1<n≤15),将y0、y1、y2、y3进行如下操作,得到异或混淆后的y′0、y′1、y′2、y′3,将上诉操作转述成基于有限域gf(22)上的乘法变换,运算表达式为,矩阵则3)对剩余的y4-y15依次进行同样的异或混淆,得出64位y′=x×m,其中(l1,l2,l3与l0矩阵大小相同);非线性层:s盒变换:采用piccolo算法的s盒,其中s盒为{e,4,b,2,3,8,0,9,1,a,7,f,6,c,5,d},得到第二中间结果;将得到第一中间结果64位记作u,u=v′,则u=u0||u1||u2||u3||u4||u5||u6||u7;经过s盒变换后输出结果为u′=sbox(u0)||sbox(u1)||sbox(u2)||sbox(u3)||sbox(u4)||sbox(u5)||sbox(u6)||sbox(u7);aerogel解密描述如下算法2;算法2:aerogel解密输入:c(密文),k(密钥);输出:p(明文);1.t←c;2.fori=1tonr=28do;3.mix_column(t);4.fp_layer(t);5.rsub_swap(t);6.add_roundkey(t,k);7.endfor8.p←t;线性层:与上诉加密操作中的线性层操作一致。解密迭代过程中,轮密钥加中所用到的轮子密钥组与加密迭代过程中的顺序相反;非线性层:逆s盒变换:采用piccolo算法的s盒,其逆s盒为{6,8,3,4,1,e,c,a,5,7,9,2,d,f,0,b},经过逆s盒变换后输出结果为:u′=rsbox(u0)||rsbox(u1)||rsbox(u2)||rsbox(u3)||rsbox(u4)||rsbox(u5)||rsbox(u6)||rsbox(u7);本发明aerogel算法测试数据如表2所示:表2aerogel-64测试向量本发明所述的aerogel密码算法在xilinxvirtex-5xc5vlx50tfpga硬件实现,aerogel-64算法的slc为149,lut为199,ff为149,max-fre为476.563mhz,power为567.50mw;表3为各轻量级分组密码算法fpga硬件实现,通过表3的数据对比表明,aerogel算法具有高效性,实现面积小的优点;表3各轻量级密码算法fpga实现algorithmstate(bit)key(bit)fflutslcmax-fre(mhz)present-806480152222153455.31present-12864128200270201455.311piccolo-806480112302113331.400piccolo-12864128200384201322.997rectangle-12864128191253192501.153aerogel-646480149199149476.563以上结合具体实施例对本发明进行了详细说明,这些并非构成对发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可以做出许多变形和改进,这些也应属于本发明的保护范围。当前第1页1 2 3 
技术特征:1.一种轻量级aerogel分组密码的加密实现方法,其特征在于,包括以下步骤:
a:获取明文数据和初始密钥;
b:将明文数据和初始密钥分别分成每组64位的明文数据组和80位的初始密钥数据组,且每组明文数据组对应一组初始密钥数据;
c:通过轮函数进行加密操作,加密的轮函数包括线性层和非线性层,其中线性层包含轮密钥加、fp置换和列混淆变换,非线性层包含s盒变换;加密的轮函数操作是首先对每组明文数据通过相应组的密钥数据进行轮密钥加,然后再依次s盒变换、fp置换和列混淆变换,得到中间数据组;
d:分别对每组初始密钥执行密钥扩展操作,得到80位的中间密钥组;
e:将中间数据作为明文数据组,将中间密钥作为密钥数据组,重复步骤c和步骤d以进行nr轮迭代加密,其中nr取值为28,得到加密结果。
2.根据权利要求1所述的轻量级aerogel分组密码的加密实现方法,其特征在于,所述的步骤c的轮密钥加,包括以下步骤:
如果nr=1,将每组初始密钥的高64位对64位的明文依次进行异或操作,得到中间结果作为中间数据组;
如果1<nr≤28,将前一轮迭代得到的中间密钥组,每组依次取高64位对64位的中间数据组进行异或操作,得到中间结果。
3.根据权利要求1所述的轻量级aerogel分组密码的加密实现方法,其特征在于,所述的步骤c的fp置换包括以下步骤:
将经过s盒变换后得到的结果,每组64位记作z,则z=z0||z1||z2||z3||z4||z5||z6||z7||z8||z9||z10||z11||z12||z13||z14||z15,
经过fp置换后:
z′=z0||z7||z10||z13||z4||z11||z14||z1||z8||z15||z2||z5||z12||z3||z6||z9。
4.根据权利要求1所述的轻量级aerogel分组密码的加密实现方法,其特征在于,所述的步骤c的列混淆变换,是将数据结果进行方阵排列,再对方阵的列采用异或混淆的方式,步骤如下:
c1:将加密中fp置换操作之后得到中间结果,每组64位记作x,则采用方阵排列得其中yn为4位,0≤n≤15;
c2:将y0、y1、y2、y3进行异或混淆,结果记作y′n(,0≤n≤15:
得到异或混淆后的y′0、y′1、y′2、y′3,将上述操作以基于有限域gf(22)上的乘法变换表示,则运算表达式为,
矩阵则
c3:对剩余的y4-y15依次进行同样的异或混淆,得出64位y′=x×m,其中l1,l2,l3与l0矩阵大小相同。
5.根据权利要求1所述的轻量级aerogel分组密码的加密实现方法,其特征在于,所述的步骤d包括以下处理步骤:
e1:如果nr=1,将每组80位的初始密钥记作k=h0||h1||h2||h3,其中hj为20位,0≤j≤3,ki记作初始密钥的第i位,0≤i≤79;
如果2≤nr≤27,将前一轮迭代得到的中间密钥组,每组记作k=h0||h1||h2||h3,其中hj包括20位,0≤j≤3,ki记作每组中间密钥的第i位,0≤i≤79;
设k′为密钥扩展后的每组中间密钥结果;
e2:循环位移,每组取h0||h1进行左循环位移,位移数为9,得到第一中间轮密钥;
e3:轮数动态异或,将当前轮数nr转算成5位的二进制数,再将步骤e2得到的每组第一中间轮密钥,选取k39、k38、k37、k36、k35依次与轮数动态异或,得到第二中间轮密钥;
e4:非线性变换,将步骤e3得到的每组第二中间轮密钥,选取k3、k2、k1、k0进行非线性变换,得到第三中间轮密钥,其中采用的s盒与步骤c所用s盒一致;
e5:线性变换,将步骤e4得到的每组第三中间轮密钥,再分成m0,m1,m2,m3)共4部分,其中mj为20位,0≤j≤3,进行线性变换操作k′=m0||m2||m3||m1,得到中间密钥。
6.一种轻量级aerogel分组密码的解密实现方法,其特征在于,包括以下步骤:
a:获取密文数据和初始密钥,其中密文数据为根据权利要求1-6任一所述的方法得到的加密结果,初始密钥为权利要求1-6任一所述的方法中的初始密钥;
b:将密文数据和初始密钥分别分成每组64位的密文数据组和80位的初始密钥数据组,且每组密文数据组对应一组初始密钥数据,对应关系与权利要求1-6任一所述的方法中的对应关系一致;
c:依次对每组初始密钥执行密钥扩展操作,并重复迭代扩展nr次,并记录每次迭代得到的80位的中间密钥组;
d:进行解密操作,解密的轮函数包括线性层和非线性层,其中线性层包含轮密钥加、fp置换、列混淆变换,非线性层包含逆s盒变换,解密的轮函数操作为依次对每组待解密数据进行列混淆变换、fp置换、逆s盒变换,然后对每组密文数据组通过相应组的密钥数据进行轮密钥加,得到中间数据,接下来重复步骤d以进行nr轮迭代解密,其中nr取值为28,且迭代过程中,在进行轮密钥加时,第一次是使用步骤c中迭代扩展nr次得到的中间密钥组,第二次是使用步骤c中迭代扩展nr-1次得到的中间密钥组,依次类推,得到解密结果。
7.根据权利要求6所述的轻量级aerogel分组密码的解密实现方法,其特征在于,所述的步骤d的列混淆变换,是将密文数据进行方阵排列,再对方阵的列采用异或混淆的方式,步骤如下:
dl:将密文数据每组64位记作x,则采用方阵排列得其中yn为4位,0≤n≤15;
d2:将y0、y1、y2、y3进行异或混淆,结果记作y′n,0≤n≤15:
得到异或混淆后的y′0、y′1、y′2、y′3,将上述操作以基于有限域gf(22)上的乘法变换表示,则运算表达式为,
矩阵则
d3:对剩余的y4-y15依次进行同样的异或混淆,得出64位y′=x×m,其中l1,l2,l3与l0矩阵大小相同。
8.根据权利要求1所述的轻量级aerogel分组密码的加密实现方法,其特征在于,所述的步骤d的fp置换包括以下步骤:
将经过列混淆变换后得到的结果,每组64位记作z,再从高位到低位以每4位进行划分,z=z0||z1||z2||z3||z4||z5||z6||z7||z8||z9||z10||z11||z12||z13||z14||z15,
经过fp置换后:
z′=z0||z7||z10||z13||z4||z11||z14||z1||z8||z15||z2||z5||z12||z3||z6||z9。
9.根据权利要求1所述的轻量级aerogel分组密码的解密实现方法,其特征在于,所述的步骤d包括以下处理步骤:
e1:如果nr=1,将每组80位的初始密钥记作k=h0||h1||h2||h3,其中hj为20位,0≤j≤3,ki记作初始密钥的第i位,0≤i≤79;
如果2≤nr≤27,将前一轮迭代得到的中间密钥组,每组记作k=h0||h1||h2||h3,其中hj包括20位,0≤j≤3,ki记作每组中间密钥的第i位,0≤i≤79;
设k′为密钥扩展后的每组中间密钥结果;
e2:循环位移,每组取h0||h1进行左循环位移,位移数为9,得到第一中间轮密钥;
e3:轮数动态异或,将当前轮数nr转算成5位的二进制数,再将步骤e2得到的每组第一中间轮密钥,选取k39、k38、k37、k36、k35依次与轮数动态异或,得到第二中间轮密钥;
e4:非线性变换,将步骤e3得到的每组第二中间轮密钥,选取k3、k2、k1、k0进行非线性变换,得到第三中间轮密钥,其中采用的s盒与步骤c所用s盒一致;
e5:线性变换,将步骤e4得到的每组第三中间轮密钥,再分成m0,m1,m2,m3共4部分,其中mj为20位,0≤j≤3,进行线性变换操作k′=m0||m2||m3||m1,得到中间密钥。
10.根据权利要求6所述的轻量级aerogel分组密码的解密实现方法,其特征在于,所述的步骤d的轮密钥加,包括以下步骤:
将相应的中间密钥组的高64位对64位的明文依次进行异或操作,即得到轮密钥加的操作结果。
11.根据权利要求1或6所述的方法,其特征在于,s盒变换,是采用piccolo算法的s盒。
技术总结本发明提供了一种轻量级AEROGEL分组密码的实现方法,用于在资源受限的环境下对数据进行加密处理。本发明在线性层设计了一种具有自反性的FP置换方法,其设计采用二维变换技术,使该方法中改变输入一位,2轮加密后可影响到每一位密文,增强了扩散程度,提高数据加密的安全性。本发明的密钥扩展部分,利用循环位移、非线性变换、线性变换和轮数动态异或的技术,保证了密钥扩展的位翻转时间大于加密所需时间,增强了扩散性,并且使在第23轮的密钥是初始密钥的一个非线性函数。本发明的解密算法只需将加密算法中的非线性层的S盒用逆S盒代替,加密和解密基本一致。本发明具有结构简洁、实现成本低、易于软硬件的快速实现且能抵抗已知攻击的特点。
技术研发人员:李浪;黄现彤
受保护的技术使用者:衡阳师范学院
技术研发日:2020.03.31
技术公布日:2020.06.05