【技术实现步骤摘要】
一种轻量级分组密码算法Wheel的实现方法
本专利技术属于计算机加密
,具体涉及一种轻量级分组密码算法Wheel的实现方法。
技术介绍
近年来,轻量级加密算法凭借其密钥长度相对较短、密码算法结构简单、资源消耗小等特点成为物联网加密算法研究的重要方向之一。轻量级分组密码算法必须能够在硬件资源严格受限的硬件设备上快速执行且要保证相对的安全性。轻量级密码算法与传统密码算法相比,轻量级密码算法的执行效率更高、计算资源消耗更少,更适合于计算能力有限的RFID标签、微型无线传感器等设备。而当下许多轻量级密码已被设计和实施,以提供诸如无线传感器节点和RFID标签等应用的安全性,这些应用的限制因素是其占地面积,门电路等效数量(GE)和功耗。数据加密技术是网络安全的基石,其具体实现是以加密算法为载体进行实现。分组密码具有速度快、易于标准化和便于软硬件实现等特点,通常是信息与网络安全中实现数据加密的核心体制之一。由于分组密码出现较早,各项技术成熟,为轻量级分组密码的研究提供了基础。随着物联网技术的不断发展,物联网环境下的数据安全也对物联网技术提出了新的问题和挑战,越来越多的轻量级分组密码算法被提出。2011年以来,国际学术界就陆续发表了一些有关轻量级分组密码算法的论文,如密码硬件与嵌入式系统国际会议提出的Piccolo,国际安全、隐私和应用密码学工程学会议(SPACE2014)提出的Khudra等。目前轻量级分组密码算法仍存在一下几个问题:(1)在有限的环境计算资源下,轻量级分组密码算法仍需要在安全性和效率之间进行权衡。一些轻量级密码算法为了抵抗差分功耗攻击和多种技术相 ...
【技术保护点】
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个数据块包括异或处理 ...
【技术特征摘要】
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中选择的轮密钥加操作...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。