在各种信息中,图像信息由于本身所具有的感性特征更加受到人们的青睐,图像信息安全问题也逐渐成为人们关注的焦点。现在,图像加密技术成为图像信息安全领域中的一个研究热点。混沌力学系统具有伪随机型、确定性和对初始条件与系统参数的极端敏感性,因此可以构造非常好的信息加密系统。目前广泛应用于加密的混沌模型是Logistic映射,其有着形式简单、产生混沌时间序列短等优点。如果在混沌加密之前,对图像数据进行小波变换,变换后得到的小波系数中如果有一个发生改变,就会通过小波变换的逆运算体现在所有的象索点中,这样的加密效果会更好。为此,本文引入两种混沌映射,设计了对二维小波分解所得到全部频率系数进行Zigzag置乱和应用混沌序列改变象素值相结合的图像加密算法。
1 Zigzag变换
Zigzag置换是一种置乱方法,通过对一个矩阵中的元素从左上角开始按"之"字形依次扫描取数来达到对数据进行置换。首先将扫描到的元素先依次存放到一个一维数组中,然后再将此一维数组按一定的方式置换为二维矩阵,则上述的置换过程可看作是对矩阵中元素的置换,这样的过程就叫做Zigzag置换。Zigzag置换的特点是算法实现简单,时间复杂度低。其在数字图像处理中应用比较多,基于Zigzag置乱在视频加密方法及图像数据压缩等方面已有广泛的应用。
在算法分析领域有两个很重要的概念:时间复杂度和空间复杂度,二者往往是矛盾的。在信息安全领域,往往更追求的是算法的时间复杂度低而相对不在意空间复杂度。如在AES加密过程中,其S变换使用查表的方法得到的程序,加密效率远远高于其他算法。在本文所设计的变换过程中也使用查表的方法完成Zigzag排列。图1给出一组8×8的Zigzag排列的系数的行列变换表及其逆变换表。
按照变换表就可以对一个8×8的矩阵I进行Zigzag置乱,具体置乱过程可由下式表示:
其中:z(i,j)表示置乱后矩阵i,j处的元素,r(i,j),c(i,j)分别为行、列变换索引表i,j处的元素。由相应的逆变换表可以得到原始矩阵。
2 混沌序列模型
混沌现象是在非线性动力系统中出现的确定性的、类似随机的过程,这种过程既非周期又不收敛,并且对初始值极其敏感,正是由于此性质,在信息安全中得到了广泛的应用。
2.1 Henon映射
Henon映射定义为:
其中:a,b均为任意常数,b=1时为保面积映射,b<1时为耗散映射。参数取值为a=1.4,b=0.3,此时系统处于混沌状态。
2.2正弦平方映射
正弦平方映射方程为:
上式中x0∈R,且0
2.3初值敏感性测试
本文在这里设计了一种测试混沌序列初值敏感性的方法,以正弦平方映射为例来说明实现方法。设有两个初值,仅相差10-5,由这两个初值分别得到两组序列值,再计算出他们对应值的差值,进而可以绘制出初值敏感性图,部分代码如下。图2(a)、(b)画出了henon映射100步内的误差图,由图可知差异有时可达最大值,图2(c)给出了正弦平方映射50步内的误差图,差异有时甚至接近1。
3 基于Zigzag变换及混沌序列的图像加解密算法
3.1加解密过程
3.1.1 基于Zigzag变换的置乱
考虑一幅大小为M×N具有N级灰度的图像,对其采用适当的小波基进行二维小波分解得到其全部频率系数,可以采用自己设计的一个随机置乱表代替图1中的Zigzag变换表和式(1),把所得到的频率系数转换成矩阵,然后对其进行8×8分块使用Zigzag变换表进行扫描。经扫描后得到一组置乱了的频率系数,再利用其进行二维小波重构,这样便得到了置乱后的图像。为了能使置乱效果更好,可以多次对频率系数进行变换。要想得到正确的图像,必须要用变换时使用的变换表得到其相应逆变换表和变换的次数n。因此,可以把所设计的变换表和变换次数n作为密钥,从而实现图像加密。
3.1.2 混沌密钥模板序列生成及象素值变换
本文所设计的加密算法就是利用Henen映射、正弦平方映射对初值敏感的性质生成混沌序列作为密钥模板进而与象素值进行运算来得到一幅杂乱无章的图像。由于图像的灰度级为N级,其值从0~N-1,Henen映射、正弦平方映射产生的混沌序列值不在此范围之内。为了将以上映射产生的混沌序列与图像象素值运算,需做一些适当的修正,把所生成的值映射到集合{0,1,2…,N,N-1}。
(1)混沌密钥模板序列值的修正
设Henen映射,正弦平方映射所生成的混沌序列分别为r1,r2,r3。为了方便后边的运算,使用Matlab中的reshape函数将r1,r2,r3转换成矩阵的形式,称为密钥模板矩阵。可用式(4)进行修正。
(2)象素值变换
3.1.3加密算法
(1)对明文图像I进行小波分解得到分解的全部频率系数,对其进行Zigzag变换,然后用此结果进行二维小波重构得到一次加密结果I1。
(2)应用混沌序列模板r1,r2,r3及式(5)对I1进行加密得到密文象素流I1'(i,j),可重复步骤(1)、(2)两步多次。解密算法是加密过程的逆。
3.2算法思想的扩展
在3.1节中主要描述了对一幅灰度图像的加密过程,本算法也可应用于彩色图像,具体过程是分别提取彩色图像的R,G,B颜色分量,分别对其进行3.1节所述的加密,然后对3个加密结果使用cat函数就可得到加密后的结果。同时在加密算法中,需要3个密钥模板,则还可以使用三个不同的混沌映射来得到,在加密彩色图像时,对每个分量加密时可以选取不同的初值和参数,这样可以大大增大密钥空间。
4 仿真试验及结果分析
在Matlab 7.0编程环境下,本文首先按照上面所述的加密算法对大小为96×96的lenna灰度图像进行了加解密试验,然后又按上面所述思想实现了彩色图像的加解密。在试验中,对图像使用haar小波基进行二维小波分解,key1中的参数x01=0.2,y01=0.1,x02=0.5,b=3.9,n=1,试验结果如图3所示。
由图3(b)、3(e)可看出加密后的图像已是一幅无纹理,杂乱无章的图像,从中不能得出原图像的任何信息,得到了理想的加密结果。
4.1 算法的安全性分析
在信息安全领域,Kerckhoffs准则认为:一个安全保护系统的安全性不是建立在他的算法对于对手是保密的,而是应该建立在他所选择的密钥对于对手来说是保密的。
4.2密钥空间分析
由上文加密算法的描述过程可知,该加密系统使用了Zigzag变换表和两个不同的混沌系统。Zigzag变换表由两个8×8行、列索引表构成,其可以作为密钥,在混沌序列的产生过程中,需要3个不同的初始条件和1个参数以及加密次数,由此可见密钥空间是非常大的,可以有效地抵抗穷举攻击。
4.2.1 密钥敏感性测试
图3(g)是当解密时只把x02的值做了微小的变化得到的解密结果,其中x02=0.500 000 001。结果表明,解密结果是一幅杂乱无章的图像,解密失败。体现了很好的密钥敏感性,同时也达到了密码学中混淆和扩散的目的。
4.2.2抗恶意攻击
当第三者截取到杂乱无章加密图像但无法获取解密密钥就不可能得到明文图像,则其就可能对密文图像进行加噪、剪切等恶意攻击来破坏图像。图3(h)是加密图像受加椒盐噪声攻击的解密结果,可看出解密结果虽然有一些噪声颗粒,但整个图像轮廓还是可见的。实验过程也做了其他攻击,结果都体现了算法的鲁棒性。图像中相邻象素间存在较大的相关性,利用这一固有性质可以进行统计分析攻击。图3(i)是原图像的灰度值统计直方图,图3(j) 是加密图像的象素走方图。可见,加密过程将原始图像灰度值的不均匀分布变成了灰度值的均匀分布,使密文灰度值在[0,255]整个空间范围内取值概率均等,使明密文的相关性大大降低,体现了算法抗统计分析攻击的能力。对于彩色图像可得到相同结果。
5 结 果
本文给出了基于小波分解所得到的频率系数的Zigzag置乱和应用两个混沌序列经修正后转换成图像加密模板矩阵,进而应用这两个加密模板对象素值进行变换的加密算法,该算法易实现。仿真实验表明,算法具有良好的密钥敏感性和很大的密钥空间,达到了密码学上所要求的密码强度,同时具有较好的抗统计攻击和有效抵抗恶意攻击的能力,提高了图像加密的安全性。同时把算法应用于彩色图像,也得到了很好的加密效果。