由于高维混沌系统具有更高的安全性,且密钥空间更大,我们提出一种基于三维Lorenz混沌系统的彩色图像小波域加密算法,该加密软件首先对图像进行小波处理,对得到的小波域系数矩阵进行多次分块置乱,以提高置乱效率;然后采用扩散和置乱同时进行的方式减少算法的遍历次数。

一、Lorenz混沌映射

混沌现象是出现在非线性动力系统中的确定性的、类似随机的过程,这种过程既非周期性的又不收敛,并且对初始值有极其敏感的依赖性。通过自身对初始值和结构参数的敏感依赖性,系统可以提供数量众多、非相关、类随机而又确定可再生的信号.由于上述特点,混沌已广泛应用于保密通讯中,同时也可以作为加密序列。

Lorenz混沌具有很好的随机性,基于此混沌序列的加密系统可以获得更好的安全性。由Lorenz混沌系统生成的混沌序列具有以下优点:

(1)系统结构较低维系统复杂,系统变量的实数值序列更不可测;

(2)通过对系统输出的实数值混沌序列进行处理,可以产生单变量或多变量组合的加密混沌序列,使得加密序列的设计非常灵活;

(3)系统的初值和系统参数均可以作为生成加密混沌的种子密钥,若设计过程中再加入部分控制变量,加密算法的密钥空间将大大高于低维混沌系统。

Lorenz混沌映射由美国气象学家Lorenz在实验过程中提炼得出,当参数σ、r和b分别取10、28和8/3时,Lorenz混沌映射模型处于典型的混沌状态。基于初始条件,通过四阶Runge-Kutta迭代作用可以产生三维混沌序列x(i)、y(i)和z(i),该序列是非周期性的,且对初值非常敏感。

二、加密方案设计

1、加密算法原理

基于频域的图像加密原理首先对彩色图像进行R、G和B三基色分离,然后对转换成的二维灰度图像进行小波变换,得到小波域系数;再把混沌系统的初始值和参数作为密钥,将密钥带入混沌系统使之产生无序实数序列,并对实数序列进行预处理;用所得的无序实数序列根据一定的规则对小波域系数进行置乱,接着对置乱后的数据矩阵进行异或运算,最终得到加密图像。

2、彩色图像分离

为了降低算法的计算强度和空间需求,可把三维彩色图像转化为二维空间的灰度图像进行处理。将输入的Pm×n×3原三维彩色图像分离成R、G和B三基色分量PR、PG和PB。

3、小波域系数获取

应用于数字图像的离散小波变换(DiscreteWavelet Transform,DWT)可以视为利用低通滤波器和高通滤波器将数字图像在频域上分解为低频和高频两类系数。低频类系数包含了图像的大部分信息,能量较为集中,对这一部分系数进行加密即可得到较好的图像加密效果。

输入PR、PG和PB共3个灰度图像矩阵,分别对其进行db1一级小波分解.将所得小波域系数的低频系数矩阵进行置乱加密,而高频系数则不做改变。

设产生的低频系数矩阵为DR(l,k),DG(l,k)和DB(l,k),为了计算方便,本研究将这3个矩阵转化为一维序列DR(i),DG(i)和DB(i),其中i=/xk。

4、混沌序列的预处理

采用上文中提到的Loenz混沌映射产生所需的实数序列{x(i)、y(i)和z(i)},该序列易受线性预测攻击,且序列间的相关特性较高,故在对图像进行加密前需要对产生的原始序列进行置乱预处理。

置乱预处理的具体步骤为:

(1)将序列值同时扩大10的m次方倍,m≥6。

(2)利用round函数求取步骤(1)中产生的每个数值的最近整数,与原数值作差,得出值域在(-0.5,0.5)之间的新序列。

数学计算模型为,根据式(2)产生的值作如下处理,使其成为适合异或的操作数,得到扩散预处理的计算模型式(3)中:mod函数是取模运算,得出序列{cx(i),cy(i),cz(i)},用于下文中的异或操作。

5、加密模版

本研究采用小波域系数值置乱和扩散同步进行的方法,即每置乱1个系数后,就对该置乱系数进行异或扩散,置乱与扩散的过程(仅用R分量举例说明)为:

(1)设m为Dr(i)序列的长,k'=l,l’=log2(m)-1,n=l'。

(2)将Dr(i)序列分成2n×2n大小的序列段,每)个序列段用FR(i)来表示。

(3)将由式(2)所得的预处理过的三维实数序列{x(i)、y(i)和z(i)}从小到大进行排序,在每个序列的排序过程中,根据其序列地址变化的映射生成一个由序列地址组成的序列Kx(i),将该序列作为
对步骤(2)中生成的小波域低频系数序列段进行置乱的置乱索引,即Dr(i)表示原低频系数序列中第i段,则FR (Kx(i))表示置乱后的FR(i)。

(4)令这时程序回到步骤(2),进行循环操作,直到k'≤l'。当k'=l'时,FR(i)的大小为2×2。

(5)对分段置乱后的Dr(i)进行整体置乱,每置乱一个系数值后即与式(3)中生成的操作数序列进行异或操作。

(6)输出合成彩色图像,完成加密。

(7)解密算法为加密算法的逆过程。

该加密模版对小波域系数进行了多次置乱,与单次置乱算法相比较,增大了解密的难度,且置乱时先对分成的序列段进行置乱,节省了计算时间。最后扩散与置乱同时进行,减少了算法对加密图像的遍历次数。

三、加密算法仿真实验

1、实验过程

选用大小为256×256×3、灰度值为256色的Lena.jpg作为实验图像,利用Matlab7.0为平台进行实验,Lorenz混沌系统的3个初值分别取值为0.182 505 937 4、0.362 709 148 5和0.251940 736 8,参数取值为a=35,b=10,c=l,d=10和u=8,积分步长为0.001,采用四阶Runge-Kutta算法解微分方程,本研究的最终加密效果如图l所示,由图1可见,算法已经完全隐藏了原始图像,看不出原始图像的轮廓。

2、运算时间

采用本研究提出的算法与之前提出的算法对同一彩色Lena图像在同一设备上运行计算,本研究提出的算法在运行时间上比其他2种算法节省多于1.080 0 s的时间,达到了研究所期望的效果,提出的算法为直接在空域上对图像进行置乱和扩散;提出的算法则是在对图像进行小波处理的基础上,对小波域系数进行置乱和扩散,后2种算法采用了相同的置乱方法。

3、灰度直方图分析

与分布不均匀的原始直方图相比,加密后的直方图平坦且灰度值呈均匀分布.这表明密文的像素值在0—255范围内的取值概率均等,即对整个密文空间呈均匀分布特性,攻击者无法从灰度值的特征中获取有效信息,因而可以有效地防止统计攻击,加强了图像的安全性。

4、密钥敏感性测试

一个好的加密系统应该有足够大的密钥空间来防止攻击者暴力破解。本研究提出的算法中,密钥包括了x(0)、y(0)和z(0),以及对序列预处理时的m值,任何一个值改变都不能正确解密图像。

为了测试本研究的密钥敏感性,采取2组密钥对加密图像进行解密,图4a为原始密钥即x(0)=0.182 605 937 4,其他初始值不变时的解密图像,图4b为将x(0)的值改变为0.182 605 937 5,其他初始值不变时的解密图像,可以看出,即使在密钥发生微小改变时,也不能得到正确的解密图像。

5、抗干扰测试

图像在处理、保存和传输过程中经常会受到噪声的干扰,一个好的加密算法应该具有良好的抗干扰能力。传输过程中在可能引入的随机噪声引起损失或加密图像部分数据缺损后,图像应均能正确解密,恢复出原图像。从实验结果看,本研究算法具有较好的抗干扰能力。

图5b为加密图像被剪切24%后的解密图像,图像存在噪点,但图像特征与细节效果仍然很明显,效果良好,图5d为加密图像被剪切50%后的解密图像,图像存在大量的噪点,个别细节失真,但图像特征依旧明显。图5f是受到5%高斯噪声污染后的解密图像,可以看出噪声污染对原图像几乎没有影响。

小知识之小波变换

小波变换是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。