2 加密解密矩阵的构造
由于单混沌存在诸多缺陷,密钥空间小,且在有限精度的系统下受限制,单混沌映射加密易受到攻击利用。因此,本文利用Logistic和Henon双混沌系统来构造加密矩阵实现对图像加密。首先对Logistic混沌系统产生的序列通过一种动态量化得到置换矩阵的随机数,对图像的像素位置置乱;再通过Henon混沌系统的映射,利用整数求余的量化方法来得到"异或"加密的随机数,与置乱后的图像依次"异或".图像加密效果完全取决于两种混沌系统产生的随机数,因此,对Logistic混沌的动态量化和Henon的整数求余量化成为实现加密效果的关键。
设原始图像为I,大小为m×n,则图像I可以表示为:I=F(i,j)(0≤i≤m,0≤j≤n)。其中,(i,j)表示像素点位置,F(i,j)表示该点处图像的数据,则F(i,j)可构成图像数据矩阵T.
2.1 置换矩阵的构造
首先利用一种随机全排列生成算法来生成置换加密中所需的全排列。所谓全排列即是将M个不同元素按照一定的顺序排列起来,称为这M个不同元素的一个全排列。本置换方法分为行置换和列置换,行置换算法描述如下:
(1)设生成的置换矩阵大小为m×n,首先要生成一个0~M-1之间的全排列元素,元素数目为M(M>n)。
(2)初始化全排列矩阵,令{0,1,…,M-1}中所有元素的一个全排列为{a0,a1,…,aM-1},当i≠j时,有ai≠aj.全排列初始值系数为L,令n=?骔L×M」,L可以当密钥给出,一般L在(0.5,0.7)区间即可。若太小,则产生的全排列随机性差;若太大,则数据重复多,将会增加系统的迭代次数。
(3)设所用混沌系统方程为xn=f(xn-1),本文用的是Logistic混沌模型,xn即为当前混沌序列,每次都要进行迭代来产生新的混沌序列。利用不等分区间的动态量化对混沌序列进行进一步处理,以增强其随机性和复杂度,本文利用判决公式(3)对Logistic混沌方程式(1)产生的序列{xn}进行判决,可以得到K=2n进
定义序列{xn}经过判决所在的位置构成序列为Pn={p1,p2,…,pn},其中Pi=j,即每一个xi都和一个xpi相对应,可进行两个位置元素交换,然后再重新判决,通过这样的量化即可得到n个0~M-1之间的随机数。
(4)初始化一个数组A,初始为空,最大长度为m,将步骤(2)生成的元素依次添加到A中,若A中不存在生成的元素,则添加到A末尾,否则舍弃。直到A中元素为n个,然后将0~M-1间元素不在A中的依次添加到A中,形成初始化全排列A.
(5)对初始化全排列A再进行一次全变换来增强随机性,方法同步骤(2),即将两个对应位置元素A[Pi]同A[Ppi]的交换。这里全变换的次数可以自行设定,但考虑系统运行的速度,全变换轮数r不宜过大,一般不超过5轮,由密钥给出。
(6)反复执行步骤(3)、(4)、(5)可得到一个m行随机全排列,即可构成m×n大小的行置换矩阵A′。
(7)行置换方法可看作函数B=E(A′,T),其中B为加密后矩阵,即是将T[i,j]的值赋给B[i,Ppj].列置换的方法和行置换方法相同,在此不再描述。设矩阵B经过列置换后为B′m×n.
该算法生成的全排列对混沌系统的初值敏感,密钥的细微差别都将产生不同的全排列。利用该算法可以生成任意多所需长度的随机全排列,算法中细微部分可以灵活处理,以增强密钥强度。
2.2 "异或"矩阵的构造
利用Henon映射进行迭代产生随机数构成"异或"矩阵。由于Henon映射有一定的局限性,对常用的几种混沌模型产生的序列进行随机性测试,得出Henon混沌映射的随机性强度并不是十分理想。因此,本文用Henon混沌序列进行扰动变换后产生相关序列及参数,将输出结果进行整数取余进一步量化得到"异或"矩阵。其中部分细节可以灵活变换修改,在此不作详细规定。
(4)反复执行步骤(1)、(2)、(3),直到构成大小为m×n的"异或"矩阵所需随机数,设得到的"异或"矩阵为Cm×n.
(5)将"异或"矩阵Cm×n与所得的置换矩阵B′m×n逐一"异或"即可得到加密矩阵。
"异或"矩阵的使用增强了整个算法的安全性。置换矩阵和"异或"矩阵的使用,进一步增强了加密效果,使抗攻击能力得到增强。
2.3 解密算法
解密算法是加密算法的逆运算,在解密算法中,置换矩阵是加密算法中置换矩阵的逆置换,"异或"矩阵与加密中的"异或"矩阵相同,只是在解密过程中要先进行"异或"运算,最后再进行"异或"运算。
3 仿真实验及测试分析
3.1 加密效果
本文采用大小为256×256、8bit大小的Lena灰度图像作为待测试图像。密钥选取参数如下:x0=0.0798975229263307,μ0=4,r=1,x′0=0.7904083056499,y′0=0.210030319169164,t=3,分别取小数点后3、5、7位。原始图像及其灰度直方图分别如图1、图3所示,加密后的图像和灰度直方图分别如图2、图4所示。从图中可以看出,加密后的图像效果很好,各像素的灰度值分布均匀,与原始图像完全不同,对已知明文攻击非常安全。
3.2 敏感性分析
图5为正确密钥解密所得图像,通过比较可知,与原图的像素值完全相同,表明该算法没有信息的丢失。当密钥中的x0=0.0798975229263006、其他密钥参数不变时,解密所得图像如图6所示。可见即使使用与正确密钥差值微小错误的密钥进行解密,得到的仍是与原图像差别很大的错误图像,即说明本文所用算法对密钥具有高度的敏感性。
3.3 图像剪裁测试
从解密后的图像中,剪裁掉右上角25%大小后的图像如图7所示,剪裁掉中间一个大小为100×100后的图像如图9所示。经解密后的图像分别如图8、图10所示。可以看出,对密文进行剪裁干扰后进行恢复,恢复后的图像也能很清楚地反映原始图像的一些特征,而且密文集中剪裁出的点都分散到原图像的不同位置,说明对图像的加密效果比较理想。
3.4 图像相关性分析
为了分析原图像与密文图像的相邻像素相关性,在水平、垂直和对角线方向上分别从原始图像和密文图像中随机选择2000对相邻的像素点,并按照公式计算相关性,图11、图12分别是图像加密前后3个方向(水平方向、垂直方向、对角线方向)的相邻像素相关性。
表1为按3个方向计算所得的相关系数结果。由结果可知,原始明文图像相邻像素是高度相关的,相关系数接近于1.而加密图像的相邻像素相关系数接近于0,相邻像素已基本不相关,说明明文的统计特征已被扩散到随机的密文中。
本文提出基于双混沌映射的图像加密方法,充分利用混沌映射的性质实现图像的加密。相对于传统的单一混沌映射,密钥空间选择更广,提高了密钥流的线性复杂度,很大程度上增强了图像加密的效果。实验及测试分析证明,本方法简单易行、可靠性和安全性较好。