一种轻量级分组密码算法的实现方法技术

技术编号:21145900 阅读:52 留言:0更新日期:2019-05-18 06:36
本发明专利技术公开了一种轻量级分组密码算法的实现方法,包括利用初始加密密钥计算轮数,再利用初始加密密钥依次得到中间密钥、白化密钥;并对明文进行分组,再对分组的明文进行R轮轮运算,轮运算由F函数操作、FF函数操作和按位异或操作组成,每一轮轮运算均是对N组加密信息进行处理,每下一轮轮操作对应的N组加密信息为前一轮轮操作的输出信息;最后对轮运算后的输出数据进行Sa置换操作得到输出数据,并将输出数据与初始加密密钥的低位进行轮加密操作得到加密后的明文信息。本发明专利技术通过该方法提高了加密的安全性以及效率。

【技术实现步骤摘要】
一种轻量级分组密码算法Wheel的实现方法
本专利技术属于计算机加密
,具体涉及一种轻量级分组密码算法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_S本文档来自技高网
...

【技术保护点】
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置换操作得到输出数据,并将输出数据与初始加密密钥的低位进行轮加密操作;其中,初始加密密钥的低位位数长度与输出数据的位数长度相同。...

【技术特征摘要】
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中选择的轮密钥加操作...

【专利技术属性】
技术研发人员:李浪曹夏薇
申请(专利权)人:衡阳师范学院
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1