APP下载

新型非等分Feistel网络数据加密算法

2023-10-18吴文华唐颖军

小型微型计算机系统 2023年10期
关键词:明文密文特长

张 勇,吴文华,唐颖军

(江西财经大学 软件与物联网工程学院,南昌 330013)

1 引 言

密码学是现代通信技术的关键科学技术,是保证信道中传送的信息真实性、有效性和可用性的核心技术.对称密码是密码学研究的重要组成部分,具有加密/解密速度快且安全性能高的特点,现在广泛应用于保密通信的数据加密中.1977年,美国标准局(即现在的NIST(National Institute of Standards and Technology))发布了第一个数据加密标准DES[1].DES属于典型的分组对称密码,具有56比特长的密钥,将64比特视为一个分组进行加密,得到一个64比特的密文分组.DES算法的核心为16节Feistel网络,每节Feistel 网络使用明文分组的右半部分置乱其左半部分.

由于DES算法的密钥长度只有56比特,已被证实无法对抗穷举密钥攻击[2].在1999年,NIST启用了高级加密标准(AES)替换DES 算法作为美国新的数据加密算法标准[3].在我国,2012年国家密码管理局发布了分组数据加密标准算法,称为SM4,使用128比特长的密钥,明文分组和密文分组均为128比特[4].SM4算法由密钥扩展模块和数据加密/解密模块两部分组成,这两部分均由32轮非线性循环移位迭代器组成.SM4是我国现行的分组密码算法国家标准.类似于DES算法,SM4 算法的加密算法与解密算法相同,但是在解密算法中,需要的轮密钥馈入顺序与其在加密算法中的顺序相反.

AES算法结构不具有DES算法和SM4算法的加密算法与解密算法共享特点,AES算法的加密算法和解密算法互逆,不能共享同一算法.AES算法的优点在于可以完全借助于查找表技术和大存储空间实现快速加密/解密,而SM4和DES算法中的轮操作不能完全借助于查找表实现.AES算法的软硬件快速实现优点,使它战胜了MARS、RC6、Serpent和Twofish算法成为美国现行的对称密码算法标准[2].事实上,AES算法是目前使用最广泛的对称加密算法,在互联网TCP/IP安全协议栈和路由器密钥集成协议中占居主导地位.

尽管DES算法已被AES替代而不再适用于新的信息安全场合,但是Feistel网络仍然是分组密码技术的重要研究对象.带有非线性置乱函数的Feistel网络被证明具有密码安全性,一种密钥关联的安全处理模型被用于评估只有4 轮的Feistel网络,证实了其可对抗基于异或诱发的232次查询攻击[5].借助Grover和Simon量子搜索算法在攻击Feistel网络时,面对15轮的密码系统,需要的查询次数为23n次,这里n为使用的量子比特个数[6],这种理想方案仍待量子计算机测试.多轮旁道攻击方法可以有效地攻击Feistel网络的等价密钥[7],但是这种攻击方法的实施非常困难,需要从加密设备的运算单元中正确地侦测到每轮的输入和输出脉冲信号,对于大部分微处理器而言该攻击无法实施.通用多集攻击被用于破译广义Feistel网络,对于7轮的RC6或Cleffia类网络需要选择的明文个数为5×232,对于14轮的Fiestel网络则无法破译[8].这些密码分析工作说明了Feistel 网络是一种安全的密码方案.

目前,Feistel网络被广泛用于轻量级的密码算法设计,这类密码主要服务于物联网数据安全.为了适应物联网终端低功耗的特点,一种具有4 分支的简化Feistel网络被提出来[9],该网络称为Shadow,仅包含与、循环移位和异或操作.Shadow网络的核心算法为将输入数据分成4份,每轮操作中,将各份数据及其循环移位数据以及轮密钥相异或生成新数据的4部分.对于分组大小为64比特的Shadow算法,轮数取为32.对于资源有限的物联网终端,一种分组长度为16位的简化Feistel网络被提出来用于传感器数据加密,称为LRBC[10],其使用了比特重组的方法替换Feistel网络的非线性函数.Feistel网络的非线性轮函数是网络中最重要的置乱部件,通过重新设计轮函数[11,12]或者融合混沌系统[13,14]可以进一步提升网络的安全性.此外,Feistel网络也是计算消息的Hash码的优选方案[15].

Feistel网络的另一个应用领域为图像信息安全.在文献[16,17]中,一种融合多级Feistel网络和DNA编码的图像加密算法被提出来用于加密灰度图像,该方案中使用DNA计算作为Feistel网络中的轮函数.可以借助于Feistel网络直接针对像素点进行置乱,此时将4个像素值作为Feistel变种网络的输入,以达到扰乱彩色图像的目的[18].在文献[19]中,使用混沌系统生成S盒和P盒用于Feistel网络中的轮函数,以提高Feistel网络的处理速度,使其用于图像加密处理中.在文献[20]中,使用了两级Feistel网络进行图像信息的置乱处理,其突出贡献为在Feistel网络中使用了变异算法.上述基于Feistel网络和混沌系统的图像加密算法进一步说明Feistel网络在对称密码学中具有重要的学术研究价值.

本文在Feistel网络基础上研究了一种新型数据密码算法.在具有数据加密算法标准的情况下,研究新的数据密码算法仍然具有重要意义.一方面,很多密码算法标准本身为专利,限制了其在民用信息安全领域方面的应用;另一方面,随着计算机技术和密码分析技术的发展,现有数据密码标准面临着被破译的危险.新研究的数据密码算法可为后续制订新的标准密码算法提供参考方案.本文在Feistel网络的研究基础上,提出了一种新型对称密码算法,主要有3方面的贡献:1)提出了非等分Feistel网络,实现了高效的数据置乱和扩散方法;2)提出的数据密码算法具有相同的加密过程和解密过程,可有效节省芯片的数据存储器空间和代码存储空间;3)提出的数据密码算法具有处理速度快和雪崩效应强等特点,具有与AES(美标)和SM4(国标)算法相同等级的系统敏感性.

2 Feistel网络

标准的Feistel网络是数据加密标准(DES)的核心,其基本结构如图1所示.

图1 Feistel网络基本结构Fig.1 Basic structure of Feistel network

在图1中,输入数据Di平分为Li和Ri两部分,均为32比特长;函数f主要由置乱盒子组成,借助于子密钥ki置乱Ri;输出数据Di+1的两部分Li+1和Ri+1由下式得到:

Li+1=Ri

(1)

Ri+1=Li⊕f(Ri,ki)

(2)

在图1所示Feistel网络基本结构中,只有式(2)具有信息加密作用,式(2)的作用在于对输入数据的左半部分、右半部分和子密钥进行信息置乱与融合,作为输出数据的右半部分.为达到良好的信息扩散效果,DES需要将16节图1所示的Feistel网络串联起来,借助于56比特长密钥将64比特明文数据加密为64比特密文数据.

基于Feistel网络的DES具有两个公认的缺点:1)为密钥长度较短,只有56比特长,在现有的计算能力下已无法对抗穷举密钥攻击;2)DES的明文和密文数据均只有64比特长,加密效率较低.在考虑了这两个缺点的基础上,现有的文本加密标准,例如,高级加密标准AES和SM4,其明文数据的长度均为128比特.国标SM4的密钥长度为128比特,加密轮数为32轮;美标AES的密钥长度可取128、192或256比特,对应的加密轮数依次为10、12和14轮.而提出的数据密码算法将使用512比特的密钥,明文和密文数据的长度均为512比特.

3 提出的数据密码算法

提出的数据加密算法具有相同的加密过程和解密过程,其结构如图2所示.密码系统使用了512比特长的密钥k,系统包括16节非等分Feistel网络和16节非等分Feistel网络的逆网络,明文和密文数据长度均为512比特.在图2中,给定密钥k,若输入x为明文数据,则输出y为密文数据;若输入x为密文数据,则输出y为其对应的明文数据.

结合图2,以加密算法为例,给定512比特长的密钥k,设输入x为512比特长的明文,加密得到512比特长的密文y的具体实现步骤如下:

Step1.将密钥k输入密钥发生器中,得到一个长度为512比特的等价密钥,记为k0.这一步将在第3.1节详细介绍.

图2 提出的数据密码算法Fig.2 Proposed data cryptography algorithm

Step2.将k0分成16个32比特的子密钥,依次记为k1,k2,…,k16.

Step3.将明文x与k0异或,得到一个长度为512比特的数据,记为d0.

Step4.将d0分成64个8比特的字节数据,每个字节数据依次查S-box得到其索引的新字节,将全部新字节数据合并为512比特长的数据,记为d1.这里S-box使用了AES算法的S-box[3],如图3所示,其中的数据以十六进制数表示.在图3中,将待查询的字节数据的高4位和低4位分别作为S-box的行序号和列序号,在它们交叉处的值为查到的新字节.

Step5.控制变量i从1递增到16,循环执行非等分Feistel网络16次,对于第i轮循环,输入为512比特长的di,输出为512比特长的di+1.第i轮循环的执行过程为:首先,将di分成480比特长的li和32比特长的ri;然后,将ri与子密钥ki相异或,赋给li+1;同时,将ri和ki的异或值经过F函数扩展为480比特长的数据,与li相异或,赋给ri+1;最后,将32比特长的li+1和480比特长的ri+1组合为di+1.这里的非等分Feistel网络和F函数将在第3.2节中详细介绍.

图3 S盒Fig.3 S-box

第5步执行完后将得到512比特长的数据d17.

Step6.将d17表示为长度为64的字节序列(即64个字节),将该序列左右翻转,然后,将翻转后的序列转化为512比特长的比特序列,记为e1.

Step7.控制变量i从1递增到16,循环执行非等分Feistel网络的逆网络16次,对于第i轮循环,输入为512比特长的ei,输出为512比特长的ei+1.第i轮循环的执行过程为:首先,将ei分成32比特长的li和480比特长的ri;然后,将li与子密钥k17-i相异或,赋给ri+1;同时,将li经过F函数扩展为480比特长的数据,与ri相异或,赋给li+1;最后,将480比特长的li+1和32比特长的ri+1组合为ei+1.这里的非等分Feistel网络的逆网络将在第3.2节中详细介绍.

第7步执行完后将得到512位长的数据e17.

Step8.将e17分解为64个长度为8比特的字节数据,将每个字节数据S-box的逆盒子得到其对应的新字节数据,将全部新字节数据合并为一个长度为512比特的数据,记为e18.

Step9.将e18与k0相异或得到长度为512比特的密文数据y.

由上述处理步骤可知,图2所示的数据密码算法具有对称结构,使得加密算法与解密算法共享同一密码算法.当级联多个密码系统时,相邻两个系统间需要插入将数据序列左右翻转的操作.

下面第3.1节首先讨论图2中的密钥发生器.

3.1 等价密钥发生器

在图2中,密钥k借助于密钥发生器生成长度为512比特的等价密钥k0.密钥发生器使用Hénon映射[21],Hénon映射的二阶差分方程形式为:

hn+2= 1-ahn+1+bhn

(3)

当a=1.4且b=0.3时,式(3)具有两个Lyapunov指数,即-1.858和0.654,此时Hénon映射的hn-1~hn相图如图4所示.

图4 Hénon映射的hn-1~hn相图Fig.4 hn-1 ~ hn phase diagram of Hénon mapping

在文献[22]中确定了式(3)所示Hénon映射的状态取值区间为[hl,hr] = [-1.13135,1.40583].

密钥发生器的输入为密钥k,输出为等价密钥k0,其处理过程如图5所示.在图5中,“⊕”表示异或运算,“⊙”表示同或运算.密钥发生器生成等价密钥的详细步骤如下:

图5 密钥发生器Fig.5 Key generator

Step1.将密钥k分成32个长度为16比特的数据,记为pi,i=1,2,…,32.将序列{pi}的相邻的数据进行异或和同或运算得到qi,i=1,2,…,32,如下式所示:

q2j-1=p2j-1⊕p2j,j=1,2,…,16

(4)

q2j=p2j⊙p2j+1,j=1,2,…,15

(5)

q32=p32⊙p1

(6)

Step2.将q1变换为h1,将q2变换为h2,如下式所示:

h1=hl+(hr-hl)×(1+q1)/216

(7)

h2=hl+(hr-hl)×(1+q2)/216

(8)

统计q1和q2两者中比特0和比特1的个数,取较大者记为m1.将h1和h2作为式(3)的初始值,迭代式(3)所示映射m1+3次后,取最后的两个状态,将它们记为s1和s2.由s1和s2生成两个16比特的整型数据r1和r2,如下式所示:

r1=Floor((2+s1)×224)mod 216

(9)

r2=Floor((2+s2)×224)mod 216

(10)

这里,Floor为向下取整函数.

将r1与q3相异或的结果变换为t1,将r2与q4相同或的结果变换为t2,如下式所示:

t1=hl+(hr-hl)×(1+r1⊕q3)/216

(11)

t2=hl+(hr-hl)×(1+r2⊙q4)/216

(12)

然后,t1和s1合成为新的h1,t2与s2合成为新的h2,如下式所示:

h1=s1/3+2t1/3

(13)

h2=s2/3+2t2/3

(14)

现在,统计q3和q4两者中比特0和比特1的个数,取较大者记为m2.接着,如图5所示,将上述新的h1和h2代入式(3)所示映射,迭代m2+3次后,取最后的两个状态,仍记为s1和s2,之后,按图5所示,依次进行上述类似的操作,直到完成对q31和q32的处理,得到新的h1和h2.

Step3.统计q31和q32两者中比特0和比特1的个数,取较大者记为m16.将第2步中最后得到的h1和h2代入式(3)所示映射,迭代m16+3次后,再继续迭代32次,记这32次迭代生成的状态为si,i=1,2,…,32.将si转化为16比特的整型数据,记为ri,i=1,2,…,32,如下式所示:

ri=Floor((2+si)×224)mod 216

(15)

将{ri,i=1,2,…,32}组合为512比特长的序列,即为等价密钥k0.在第2步和第3步中的Hénon映射迭代过程中,如果某次生成的状态值h小于hl,则使用2hl-h替换h.

这里借助于Mathematica软件测试了等价密钥k0的随机性和敏感性.随机性的测试方法为:将k0中的比特1视为数值1、比特0视为数值-1,计算k0的自相关值,记为v1,显然v1=512.然后,计算k0的循环移位互相关值,其绝对值的最大值记为v2;接着,令ps=20 log(v1/v2);之后,使用Mathematica软件伪随机数发生器生成长度为512比特的数据,计算其对应的ps;最后通过比较k0的ps和Mathematica软件生成的伪随机数据的ps,判定k0的随机性,两个ps值越接近,说明k0的随机性能越好.敏感性的测试方法为:随机改变密钥k的1比特,得到一个新的密钥,用这两个密钥分别借助于上述密钥发生器生成两个等价密钥,比较这两个等价密钥中不同比特数所占的比例,记为pr,该比例与50%越接近,说明敏感性越好.

现在,在Mathematica 12中,随机生成1000个密钥,计算每个密钥的ps值,然后,计算了这些ps值的最小值、平均值和最大值,分别记为pst1、pst2和pst3.用上述1000个密钥借助于图5所示密钥发生器分别生成1000个等价密钥,计算每个等价密钥的ps值,再计算这些ps值的最小值、平均值和最大值,分别记为psc1、psc2和psc3.然后,仍然用上述1000个密钥,每个密钥随机改变1比特得到一个新的密钥,这样可生成1000对密钥,用这1000对密钥使用图5所示密钥发生器生成1000对等价密钥,计算每对等价密钥的pr值,接着,计算这些pr值的最小值、平均值和最大值,记为prc1、prc2和prc3.重复上述实验过程3次,将计算得到的pst、psc和prc的结果列于表1中.

表1中,pst为Mathematica软件生成的512比特长的1000个伪随机数(密钥)的相关性指标的计算结果,而psc为由这些密钥生成的等价密钥的相关性指标的计算结果,可见,psc和pst的取值范围近似重叠,它们的平均值均在17.50左右.这说明密钥发生器生成的等价密钥类似于Mathematica软件生成的伪随机数,具有良好的伪随机特性.表1中,prc为仅有1比特不同的密钥对生成的两个等价密钥的差异程度的计算结果,可见,3组实验的prc的计算值在50%左右波动,平均值接近于理论值,说明密钥发生器生成的等价密钥对密钥是敏感的.从而,图5所示的密钥发生器可用于数据密码系统中.

表1 等价密钥的随机性和敏感性分析结果Table 1 Randomness and sensitivity analysis results of equivalent keys

3.2 非等分Feistel网络及其逆网络

提出的数据密码算法的核心是非等分Feistel网络,该网络结构如图6所示.

图6 非等分Feistel网络Fig.6 Unequal dichotomy Feistel network

图6展示了第i轮的非等分Feistel网络,其输入记为512比特长的di,输出记为512比特长的di+1,ki表示第i轮的子密钥输入,长度为32比特.在图2中,512比特长的等价密钥k0被分成16个长度为32比特的子密钥,其中,第i个子密钥为ki.在图6中,非等分Feistel网络先将输入数据di分成480比特长的li和32比特长的ri,然后,借助下式将输入数据di变换为输出数据di+1:

li+1=ri⊕ki

(16)

ri+1=li⊕F(ri⊕ki)=li⊕F(ai)

(17)

式(17)中,令ai=ri⊕ki=li+1.现在,将32比特长的li+1和480比特长的ri+1组合为di+1.

在式(17)中,函数F(ai)将ai扩展为480比特长的数据w,如图7所示,其中,每个wi为32比特长,i=1,2,…,15,这些wi组合为w.

图7中,“>>>”表示循环右移位,“S”表示图3所示的S-box.F函数将ai变换为w的步骤如下:

Step1.令w1=ai,w2=ai>>>4,w3=ai>>>8,w4=ai>>>12,w5=ai>>>16.

如图1所示,法国旅游部门自上而下分别是法国政府、旅游联盟和地区旅游局,而旅游联盟又分成各大区旅游委员会、省级旅游委员会和旅游办公室。政府主要行使监督和赋予其他相关机构权利的职能,对各地的旅游行业发展提出引导性的策略性意见;而国家旅游联盟是非政府组织,负责协助政府和执行政策,其属下的旅游办公室遍布旅游景区,可免费为游客提供旅游咨询和观光游览向导,并提供地图和旅游景点宣传手册,供游客充分了解当地特色和旅游资源[12]。

Step2.令w6=w1⊕G(w5),w7=w6⊕w2,w8=w7⊕w3,w9=w8⊕w4,w10=w9⊕w5.

Step3.令w11=w6⊕G(w10),w12=w11⊕w7,w13=w12⊕w8,w14=w13⊕w9,w15=w14⊕w10.

上述步骤得到的{wi,i=1,2,…,15}组合为w.其中的G函数如图7所示,执行的运算是将一个32比特长的数据变换为一个新的32比特长的数据,具体处理过程为:将32比特长的数据分成4个字节数据;接着,这4个字节数据依次与02H、08H、20H和80H相异或,异或后的结果分别查图3所示的S-box得到4个新的字节数据;然后,将这4个新字节数据组合成一个新的32比特长的数据.

图7 非等分Feistel网络的F函数Fig.7 F function of unequal dichotomy Feistel network

综合图6和图7可知,非等分Feistel网络具有信息的置乱和扩散作用,其中置乱作用表现在4方面:1)输入数据di的ri部分与子密钥ki异或后送入输出数据di+1的li+1部分,即将ri经子密钥ki置乱后的数据赋给di+1的左侧li+1;2)输入数据di的li部分与F函数的输出数据异或后送入输出数据di+1的右侧部分ri+1,即将li经F函数的输出数据的置乱作用后赋给ri+1;3)输入数据di的右侧ri经置乱后赋给输出数据di+1的左侧li+1,而di的左侧经置乱后赋给di+1的右侧ri+1,即实现了一个整体上的位置交换置乱;4)当多节非等分Feistel网络串联时,每节网络操作相当于输入数据整体上作了一个32比特右移,16节网络操作使得最初输入的512比特长的数据刚好作了一个完整的移位置乱.扩散作用表现在两个方面:1)输入数据di的右侧ri向其左侧li扩散,即将输入数据di的ri部分(与ki异或后)经F函数扩展后与li相异或,其结果送入输出数据di+1的右侧ri+1中,这样把ri(和ki)的信息扩散到li中并形成了ri+1;2)当16节非等分Feistel网络串联时,刚好使得512比特的网络输入数据的每个32比特部分都向其余480比特数据扩散一次,以达到信息充分扩散的效果.

非等分Feistel网络的逆网络结构如图8所示,其中的F函数与非等分Feistel网络的F函数相同.

图8 非等分Feistel网络的逆网络Fig.8 Inverse network of unequal dichotomy Feistel network

非等分Feistel网络的逆网络执行非等分Feistel网络的逆运算,在图8中,设非等分Feistel网络的逆网络的输入为ei,被分划为32比特长的li和480比特长的ri;输出为ei+1,由480比特长的li+1和32比特长的ri+1组成,执行的运算如下所示:

ri+1=li⊕ki

(18)

li+1=ri⊕F(li)

(19)

式(19)中的F函数如图7所示.

4 数据加密与解密实验

续表4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8C2D8ABB2B36C16BC019333F767D8AD199BC7A28F3C8BAD98875D80B00776FEFCBCBC01022F2458B6AD246ACEEB9015926CCE228F7C7FB6F876921AD30B2D6B511D45E6FD89FB2841FF57EF9BA41B22109AD83C8EFFAA1A12C1D85C84C7A0A536D589B4B2AE0EE40291BF6FE37460BA474233773E080E0C85CE1290C2925D88E02E8049C3A4F2C8880118572C3A1FDD5BFC4C96E08E01EC1E9FC93DE0EAD3FB8F2B53C41670FA6ACB3CBA24116754395ECB31D5BD75FBEB335E58C57F6FC69DC6FB7BB16AF7685EE35D2CBFF59B3A3985397C477FD9E510AC0573D99044283B20734D2AF40431EA27DDC02F02875312319F482BB2A100AB467C071C6CCAF152309F9BBD8B060856A5CCE2120E9FC4D7C703CF0DEEFE5919AA523D2AAF844C0994F6E6A32F0FC6892463A66B6FBC1A3B93C7B20C129C913B1C6DBAE4BE7E8989E6

在表2和表3中,序号1~4使用了规则的明文数据,但它们的密文数据没有规律;序号5~6使用了两个随机生成的明文数据,它们与其密文数据之间也不存在规律.表2和3可以直观地表明提出的数据密码算法将明文数据加密为一串不规则的数据序列.密文数据与明文数据的关联性以及密文数据对密钥与明文的敏感性将在第5节讨论.

在使用的计算机上,借助于单线程的Wolfram编译程序,通过1000个数据的加密与解密测试,得到加密和解密512比特数据的时间均为0.2209ms,相当于加密和解密速度均为2.3178Mbps.

5 算法性能分析

本节将分析提出的数据密码算法的密钥空间大小和数据加密/解密过程中的雪崩效应及其与经典数据加密算法DES、AES和SM4的性能对比.

5.1 密钥空间

一般地,数据密码算法的密钥大小至少为128比特.这里提出的数据密码算法的密钥长度为512比特,因此,提出的数据密码算法的密钥空间大小为2512.在比使用的计算机快1亿倍的计算机上,尝试密钥空间中一半密钥的穷举攻击方法所需的时间为2.0629×10138年,可见,该密钥空间足以对抗穷举攻击.

提出的数据密码算法也可以使用短密钥.当提出的数据密码系统的输入密钥长度为L,这里L为大于等于128且小于等于512的整数时,此时密钥空间大小将为2L.然后,将长度为L的密钥将扩展为长度为512比特的密钥,作为提出的数据密码系统的密钥.扩展长度为L的密钥为512比特的密钥k的算法为:

k(L+i)=k(i)⊕k(8imodL+1)⊕k(16imodL+1)⊕
k(L+i-1),i=1,2,…,512-L

(20)

例如,设输入密钥为128比特长的比特序列“AAC475AC918EB708620C60FF4689981F”(十六进制数表示),则加密使用的密钥k为“AAC475AC918EB708620C 60FF4689981FA6F333438B7FB07B29832ADEEE85859E512 948099821B5D95B76A6E021726C9F0BBAE58585B5B31AF 82FAECB5428DD61”(十六进制).

当L=128时,在比使用的计算机快1亿倍的计算机上,尝试密钥空间中一半密钥所需的时间为5.2355×1022年,此时的系统仍然可以对抗穷举密钥攻击.

5.2 雪崩效应

设两个长度相同的比特序列,其差异程度用指标dif表示,定义dif为:

dif=m/n×100%

(21)

其中,m表示两个比特序列对应位置不同的比特个数;n表示比特序列包含的总比特个数.对于两个随机比特序列,其指标dif具有理论值50%.

下面各小节依次讨论由于明文数据、密钥、等价密钥或密文数据的微小变化,导致数据加密/解密结果的雪崩效应,也称为系统敏感性分析.

5.2.1 明文数据敏感性分析

针对图2所示的数据加密算法,不失一般性,这里选定密钥k为“2C827CD205F7CD63C4A15193D3A9D5A5617A5 3D5C47B2BB9895E981D882D91084DC29B5E30F88D329A 3169B5C033A6ED9F74DF26126CF5471BD94AB0D958AAF 8”(十六进制数表示),加密仅有1比特不同的两个明文数据,得到的密文数据如表4所示.在表4中,k为密钥,x为明文,y为密文.

由表4可知,相差仅1比特的两个明文,经过同一个密钥加密后得到的两个密文数据的差异程度为50.7813%.下面重复上述实验1000次,每次实验中随机生成一个密钥;然后,

再随机生成一个明文数据,并随机改变该明文数据的1比特得到一个新的数据;接着,使用同一个密钥加密这两个数据得到两个密文数据,记录这两个密文数据的差异程度;最后,统计差异程度指标dif的最小值、平均值和最大值.实验结果如表5所示.

表5 明文数据敏感性分析结果Table 5 Plaintext sensitivity analysis results

由表5可知,1000次实验的dif计算结果的最小值为43.1641%、最大值为57.6172%、平均值为50.0645%,平均值与理论值间的相对误差为0.1290%,说明提出的数据密码算法具有良好的明文敏感性.

5.2.2 密钥敏感性分析

密钥敏感性分析的具体方法为:给定仅有1比特不同的两个密钥,加密同一个明文数据,得到两个密文数据,计算这两个密文数据间的dif指标,若dif指标的计算值接近于其理论值,说明提出的数据加密算法具有密钥敏感性.这里,进行了1000次密钥敏感性分析实验,每次实验中,随机生成一个密钥,并随机改变其1比特得到一个新的密钥,并随机生成一个512比特的明文.实验结果如表6所示.

表6 密钥敏感性分析结果Table 6 Key sensitivity analysis results

在表6中,1000次密钥敏感性分析实验得到的dif指标的最小值为43.1641%、最大值为57.0313%、平均值为50.0115%,dif指标计算结果的平均值与理论值的相对误差为0.0230%,说明提出的数据密码算法具有良好的密钥敏感性.

5.2.3 等价密钥敏感性分析

等价密钥敏感性分析的方法为:随机生成一个密钥k,借助于Henon映射得到其等价密钥k0,随机改变k0的1比特得到一个新的等价密钥,用这两个等价密钥加密同一个明文,得到两个密文数据,计算这两个密文数据的dif指标,如果dif指标的计算值与其理论值接近,则说明提出的数据密码算法具有强的等价密钥敏感性.这里,进行了1000次等价密钥敏感性测试,测试结果如表7所示.

表7 等价密钥敏感性分析结果Table 7 Equivalent key sensitivity analysis results

在表7中,1000次等价密钥敏感性测试的dif指标的最小值为42.7734%、最大值为56.8359%、平均值为49.9131%,dif指标计算结果的平均值与理论值的相对误差为0.1738%,说明提出的数据密码算法具有强的等价密钥敏感性.

5.2.4 密文数据敏感性分析

密文数据敏感性分析的方法为:随机生成一个密钥k和一个明文数据x,借助于提出的数据密码算法使用k加密x得到密文y,随机改变密文y的1比特得到一个新的密文y1,借助于提出的数据密码算法使用k解密y1得到一个解密后的数据,记为r.计算x和r间的dif指标,若dif指标的计算值接近于其理论值,说明提出的数据密码算法具有强的密文敏感性.这里,进行了1000次密文数据敏感性分析实验,计算结果如表8所示.

表8 密文数据敏感性分析结果Table 8 Cipher-text sensitivity analysis results

在表8中,1000次实验计算得到的dif指标的最小值为42.3828%、最大值为56.6406%、平均值为49.9785%,dif指标的平均值与其理论值间的相对误差为0.0430%,说明提出的数据密码系统具有强的密文敏感性.

5.3 密文数据随机性测试

为了说明密文数据类似于随机数据,这里对密文数据进行了伪随机性分析.不失一般性,随机生成一个密钥k为“7A2CE5DBB52ADF36AB10E8DEB8BBE5AD78D6649C6C98CC43FD4984C2374A413D402DC45621904B5BF78D8E52A14DCC97A37DBC0001D81FB07B85884291D0BF1F”.然后,取40个明文数据,其中,第1个明文数据全为比特0,若将明文视为一个长512比特的数据,后续的明文数据为前一个明文加上1比特.使用这40个明文数据生成40个密文数据,取这40个密文数据串的前20000位作为测试数据,按FIPS140-2标准对这些测试数据做了单比特测试、扑克测试和游程测试,测试结果如表9所示.

表9 密文比特序列的随机特性测试结果Table 9 Randomness test results of cipher-text bit-sequence

由表9可知,多个密文数据串联而成的伪随机序列通过了FIPS140-2伪随机性测试标准,说明密文数据类似于伪随机数,隐藏了原始明文数据的全部信息.

5.4 对比分析

为了进一步证实提出的数据密码算法的可行性,将其与常用的数据密码算法DES、AES(密钥长度分别为128比特、192比特和256比特的情况)和SM4进行了对比分析,对比的项目包括密钥长度、加密和解密速度以及雪崩效应等,对比分析结果如表10所示.其中,加密或解密速度为1000次加密或解密操作的平均速度,这里所有的密码算法均使用Mathematica软件下的单线程Compile函数实现,且在同一台计算机上测试,以确保速度测试结果具有可比性;雪崩效应的各个敏感性指标是1000次实验计算得到的dif值的最小值、平均值和最大值.

表10 提出的算法与DES、AES和SM4的对比结果Table 10 Comparison results of the proposed algorithm with DES,AES and SM4

由表10可知:1)提出的数据密码算法使用了512比特长的密钥,在所有对比的算法中具有最长的密钥,并且,提出的数据加密算法可以使用长度为128比特至512比特间的密钥;2)提出的数据密码算法的加密和解密速度相同,均比SM4算法快了近4倍,比DES算法快了近8倍,比密钥长度为256比特的AES算法稍快,但比密钥长度为128比特和192比特的AES算法稍慢.这里AES使用了查找表技术进行了优化,这种优化方法使用了1280字节的查找表,而提出的密码算法仅使用了512字节的查找表;3)表10中各个密码系统的明文长度不同,其敏感性的dif指标计算值波动范围也不同.通过比较dif指标计算结果的平均值,可知各个系统的dif指标的平均值与理论值50%均非常接近,说明提出的密码算法和DES、AES、SM4算法均具有良好的雪崩效应.

此外,在表10所示的密码系统中,只有提出的密码算法具有相同的加密过程与解密过程,可以有效地节省代码空间,更适合用于智能卡身份数据加密和物联网终端低密度数据加密.

表11 提出的算法与DES、AES和SM4的复杂度估计值Table 11 Complexity estimates of proposed algorithm,DES,AES and SM4

需要说明的是,表10中各种数据加密算法的速度对比分析是基于Mathematica软件的测试分析结果,这些结果受到算法实现方法和编程水平的影响.为了公正地对比这些数据密码算法的加密速度(由于各个密码算法的解密速度与其加密速度相当,故仅分析了加密速度),本文对这些数据密码算法的加密速度作了时间和空间复杂度分析.时间复杂度用加密1比特数据需要的单位计算(UO)表示,单位为UO/bit,这里的UO表示CPU执行单周期计算或存储指令所需要的平均时间.空间复杂度用加密1比特数据需要的存储空间的大小表示,单位为bit/bit.提出的密码算法和DES、AES、SM4算法的理论复杂度估计值如表11所示.

表11表明,对于提出的算法、DES、AES和SM4加密算法而言,理论上AES是时间复杂度最小的算法,即AES是加密速度最快的算法,但是AES的空间复杂度比其他算法都高.提出的算法的时间复杂度和空间复杂度均比DES和SM4低,说明提出的算法在理论上比DES和SM4加密速度更快,且占用的存储空间更小.

6 结 论

本文提出了一种新型数据密码算法,该算法具有相同的加密过程和解密过程,即若向提出的数据密码系统输入密钥和明文数据,则系统将执行加密算法得到密文数据;若向系统输入密钥和密文数据,则系统将执行解密算法还原出原始的明文数据.这使得如果两个提出的数据密码系统直接级联在一起,将得到一个恒等变换系统.因此,提出的数据密码系统在两级级联使用时,中间需插入一个数据序列左右翻转处理,这样级联后的系统仍然是加密过程与解密过程共享的数据密码系统.而且,上述级联方法对于多级系统仍然适用.

提出的数据密码算法的核心是非等分Feistel网络及其逆网络.在标准Feistel网络的基础上,非等分Feistel网络将处理数据由原来的64比特扩展为512比特,同时,使用了一种新的非线性F函数,将32比特数据非线性地扩展为480比特,以实现数据内的信息置乱与扩散处理.非等分Feistel网络实现了数据内部分块数据的高效置乱,还达到了将32比特的“小”数据扩散到480比特的“大”数据中的目的.16节Feistel网络的级联实现了512比特数据的右侧32比特向其左侧480比特的右向循环移位扩散,而16节Feistel网络的逆网络的级联实现了512比特数据的左侧32比特向其右侧480比特的左向循环移位扩散.借助于字节翻转操作将上述两部分网络级联在一起,实现了对所处理的512比特数据的双向置乱和扩散,从而提出的图像密码算法具有强的安全特性.仿真实验和对比测试表明,在相同的软硬件条件下,提出的数据密码算法的加密/解密速度比DES、密钥长度为256比特的AES和SM4算法更快,且具有与这些数据加密标准算法相同等级的雪崩效应,具有强的密钥、等价密钥、明文和密文敏感性,是一种优秀的数据密码算法.

提出的数据密码算法具有快速的加密/解密速度,特别适合于物联网终端设备的敏感数据实时加密与解密.此外,类似于AES和SM4算法,提出的数据密码算法可以工作在密文分组链接模式(CBC)下,实现对声音、图像和视频等大数据的加密,还可以工作在计数器模式(CTR)下实现网络数据流的实时加密.提出的数据密码算法具有AES和SM4相同级别的雪崩效应,且具有比AES和SM4更长的密钥长度和明文长度,可以作为替换AES和SM4的候选方案应用于商业信息安全场合中.

猜你喜欢

明文密文特长
一种针对格基后量子密码的能量侧信道分析框架
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
特长,亦是一种成长
奇怪的处罚
奇怪的处罚
让女儿快乐学“特长”
四部委明文反对垃圾焚烧低价竞争
云存储中支持词频和用户喜好的密文模糊检索