欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2019102507032
申请人: 衡阳师范学院
专利类型:发明专利
专利状态:已下证
专利领域: 电通信技术
更新日期:2024-01-05
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种轻量级分组密码算法的实现方法,其特征在于:包括如下步骤: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:基于步骤S4中N组输出数据利用步骤S3中剩余白化密钥对步骤S4中N组输出数据中Ni标号组对应数据进行异或处理得到N个数据块,所述N个数据块包括异或处理后Ni标号组对应的输出数据以及步骤S4中到N组输出数据中未标号组的数据;

S6:将步骤S5中N个数据块作为Sa置换操作的初始值进行Sa置换操作得到输出数据,并将输出数据与初始加密密钥的低位进行轮加密操作;其中,初始加密密钥的低位位数长度与输出数据的位数长度相同;

所述Sa置换是以1位为单位在16位数据块内进行置换后又以8位为单位在16位数据块之间进行置换排列的线性操作。

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],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以及c1、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:将步骤S1.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、L Lk_i[4]、k_i[7] 分别表示中间密钥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位。