一种高扩散轻量级分组密码HDLBC的实现方法及系统
未命名
07-22
阅读:178
评论:0
一种高扩散轻量级分组密码hdlbc的实现方法及系统
技术领域
1.本发明属于信息安全领域的加解密算法,具体涉及一种高扩散轻量级分组密码hdlbc的实现方法及系统。
背景技术:
2.随着第五代(5g)无缝通信网络技术的出现,物联网(iot)的应用场景将越来越多,如智能物流、智能医疗、智能家居等。在物联网与5g技术的高度融合下,网络数据的力量也逐渐凸显。但随着网络设备数量的快速增长和无处不在的通信对数据和隐私的安全构成潜在威胁,特别是大量资源受限设备的存在促使人们寻求新的效率权衡方案。因此,现有研究迫切需要轻量级加密方案来保护物联网数据安全。
3.近几年,一系列适用于资源受限设备的轻量级分组密码被先后提出。如scenery、qtl、rectangle、simon和speck、simeck、gift、craft、present等。实际上,随着轻量级分组密码应用场景需求的增加,低功耗、低延迟、低面积、高吞吐率和高扩散等一些指标也逐渐被用来指导轻量级分组密码的设计。例如a.bogdanov在ches 2007提出的轻量级分组密码present,它在smic 0.18工艺库下加解密的硬件实现需2018等效门数,并被列为iso/iec标准。此外,在ches 2017年提出的gift则是在present的基础上对s盒轻量化来减少面积消耗,其次对p置换进行优化来提高它的扩散属性;midori[9]是为了在硬件方面实现卓越的能源和效率而设计的;prince旨在满足低延迟属性而被设计;rectangle则是利用bit-slice技术适用于多平台实现。另一方面,simon是由美国国家安全局(nsa)发布的,它在非线性层使用and、rotation和xor(and-rx)运算来代替传统的s盒。更具体的说,simon在smic 0.13工艺库下加解密仅需1751等效门数,甚至比present的面积更小。
[0004]
由于simon-like密码采用模加(addition)、移位(rotation)、异或(xor)和逻辑与(and)运算来实现密码算法的非线性部件非常简便,并能够在软硬件平台上快速实现等原因,所以simon-like密码更适用于资源受限设备。值得注意的是,simon-like密码由于使用了feistel结构,所以这类密码的扩散相对来说比较缓慢。因此simon-like密码通常需要迭代更多的轮数来提高密码算法的扩散属性。例如guo等人在2021年提出的shadow密码。它利用了广义feistel与and-rx运算进行组合,虽然巧妙的在轮函数中设计了四个f函数来解决扩散属性相对较慢的问题,但在硬件实现上仍需要较高的面积消耗。因此,如何能在扩散属性和面积消耗之间进行更好的权衡就成为对称密码设计中一个有趣的课题。
技术实现要素:
[0005]
本发明为了在扩散和面积之间进行更好的权衡,推出扩散属性以及面积消耗均兼顾的密码算法,本发明提出了一种新的广义feistel结构,设计了轻量级分组密码算法hdlbc,即本发明提供的一种高扩散轻量级分组密码hdlbc的实现方法及系统。本发明所述方法设计了2个f函数(非线性层设计),即ra1函数运算以及ra2函数运算,该f函数的非线性层由非线性逻辑运算中面积消耗最小的nand运算设计,并将f函数的值输入分支异或操作
中,即利用该两个f函数影响所有分支,进一步保证扩散性,与此同时,又考虑到了面积消耗,更好的保证了算法的扩散性以及面积消耗。
[0006]
基于此,本发明技术方案提供的一种高扩散轻量级分组密码hdlbc的实现方法,包括以下步骤:
[0007]
步骤1:获取明文作为待加密数据或者密文作为待解密数据;
[0008]
步骤2:利用轮函数执行r轮运算,即对所述待加密数据执行r轮加密运算或对所述待解密数据执行r轮解密运算;
[0009]
其中,按序将所述待加密数据分为4部分p0||p1||p2||p3,每一轮加密运算是对所述待加密数据执行ra1函数运算、分支异或运算、ra2函数运算以及p置换,前一轮加密运算的结果作为下一轮加密运算的待加密数据;每一轮加密运算中子密钥中部分比特参与所述ra1函数运算中轮密钥加运算;剩余比特参与所述ra2函数运算中轮密钥加运算;
[0010]
所述解密运算为所述加密运算的逆序执行,且r轮解密运算的子密钥使用顺序与r轮加密运算的子密钥的顺序相反,加密运算中p置换的置换规则与解密运算的p置换的置换规则正逆相对应。其中,加密运算和解密运算的p置换均是采用比特级置换,两者的置换规则不同,但是解密过程的p置换是将加密过程的p置换转换回来,因此,解密过程的置换表为加密过程的逆置换表,可以采用现有的一组加解密的p置换规则均可以实现本发明的目的。
[0011]
进一步可选地,每一轮加密运算中对所述待加密数据执行ra1函数运算、分支异或运算、ra2函数运算的过程如下:
[0012]
ra1函数运算:将p0赋值给ra1函数中的li,p2赋值给ra1函数中的ri,然后将li和ri分别循环左移,再将左移后的li'和ri'执行逻辑与非运算后的结果与ri'和轮子密钥ski进行异或运算,再赋值给ra1函数运算中的l
i+1
,即
[0013]
一次分支异或运算:将p1和p3分别与ra1函数运算中的l
i+1
执行异或运算得到p1'和p3',并分别作为ra2函数中的li和ri,即li=p1',ri=p3';
[0014]
ra2函数运算:将ra2函数中的li和ri分别循环左移,再将左移后的li'和ri'执行逻辑与非运算后的结果与ri'和轮子密钥ski进行异或运算,再赋值给ra2函数运算中的l
i+1
;
[0015]
二次分支异或运算:将p0和p2分别与ra2函数运算结果l
i+1
分别进行异或运算,即即
[0016]
其中,二次分支异或运算得到的p0'、p1'、p2'、p3'用于后续执行p置换。
[0017]
进一步可选地,子密钥的编排过程如下:
[0018]
获取初始密钥并执行p置换,再均分为两分支lkeyi和rkeyi;
[0019]
将rkeyi异或上lkeyi'和当前执行的轮数i的值赋给rkey
i+1
,即,即以及将lkeyi执行循环左移后与rkeyi进行逻辑与非运算用于更新lkeyi',并将更新的lkeyi'赋值给lkey
i+1
';
[0020]
其中,rkey
i+1
中16比特应用于第i+1轮加密运算中所述ra1函数运算中轮密钥加运算,其他16比特应用于第i+1轮加密运算中所述ra2函数运算中轮密钥加运算;以及赋值后的两分支lkey
i+1
、rkey
i+1
参与下一轮i+1的子密钥编排。
[0021]
进一步可选地,若所述初始密钥为64位,则将rkey
i+1
中最低有效位的前16比特应用于所述ra1函数运算中轮密钥加运算,剩下的16比特应用于所述ra2函数运算中轮密钥加
运算;若所述初始密钥为128位,则将rkey
i+1
中最低有效位的32比特中前16比特应用于所述ra1函数运算中轮密钥加运算,后16比特应用于所述ra2函数运算中轮密钥加运算。
[0022]
进一步可选地,所述加密运算的p置换对应的置换置换对应值如下:
[0023]
当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}时,p(i)={57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,56,48,40,32,24,16,8,0,58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6};
[0024]
所述解密运算的p置换对应的置换对应值如下:
[0025]
当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}时,p(i)={39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25,32,0,40,8,48,16,56,24};
[0026]
表中,i、p(i)对应第i、p(i)比特位置。
[0027]
本发明技术方案还提供基于所述高扩散轻量级分组密码hdlbc的实现方法的系统,该系统包括:
[0028]
数据获取模块,用于获取明文作为待加密数据或者密文作为待解密数据;
[0029]
加解密轮运算模块,用于利用轮函数执行r轮运算,即对所述待加密数据执行r轮加密运算或对所述待解密数据执行r轮解密运算;
[0030]
子密钥更新模块,用于更新每一轮加解密运算的子密钥;
[0031]
其中,按序将所述待加密数据分为4部分p0||p1||p2||p3,每一轮加密运算是对所述待加密数据执行ra1函数运算、分支异或运算、ra2函数运算以及p置换,前一轮加密运算的结果作为下一轮加密运算的待加密数据;每一轮加密运算中子密钥中部分比特参与所述ra1函数运算中轮密钥加运算;剩余比特参与所述ra2函数运算中轮密钥加运算;
[0032]
所述解密运算为所述加密运算的逆序执行,且r轮解密运算的子密钥使用顺序与r轮加密运算的子密钥的顺序相反。
[0033]
本发明技术方案还提供一种电子终端,该电子终端至少包括:
[0034]
一个或多个处理器;
[0035]
存储了一个或多个计算机程序的存储器;
[0036]
其中,所述处理器调用所述计算机程序以实现:所述一种高扩散轻量级分组密码hdlbc的实现方法的步骤。
[0037]
本发明技术方案还提供一种可读存储介质,该可读存储介质存储了计算机程序,所述计算机程序被处理器调用以实现:所述一种高扩散轻量级分组密码hdlbc的实现方法的步骤。
[0038]
有益效果
[0039]
1.本发明技术方案提供的一种高扩散轻量级分组密码的实现方法,寻找到一个可
以替代逻辑与运算和模加运算的非线性运算即逻辑与非运算(nand),进而构建出基于nand-rx操作的f函数。其中,通过创造性设计出的轮函数保证算法的扩展性以及面积消耗。所设计的轮函数包含两个f函数(ra1和ra2)、分支异或、轮密钥加和p置换步骤,其中,为了保证扩散性,分支异或运算的输入均来自于f函数,达到输入的任意比特经过一轮运算后即可影响全部分支的目的;与此同时,本发明仅仅通过两个f函数保证了扩散性,相较于传统手段,减少了面积消耗;此外,ra1和ra2函数引入逻辑与非运算(nand),而逻辑与非运算(nand)的面积消耗远远低于and运算,同时也可以完成同and运算一样的混淆作用,它可以很好的替换掉and运算,使得整个算法硬件消耗更低。
[0040]
2.本发明进一步的优选方案中,在每一轮运算的子密钥编排过程中也引入了逻辑与非运算(nand),即对lkeyi的更新中引入nand运算,结果证明可以提高扩散性,与simon的密钥编排相比,本发明采用了更少的资源消耗来达到更好的扩散性。
附图说明
[0041]
图1为本发明所述一种高扩散轻量级分组密码hdlbc的轮函数结构图;
[0042]
图2为本发明所述一种高扩散轻量级分组密码hdlbc的密钥编排结构图;
[0043]
图3为本发明所述一种高扩散轻量级分组密码hdlbc的f函数结构图;
[0044]
图4为本发明所述一种高扩散轻量级分组密码hdlbc-64的p置换图;
[0045]
图5为本发明所述一种高扩散轻量级分组密码hdlbc与其它密码算法的吞吐率对比图。
具体实施方式
[0046]
大多数轻量级simon-like分组密码旨在通过牺牲扩散来最小化面积。虽然有部分密码改善了扩散速度,但这种设计包含多个f函数,这需要更多的面积消耗。本发明技术方案为了在扩散和面积之间进行更好的权衡,提供述一种高扩散轻量级分组密码hdlbc实现方法,其设计了基于nand运算的全新f函数,利用两个f函数来实现扩散和面积消耗的均衡,即提高扩散性的同时,尽量减少面积消耗。下面将结合实施例对本发明做进一步的说明。
[0047]
实施例1:
[0048]
本实施例提供的一种高扩散轻量级分组密码hdlbc的实现方法,包括以下步骤:
[0049]
步骤1:获取明文作为待加密数据或者密文作为待解密数据。
[0050]
本实施例以64比特长度的明文为例进行说明,hdlbc算法分组长度为64比特,密钥长度为64/128比特。首先获取64比特明文作为待加密数据p,进行加密运算;其中,待加密数据p从高位(左)到低位(右)每16比特为一组共分为四部分,记作p=p0||p1||p2||p3。
[0051]
步骤2:利用轮函数执行r轮运算,即对所述待加密数据执行r轮加密运算或对所述待解密数据执行r轮解密运算;其中,每一轮加密运算是对所述待加密数据执行ra1函数运算、分支异或运算、ra2函数运算以及p置换,前一轮加密运算的结果作为下一轮加密运算的待加密数据;每一轮加密运算中子密钥中部分比特参与所述ra1函数运算中轮密钥加运算;剩余比特参与所述ra2函数运算中轮密钥加运算。
[0052]
以一轮加密运算为例进行说明,实现过程如下:
[0053]
1)将p0赋值给ra1函数中的li,p2赋值给ra1函数中的ri,然后将li和ri分别循环左移
1比特和8比特,即li'=li《《《1,ri'=ri《《《8。再将左移后的li'和ri'执行逻辑与非运算后的结果与ri'和轮子密钥ski进行异或运算后赋值给ra1函数运算中的l
i+1
,即,即
[0054]
其中,本步骤引入了逻辑与非运算nand,相较于simon轮函数中and操作,利用逻辑与非运算nand同样可以完成混淆效果,且硬件资源更低。
[0055]
2)执行一次分支异或运算,将p1和p3分别与ra1函数运算的16比特的l
i+1
执行异或运算后得到的结果p1'和p3'作为ra2函数中的li和ri,即li=p1',ri=p3';其中,ra2函数的内部操作与ra1函数相同。
[0056]
3)将ra2函数中的li和ri分别循环左移1比特和8比特,再将左移后的li'和ri'执行逻辑与非运算后的结果与ri'和轮子密钥ski进行异或运算后赋值给ra1函数运算中的l
i+1
。
[0057]
本实施例中,轮子密钥ski、轮子密钥ski是当前i轮的子密钥中不同16比特数据构成的。
[0058]
4)执行二次分支异或运算,将p0和p2分别与ra2函数运算的16比特的l
i+1
分别进行异或运算,即至此,得到的p0'、p1'、p2'、p3'为ra2函数完成运算的结果。
[0059]
5)对p0'、p1'、p2'、p3'执行p置换,即第i比特状态位移动到指定的p(i)比特位,用公式表示为:
[0060]
i=p(i),0≤i≤63
[0061]
其中,加密运算对应的p置换的对应值如下所示:
[0062]
当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}时,p(i)={57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,56,48,40,32,24,16,8,0,58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6};
[0063]
对应置换表如下表1所示:
[0064]
表1加密过程
[0065][0066]
应当理解,按照上述加密运算执行r轮的轮运算,最终结果为该明文对应的密文。
[0067]
若为解密运算,则获取待解密数据后执行r轮解密运算,最终得到该密文对应的明文。其中,由于本发明所述方法采用广义feistel结构,故其解密过程与加密过程相同,即上述步骤1)-5)的逆序。只是在加密算法中使用的子密钥的顺序是相反的,即第一轮解密所使
用的子密钥是最后一轮加密使用的子密钥,使用的p置换的对应值如下所示,对应置换表如下表2所示:
[0068]
当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}时,p(i)={39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25,32,0,40,8,48,16,56,24};
[0069]
表2解密过程
[0070][0071]
需要说明的是,本实施例中设定的两个p置换的对应值是相对应的,其他可行的实施例中,针对加密和解密过程也可以设定一组对应的p置换的对应值,本发明对此不进行具体的限定。
[0072]
还需要说明的是,不论是加密过程或下文的密钥编排过程,在保证计算可行性的基础上,循环左移的比特量是根据应用需求可以适应性调整的。
[0073]
关于每一轮的子密钥,本发明按照下述方法进行编排与更新:
[0074]
获取初始密钥并执行按照加密运算执行p置换的对应值,再后均分成左右两个32比特分支lkeyi和rkeyi;
[0075]
将rkeyi异或上lkeyi'和当前执行的轮数i的值赋给rkey
i+1
,即,即以及将lkeyi执行循环左移16比特后与rkeyi进行逻辑与非运算更新lkeyi',并将lkeyi'赋值给lkey
i+1
',即lkeyi'=~((lkeyi《《《16)&rkeyi),lkey
i+1
=lkeyi'。
[0076]
其中,rkey
i+1
中16比特应用于所述ra1函数运算中轮密钥加运算,其他16比特应用于所述ra2函数运算中轮密钥加运算;以及赋值后的两分支lkey
i+1
、rkey
i+1
参与下一轮i+1的子密钥编排。
[0077]
其中,若所述初始密钥为64位,则将rkey
i+1
中最低有效位的前16比特应用于所述ra1函数运算中轮密钥加运算,剩下的16比特应用于所述ra2函数运算中轮密钥加运算;若所述初始密钥为128位,加密运算的子密钥的p置换采用了以下所示的128比特的对应值置换,对应置换表如下表3所示(密钥编排并不需要解密操作,因为基于feistel结构,在执行加密过程时也执行了密钥编排运算并将密钥编排运算的结果用寄存器进行存储;所以在执行解密运算时,只需要将密钥逆序执行即可解密,故密钥编排的逆p置换可以不必展示。),其次lkeyi和rkeyi为64比特,lkeyi的循环移位数设定为32比特。然后将rkey
i+1
中最低有效位的32比特里前16比特应用于ra1中执行轮密钥加运算,后16比特应用于ra2中执行轮密钥加运
算。
[0078]
当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,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}时,p(i)={2,63,120,125,6,67,124,1,10,71,0,5,14,75,4,9,18,79,8,13,22,83,12,17,26,87,16,21,30,91,20,25,34,95,24,29,38,99,28,33,42,103,32,37,46,107,36,41,50,111,40,45,54,115,44,49,58,119,48,53,62,123,52,57,66,127,56,61,70,3,60,65,74,7,64,69,78,11,68,73,82,15,72,77,86,19,76,81,90,23,80,85,94,27,84,89,98,31,88,93,102,35,92,97,106,39,96,101,110,43,100,105,114,47,104,109,118,51,108,113,122,55,112,117,126,59,116,121};
[0079]
表3 hdlbc中的p置换(hdlbc-128版本)
[0080][0081][0082]
需要说明的是,本发明实施例1提供的子密钥编排方法是本发明的优选技术手段,但不是唯一可行的,在本发明设定的轮函数基础上,采用其他子密钥编排方法,保证算法的安全性、可行性。
[0083]
综上所述,本发明技术方案所述方法设计了f函数(非线性层设计),即旨在寻找一个比逻辑与运算硬件实现代价更低的非线性逻辑运算来代替逻辑与运算,使得hdlbc密码在提高扩散性的同时还可以达到减少硬件实现代价。而基于引入两个f函数设计的轮函数,本发明技术方案将初始明文均分为四个分支以便后续并行的进行混淆和扩散。同时,由于分支异或操作的输入来自于f函数的值,所以自然也带来了相关性的问题。因此,在这几种简单的操作中,如何有技巧的构建hdlbc密码的轮函数来控制相关性,就直接决定了本发明之后对它安全性分析的精确程度。一方面本发明技术方案采用了同样可以完成混淆效果且硬件资源更低的非线性操作nand。另一方面,本发明技术方案设计了全新的f函数以及基于f函数的轮函数,仅仅利用两个f函数,使得输入的任意比特经过一轮运算后可影响全部分支,既提高了扩散性又控制了面积消耗;此外,从simon算法的扩散性来看,由于xor操作较少,导致其扩散速度比较慢,本发明技术方案在hdlbc的轮函数中增加了xor操作,但是相比于simon密码,hdlbc的扩散性更好,并且仍具有硬件上的优势。具体来说,在比特级层面,
hdlbc-128的全扩散轮数为七轮。而simon-128的全扩散轮数为九轮。因此,本发明将扩散速度的优势归因于精心设计的轮函数。本发明所述方法在安全性分析表明hdlbc对已知的攻击,如差分密码分析、线性密码分析、不可能差分密码分析和零相关密码分析等,可以达到足够的安全裕度。
[0084]
对本发明实施提供硬件性能进行测试,其中本发明hdlbc密码硬件性能对比结果如表4和表5所示:
[0085]
表4基于的hdlbc与其他密码的硬件资源比较
[0086][0087][0088]
表5基于0.13
□
m的hdlbc与其他密码的硬件资源比较
[0089][0090]
本发明在使用nand-rx结合广义feistel结构的基础上,提出了一种新的hdlbc轻量级分组密码家族。hdlbc克服了在传统feistel结构一次迭代后仅更改一半明文的困难;得益于在非线性层中使用nand运算以及全新设计的轮函数,hdlbc实现了在扩散和硬件消耗之间的权衡。如表4、表5以及图5所示,与当前高效的轻量级分组密码相比,hdlbc实现了具有竞争力的硬件性能(特别是与simon相比)。同时,本发明也证明了hdlbc可以抵抗差分分析、线性分析、不可能差分分析、零相关线性分析和积分分析等。
[0091]
对本发明实施例提供的方法进行测试,其中本发明提供的hdlbc-64-64算法数据如下所示:
函数运算中的l
i+1
。
[0117]
分支异或运算层还用于执行二次分支异或运算,即将p0和p2分别与ra2函数运算中的l
i+1
分别进行异或运算,即
[0118]
p置换层用于对p0'、p1'、p2'、p3'执行加密过程的p置换。
[0119]
对应解密过程,ra1函数运算层用于执行解密过程的ra1函数运算、分支异或运算层用于执行解密过程的一次分支运算以及二次分支运算,ra2函数运算层用于执行解密过程的ra2函数运算,p置换层用于执行解密过程的p置换。
[0120]
其中,加解密运算模块以及子密钥更新模块的具体实现过程可以参照实施例1的相关说明。
[0121]
应当理解,各个模块的实现过程可以参照前述方法的内容陈述,上述功能模块的划分仅仅是一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。同时,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0122]
实施例3:
[0123]
本实施例还提供一种电子终端,该电子终端至少包括:一个或多个处理器;存储了一个或多个计算机程序的存储器;其中,所述处理器调用所述计算机程序以实现:所述一种高扩散轻量级分组密码的实现方法的步骤。具体执行如下:
[0124]
步骤1:获取明文作为待加密数据或者密文作为待解密数据;
[0125]
步骤2:利用轮函数执行r轮运算,即对所述待加密数据执行r轮加密运算或对所述待解密数据执行r轮解密运算。
[0126]
其中,所述处理器调用所述计算机程序以实现:每一轮子密钥的编排与更新,其中,具体执行如下:
[0127]
获取初始密钥并执行p置换(按照表1),再后均分成左右两个分支lkeyi和rkeyi;
[0128]
将rkeyi异或上lkeyi'和当前执行的轮数i的值赋给rkey
i+1
,即,即以及将lkeyi执行循环左移16比特后与rkeyi进行逻辑与非运算更新lkeyi',并将lkeyi'赋值给lkey
i+1
',即lkeyi'=~((lkeyi《《《16)&rkeyi),lkey
i+1
=lkeyi'。
[0129]
各个步骤的具体实现过程请参照前述方法的阐述。
[0130]
其中,存储器可能包含高速ram存储器,也可能还包括非易失性除颤器,例如至少一个磁盘存储器。
[0131]
如果存储器、处理器独立实现,则存储器、处理器和通信接口可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构总线,外部设备互联总线或扩展工业标准体系结构总线等。所述总线可以分为地址总线、数据总线、控制总线等。
[0132]
可选的,在具体实现上,如果存储器、处理器集成在一块芯片上,则存储器、处理器可以通过内部接口完成相互之间的通信。
[0133]
应当理解,在本发明实施例中,所称处理器可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,
asic)、现成可编程门阵列(field-programmable gatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
[0134]
实施例4:
[0135]
本实施例还提供一种可读存储介质,该可读存储介质存储了计算机程序,所述计算机程序被处理器调用以实现:所述一种高扩散轻量级分组密码的实现方法的步骤。具体执行如下:
[0136]
步骤1:获取明文作为待加密数据或者密文作为待解密数据;
[0137]
步骤2:利用轮函数执行r轮运算,即对所述待加密数据执行r轮加密运算或对所述待解密数据执行r轮解密运算。
[0138]
其中,所述计算机程序被处理器调用以实现:每一轮子密钥的编排与更新,其中,具体执行如下:
[0139]
获取初始密钥并执行p置换(按照表1),再后均分成左右两分支lkeyi和rkeyi;
[0140]
将rkeyi异或上lkeyi'和当前执行的轮数i的值赋给rkey
i+1
,即,即以及将lkeyi执行循环左移16比特后与rkeyi进行逻辑与非运算更新lkeyi',并将lkeyi'赋值给lkey
i+1
',即lkeyi'=~((lkeyi《《《16)&rkeyi),lkey
i+1
=lkeyi'。
[0141]
各个步骤的具体实现过程请参照前述方法的阐述。
[0142]
所述可读存储介质为计算机可读存储介质,其可以是前述任一实施例所述的控制器的内部存储单元,例如控制器的硬盘或内存。所述可读存储介质也可以是所述控制器的外部存储设备,例如所述控制器上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述可读存储介质还可以既包括所述控制器的内部存储单元也包括外部存储设备。所述可读存储介质用于存储所述计算机程序以及所述控制器所需的其他程序和数据。所述可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
[0143]
基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的可读存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0144]
需要强调的是,本发明所述的实例是说明性的,而不是限定性的,因此本发明不限于具体实施方式中所述的实例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,不脱离本发明宗旨和范围的,不论是修改还是替换,同样属于本发明的保护范围。
技术特征:
1.一种高扩散轻量级分组密码hdlbc的实现方法,其特征在于:包括以下步骤:步骤1:获取明文作为待加密数据或者密文作为待解密数据;步骤2:利用轮函数执行r轮运算,即对所述待加密数据执行r轮加密运算或对所述待解密数据执行r轮解密运算;其中,按序将所述待加密数据分为4部分p0||p1||p2||p3,每一轮加密运算是对所述待加密数据执行ra1函数运算、分支异或运算、ra2函数运算以及p置换,前一轮加密运算的结果作为下一轮加密运算的待加密数据;每一轮加密运算中子密钥中部分比特参与所述ra1函数运算中轮密钥加运算;剩余比特参与所述ra2函数运算中轮密钥加运算;所述解密运算为所述加密运算的逆序执行,且r轮解密运算的子密钥使用顺序与r轮加密运算的子密钥的顺序相反。2.根据权利要求1所述的方法,其特征在于:每一轮加密运算中对所述待加密数据执行ra1函数运算、分支异或运算、ra2函数运算的过程如下:ra1函数运算:将p0赋值给ra1函数中的l
i
,p2赋值给ra1函数中的r
i
,然后将l
i
和r
i
分别循环左移,再将左移后的l
i
′
和r
i
′
执行逻辑与非运算后的结果与r
i
′
和轮子密钥sk
i
进行异或运算,再赋值给ra1函数运算中的l
i+1
,即一次分支异或运算:将p1和p3分别与ra1函数运算中的l
i+1
执行异或运算得到p1′
和p3′
,并分别作为ra2函数中的l
i
和r
i
,即l
i
=p1′
,r
i
=p3′
;ra2函数运算:将ra2函数中的l
i
和r
i
分别循环左移,再将左移后的l
i
′
和r
i
′
执行逻辑与非运算后的结果与r
i
′
和轮子密钥sk
i
进行异或运算,再赋值给ra2函数运算中的l
i+1
;二次分支异或运算:将p0和p2分别与ra2函数运算中的l
i+1
分别进行异或运算,即即其中,二次分支异或运算得到的p0′
、p1′
、p2′
、p3′
用于后续执行p置换。3.根据权利要求1所述的方法,其特征在于:子密钥的编排过程如下:获取初始密钥并执行p置换,再均分为两分支lkey
i
和rkey
i
;将rkey
i
异或上lkey
i
′
和当前执行的轮数i的值赋给rkey
i+1
,即即以及将lkey
i
执行循环左移后与rkey
i
进行逻辑与非运算用于更新lkey
i
′
,并将更新的lkey
i
′
赋值给lkey
i+1
′
;其中,rkey
i+1
中16比特应用于第i+1轮加密运算中所述ra1函数运算中轮密钥加运算,其他16比特应用于第i+1轮加密运算中所述ra2函数运算中轮密钥加运算;以及赋值后的两分支lkey
i+1
、rkey
i+1
参与下一轮i+1的子密钥编排。4.根据权利要求3所述的方法,其特征在于:若所述初始密钥为64位,则将rkey
i+1
中最低有效位的前16比特应用于所述ra1函数运算中轮密钥加运算,剩下的16比特应用于所述ra2函数运算中轮密钥加运算;若所述初始密钥为128位,则将rkey
i+1
中最低有效位的32比特中前16比特应用于所述ra1函数运算中轮密钥加运算,后16比特应用于所述ra2函数运算中轮密钥加运算。5.根据权利要求1所述的方法,其特征在于:所述加密运算的p置换对应的置换对应值如下:当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}时,p(i)={57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,56,48,40,32,24,16,8,0,58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6};所述解密运算的p置换对应的置换对应值如下:当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}时,p(i)={39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25,32,0,40,8,48,16,56,24};表中,i、p(i)对应第i、p(i)比特位置。6.一种基于权利要求1-5任一项所述方法的系统,其特征在于:包括:数据获取模块,用于获取明文作为待加密数据或者密文作为待解密数据;加解密轮运算模块,用于利用轮函数执行r轮运算,即对所述待加密数据执行r轮加密运算或对所述待解密数据执行r轮解密运算;子密钥更新模块,用于更新每一轮加解密运算的子密钥;其中,按序将所述待加密数据分为4部分p0||p1||p2||p3,每一轮加密运算是对所述待加密数据执行ra1函数运算、分支异或运算、ra2函数运算以及p置换,前一轮加密运算的结果作为下一轮加密运算的待加密数据;每一轮加密运算中子密钥中部分比特参与所述ra1函数运算中轮密钥加运算;剩余比特参与所述ra2函数运算中轮密钥加运算;所述解密运算为所述加密运算的逆序执行,且r轮解密运算的子密钥使用顺序与r轮加密运算的子密钥的顺序相反。7.一种电子终端,其特征在于:至少包括:一个或多个处理器;存储了一个或多个计算机程序的存储器;其中,所述处理器调用所述计算机程序以实现:权利要求1-5任一项所述方法的步骤。8.一种可读存储介质,其特征在于:存储了计算机程序,所述计算机程序被处理器调用以实现:权利要求1-5任一项所述方法的步骤。
技术总结
本发明公开了一种高扩散轻量级分组密码HDLBC的实现方法,包括:获取明文或密文作为待加/解密数据;对待加/解密数据执行R轮加/解密运算,每一轮加密运算是对待加密数据执行RA1函数运算、分支异或运算、RA2函数运算以及P置换,每一轮加密运算中子密钥中部分比特参与RA1函数运算中轮密钥加运算;剩余比特参与RA2函数运算中轮密钥加运算;解密运算为加密运算的逆序执行,且R轮解密运算的子密钥使用顺序与R轮加密运算的子密钥的顺序相反。本发明所述方法设计了基于NAND运算的F函数以及设计了引入两个F函数实现影响所有分支的轮函数,更好的保证了算法的扩散性以及面积消耗。好的保证了算法的扩散性以及面积消耗。好的保证了算法的扩散性以及面积消耗。
技术研发人员:李永超 韦永壮 冯景亚
受保护的技术使用者:桂林电子科技大学
技术研发日:2023.05.05
技术公布日:2023/7/20
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
