CN104333446B - 一种新型超轻量级qtl分组密码实现方法 - Google Patents
一种新型超轻量级qtl分组密码实现方法 Download PDFInfo
- Publication number
- CN104333446B CN104333446B CN201410626240.2A CN201410626240A CN104333446B CN 104333446 B CN104333446 B CN 104333446B CN 201410626240 A CN201410626240 A CN 201410626240A CN 104333446 B CN104333446 B CN 104333446B
- Authority
- CN
- China
- Prior art keywords
- carry out
- box
- functional transformation
- conversion
- data
- 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.)
- Active
Links
Landscapes
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种新型超轻量级QTL分组密码实现方法,该方法通过设计新型广义Feistel网络结构,该结构算法克服了传统Feistel网络结构一轮迭代运算只改变一半分组数据的不足,做到一轮迭代运算改变全部分组数据。算法轮运算中F函数包含F1与F2函数,分别采用S1与S2盒,F函数变换过程依次为轮密钥加、S盒替换、P置换、S盒替换;不同的S盒、P置换只需硬件连线,构造了轻型超级S盒的F函数。算法结构高度对称,算法解密复用加密模块,交换加密轮密钥使用顺序就可进行解密,操作简便,实现解密不需消耗额外资源。相对目前的轻量级密码,其占用资源更小,加密性能高,能抗已知攻击。
Description
技术领域
本发明涉及一种新型超轻量级QTL分组密码实现方法。
背景技术
分组密码算法是用相同的密钥进行加密和解密运算,本质上,分组密码算法是一种带密钥的有限轮迭代置换变换,将固定长度的明文经过有限轮迭代置换变换,转换为相同长度的密文。分组密码算法具有速度快、易于标准化和便于软硬件实现等特点,一直是资源约束下的加密方案。分组密码作为信息安全中的核心密码,在物联网应用安全领域有着广泛的应用。
近年来,随着物联网技术快速发展,无线传感器(WSN)和无线射频(RFID)应用越来越广泛,这些设备具有硬件制造、维护成本低,网络健壮性、自组织性强,适用性广泛的特点,已成为物联网产业的关键组成部分。WSN和RFID基于无线网络传输信息,攻击者更容易获取、干扰甚至破坏信息传输。在这些微型计算设备中,软硬件实现所需资源有着严格限制,传统分组密码算法实现规模相对较大,不适合应用在这些资源极端受限的应用环境中,因此密码设计者们提出轻量级分组密码来保证物联网信息的安全。
从2007年开始,国际学术界就陆续发表了一些有关轻量级分组密码算法论文,轻量级分组码迅速成为国际学术界研究的一个前沿热点问题。经过近年来的研究,目前已有一些轻量级分组密码算法,典型代表如PRESENT、MIBS、Twine、Piccolo、LED、LBlock、KLEIN、ITUbee等。
目前,轻量级分组密码算法存在的问题为如下方面:(1)轻量级分组密码算法主要采用两种结构:一种是SP网络结构,该结构对称性相对较差,加解密不相似,实现时消耗的资源较多,加解密的时间也不相同。另一种是Feistel网络结构,该结构加解密相似,实现时消耗的硬件资源较少,适合在计算能力受限的环境中使用;但该结构密码算法扩散速度慢,一轮迭代运算中只有一半的分组进入轮函数,从而只能改变一半分组数据。(2)有些轻量级分组密码算法解密过程较复杂,从而在实现算法解密时,不能完全复用加密过程模块,需要额外消耗资源。(3)一些轻量级分组密码算法加密占用资源仍然过大,加密性能较低,不便于在资源极端受限设备中实现;并且还有一些分组密码算法抗攻击能力较弱,特别是抵抗常见的差分、线性以及代数攻击。
发明内容
本发明提供了一种新型超轻量级高效的轻量级QTL分组密码实现方法,其目的在于,克服现有技术轻量级分组密码算法存在如下问题:Feistel网络结构算法,一轮迭代运算只改变一半分组数据;算法解密过程较复杂,实现时需要为算法解密消耗资源;轻量级分组密码算法占用资源仍旧多、加密性能低且易受攻击。
一种新型超轻量级QTL分组密码实现方法,包括以下步骤:
步骤1:将64位明文/64位密文加载至寄存器,作为待加/解密数据,进行加/解密运算;
步骤2:将所述待加/解密数据进行NR轮迭代运算操作,输出密文或明文,n表示第n轮迭代,且n的初始值为1;
其中,密钥长度为64位时,NR取值为16;密钥长度为128位时,NR取值为20;
将64位待加密数据X/解密数据Y从高位开始按16位一组依次分为4组,待加密数据记作:X0X1X2X3,待解密数据记作:Y0Y1Y2Y3;
每一轮迭代运算的轮密钥为包括K0、K1、K2及K3:
密钥为64位时,表示为k63,k62,……k1,k0:
K0={k63,k62,……k49,k48},K1={k47,k46,……k33,k32},
K2={k31,k30,……k17,k16},K3={k15,k14,……k1,k0};
密钥为128位时,表示为k127,k126,……k1,k0:
在加密运算过程中,当n为奇数时,或者在解密运算过程中,当n为偶数时,每一轮迭代运算中:
K0={k127,k126,……k113,k112},K1={k111,k110,……k97,k96},
K2={k95,k94,……k81,k80},K3={k79,k78,……k65,k64};
在加密运算过程中,当n为偶数时,或者在解密运算过程中,当n为奇数时,每一轮迭代运算中:
K0={k63,k62,……k49,k48},K1={k47,k46,……k33,k32},
K2={k31,k30,……k17,k16},K3={k15,k14,……k1,k0};
加密迭代运算操作过程具体如下:
步骤1)首先,将X0进行F1函数变换得到X'0,同时将X2进行F2函数变换得到X'2;接着,将X1与X'0进行异或运算得到X′1,同时将X3与X'2进行异或运算得到X′3;
其中,所述进行F1函数变换时,所使用的轮密钥为K0;
所述进行F2函数变换时,所使用的轮密钥为K1;
所述F1函数与F2函数变换均为F函数变换,F函数运算过程为轮密钥加变换→S盒替换变换→P置换→S盒替换变换;
步骤2)首先,利用X′1进行F1函数变换得到X"1,利用X′3进行F2函数变换得到X"3;
接着,将X0与X"1进行异或运算得到X"0,同时将X2与X"3进行异或运算,得到X"2;
其中,所述进行F1函数变换时,所使用的轮密钥为K2;
所述进行F2函数变换时,所使用的轮密钥为K3;
判断n是否等于NR,若不等于,则,令n=n+1,进入步骤3),若等于,则进入步骤4);
步骤3)将X′1X"0X′3X"2进行轮置换T变换,获得轮置换T变换结果记为XT;
将运行结果XT,从高位开始按16位一组依次分为4组,记作:将 依次赋值给X0、X1、X2、X3,返回步骤1);
步骤4)将X′1、X"0、X′3、X"2依次赋值给Y0、Y1、Y2、Y3,以Y0Y1Y2Y3作为密文输出;解密迭代运算过程如下:
步骤1)首先,将Y0进行F1函数变换得到Y′0,同时将Y2进行F2函数变换得到Y′2;接着,将Y1与Y′0进行异或运算得到Y′1,同时将Y3与Y′2进行异或运算得到Y′3;
其中,所述进行F1函数变换时,所使用的轮密钥为K2;
所述进行F2函数变换时,所使用的轮密钥为K3;
所述F1函数与F2函数变换均为F函数变换,F函数运算过程为轮密钥加变换→S盒替换变换→P置换→S盒替换变换;
步骤2)首先,利用Y′1进行F1函数变换得到Y"1,利用Y′3进行F2函数变换得到Y"3;
接着,将Y0与Y"1进行异或运算得到Y"0,同时将Y2与Y"3进行异或运算,得到Y"2;
判断n是否等于NR,若不等于,则,令n=n+1,进入步骤3),若等于,则进入步骤4);
其中,所述进行F1函数变换时,所使用的轮密钥为K0;
所述进行F2函数变换时,所使用的轮密钥为K1;
步骤3)将Y′1Y"0Y′3Y"2进行轮置换T变换,获得轮置换T变换结果记为YT;
将运行结果YT,从高位开始按16位一组依次分为4组,记作:将 依次赋值给Y0、Y1、Y2、Y3;
返回步骤1);
步骤4)将Y′1、Y"0、Y′3、Y"2依次赋值给X0、X1、X2、X3,以X0X1X2X3作为明文输出。
在加密或者解密迭代运算过程中,步骤1)和步骤2)中的F1函数变换所使用的密钥不同,步骤1)和步骤2)中的F2函数变换所使用的密钥也不相同;
所述步骤2中F1函数变换中的S盒采用S1盒,F2函数变换中的S盒采用S2盒;
其中,S1盒为{C,5,6,B,9,0,A,D,3,E,F,8,4,7,1,2};
S2盒为{4,F,3,8,D,A,C,0,B,5,7,E,2,6,1,9};
S:有限域ai→bi=S1(ai)
ci→di=S2(ci),0≤i≤3;
其中,所述ai和ci是进行S盒变换前的16位数中从高位到低位的第i个4位数,bi和di是进行S盒变换后得到的16位数中从高位到低位的第i个4位数;
所述F函数中的P置换是按照每一位进行交换,输入16位数据从高位到低位表示为p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,经P置换将数据比特位位置交换,以p0,p4,p8,p12,p1,p5,p9,p13,p2,p6,p10,p14,p3,p7,p11,p15高位到低位顺序数据输出。
所述步骤2中轮置换T变换具体过程如下:
轮置换T变换将算法中输入64位加/解数据划分4个字(16位),然后做字的置换操作;具体为进行轮置换T变换64位输入数据从高位到低位依次划分为4个字T0、T1、T2及T3,以T2、T1、T0及T3作为轮置换T变换运算的64位输出数据。
有益效果
本发明提供了一种新型超轻量级QTL分组密码实现方法,设计了一种新型广义Feistel网络结构,该结构算法克服传统Feistel网络结构算法,一轮迭代运算只改变一半分组数据的不足,从而做到一轮迭代运算改变全部分组数据。该新型广义Feistel网络结构的算法有很好的扩散效果,打破了SPN结构的轻量级算法扩散效果好,但实现时消耗资源较多,传统Feistel网络结构的轻量级算法实现资源较少,但算法扩散效果较差的两大瓶颈问题。算法结构高度对称,算法解密复用加密模块,交换加密轮密钥使用顺序,就可以进行解密,操作简便,实现解密不消耗额外资源,并且密码算法模块具有相似对称组件,实现时可以相互复用,达到减少实现资源。算法轮运算中F函数(为F1与F2函数,分别采用S1与S2盒),变换过程为轮密钥加变换→S盒替换变换→P置换→S盒替换变换;其中轮密钥加的轮密钥为无扩展方式,该方式在抵抗攻击方面与LED、PRINCE以及ITUbee密码算法有着同样的效果,并且节省实现资源和提高性能;采用两个不同高安全性的S盒,P置换实现只需硬件连线,不需消耗资源;S盒替换变换→P置换→S盒替换变换方法创造轻型超级S盒;因此轮运算中F函数实现具有低资源、高性能、高安全的优点。算法的轮置换T变换,结构新颖,使算法数据进行置换有较好效果,并且实现也只需硬件连线,不需要消耗资源。
综上所述,本发明所述的新型超轻量级QTL分组密码实现方法在安全性验证中,体现了很好的抵抗攻击能力,相对于现有技术而言,特别有效的抵抗差分与线性攻击、代数攻击。
附图说明
图1为本发明所述一种新型超轻量级QTL分组密码实现方法加密结构图;
图2为本发明所述一种新型超轻量级QTL分组密码实现方法解密结构图;
图3为本发明所述实现方法的轮函数变换结构图;
图4为本发明所述实现方法的F函数变换结构图;
图5为本发明所述实现方法的轮置换T变换结构图。
具体实施方式
下面结合附图和实施例对本发明做进一步的说明。
QTL分组密码实现方法,设计密码算法的分组长度为64位,密钥长度为64位,128位两种,分别记为QTL-64算法与QTL-128算法,QTL-64算法与QTL-128算法轮迭代轮数NR对应为16轮、20轮运算。
QTL分组密码算法加密结构如图1所示,QTL分组密码算法解密结构如图2所示;
算法轮函数运算主要包含F函数变换(F-Function)与轮置换T变换(RoundTransposing);但最后一轮函数运算不进行轮置换T变换,见图3所示。
F函数变换过程为轮密钥加变换(AddRoundKey)→S盒替换变换(SubCell)→P置换(Permutation)→S盒替换变换(SubCell)。
将64位明文(Plaintext)/密文(Ciphertext)数据从高位开始按16位一组依次分为4组,加密明文数据记作:X0、X1、X2及X3,解密密文数据记作:Y0、Y1、Y2及Y3,当64位密钥(Key)数据从高位开始按16位一组依次分为4组,得到轮密钥数据记作:K0、K1、K2及K3。
当128位密钥(Key)数据,奇数轮时,128位中前64位数据从高位开始按16位一组依次分为4组;偶数轮时,128位中后64位数据从高位开始按16位一组依次分为4组;奇偶数轮的轮密钥数据记作:K0、K1、K2及K3。
QTL分组密码算法伪代码描述:
算法1:QTL密码加密过程
输入:Plaintext,Key;
输出:Ciphertext;
1.Plaintext→X0,X1,X2,X3;Key→K0,K1,K2,K3;
2.fori=1toNR-1do//进行前面NR-1运算
3.forj=1to2do
4.XX0=X0,XX1=X1,XX2=X2,XX3=X3;
5.if(j==1)
6.AddRoundKey(X0,K0),AddRoundKey(X2,K1);
7.else
8.AddRoundKey(X0,K2),AddRoundKey(X2,K3);
9.SubCell1(X0),SubCell2(X2);//SubCell1、SubCell2分另为S1、S2盒替换
10.Permutation(X0),Permutation(X2);
11.SubCell1(X0),SubCell2(X2);
12.X0=X0^XX1,X1=XX0,X2=X2^XX3,X3=XX2;
13.endfor
14.T0=X0,T1=X1,T2=X2,T3=X3;//进行轮置换T变换
15.X0=T3,X1=T0,X2=T1,X3=T2;
16.endfor
17.forj=1to2do//进行最后一轮运算,没有进行轮置换T变换
18.XX0=X0,XX1=X1,XX2=X2,XX3=X3;
19.if(j==1)
20.AddRoundKey(X0,K0),AddRoundKey(X2,K1);
21.else
22.AddRoundKey(X0,K2),AddRoundKey(X2,K3);
23.SubCell1(X0),SubCell2(X2);
24.Permutation(X0),Permutation(X2);
25.SubCell1(X0),SubCell2(X2);
26.X0=X0^XX1,X1=XX0,X2=X2^XX3,X3=XX2;
27.endfor
28.Y0=X1,Y1=X0,Y2=X3,Y3=X2;
29.Ciphertext←Y0,Y1,Y2,Y3;
算法2:QTL密码解密过程
输入:Ciphertext,Key;
输出:Plaintext;
解密复用加密过程,在轮密钥加变换中交换加密轮密钥使用顺序,将加密轮密钥K0使用处换成K2,K1使用处换成K3,K2使用处换成K0,K3使用处换成K1。除此之外,密钥为128位时,解密奇数轮的轮密钥为加密偶数轮的轮密钥,解密偶数轮的轮密钥为加密奇数轮的轮密钥。
1.if(j==1)
2.AddRoundKey(Y0,K2),AddRoundKey(Y2,K3);
3.else
4.AddRoundKey(Y0,K0),AddRoundKey(Y2,K1);
F函数变换(F-Function)
F函数变换为F1函数与F2函数变换,其中F1函数与F2函数采用的S盒不相同,F1函数采用的是S1盒,F2函数采用的是S2盒,但运算过程一致,F函数运算过程为轮密钥加变换→S盒替换变换→P置换→S盒替换变换,具体过程如图4所示(图中kl指代轮密钥中某一特定位,0≤l≤15)。
1)轮密钥加变换(AddRoundKey)
每轮的轮密钥加运算,为进入F函数的16位加密数据/解密数据与16位的轮密钥进行异或运算。其中每一轮运算的轮密钥为K0,K1,K2,K3。算法加密与解密使用同一密钥,算法解密交换加密轮密钥使用顺序。
算法轮密钥具体组成过程如下:密钥为64位时,表示为k63,k62,……k1,k0:K0为密钥k63,k62,……k49,k48;K1为密钥k47,k46,……k33,k32;K2为密钥k31,k30,……k17,k16;K3为密钥k15,k14,……k1,k0。密钥为128位时,表示为k127,k126,……k1,k0:算法加密,奇数轮为K0为密钥k127,k126,……k113,k112;K1为密钥k111,k110,……k97,k96;K2为密钥k95,k94,……k81,k80;K3为密钥k79,k78,……k65,k64;偶数轮为K0为密钥k63,k62,……k49,k48;K1为密钥k47,k46,……k33,k32;K2为密钥k31,k30,……k17,k16;K3为密钥k15,k14,……k1,k0;算法解密,奇数轮为K0为密钥k63,k62,……k49,k48;K1为密钥k47,k46,……k33,k32;K2为密钥k31,k30,……k17,k16;K3为密钥k15,k14,……k1,k0;偶数轮为K0为密钥k127,k126,……k113,k112;K1为密钥k111,k110,……k97,k96;K2为密钥k95,k94,……k81,k80;K3为密钥k79,k78,……k65,k64。
2)S盒替换变换(SubCell)
S盒变换是QTL算法唯一非线性组件,算法中使用两个S盒,分别为S1盒与S2盒,正是F1函数与F2函数不同之处,QTL算法的S1盒引用于PRESENT算法加密的S盒,QTL算法的S1盒如表1所示;算法的S2盒引用于mCrypton算法加密的第一个S盒,QTL算法的S2盒如表2所示;F函数中的S盒替换变换,将进行S1盒变换的16位数据分为4个4位,记作为a0,a1,a2,a3,替换得到为b0,b1,b2,b3;将进行S2盒变换的16位数据分为4个4位,记作为c0,c1,c2,c3;替换得到为d0,d1,d2,d3,如公式所示(1)。
有限域S:ai→bi=S1(ai)公式(1)
ci→di=S2(ci),0≤i≤3
表1QTL算法S1盒表元素
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 |
表2QTL算法S2盒表元素
X | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
S2[x] | 4 | F | 3 | 8 | D | A | C | 0 | B | 5 | 7 | E | 2 | 6 | 1 | 9 |
3)P置换(Permutation)
P置换是按照每一位进行交换,在F函数中P置换变换为,输入16位数据从高位到低位表示为p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,经P置换将数据比特位位置交换,以p0,p4,p8,p12,p1,p5,p9,p13,p2,p6,p10,p14,p3,p7,p11,p15高位到低位顺序数据输出。
轮置换T变换(RoundTransposing)
轮置换T变换将算法加/解中输入64位数据划分4个字(16位),然后做字的置换操作;具体为进行轮置换T变换64位输入数据从高位到低位依次划分为4个字T0、T1、T2及T3,以T2、T1、T0及T3作为轮置换T变换运算的64位输出数据,轮置换T变换的结构图5所示。其中最后一轮不进行轮置换T变换。
算法测试数据,其中QTL-64算法数据如表3所示,QTL-128算法数据如表4所示:
表3QTL-64算法实验测试数据
Plaintext | Key | Ciphertext |
0000-0000-0000-0000 | 0000-0000-0000-0000 | 2036-E050-6D9C-F9F2 |
0000-0000-0000-0000 | FFFF-FFFF-FFFF-FFFF | 279A-1B2A-C6D0-40AC |
FFFF-FFFF-FFFF-FFFF | 0000-0000-0000-0000 | D865-E4D5-392F-BF53 |
FFFF-FFFF-FFFF-FFFF | FFFF-FFFF-FFFF-FFFF | DFC9-1FAF-9263-060D |
36E6-5AAE-2BC1-17D8 | 3995-48C2-7529-023F | 1EA2-AAF9-1627-9DB4 |
表4QTL-128算法实验测试数据
本发明所述的QTL密码算法在XilinxVirtex-5LX50TFPGA硬件实现,QTL-64算法所占用的资源面积为9896Slices,时钟周期是9.855ns,时钟频率为101.471MHz,吞吐率为382.008Mbps;QTL-128算法所占用的资源面积为10120Slices,时钟周期是9.931ns,时钟频率为100.095MHz,吞吐率为305.05Mbps;
本发明所述的QTL密码算法在ASIC硬件实现,综合工艺库为SMIC0.18μm。QTL-64算法所占用的资源面积为838GE,QTL-128算法占用的资源面积为988GE。
表5为最小密钥长的典型轻量级密码算法FPGA硬件实现,表6为最小密钥长的典型轻量级密码算法ASIC硬件实现,通过表5与表6中数据对比表明,QTL相对目前的轻量级密码,其占用面积资源更小,同时频率以及吞吐率有很高性能。
表5各轻量级密码算法FPGA实现
表6各轻量级密码算法ASIC实现
算法 | 结构 | 分组长度(bits) | 密钥长度(bits) | 资源面积(GE) |
Piccolo-80 | GFN | 64 | 80 | 1136 |
PRESNET-80 | SPN | 64 | 80 | 1570 |
KLEIN-64 | SPN | 64 | 64 | 1220 |
LBlock | Feistel | 64 | 80 | 1320 |
Twine-80 | Feistel | 64 | 80 | 1503 |
LED-64 | SPN | 64 | 80 | 1040 |
MIBS-64 | Feistel | 64 | 64 | 1396 |
QTL-64 | GFN | 64 | 64 | 838 |
以上结合具体实施例对本发明进行了详细的说明,这些并非构成对发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可以作出许多变形和改进,这些也应属于本发明的保护范围。
Claims (2)
1.一种新型超轻量级QTL分组密码实现方法,其特征在于,包括以下步骤:
步骤1:将64位明文/64位密文加载至寄存器,作为待加/解密数据,进行加/解密运算;
步骤2:将所述待加/解密数据进行NR轮迭代运算操作,输出密文或明文,n表示第n轮迭代,且n的初始值为1;
其中,密钥长度为64位时,NR取值为16;密钥长度为128位时,NR取值为20;
将64位待加密数据X/解密数据Y从高位开始按16位一组依次分为4组,待加密数据记作:X0X1X2X3,待解密数据记作:Y0Y1Y2Y3;
每一轮迭代运算的轮密钥为包括K0、K1、K2及K3:
密钥为64位时,表示为k63,k62,……k1,k0:
K0={k63,k62,……k49,k48},K1={k47,k46,……k33,k32},
K2={k31,k30,……k17,k16},K3={k15,k14,……k1,k0};
密钥为128位时,表示为k127,k126,……k1,k0:
在加密运算过程中,当n为奇数时,或者在解密运算过程中,当n为偶数时,每一轮迭代运算中:
K0={k127,k126,……k113,k112},K1={k111,k110,……k97,k96},
K2={k95,k94,……k81,k80},K3={k79,k78,……k65,k64};
在加密运算过程中,当n为偶数时,或者在解密运算过程中,当n为奇数时,每一轮迭代运算中:
K0={k63,k62,……k49,k48},K1={k47,k46,……k33,k32},
K2={k31,k30,……k17,k16},K3={k15,k14,……k1,k0};
加密迭代运算操作过程具体如下:
步骤1)首先,将X0进行F1函数变换得到X′0,同时将X2进行F2函数变换得到X'2;接着,将X1与X'0进行异或运算得到X′1,同时将X3与X'2进行异或运算得到X′3;
其中,所述进行F1函数变换时,所使用的轮密钥为K0;
所述进行F2函数变换时,所使用的轮密钥为K1;
所述F1函数与F2函数变换均为F函数变换,F函数运算过程为轮密钥加变换→S盒替换变换→P置换→S盒替换变换;
步骤2)首先,利用X′1进行F1函数变换得到X″1,利用X′3进行F2函数变换得到X″3;
接着,将X0与X″1进行异或运算得到X″0,同时将X2与X″3进行异或运算,得到X″2;
其中,所述进行F1函数变换时,所使用的轮密钥为K2;
所述进行F2函数变换时,所使用的轮密钥为K3;
判断n是否等于NR,若不等于,则,令n=n+1,进入步骤3),若等于,则进入步骤4);
步骤3)将X′1X″0X′3X″2进行轮置换T变换,获得轮置换T变换结果记为XT;
将运行结果XT,从高位开始按16位一组依次分为4组,记作:将 依次赋值给X0、X1、X2、X3,返回步骤1);
步骤4)将X′1、X″0、X′3、X″2依次赋值给Y0、Y1、Y2、Y3,以Y0Y1Y2Y3作为密文输出;
解密迭代运算过程如下:
步骤A)首先,将Y0进行F1函数变换得到Y′0,同时将Y2进行F2函数变换得到Y′2;接着,将Y1与Y′0进行异或运算得到Y′1,同时将Y3与Y′2进行异或运算得到Y′3;
其中,所述进行F1函数变换时,所使用的轮密钥为K2;
所述进行F2函数变换时,所使用的轮密钥为K3;
所述F1函数与F2函数变换均为F函数变换,F函数运算过程为轮密钥加变换→S盒替换变换→P置换→S盒替换变换;
步骤B)首先,利用Y′1进行F1函数变换得到Y″1,利用Y′3进行F2函数变换得到Y″3;
接着,将Y0与Y″1进行异或运算得到Y″0,同时将Y2与Y″3进行异或运算,得到Y″2;
判断n是否等于NR,若不等于,则,令n=n+1,进入步骤3),若等于,则进入步骤4);
其中,所述进行F1函数变换时,所使用的轮密钥为K0;
所述进行F2函数变换时,所使用的轮密钥为K1;
步骤C)将Y′1Y″0Y′3Y″2进行轮置换T变换,获得轮置换T变换结果记为YT;
将运行结果YT,从高位开始按16位一组依次分为4组,记作:将 依次赋值给Y0、Y1、Y2、Y3;
返回步骤A);
步骤D)将Y′1、Y″0、Y′3、Y″2依次赋值给X0、X1、X2、X3,以X0X1X2X3作为明文输出;
所述步骤1)和步骤A)中F1函数变换中的S盒采用S1盒,F2函数变换中的S盒采用S2盒;
其中,S1盒为{C,5,6,B,9,0,A,D,3,E,F,8,4,7,1,2};
S2盒为{4,F,3,8,D,A,C,0,B,5,7,E,2,6,1,9};
S:有限域ai→bi=S1(ai)
ci→di=S2(ci),0≤i≤3;
其中,所述ai和ci是进行S盒变换前的16位数中从高位到低位的第i个4位数,bi和di是进行S盒变换后得到的16位数中从高位到低位的第i个4位数;
所述F函数中的P置换是按照每一位进行交换,输入16位数据从高位到低位表示为p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,经P置换将数据比特位位置交换,以p0,p4,p8,p12,p1,p5,p9,p13,p2,p6,p10,p14,p3,p7,p11,p15高位到低位顺序数据输出。
2.根据权利要求1所述的新型超轻量级QTL分组密码实现方法,其特征在于,所述步骤3)和步骤C)中轮置换T变换具体过程如下:
轮置换T变换将算法中输入64位加/解数据按照每个字16位划分4个字,然后做字的置换操作;具体为进行轮置换T变换64位输入数据从高位到低位依次划分为4个字T0、T1、T2及T3,以T2、T1、T0及T3作为轮置换T变换运算的64位输出数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410626240.2A CN104333446B (zh) | 2014-11-10 | 2014-11-10 | 一种新型超轻量级qtl分组密码实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410626240.2A CN104333446B (zh) | 2014-11-10 | 2014-11-10 | 一种新型超轻量级qtl分组密码实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104333446A CN104333446A (zh) | 2015-02-04 |
CN104333446B true CN104333446B (zh) | 2016-01-13 |
Family
ID=52408105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410626240.2A Active CN104333446B (zh) | 2014-11-10 | 2014-11-10 | 一种新型超轻量级qtl分组密码实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104333446B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391546A (zh) * | 2015-12-16 | 2016-03-09 | 南京航空航天大学 | 基于双伪随机变换和Feistel结构的轻量级分组密码技术VHF |
CN105959107B (zh) * | 2016-06-24 | 2017-03-08 | 衡阳师范学院 | 一种新型高安全的轻量级sfn分组密码实现方法 |
CN107707343B (zh) * | 2017-11-08 | 2020-10-16 | 贵州大学 | 加解密一致的sp网络结构轻量级分组密码实现方法 |
CN108123791B (zh) * | 2017-12-26 | 2019-03-08 | 衡阳师范学院 | 一种轻量级分组密码scs的实现方法与装置 |
CN109921899B (zh) * | 2019-04-18 | 2019-11-19 | 衡阳师范学院 | 一种完全雪崩4×4的s盒实现方法 |
CN111431697B (zh) * | 2020-03-31 | 2022-06-21 | 衡阳师范学院 | 一种新型轻量级分组密码corl的实现方法 |
CN111756521B (zh) * | 2020-06-25 | 2022-05-27 | 桂林电子科技大学 | 基于Feistel-SP结构的密码S盒设计方法 |
CN112202547B (zh) * | 2020-11-11 | 2022-04-12 | 衡阳师范学院 | 一种轻量级分组密码gfcs实现方法、装置及可读存储介质 |
CN113343276B (zh) * | 2021-07-01 | 2022-06-14 | 衡阳师范学院 | 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法 |
CN113645615B (zh) * | 2021-08-12 | 2023-12-22 | 衡阳师范学院 | 轻量级分组密码加密及解密方法 |
CN113691364B (zh) * | 2021-08-31 | 2024-02-09 | 衡阳师范学院 | 一种基于位片技术的动态s盒分组密码的加密及解密方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166753A (zh) * | 2013-03-26 | 2013-06-19 | 桂林电子科技大学 | 4个非线性驱动的轻量级流密码加密方法 |
CN104065474A (zh) * | 2014-07-14 | 2014-09-24 | 衡阳师范学院 | 一种新型低资源高效的轻量级Surge分组密码实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8155306B2 (en) * | 2004-12-09 | 2012-04-10 | Intel Corporation | Method and apparatus for increasing the speed of cryptographic processing |
-
2014
- 2014-11-10 CN CN201410626240.2A patent/CN104333446B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166753A (zh) * | 2013-03-26 | 2013-06-19 | 桂林电子科技大学 | 4个非线性驱动的轻量级流密码加密方法 |
CN104065474A (zh) * | 2014-07-14 | 2014-09-24 | 衡阳师范学院 | 一种新型低资源高效的轻量级Surge分组密码实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104333446A (zh) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104333446B (zh) | 一种新型超轻量级qtl分组密码实现方法 | |
CN104065474B (zh) | 一种轻量级Surge分组密码实现方法 | |
CN107707343B (zh) | 加解密一致的sp网络结构轻量级分组密码实现方法 | |
CN111431697B (zh) | 一种新型轻量级分组密码corl的实现方法 | |
CN109245881A (zh) | 一种照片视频云端加密存储方法 | |
CN106663387A (zh) | 加密函数和解密函数生成方法、加密和解密方法以及相关装置 | |
CN101814985B (zh) | 应用多混沌映射多动态s盒的分组密码系统 | |
CN109768854A (zh) | 一种轻量级分组密码算法Wheel的实现方法 | |
CN105959107A (zh) | 一种新型高安全的轻量级sfn分组密码实现方法 | |
CN103607276A (zh) | 新型基于随机函数的抗已知明文密文对攻击的分组加密方法 | |
JunLi et al. | Email encryption system based on hybrid AES and ECC | |
CN106982116A (zh) | 一种基于可逆逻辑电路的aes的本地文件加密方法 | |
CN111614457B (zh) | 基于p置换改进的轻量级分组加解密方法、装置及存储介质 | |
Ghoradkar et al. | Review on image encryption and decryption using AES algorithm | |
Pandey et al. | Particle swarm optimization in cryptanalysis of DES | |
Tianfu et al. | Design of a hybrid cryptographic algorithm | |
Tang et al. | A one-time pad encryption algorithm based on one-way hash and conventional block cipher | |
CN104320420A (zh) | 一种基于aes算法的scada文件加密方法 | |
CN106921486A (zh) | 数据加密的方法和装置 | |
CN105162580A (zh) | 基于ofb模式和分组密码vh的轻量级流密码技术vho | |
CN102523085A (zh) | 数据加密方法、装置及智能卡 | |
Bajaj et al. | AES algorithm for encryption | |
Parihar et al. | Blowfish algorithm: a detailed study | |
CN103746795B (zh) | 一种实现Magpie加解密的方法 | |
Cheng et al. | Revised cryptanalysis for SMS4 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |