APP下载

基于混沌序列的AES加密算法

2010-11-27王海科

关键词:加解密加密算法字节

王海科

(郑州大学 学报编辑部,河南 郑州 450001)

数据安全需要多重保障,加密技术是保护数据安全的重要环节,也是实现信息安全的核心技术[1].AES(The Advanced Encryption Standard)算法是一个迭代分组密码算法,其分组长度和密钥长度都是可变的,在它的加解密算法中,对密钥的选择没有任何限制.AES属于对称密钥密码体制,即它的加密密钥和解密密钥相同,加密方和解密方共用一个密钥,密钥需要通过安全的密钥信道由信息发送方传给信息接收方,这也成为AES算法的弱点.针对这个问题,研究者提出了加解密密钥每次更换的方法,但要产生大量不能重复的密钥成为研究难点.

混沌是确定性系统的伪随机性,对系统的参数和初始条件极端敏感.因此,混沌极具密码学的应用价值[2-3].本文详细研究了混沌序列迭代方程,并选取合适的初始化参数,以此来产生AES加密算法的会话密钥,加强了算法的安全性,也实现了AES加密算法.

1 AES算法介绍

现在所使用的大多数对称分组加密算法都基于Feistel分组密码结构,其遵从的基本指导原则是Shannon提出的扩散和混乱,扩散和混乱是分组密码最本质的操作.美国国家标准与技术研究所(NIST)在2002年5月26日,将比利时的Joan Daemen 和Vincent Rinmen设计的Rijndael算法作为新的AES[4]算法,建立了新的高级数据加密标准(AES)规范[5].与公共密钥密码使用密钥对不同,AES 是一个迭代的、对称密钥分组的密码,但它没有涉及Feistel结构,而是采用了Square结构.Square结构是一种迭代分组密码,其轮变换有4个不同的变换组成,这4个不同的变换表现为一套查表和异或操作.它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据,通过分组密码返回的加密数据的位数与输入数据相同.

2 混沌算法的特点

混沌现象是在非线性动力学系统中出现的确定性的、类随机的过程[6].这种过程非周期、不收敛但有界,并且对初始状态具有极其敏感的依赖性,即混沌系统的初始状态只有微小变化,就会产生两组互不相关的混沌序列值.因而,从长期意义上说,混沌系统的未来行为是不可预测的.混沌信号具有天然的随机性,特别是经过一定处理后的混沌信号具有非常大的周期和优良的随机性,可以用来产生符合安全性要求的密钥.更重要的是,通过混沌系统对初始状态和参数的敏感依赖性,可以提供数量众多的密钥.

一类非常简单却被广泛研究的动力学系统是Logistic映射,其定义如下:

xn+1=a×sin2(xn-b)

(1)

其中,a和b为常数,a∈(0,4),x0∈(0,1).当a∈(3.569 945 6…,4)时,Logistic映射呈现混沌态,由初始条件x0在Logist映射的作用下所产生的序列{xn,n=0,1,2,…}是非周期的、不收敛的,对初始值非常敏感.式(1)就是非常典型的一维混沌迭代方程,当初始条件x0稍微出现一些偏差△x0,经过n次迭代后,其偏差△x0则呈指数分离[7].

3 混沌算法的应用

混沌动力系统不仅具有确定性,而且具有形式简单、对初始条件敏感、具备白噪声的统计特性.因而,可以应用于包括数字通信和多媒体数据安全等在内的众多应用领域.大量的研究表明,目前在数字信息传输、混沌掩盖保密通讯、混沌调制扩频通讯、混沌频率调制通讯以及参数调制多路通信等方面都用到了混沌同步,从而说明了利用混沌实现保密通讯是可能的[8].

由于混沌信号具有良好的随机特性,非常适合用来生成密钥.因此,从理论上讲,将混沌技术应用到密码算法中可得到安全性较高的加密效果[7].利用混沌迭代方程对初始值非常敏感的特点,为增加混沌方程初始值产生的安全性,系统对混沌迭代方程初始值的产生办法进行了特殊处理.以系统时间作为参数产生的依据,调用混沌方程,使混沌迭代方程产生的序列值更加没有规律,加强了密钥的安全性.具体办法如下:

混沌迭代方程里有3个参数a,x0,b,每次调用方程产生密钥都将3个参数进行初始化.

(1)调用计算机系统当前时间赋值给一个变量.

(2)以系统时间为参数3次调用伪随机数发生器分别给a,x0,b赋初始值.

由于初始值以系统时间为参数产生,所以迭代方程里面的所有参数都是变值,每次运行都会产生不同的a,x0,b初始值,多次迭代(1)式,就得到一个序列值,经过处理后即可作为AES加密密钥.

4 AES 算法加解密过程

AES加密算法是一个迭代分组密码,其分组长度和密钥长度都是可变的.在实际应用中,分组长度限定大小为128位,而密钥长度可在128位、192位、256位三者中进行选择,相应的迭代轮数N分别为10轮、12轮、14轮.为了简单起见,这里以密钥长度为128位进行分析.算法由10轮循环组成,每一轮循环都有一个循环密钥,它来自于初始密钥.这里有一个第0轮循环密钥,它就是初始密钥.每一轮循环输入的是128位,产生的输出也是128位,128个输入位分成16个字节.

AES迭代加密使用一个循环结构,在该循环中重复置换(Permutations)和替换(Substitutions)输入数据,每一轮操作由3层组成,每一层都有自己的函数,这3层是线性混合层(确保多轮之上的高度扩散)、非线性层(将具有最优的“最坏情况非线性特性”的s盒并行使用)和密钥加密层(将子密钥异或到中间状态)[9].

实际上,AES加解密每一轮循环都使用代替和混淆并行地处理整个数据分组,主要有列变换、行移位变换,结构由4个不同的阶段组成,包括3个代替和一个混淆[10],具体的加解密执行过程如图1所示.

图1 AES算法的加解密框图Fig.1 Structure of AES algorithm’s encryption and decryption

AES加密算法执行过程中的4个变换分别为字节代替(SubBytes)、行移位(Shiftrows)、列混淆(MixColumns)和轮密钥加(AddRoundKey).AES解密运算的基本步骤中除轮密钥加变换(AddRoundKey)不变外,其余字节代替(SubBytes)、行移位(ShiftRows)、列混合变换(MixColumns)都要进行求逆变换,具体见文献[11].AES加密算法执行过程具体如下.

(1)字节代替(SubBytes).这是一个非线性层,用一个S盒完成分组中的按字节的代替,目的是防止微分和线性密码体制的攻击;SubBytes变换是一个基于S盒的非线性置换,它用于将输入或中间态的每一个字节通过一个简单的查表操作,将其映射为另一个字节.映射方法为:把输入字节的高4位作为S盒的行值,低4位作为S盒的列值,然后取出S盒中对应行和列的元素作为输出.例如,输入十六进制数“95”,则进行对应的S盒的行值为“9”,列值为“5”,S中对应位置为“2a”,说明“95”被映射为“2a”.

(2)行移位(ShiftRows).行移位是简单的线性组合置换,可以导致多轮循环各个位间的扩散.ShiftRows完成基于行的循环移位操作,变换方法如图2所示,第0行不动,第1行循环左移1个字节,第2行循环左移2个字节,第3行循环左移3个字节.

图2 行移位变换Fig.2 Transformation of shifted row

(3)列混淆(MixColumns).列混淆是利用在域GF(28)上的算术特性的代替,与行变换的目的是相同的.MixColumns实现逐列混合,将状态列的每个列视为GF(28)上的多项式,再与一个固定的多项式c(x)进行模乘法.当然要求c(x)是模x4+1可逆的多项式,否则列混合变换就是不可逆的.因而,会使不同的输入分组对应的输出分组可能相同.AES的设计者给出的c(x)为(系数用十六进制表示):

c(x)={03}·x3+{01}·x2+{01}·x+{02}

(2)

c(x)是与x4+1互素的,所以是模x4+1可逆的.列混合变换也可写为矩阵乘法,设s′(x)=c(x)·s(x)mod(x4+1),则:

(3)

MixColumns 变换如图3所示.

图3 列混淆变换Fig.3 Transformation of mixed column

(4)轮密钥加(AddRoundKey).利用当前分组和扩展密钥的一部分进行按位异或,即循环密钥同上层结果进行异或运算.

5 结 论

通过对混沌理论的探讨,验证了混沌动力系统不仅具有确定性,而且具有形式简单、对初始条件敏感、具备白噪声的统计特性.系统经过对混沌信号作一定处理后,利用混沌信号具有非常大的周期和优良的随机性的特点,产生了符合安全性要求的AES加密密钥,最终实现了AES加密算法.

参考文献:

[1] 李 飞.网络加密安全系统的设计与实现[J].计算机工程与设计,2003,4(12):86-88.

[2] 孙克辉,张泰山.基于混沌序列的数据加密算法设计与实现[J].小型微型计算机系统,2004,25(7):1 368-1 371.

[3] 王工一.混沌序列流密码[J].计算机与信息技术,2002(3):1-6.

[4] 郎荣玲,夏 煜,戴冠中.高级加密标准AES算法的研究[J].小型微型计算机系统,2003, 24(5):905-908.

[5] 王 睿,林海波.网络安全与防火墙技术[M].北京:清华大学出版社,2000:45-53.

[6] 张化光,王智良,黄 玮.混沌系统的控制理论[M].沈阳:东北大学出版社,2003:12-13.

[7] 陈 谊,白少华,翁贻方.基于混沌理论的文件安全系统[J].计算机工程,2003,29(14):129-132.

[8] 温孝东,黄荣怀,胡 岗,等.一种时空混沌保密语音会议系统的实现[J].北京师范大学学报(自然科学版),2005,41(2):142-145.

[9] 张焕国,覃中平.高级数据加密标准的研究[J].计算机工程与科学,2001,23(5):91-93.

[10] 胡向东,魏琴芳.应用密码学教程[M].北京:电子工业出版社,2005:54-107.

[11] 王海科,范伊红,廉飞宇,等. AES加密算法在不停车收费系统中的应用[J].计算机测量与控制,2006(1):95-97.

猜你喜欢

加解密加密算法字节
No.8 字节跳动将推出独立出口电商APP
No.10 “字节跳动手机”要来了?
简谈MC7字节码
PDF中隐私数据的保护方法
HES:一种更小公钥的同态加密算法
电子取证中常见数据加解密理论与方法研究
基于FPGA的LFSR异步加解密系统
基于小波变换和混沌映射的图像加密算法
网络数据传输的加解密系统研究
对称加密算法RC5的架构设计与电路实现