CN109768854A - 一种轻量级分组密码算法Wheel的实现方法 - Google Patents
一种轻量级分组密码算法Wheel的实现方法 Download PDFInfo
- Publication number
- CN109768854A CN109768854A CN201910250703.2A CN201910250703A CN109768854A CN 109768854 A CN109768854 A CN 109768854A CN 201910250703 A CN201910250703 A CN 201910250703A CN 109768854 A CN109768854 A CN 109768854A
- Authority
- CN
- China
- Prior art keywords
- wheel
- key
- xor
- group
- data block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明公开了一种轻量级分组密码算法Wheel的实现方法,包括利用初始加密密钥计算轮数,再利用初始加密密钥依次得到中间密钥、白化密钥;并对明文进行分组,再对分组的明文进行R轮轮运算,轮运算由F函数操作、FF函数操作和按位异或操作组成,每一轮轮运算均是对N组加密信息进行处理,每下一轮轮操作对应的N组加密信息为前一轮轮操作的输出信息;最后对轮运算后的输出数据进行Sa置换操作得到输出数据,并将输出数据与初始加密密钥的低位进行轮加密操作得到加密后的明文信息。本发明通过该方法提高了加密的安全性以及效率。
Description
技术领域
本发明属于计算机加密技术领域,具体涉及一种轻量级分组密码算法Wheel的实现方法。
背景技术
近年来,轻量级加密算法凭借其密钥长度相对较短、密码算法结构简单、资源消耗小等特点成为物联网加密算法研究的重要方向之一。轻量级分组密码算法必须能够在硬件资源严格受限的硬件设备上快速执行且要保证相对的安全性。轻量级密码算法与传统密码算法相比,轻量级密码算法的执行效率更高、计算资源消耗更少,更适合于计算能力有限的RFID标签、微型无线传感器等设备。而当下许多轻量级密码已被设计和实施,以提供诸如无线传感器节点和RFID标签等应用的安全性,这些应用的限制因素是其占地面积,门电路等效数量(GE)和功耗。
数据加密技术是网络安全的基石,其具体实现是以加密算法为载体进行实现。分组密码具有速度快、易于标准化和便于软硬件实现等特点,通常是信息与网络安全中实现数据加密的核心体制之一。由于分组密码出现较早,各项技术成熟,为轻量级分组密码的研究提供了基础。
随着物联网技术的不断发展,物联网环境下的数据安全也对物联网技术提出了新的问题和挑战,越来越多的轻量级分组密码算法被提出。2011年以来,国际学术界就陆续发表了一些有关轻量级分组密码算法的论文,如密码硬件与嵌入式系统国际会议提出的Piccolo,国际安全、隐私和应用密码学工程学会议(SPACE2014)提出的Khudra等。
目前轻量级分组密码算法仍存在一下几个问题:
(1)在有限的环境计算资源下,轻量级分组密码算法仍需要在安全性和效率之间进行权衡。一些轻量级密码算法为了抵抗差分功耗攻击和多种技术相结合的旁路攻击,把密码组件或者运算模块设计得较为复杂,从而使得算法占用较多的计算资源。
(2)一些轻量级密码算法多采用固定组件,算法不能对自身进行控制和调节。
(3)目前一些轻量级算法的加密模式比较固定,加密的轮数和运算变换模块是高度确定的,这种高度的确定性将会在一定程度上给算法带来安全隐患。比如,绝大多数的轻量级算法中,密钥长度固定,那么意味着加密算法的轮数也是固定不变的;还有一些轻量级算法的S盒替换是直接用固定的S盒去参与运算变化,这样在一定程度上增加了算法被破解的可能性。
因此,现有的轻量级分组密码算法的可靠性还需要进一步提高,需要安全性更高的轻量级分组密码算法。
发明内容
本发明的目的是针对现有轻量级分组密码算法的安全性能还有待提高的问题,提供一种轻量级分组密码算法Wheel的实现方法,提高了加密过程的安全性以及提高了算法的效率。
一方面,本发明一种轻量级分组密码算法Wheel的实现方法,包括如下步骤:
S1:获取待加密的明文和初始加密密钥,并基于所述初始加密密钥计算出轮数R;
S2:按照从高位至低位顺序并依据预设分组长度对所述初始加密密钥进行分组得到中间密钥,并利用中间密钥生成N个白化密钥;
S3:按照从高位至低位顺序并依据预设分组长度对所述明文进行分组得到N组明文信息,并利用部分白化密钥对所述N组中的Ni标号组明文信息进行异或运算得到N组初始加密信息,其中,所述N组初始加密信息包括异或处理后的Ni标号组信息以及未异或处理的明文信息;
S4:利用所述N组初始加密信息进行R轮轮运算得到N组输出数据,所述轮运算由F函数操作、FF函数操作和按位异或操作组成;
其中,每一轮轮运算均是对N组加密信息进行处理,每下一轮轮操作对应的N组加密信息为前一轮轮操作的输出信息构成;所述F函数操作由轮密钥加操作(AddRoundKey)、S盒替换(S_Box_Layer)、位混淆(Bit_Shuffle)、异或操作(XOR_Operation)组成;所述FF函数为二类广义Feistel网络结构,包括S盒和循环左移操作;
S5:利用步骤S3中剩余白化密钥对步骤S4中到N组输出数据中Ni标号组对应数据进行异或处理得到N个数据块,所述N个数据块包括异或处理后的输出数据以及未异或处理的异或数据;
S6:将步骤S5中N个数据块作为Sa置换操作的初始值进行Sa置换操作得到输出数据,并将输出数据与初始加密密钥的低位进行轮加密操作;其中,初始加密密钥的低位位数长度与输出数据的位数长度相同。
本发明的加密过程的轮数取决于初始密钥,每次加密过程中输入不同的初始密钥,轮数也会相应变化,解决了加密轮数高度确定所存在的安全性;同时,相比于固定轮数算法,其资源消耗差别不大并且具有一定的安全性的情况下,对相同的明文进行加密时所花费的时间要小于等于固定轮数的算法,从而提高了算法的效率,这是由于一般情况下设计密码算法的轮数时会考虑轮数余量,在保证算法不受到攻击的最低轮数的基础上,增加轮数一定的轮数来作为轮数的余量,而本算法设计的动态轮数就是在最低轮数的基础上进行动态变化。例如,密码参与模块运算的轮数固定时,一组数据加密的时间也固定,而当密码参与模块运算的轮数不固定时,在保证算法不被攻击的基础上,一组数据加密的时间只会小于等于固定轮数时所需时间。此外,在轮运算结束后通过Sa置换,又一次对分组进行调整,克服现有Feistel结构算法中一轮迭代只能改变部分分组数据,扩散和混淆程度不高的问题。
进一步优选,步骤S4中每一轮轮运算的过程如下:
对所述N组加密信息中,利用F函数对所述N组加密信息中Ni标号组加密信息进行处理得到Ni标号组F函数输出信息,然后,将所述Ni标号组F函数输出信息分别与所述N组加密信息中非Ni标号组加密信息、当前轮运算对应的外部轮密钥进行异或处理得到非Ni标号组信息;
其中,每一轮轮运算的外部轮密钥是基于当前轮的轮数并利用中间密钥生成的,每一轮轮运算中一个Ni标号组F函数输出信息对应一个外部轮密钥;
对所述N组加密信息中,利用FF函数对所述N组加密信息中Ni标号组加密信息进行处理得到Ni标号组信息;
其中,所述非Ni标号组信息作为下一轮轮运算中Ni标号组信息,将Ni标号组信息作为下一轮轮运算中非Ni标号组信息。
进一步优选,所述FF函数的轮数按照如下规则确定:
若轮数R满足:15≤R<20,所述FF函数的轮数为8轮;
若轮数R满足:20≤R<25,所述FF函数的轮数为6轮;
若轮数R满足:25≤R≤30,所述FF函数的轮数为4轮。
从上述可知,FF函数的轮数与算法轮数相关,而算法轮数又与初始加密密钥有关。当外部轮数较大或较小时,FF函数的轮数都相应作出调整,从而构成一个负反馈机制。若当外部轮数较小时,待加密的明文混淆性和扩散性都不足时,算法容易遭到攻击,这时FF函数可以增加其轮数起到一个平衡作用,从而使得算法对自身进行控制和调节,这样能提高算法的安全性。
进一步优选,每一次轮运算中,利用F函数对所述N组加密信息中Ni标号组加密信息进行处理得到Ni标号组F函数输出信息的执行过程如下:
S4.1:对所述N组加密信息中Ni标号组加密信息进行轮密钥加操作(AddRoundKey);
其中,所述轮密钥加操作(AddRoundKey)为利用轮密钥加操作的轮密钥对Ni标号组加密信息进行异或处理;
S4.2:将步骤S4.1中轮密钥加操作(AddRoundKey)的输出数据作为S盒替换(S_Box_Layer)的输入数据进行S盒替换运算;
S4.3:将步骤S4.2中S盒替换操作(S_Box_Layer)的输出数据作为位混淆(Bit_Shuffle)的输入数据进行位混淆操作(Bit_Shuffle);
S4.4:将位混淆操作(Bit_Shuffle)的输出数据作为异或操作(XOR_Operation)的输入数据进行操作,输出数据为所述Ni标号组F函数输出信息。
进一步优选,步骤S4.2中当前轮运算的轮数为奇数轮时,采用PRESENT算法的S盒;当前轮运算的轮数为偶数轮时,采用Piccolo算法的S盒。
当轮数为奇数轮时,引用Piccolo算法S盒;当轮数为偶数轮时,引用PRESENT算法S盒,在一定程度上可以提高了算法的安全性。
进一步优选,步骤S3中所述预设分组长度为16位,步骤S4.4的执行过程如下:
首先,将位混淆操作(Bit_Shuffle)输出数据中每个标号组对应的输出数分别从高位到低位按照4位一组划分,记为:xor0、xor1、xor2及xor3;
然后,将xor0、xor3分别对应与xor2、xor1进行异或操作得到xor1'和xor2';
其次,将得到的xor1'、xor2'分别对应与xor0、xor3进行异或操作得到xor0'和xor3';
最后,将得到的结果按从左至右从高位到低位的顺序排列为xor0'、xor1'、xor2'和xor3';并依此连接输出。
进一步优选,步骤S4.1中所述轮密钥加操作(AddRoundKey)的轮密钥是由步骤S2中的中间密钥中任意两组中间密钥进行按位异或计算得到,轮密钥加操作(AddRoundKey)的轮密钥表示为:k[j],(0,1...j...);
步骤S4.1中选择的轮密钥加操作(AddRoundKey)的轮密钥是根据轮数R选取的,规则如下:
当密钥长度为96位时,步骤S4.1中选择的轮密钥加操作(AddRoundKey)的轮密钥k[j]中满足:j=R%15;
当密钥长度为128位时,步骤S4.1中选择的轮密钥加操作(AddRoundKey)的轮密钥k[j]中满足:j=R%28。
进一步优选,步骤S3中所述预设分组长度为16位,明文长度为64位,得到的所述N个数据块为4个数据块,步骤S6中将步骤S5中N个数据块作为Sa置换操作的初始值进行Sa置换操作得到输出数据的执行过程如下:
S6.1:将4个数据块从左至右标记为P1、P2、P3和P4,并分别对所述4个数据块从高位到低位依次划分为8个字节g0,g1,g2,g3,g4,g5,g6,g7;
每个数据块从高位到低位依次划分为2个字节,每个数据块均为4×4矩阵;
数据块P1从高位到低位依次划分为8个字节g0,g1,数据块P2从高位到低位依次划分为8个字节g2,g3,数据块P3从高位到低位依次划分为8个字节g4,g5,数据块P4从高位到低位依次划分为8个字节g6,g7;
S6.2:分别将4数据块P1、P2、P3和P4依数据块矩阵的两条中心对称轴划分成4个2×2的数据块矩阵,并从左上角的2×2数据块矩阵开始按照顺时针顺序分别对应给所述4个2×2的数据块矩阵编号为Ai、Bi、Di和Ci(1≤i≤4),以及对每个2×2的数据块矩阵Ai、Bi、Di和Ci从左上角开始按照顺时针对应编号为a1、a2、a4和a3,b1、b2、b4和b3,d1、d2、d4和d3以及ci、c2、c4和c3;
S6.3:对每个数据块中的4个2×2数据块矩阵Ai、Bi、Di和Ci分别按照预设顺序进行置换操作,过程如下:
对于数据块P1,将数据块矩阵P1中A1区域从a2开始按逆时针连接到a4结束组成g0'的前半字节,接着C1区域也从c2开始按逆时针连接到c4结束组成g0'的后半字节,B1区域从b1开始按顺时针连接到b3结束组成g1'的前半字节,D1区域也从d1开始按顺时针连接到d3结束组成g1'的后半字节;
对于数据块P2,将数据块矩阵P2中B2区域从b4开始按逆时针连接到b3结束组成g2'的前半字节,接着A2区域也从a4开始按逆时针连接到a3结束组成g2'的后半字节,C2区域从c1开始按逆时针连接到c2结束组成g3'的前半字节,D2区域也从d1开始按逆针连接到d2结束组成g3'的后半字节;
对于数据块P3,将数据块矩阵P3中C3区域从c3开始按逆时针连接到c1结束组成g4'的前半字节,接着A3区域也从a3开始按逆时针连接到a1结束组成g4'的后半字节,D3区域从d4开始按顺时针连接到d2结束组成g5'的前半字节,B3区域也从b4开始按逆顺针连接到b2结束组成g5'的后半字节;
对于数据块P4,将数据块矩阵P4中A4区域从a1开始按逆时针连接到a2结束组成g6'的前半字节,接着B4区域也从b1开始按逆时针连接到b2结束组成g6'的后半字节,D4区域从d4开始按逆时针连接到d3结束组成g7'的前半字节,C4区域也从c4开始按逆顺针连接到c3结束组成g7'的后半字节;
S6.4:按照g3',g7',g5',g6',g1',g4',g0',g2'的顺序进行连接并输出数据形成64位数据输出。
Sa置换是在待加密明文经过轮运算后又一次对其进行从字节到位的置换,从而增加扩散性,提高算法的安全性,不易遭到攻击。因此,本发明在轮运算后加入Sa置换,相较于其他基于Feistel结构的轻量级算法安全性和加密性更优越。
进一步优选,步骤S1中,轮数R的获取方式如下:
S1.1:提取所述初始加密密钥中高八位的值cnt;
S1.2:将步骤S1.1中值cnt对15进行取余操作;
S1.3:将步骤1.2获得的值与基础轮数相加得到算法的轮数R,所述基础轮数为15。其中,轮数R的计算公式如下:
R=cnt%15+15。
算法的轮数取决于初始密钥的高8位的值,即算法轮数是动态的。当对待加密的明文进行加密时,本算法的轮数是在一定区间内对待加密的明文进行加密,即算法所需时间也是在一定区间内取值,相较于固定轮数,动态轮数所需时间只会小于等于固定轮数所需时间,从而提高了算法加密的效率。
进一步优选,所述白化密钥的计算公式如下:
公式a为密钥长度为96位时的白化密钥计算公式,公式b为密钥长度为128位时的白化密钥计算公式;
公式a:
wk0←k_i[0]L|k_i[1]R,wk1←k_i[1]L|k_i[0]R,wk2←k_i[4]L|k_i[3]R,
wk3←k_i[3]L|k_i[4]R
公式b:
wk0←k_i[0]L|k_i[1]R,wk1←k_i[1]L|k_i[0]R,wk2←k_i[4]L|k_i[7]R,
wk3←k_i[7]L|k_i[4]R
式中,wk0、wk1、wk2、wk3表示得到的四个白化密钥;|为连接符,k_i[0]L、k_i[1]L、k_i[3]L、k_i[4]L、k_i[7]L分别表示中间密钥k_i[0]、k_i[1]、k_i[3]、k_i[4]、k_i[7]的高8位,k_i[0]R、k_i[1]R、k_i[3]R、k_i[4]R、k_i[7]R分别表示中间密钥k_i[0]、k_i[1]、k_i[3]、k_i[4]、k_i[7]的低8位。
本发明若得到N组加密信息是表示4组,则在步骤S4中涉及的外部轮密钥按照如下规则计算,本发明中每一轮轮运算需要两个外部轮密钥。
公式c为密钥长度为96位时外部轮密钥计算公式,公式d为密钥长度为128位时外部轮密钥计算公式:
公式c:
公式d:
式中,rk2i,rk2i+1表示当前轮数对应的外部轮密钥,|为连接符,⊕为异或符,mod代表取余运算,k_i[0]、k_i[2]、k_i[1]、k_i[3]、k_i[4]分别表示中间密钥;
{}16为十六进制数,{}2为二进制数,i为当前轮数(i的取值是0至R-1),ci是用5位二进制数表示的十进制数i。
从上述来看,本发明针对密钥是96位或者128位提供了不同的计算公式。且由于密钥长度不同,按照预设分组长度生成的中间密钥也必然不同,譬如,预设分组长度为16时,若当密钥长度为96位时,将其从高位开始按16位一组分成6组,得到中间密钥k_i[0]、k_i[1]、k_i[2]、k_i[3]、k_i[4]、k_i[5]。若当密钥长度为128位时,将其从高位开始按16位一组分成8组,得到中间密钥k_i[0]、k_i[1]、k_i[2]、k_i[3]、k_i[4]、k_i[5]、k_i[6]、k_i[7]。
有益效果
1、本发明算法的轮数是利用初始加密密钥高八位的值,将其对15进行取余运算,取余得到的结果加上基础轮数15轮即为该次加密轮数,从而对算法轮数进行控制。一般情况下设计密码算法的轮数时会考虑轮数余量,在保证算法不受到攻击的最低轮数的基础上,增加轮数一定的轮数来作为轮数的余量,而本算法设计的动态轮数就是在最低轮数的基础上进行动态变化提高加密的效率。这是因为密码参与模块运算的轮数固定时,一组数据加密的时间也固定,而当密码参与模块运算的轮数不固定时,在保证算法不被攻击的基础上,一组数据加密的时间只会小于等于固定轮数时所需时间。
2、本发明算法的轮数是根据初始加密密钥生成的,每次计算时输入的初始加密密钥不同,则轮数不同,且一旦变化,算法的轮数则变化。相较于一些采用固定组件的轻量级密码算法,本发明能够对自身进行控制与调节;同时FF函数轮数又取决于算法的轮数,形成了一个负反馈机制,尤其是引入本发明的FF函数,当外部轮数较小时,FF函数中的轮数就可以相对取一个较大的值,当外部轮数较大时,FF函数中的轮数就可以相对取一个较小的值,避免外部轮数较小而导致待加密的明文扩散和混淆程度不够,算法安全性不高的问题。
3、本发明在轮运算后加入了Sa置换,在一定程度上提高了算法的扩散性,相比于其他基于Feistel结构的轻量级算法安全性和加密性更优越。同时,在F函数中引用Piccolo和PRESENT两个算法的S盒,当轮数为奇数轮时,引用Piccolo算法S盒;当轮数为偶数轮时,引用PRESENT算法S盒,这样在一定程度上提高了算法的安全性。
4、本发明在资源占用不大的情况下,能够抵抗差分功耗攻击,提高了算法的安全性。这是基于差分功耗攻击是通过监测硬件装置的功耗曲线,利用统计的方法对所收集到的曲线进行分析处理,因此把密码组件设计的较为复杂而导致资源占用过多的情况,而本算法在硬件资源占用不多的情况下,提出了一种新的Sa置换方式,没有使用16位为单位的字循环移位,而是以1位为单位进行置换后又以8位为单位进行置换排列,这样拆除了16位的字结构,提高了算法的抗统计分析能力,从而能够抵抗差分功耗攻击,提高算法的安全性。
附图说明
图1为本发明所述加密过程示意图;
图2为本发明所述解密过程示意图;
图3为本发明F函数运算过程示意图;
图4为本发明F函数运算中Bit_Shuffle过程示意图;
图5为本发明F函数运算中XOR_Operation过程示意图;
图6为本发明FF函数运算过程示意图;
图7为本发明Sa置换运算过程示意图。
具体实施方式
下面将结合实施例对本发明做进一步的说明。
本发明实施例提供的一种轻量级分组密码算法Wheel的实现方法是用于对明文进行加密,其中,本实施例中明文的长度为64位,密钥的长度分为96位和128位两种,其分别在15轮到30轮和36轮到48轮之间进行轮函数迭代。本发明中轮函数包括F函数和FF函数,如图1所示。
F轮函数包含:轮密钥加(AddRoundkey)、S盒替换(S_Box_Layer)、位混淆(Bit_Shuffle)和异或操作(XOR_Operation)四个模块。
FF轮函数基于广义Feistel网络结构,包含异或操作和循环左移操作。
本发明实施例提供的一种轻量级分组密码算法Wheel的实现方法,包括如下步骤:
S1:获取待加密的明文和初始加密密钥,并基于所述初始加密密钥计算出轮数R。
其中,本实施例中,待加密的明文为64位。并依据初始加密密钥确定轮数R,规则如下:轮数R取决于该次加密过程中输入密钥数据的高八位的值,取当前加密过程中输入密钥高八位的值cnt,再将值cnt对15进行取余,得到的结果加上基础轮数15轮为该次加密过程的轮数值。
轮数R的计算公式如下:
R=cnt%15+15
S2:按照从高位至低位顺序并依据预设分组长度对所述初始加密密钥进行分组得到中间密钥,并利用中间密钥生成N个白化密钥。
本实施例中,预设分组长度为16位。当初始加密密钥长度为96位时,将其从高位开始按16位一组分成6组,得到中间密钥k_i[0]、k_i[1]、k_i[2]、k_i[3]、k_i[4]、k_i[5]。在这6组16位中间密钥中任意取出两组进行按位异或,这种情况下可以得到15组F函数中轮密钥加操作(AddRoundKey)的轮密钥,分别为k[0],k[1],...,k[13],k[14]。
若当密钥长度为128位时,将其从高位开始按16位一组分成8组,得到中间密钥k_i[0]、k_i[1]、k_i[2]、k_i[3]、k_i[4]、k_i[5]、k_i[6]、k_i[7]。在这8组16位中间密钥中任意取出两组进行按位异或,这种情况下可以得到28组F函数中轮密钥加操作(AddRoundKey)的轮密钥,分别为k[0],k[1],...,k[26],k[27]。
然后依据中间密钥可以生成白化密钥和外部轮密钥。其中,白化密钥的计算公式为,公式a为密钥长度为96位时的白化密钥计算公式,公式b为密钥长度为128位时的白化密钥计算公式。其中,本实施例中利用中间密钥生成4个白化密钥。
公式a:
wk0←k_i[0]L|k_i[1]R,wk1←k_i[1]L|k_i[0]R,wk2←k_i[4]L|k_i[3]R,
wk3←k_i[3]L|k_i[4]R
公式b:
wk0←k_i[0]L|k_i[1]R,wk1←k_i[1]L|k_i[0]R,wk2←k_i[4]L|k_i[7]R,
wk3←k_i[7]L|k_i[4]R
式中,wk0、wk1、wk2、wk3表示得到的四个白化密钥;|为连接符,k_i[0]L、k_i[1]L、k_i[3]L、k_i[4]L、k_i[7]L分别表示中间密钥k_i[0]、k_i[1]、k_i[3]、k_i[4]、k_i[7]的高8位,k_i[0]R、k_i[1]R、k_i[3]R、k_i[4]R、k_i[7]R分别表示中间密钥k_i[0]、k_i[1]、k_i[3]、k_i[4]、k_i[7]的低8位。
S3:按照从高位至低位顺序并依据16位对所述明文进行分组得到4组明文信息X[0]、X[1]、X[2]、X[3],并利用部分白化密钥wk0、wk1对所述4组中的Ni标号组明文信息X[0]、X[2]进行异或运算得到X1[0]和X1[2],最终得到4组初始加密信息X1[0]、X[1]、X1[2]及X[3]。本实施例中,Ni标号组表示X[0]、X[2]。
其中,具体是将X[0]与wk0、X[2]与wk1进行异或运算获得X1[0]和X1[2]。
S4:利用所述4组初始加密信息X1[0]、X[1]、X1[2]及X[3]进行R轮轮运算得到N组输出数据。轮运算由F函数操作、FF函数操作和按位异或操作组成。
每一轮的运算过程包括F函数操作、FF函数操作和按位异或操作,具体过程如下:
首先关于F函数操作部分:
S4.1:对所述4组加密信息中X1[0]、X1[2]组加密信息进行轮密钥加操作(AddRoundKey);
前述已给出,密钥为96位时,轮密钥加操作(AddRoundKey)的轮密钥为15组,分别表示为:k[0],k[1],...,k[13],k[14];密钥为128位时,轮密钥加操作(AddRoundKey)的轮密钥为28组,分别表示为:k[0],k[1],...,k[26],k[27]。本步骤中根据轮数R选取轮密钥加操作(AddRoundKey)的轮密钥,规则如下:
当密钥长度为96位时,步骤S4.1中选择的轮密钥加操作(AddRoundKey)的轮密钥k[j]中满足:j=R%15;
当密钥长度为128位时,步骤S4.1中选择的轮密钥加操作(AddRoundKey)的轮密钥k[j]中满足:j=R%28。
轮密钥加操作(AddRoundKey)是利用其轮密钥k[j]对X1[0]、X1[2]组加密信息进行异或处理得到Xadd[0]、Xadd[2];即
S4.2:将步骤S4.1中轮密钥加操作(AddRoundKey)输出Xadd[0]、Xadd[2]的作为S盒替换(S_Box_Layer)的输入数据进行S盒替换运算(S_Box_Layer)得到Xsbox[0]、Xsbox[2]。
S盒替换(S_Box_Layer)是一个基于S盒的非线性置换,它用于输入或中间态每一个字节通过一个简单的查表操作,将其映射为另一个字节。映射方法是把输入的数通过查表对应输出的数,而F函数中S盒替换(S_Box_Layer)运算表达式为:Xsbox[0]=S(Xadd[0]),Xsbox[2]=S(Xadd[2])。本实施例中,器件S盒在奇数轮是采用的PRESENT算法的S盒,记作sbox1,在偶数轮是采用的Piccolo算法的S盒,记作sbox2。该操作使得算法在奇数轮和偶数轮所使用的扩散器件不同从而在一定程度上提高了算法的安全性。本发明实施例中,F函数中使用的S盒和FF函数中使用的S盒实现。其中,在F函数中,用PRESENT算法加密的S盒如下表1所示:
表1 sbox1盒元素
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
S1[x] | C | 5 | 6 | B | 9 | 0 | A | D | 3 | E | F | 8 | 4 | 7 | 1 | 2 |
在F函数中,用Piccolo算法加密的S盒如下表2所示:
表2 sbox2盒元素
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
S2[x] | E | 4 | B | 2 | 3 | 8 | 0 | 9 | 1 | A | 7 | F | 6 | C | 5 | D |
S4.3:将步骤S4.2中S盒替换操作(S_Box_Layer)输出数据Xsbox[0]、Xsbox[2]作为位混淆(Bit_Shuffle)的输入数据进行位混淆操作(Bit_Shuffle)得到Xbs[0]、Xbs[2]。
位混淆(Bit_Shuffle)具体步骤如下:
步骤4.3.1:将输入的数据Xsbox[0](或Xsbox[2])从高位到低位按8位一组划分成2个部分,从高位到低位依次记作S0和S1;
步骤4.3.2:把输入数据中的高八位移到低八位,即将S0置换到初始S1的位置上,S1置换到初始S0位置上;
步骤4.3.3:将置换后的2组8位数据连接成16位输出得到Xbs[0](或Xbs[2])。
应当理解,本发明利用步骤4.3.1-步骤4.3.3分别对输出数据Xsbox[0]、Xsbox[2]进行处理。
S4.4:将位混淆操作(Bit_Shuffle)输出数据Xbs[0]、Xbs[2]作为异或操作(XOR_Operation)的输入数据进行操作,输出数据为所述Ni标号组F函数输出信息。其中,异或操作(XOR_Operation)的具体步骤如下:
步骤4.4.1:将输入的数据Xbs[0](或Xbs[2])从高位到低位按4位一组划分成4个部分,从高位到低位按4位一组分别依次记作xor0、xor1、xor2及xor3;
步骤4.4.2:将xor0、xor3分别对应与xor2、xor1进行异或操作得到xor1'和xor2',即
步骤4.4.3:将步骤4.4.2得到的xor1'、xor2'分别对应与xor0、xor3进行异或操作得到xor0'和xor3',即
步骤4.4.4:将步骤4.4.2和4.4.3得到的结果按从左至右从高位到低位的顺序排列为xor0'、xor1'、xor2'和xor3',将它们连接并输出数据得到Xf[0]或(Xf[2])。
应当理解,按照步骤4.4.1-4.4.4分别处理Xbs[0]、Xbs[2]得到Xf[0]、Xf[2]。
关于FF函数操作部分,在进入F函数操作的同时也进入FF函数进行操作。FF函数是简单的二类广义Feistel网络结构,主要由S盒和循环左移操作组成,其中S盒记作sbox。FF函数的轮数与外部轮运算轮数构成一个负反馈机制。FF函数的轮数按照如下规则确定:
若轮数R满足:15≤R<20,所述FF函数的轮数为8轮;
若轮数R满足:20≤R<25,所述FF函数的轮数为6轮;
若轮数R满足:25≤R≤30,所述FF函数的轮数为4轮。
本发明输入数据X1[0]、X1[2]进入FF函数进行操作之后得到Xff[0]、Xff[2]数据。FF函数中,S盒引用用Gift算法加密的S盒,如表3所示:
表3 sbox盒元素
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
S[x] | 1 | A | 4 | C | 6 | F | 3 | 9 | 2 | D | B | 7 | 5 | 0 | 8 | E |
关于按位异或操作部分:
将F函数输出得到的数据Xf[0]、Xf[2]又分别对应与X[1]、X[3]以及当前轮运算对应的外部轮密钥进行按位异或操作对应得到X'[1]和X'[3],即 rk2i,rk2i+1分别表示当前轮数i对应的两个外部轮密钥。i的取值为0至R-1,本发明得到的外部轮密钥的个数为2R个,表示为:rk0,rk1....rk2R-1。
公式c为密钥长度为96位时外部轮密钥计算公式,公式d为密钥长度为128位时外部轮密钥计算公式:
公式c:
公式d:
式中,rk2i,rk2i+1表示当前轮数对应的轮密钥,|为连接符,⊕为异或符,mod代表取余运算,{}16为十六进制数,{}2为二进制数,i为当前轮数,ci是用5位二进制数表示的十进制数i,例如,c0={00000}2,c11={01011}2。
将上述按位异或操作得到的数据X'[1]和X'[3]以及FF函数操作得到的数据Xff[0]、Xff[2]组成X'[1]、Xff[2]、X'[3]和Xff[0]。
关于下一轮轮运算,若当前轮数i小于R轮,则重复上述步骤进行轮运算,下一轮的轮运算的4组加密信息分别是上一轮的输出结果。即将当前轮运算的数据X'[1]、Xff[2]、X'[3]和Xff[0]作为下一轮轮运算的加密信息X1[0]、X[1]、X1[2]和X[3]。
S5:利用步骤S3中剩余白化密钥wk2、wk3对步骤S4中到4组输出数据中Xff[0]、Xff[2]组对应数据进行异或处理得到X'ff[0]、X'ff[2],最终得到4个数据块X'[1]、X'ff[2]、X'[3]、X'ff[0]。
S6:将步骤S5中4个数据块按照X'[1]、X'ff[2]、X'[3]、X'ff[0]的顺序作为Sa置换操作的初始值进行Sa置换操作得到输出数据,并将输出数据与初始加密密钥的低位进行轮加密操作。
Sa置换运算流程如图8所示,是将输入的64位数据从高位按16位一组划分成4×4的数据块矩阵,记为P1、P2、P3、P4,分别对这四个数据块矩阵按照置换表Pa1、Pa2、Pa3、Pa4进行置换。
表4 Wheel算法置换表Pa1元素
表5 Wheel算法置换表Pa2元素
表6 Wheel算法置换表Pa3元素
表7 Wheel算法置换表Pa4元素
具体的,如图8所示,Sa置换操作的过程如下:
S6.1:将4个数据块从左至右标记为P1、P2、P3和P4,并分别对所述4个数据块从高位到低位依次划分为8个字节g0,g1,g2,g3,g4,g5,g6,g7;
每个数据块从高位到低位依次划分为2个字节,每个数据块均为4×4矩阵;
数据块P1从高位到低位依次划分为8个字节g0,g1,数据块P2从高位到低位依次划分为8个字节g2,g3,数据块P3从高位到低位依次划分为8个字节g4,g5,数据块P4从高位到低位依次划分为8个字节g6,g7;
S6.2:分别将4数据块P1、P2、P3和P4依数据块矩阵的两条中心对称轴划分成4个2×2的数据块矩阵,并从左上角的2×2数据块矩阵开始按照顺时针顺序分别对应给所述4个2×2的数据块矩阵编号为Ai、Bi、Di和Ci(1≤i≤4),以及对每个2×2的数据块矩阵Ai、Bi、Di和Ci从左上角开始按照顺时针对应编号为a1、a2、a4和a3,b1、b2、b4和b3,d1、d2、d4和d3以及ci、c2、c4和c3;
S6.3:对每个数据块中的4个2×2数据块矩阵Ai、Bi、Di和Ci分别按照预设顺序进行置换操作,过程如下:
对于数据块P1,将数据块矩阵P1中A1区域从a2开始按逆时针连接到a4结束组成g0'的前半字节,接着C1区域也从c2开始按逆时针连接到c4结束组成g0'的后半字节,B1区域从b1开始按顺时针连接到b3结束组成g1'的前半字节,D1区域也从d1开始按顺时针连接到d3结束组成g1'的后半字节;
对于数据块P2,将数据块矩阵P2中B2区域从b4开始按逆时针连接到b3结束组成g2'的前半字节,接着A2区域也从a4开始按逆时针连接到a3结束组成g2'的后半字节,C2区域从c1开始按逆时针连接到c2结束组成g3'的前半字节,D2区域也从d1开始按逆针连接到d2结束组成g3'的后半字节;
对于数据块P3,将数据块矩阵P3中C3区域从c3开始按逆时针连接到c1结束组成g4'的前半字节,接着A3区域也从a3开始按逆时针连接到a1结束组成g4'的后半字节,D3区域从d4开始按顺时针连接到d2结束组成g5'的前半字节,B3区域也从b4开始按逆顺针连接到b2结束组成g5'的后半字节;
对于数据块P4,将数据块矩阵P4中A4区域从a1开始按逆时针连接到a2结束组成g6'的前半字节,接着B4区域也从b1开始按逆时针连接到b2结束组成g6'的后半字节,D4区域从d4开始按逆时针连接到d3结束组成g7'的前半字节,C4区域也从c4开始按逆顺针连接到c3结束组成g7'的后半字节;
S6.4:按照g3',g7',g5',g6',g1',g4',g0',g2'的顺序进行连接并输出数据形成64位数据输出。
最后是将得到的64位输出数据,将其与初始密钥中低64位进行轮密钥加操作,得到加密结果并输出。
本发明Wheel算法测试向量如表8、表9所示:
表8 Wheel-96测试数据
表9 Wheel-128测试数据
本发明所述的Wheel-96密码算法在Modelsim SE6.lf Evaluation上进行仿真;在SynopsysDesignComiler Version B-2008.09进行综合,其中综合工艺库为SMIC0.18μmCMOS,在综合实验中,面积资源用等效门数GE来衡量。
Wheel算法各组件硬件实现资源具体描述:64位明文保存在寄存器中需要344GE,96位保存在寄存器中需要580.8GE。一次加密时,F函数中密钥与明文的16位异或运算,需要38GE,因此需要38*2=76GE;F函数中S盒替换层使用的S盒是PRESENT和Piccolo算法的S盒,需要193.32GE;FF函数中XOR操作需要32GE。FF函数中S盒替换层使用的GIFT的S盒,需要24GE;FF函数是基于Feistel网络结构,与外部轮运算构成负反馈机制,因此轮数有4轮、6轮和8轮,其中每一轮有两个异或操作,因此当轮数为4轮时,需要16GE;当轮数为6轮时,需要24GE;当轮数为8轮时,需要32GE。FF函数中Bit置换和Sa置换,采用连线方式实现,硬件实现不需要消耗资源。最后一个轮密钥加操作64位密钥和明文的异或操作,需要172GE。Wheel-96算法硬件实现最多仅需要1453.46GE。表10是Wheel-96算法ASIC资源面积列表。
表10 Wheel-96算法资源列表
算法模块 | GE |
明文寄存器 | 344 |
密钥寄存器 | 580.8 |
64位异或单元 | 172 |
16位异或单元 | 76 |
F函数中S盒替换层 | 192.66 |
F函数中XOR操作 | 32 |
FF函数中S盒替换层 | 24 |
FF函数中4/6/8轮异或操作 | 16/24/32 |
Sa置换/F函数中bit置换 | 0 |
总和(最大) | 1453.46 |
满足不同用户多层次的高效率需求,采用两种密钥长度。算法采用广义Feistel结构,通过密钥高8位来控制轮数的变换,在确保算法安全性的前提下,轮数在一定范围内变动,在一次加密过程中适当的减少算法的轮数,这样能够有效的提高算法的效率。轮运算结束后进入Sa置换操作从而提高扩散性。综上是的算法具有灵活性、高效性和低资源消耗的特点,相比于其它基于Feistel结构的轻量级算法安全和加密性能更加优越。
表11各分组密码算法ASIC实现
需要强调的是,本发明所述的实例是说明性的,而不是限定性的,因此本发明不限于具体实施方式中所述的实例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,不脱离本发明宗旨和范围的,不论是修改还是替换,同样属于本发明的保护范围。
Claims (10)
1.一种轻量级分组密码算法Wheel的实现方法,其特征在于:包括如下步骤:
S1:获取待加密的明文和初始加密密钥,并基于所述初始加密密钥计算出轮数R;
S2:按照从高位至低位顺序并依据预设分组长度对所述初始加密密钥进行分组得到中间密钥,并利用中间密钥生成N个白化密钥;
S3:按照从高位至低位顺序并依据预设分组长度对所述明文进行分组得到N组明文信息,并利用部分白化密钥对所述N组中的Ni标号组明文信息进行异或运算得到N组初始加密信息,其中,所述N组初始加密信息包括异或处理后的Ni标号组信息以及未异或处理的明文信息;
S4:利用所述N组初始加密信息进行R轮轮运算得到N组输出数据,所述轮运算由F函数操作、FF函数操作和按位异或操作组成;
其中,每一轮轮运算均是对N组加密信息进行处理,每下一轮轮操作对应的N组加密信息为前一轮轮操作的输出信息构成;所述F函数操作由轮密钥加操作、S盒替换、位混淆、异或操作组成;所述FF函数为二类广义Feistel网络结构,包括S盒和循环左移操作;
S5:利用步骤S3中剩余白化密钥对步骤S4中到N组输出数据中Ni标号组对应数据进行异或处理得到N个数据块,所述N个数据块包括异或处理后的输出数据以及未异或处理的异或数据;
S6:将步骤S5中N个数据块作为Sa置换操作的初始值进行Sa置换操作得到输出数据,并将输出数据与初始加密密钥的低位进行轮加密操作;其中,初始加密密钥的低位位数长度与输出数据的位数长度相同。
2.根据权利要求1所述的方法,其特征在于:步骤S4中每一轮轮运算的过程如下:
对所述N组加密信息中,利用F函数对所述N组加密信息中Ni标号组加密信息进行处理得到Ni标号组F函数输出信息,然后,将所述Ni标号组F函数输出信息分别与所述N组加密信息中非Ni标号组加密信息、当前轮运算对应的外部轮密钥进行异或处理得到非Ni标号组信息;
其中,每一轮轮运算的外部轮密钥rki是基于当前轮的轮数并利用中间密钥生成的,每一轮轮运算中一个Ni标号组F函数输出信息对应一个外部轮密钥;
对所述N组加密信息中,利用FF函数对所述N组加密信息中Ni标号组加密信息进行处理得到Ni标号组信息;
其中,所述非Ni标号组信息作为下一轮轮运算中Ni标号组信息,将Ni标号组信息作为下一轮轮运算中非Ni标号组信息。
3.根据权利要求2所述的方法,其特征在于:所述FF函数的轮数按照如下规则确定:
若轮数R满足:15≤R<20,所述FF函数的轮数为8轮;
若轮数R满足:20≤R<25,所述FF函数的轮数为6轮;
若轮数R满足:25≤R≤30,所述FF函数的轮数为4轮。
4.根据权利要求2所述的方法,其特征在于:每一次轮运算中,利用F函数对所述N组加密信息中Ni标号组加密信息进行处理得到Ni标号组F函数输出信息的执行过程如下:
S4.1:对所述N组加密信息中Ni标号组加密信息进行轮密钥加操作;
其中,所述轮密钥加操作为利用轮密钥加操作的轮密钥对Ni标号组加密信息进行异或处理;
S4.2:将步骤S4.1中轮密钥加操作的输出数据作为S盒替换的输入数据进行S盒替换运算;
S4.3:将步骤S4.2中S盒替换操作的输出数据作为位混淆的输入数据进行位混淆操作;
S4.4:将位混淆操作的输出数据作为异或操作的输入数据进行操作,输出数据为所述Ni标号组F函数输出信息。
5.根据权利要求4所述的方法,其特征在于:步骤S4.2中当前轮运算的轮数为奇数轮时,采用PRESENT算法的S盒;当前轮运算的轮数为偶数轮时,采用Piccolo算法的S盒。
6.根据权利要求4所述的方法,其特征在于:步骤S3中所述预设分组长度为16位,步骤S4.4的执行过程如下:
首先,将位混淆操作输出数据中每个标号组对应的输出数分别从高位到低位按照4位一组划分,记为:xor0、xor1、xor2及xor3;
然后,将xor0、xor3分别对应与xor2、xor1进行异或操作得到xor1'和xor2';
其次,将得到的xor1'、xor2'分别对应与xor0、xor3进行异或操作得到xor0'和xor3';
最后,将得到的结果按从左至右从高位到低位的顺序排列为xor0'、xor1'、xor2'和xor3';并依此连接输出。
7.根据权利要求4所述的方法,其特征在于:步骤S4.1中所述轮密钥加操作的轮密钥是由步骤S2中的中间密钥中任意两组中间密钥进行按位异或计算得到,其轮密钥加操作的轮密钥表示为:k[j],(0,1...j...);
步骤S4.1中选择的轮密钥加操作的轮密钥是根据轮数R选取的,规则如下:
当密钥长度为96位时,步骤S4.1中选择的轮密钥加操作的轮密钥k[j]中满足:j=R%15;
当密钥长度为128位时,步骤S4.1中选择的轮密钥加操作的轮密钥k[j]中满足:j=R%28。
8.根据权利要求1所述的方法,其特征在于:步骤S3中所述预设分组长度为16位,明文长度为64位,得到的所述N个数据块为4个数据块,步骤S6中将步骤S5中N个数据块作为Sa置换操作的初始值进行Sa置换操作得到输出数据的执行过程如下:
S6.1:将4个数据块从左至右标记为P1、P2、P3和P4,并分别对所述4个数据块从高位到低位依次划分为8个字节g0,g1,g2,g3,g4,g5,g6,g7;
每个数据块从高位到低位依次划分为2个字节,每个数据块均为4×4矩阵;
S6.2:分别将4个数据块P1、P2、P3和P4依数据块矩阵的两条中心对称轴划分成4个2×2的数据块矩阵,并从左上角的2×2数据块矩阵开始按照顺时针顺序分别对应给所述4个2×2的数据块矩阵编号为Ai、Bi、Di和Ci(1≤i≤4),以及对每个2×2的数据块矩阵Ai、Bi、Di和Ci从左上角开始按照顺时针对应编号为a1、a2、a4和a3,b1、b2、b4和b3,d1、d2、d4和d3以及ci、c2、c4和c3;
S6.3:对每个数据块中的4个2×2数据块矩阵Ai、Bi、Di和Ci分别按照预设顺序进行置换操作,过程如下:
对于数据块P1,将数据块矩阵P1中A1区域从a2开始按逆时针连接到a4结束组成g0'的前半字节,接着C1区域也从c2开始按逆时针连接到c4结束组成g0'的后半字节,B1区域从b1开始按顺时针连接到b3结束组成g1'的前半字节,D1区域也从d1开始按顺时针连接到d3结束组成g1'的后半字节;
对于数据块P2,将数据块矩阵P2中B2区域从b4开始按逆时针连接到b3结束组成g2'的前半字节,接着A2区域也从a4开始按逆时针连接到a3结束组成g2'的后半字节,C2区域从c1开始按逆时针连接到c2结束组成g3'的前半字节,D2区域也从d1开始按逆针连接到d2结束组成g3'的后半字节;
对于数据块P3,将数据块矩阵P3中C3区域从c3开始按逆时针连接到c1结束组成g4'的前半字节,接着A3区域也从a3开始按逆时针连接到a1结束组成g4'的后半字节,D3区域从d4开始按顺时针连接到d2结束组成g5'的前半字节,B3区域也从b4开始按逆顺针连接到b2结束组成g5'的后半字节;
对于数据块P4,将数据块矩阵P4中A4区域从a1开始按逆时针连接到a2结束组成g6'的前半字节,接着B4区域也从b1开始按逆时针连接到b2结束组成g6'的后半字节,D4区域从d4开始按逆时针连接到d3结束组成g7'的前半字节,C4区域也从c4开始按逆顺针连接到c3结束组成g7'的后半字节;
S6.4:按照g3',g7',g5',g6',g1',g4',g0',g2'的顺序进行连接并输出数据形成64位数据输出。
9.根据权利要求1所述的方法,其特征在于:步骤S1中,轮数R的获取方式如下:
S1.1:提取所述初始加密密钥中高八位的值cnt;
S1.2:将步骤S1.1中值cnt对15进行取余操作;
S1.3:将步骤1.2获得的值与基础轮数相加得到算法的轮数R,所述基础轮数为15。其中,轮数R的计算公式如下:
R=cnt%15+15。
10.根据权利要求1所述的方法,其特征在于:所述白化密钥计算公式如下:
公式a为密钥长度为96位时的白化密钥计算公式,公式b为密钥长度为128位时的白化密钥计算公式;
公式a:
wk0←k_i[0]L|k_i[1]R,wk1←k_i[1]L|k_i[0]R,wk2←k_i[4]L|k_i[3]R,
wk3←k_i[3]L|k_i[4]R
公式b:
wk0←k_i[0]L|k_i[1]R,wk1←k_i[1]L|k_i[0]R,wk2←k_i[4]L|k_i[7]R,
wk3←k_i[7]L|k_i[4]R
式中,wk0、wk1、wk2、wk3表示得到的四个白化密钥;|为连接符,k_i[0]L、k_i[1]L、k_i[3]L、k_i[4]L、k_i[7]L分别表示中间密钥k_i[0]、k_i[1]、k_i[3]、k_i[4]、k_i[7]的高8位,k_i[0]R、k_i[1]R、k_i[3]R、k_i[4]R、k_i[7]R分别表示中间密钥k_i[0]、k_i[1]、k_i[3]、k_i[4]、k_i[7]的低8位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910250703.2A CN109768854B (zh) | 2019-03-29 | 2019-03-29 | 一种轻量级分组密码算法的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910250703.2A CN109768854B (zh) | 2019-03-29 | 2019-03-29 | 一种轻量级分组密码算法的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109768854A true CN109768854A (zh) | 2019-05-17 |
CN109768854B CN109768854B (zh) | 2020-02-04 |
Family
ID=66460226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910250703.2A Active CN109768854B (zh) | 2019-03-29 | 2019-03-29 | 一种轻量级分组密码算法的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109768854B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110784307A (zh) * | 2019-11-05 | 2020-02-11 | 衡阳师范学院 | 轻量级密码算法scenery实现方法、装置及存储介质 |
CN111008399A (zh) * | 2019-11-29 | 2020-04-14 | 卓尔智联(武汉)研究院有限公司 | 姓名数据脱敏装置、方法及可读存储介质 |
CN111245598A (zh) * | 2020-03-31 | 2020-06-05 | 衡阳师范学院 | 一种轻量级aerogel分组密码的实现方法 |
CN111314054A (zh) * | 2020-01-21 | 2020-06-19 | 衡阳师范学院 | 一种新型高安全的轻量级eceg分组密码实现方法、系统及存储介质 |
CN112202547A (zh) * | 2020-11-11 | 2021-01-08 | 衡阳师范学院 | 一种轻量级分组密码gfcs实现方法、装置及可读存储介质 |
CN113204779A (zh) * | 2021-05-20 | 2021-08-03 | 郑州信大捷安信息技术股份有限公司 | 基于对称密码算法的保留格式加密算法的实现方法及装置 |
CN113204780A (zh) * | 2021-05-20 | 2021-08-03 | 郑州信大捷安信息技术股份有限公司 | 保留格式加密算法的实现方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120219150A1 (en) * | 2009-10-27 | 2012-08-30 | Nec Corporation | Information processing device, information processing method |
CN107707343A (zh) * | 2017-11-08 | 2018-02-16 | 贵州大学 | 加解密一致的sp网络结构轻量级lbt分组密码实现方法 |
CN108123791A (zh) * | 2017-12-26 | 2018-06-05 | 衡阳师范学院 | 一种轻量级分组密码scs的实现方法与装置 |
-
2019
- 2019-03-29 CN CN201910250703.2A patent/CN109768854B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120219150A1 (en) * | 2009-10-27 | 2012-08-30 | Nec Corporation | Information processing device, information processing method |
CN107707343A (zh) * | 2017-11-08 | 2018-02-16 | 贵州大学 | 加解密一致的sp网络结构轻量级lbt分组密码实现方法 |
CN108123791A (zh) * | 2017-12-26 | 2018-06-05 | 衡阳师范学院 | 一种轻量级分组密码scs的实现方法与装置 |
Non-Patent Citations (1)
Title |
---|
李浪,刘波涛: "Surge:一种新型、低资源、高效的轻量级分组密码算法", 《计算机科学》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110784307B (zh) * | 2019-11-05 | 2020-06-09 | 衡阳师范学院 | 轻量级密码算法scenery实现方法、装置及存储介质 |
CN110784307A (zh) * | 2019-11-05 | 2020-02-11 | 衡阳师范学院 | 轻量级密码算法scenery实现方法、装置及存储介质 |
CN111008399A (zh) * | 2019-11-29 | 2020-04-14 | 卓尔智联(武汉)研究院有限公司 | 姓名数据脱敏装置、方法及可读存储介质 |
CN111008399B (zh) * | 2019-11-29 | 2021-04-13 | 卓尔智联(武汉)研究院有限公司 | 姓名数据脱敏装置、方法及可读存储介质 |
CN111314054A (zh) * | 2020-01-21 | 2020-06-19 | 衡阳师范学院 | 一种新型高安全的轻量级eceg分组密码实现方法、系统及存储介质 |
CN111314054B (zh) * | 2020-01-21 | 2020-12-15 | 衡阳师范学院 | 一种轻量级eceg分组密码实现方法、系统及存储介质 |
CN111245598B (zh) * | 2020-03-31 | 2022-06-14 | 衡阳师范学院 | 一种轻量级aerogel分组密码的实现方法 |
CN111245598A (zh) * | 2020-03-31 | 2020-06-05 | 衡阳师范学院 | 一种轻量级aerogel分组密码的实现方法 |
CN112202547A (zh) * | 2020-11-11 | 2021-01-08 | 衡阳师范学院 | 一种轻量级分组密码gfcs实现方法、装置及可读存储介质 |
CN113204780A (zh) * | 2021-05-20 | 2021-08-03 | 郑州信大捷安信息技术股份有限公司 | 保留格式加密算法的实现方法及装置 |
CN113204780B (zh) * | 2021-05-20 | 2022-02-18 | 郑州信大捷安信息技术股份有限公司 | 保留格式加密算法的实现方法及装置 |
CN113204779B (zh) * | 2021-05-20 | 2022-04-15 | 郑州信大捷安信息技术股份有限公司 | 基于对称密码算法的保留格式加密算法的实现方法及装置 |
CN113204779A (zh) * | 2021-05-20 | 2021-08-03 | 郑州信大捷安信息技术股份有限公司 | 基于对称密码算法的保留格式加密算法的实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109768854B (zh) | 2020-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109768854A (zh) | 一种轻量级分组密码算法Wheel的实现方法 | |
CN107707343B (zh) | 加解密一致的sp网络结构轻量级分组密码实现方法 | |
CN104333446B (zh) | 一种新型超轻量级qtl分组密码实现方法 | |
CN107147487B (zh) | 对称密钥随机分组密码 | |
CN111431697B (zh) | 一种新型轻量级分组密码corl的实现方法 | |
CN101814985B (zh) | 应用多混沌映射多动态s盒的分组密码系统 | |
Huang | A more secure parallel keyed hash function based on chaotic neural network | |
CN108206736B (zh) | 一种轻量级密码算法HBcipher实现方法与装置 | |
CN107257279A (zh) | 一种明文数据加密方法及设备 | |
CN110572255A (zh) | 轻量级分组密码算法Shadow实现方法、装置及计算机可读介质 | |
CN104158796B (zh) | 分组密码抗线性攻击安全性的评估方法 | |
CN108449171A (zh) | 一种轻量级杂凑密码摘要生成方法 | |
CN111245598A (zh) | 一种轻量级aerogel分组密码的实现方法 | |
Yan et al. | DBST: a lightweight block cipher based on dynamic S-box | |
CN111614457B (zh) | 基于p置换改进的轻量级分组加解密方法、装置及存储介质 | |
Ullah et al. | An efficient construction of S-box based on the fractional-order Rabinovich–Fabrikant chaotic system | |
CN109936437B (zh) | 一种基于d+1阶掩码的抗功耗攻击方法 | |
Srisakthi et al. | Towards the design of a stronger AES: AES with key dependent shift rows (KDSR) | |
CN115811398A (zh) | 基于动态s盒的分组密码算法、装置、系统及存储介质 | |
CN113691364B (zh) | 一种基于位片技术的动态s盒分组密码的加密及解密方法 | |
Thorat et al. | TED: A LIGHTWEIGHT BLOCK CIPHER FOR IoT DEVICES WITH SIDE-CHANNEL ATTACK RESISTANCE. | |
Shoukat et al. | Randomized substitution method for effectively secure block ciphers in IOT environment | |
CN107437990A (zh) | 加密方法、解密方法、加密装置和解密装置 | |
CN110247754A (zh) | 一种分组密码fbc的实现方法及装置 | |
Dwivedi et al. | Image encryption using curved scrambling and diffusion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |