基于双混沌映射的图像加密算法研究
扫描二维码
随时随地手机看文章
随着信息技术的发展,图像保密技术将在越来越多的应用场合受到重视。由于图像加密具有数据量大、相邻像素间相关性强等特点,一些传统的加密算法并不适合于加密图像信息。虽然利用传统的加密技术对图像加密是可实现的,但其加密效率低、安全性不高,不能适应图像加密的需要,因此专用的图像加密技术被广泛关注。近年来混沌理论的应用研究引起了密码学界的关注,由于混沌遍历性正符合Shannon提出的密码系统设计的扩散混淆等基本原则,使混沌理论在图像加密中得到广泛应用。本文提出一种基于Logistic和Henon双混沌的图像加密算法,并通过实验分析证明,该算法具有优异的加密性能和运算效率。
1 混沌理论及模型
混沌是非线性确定系统中由于内禀随机性而产生的外在复杂表现,是一种貌似随机的非随机运动。基于混沌的保密技术已经涉及到数据安全及保密通信等众多研究领域,目前许多研究将混沌信号作为通信中的载波以对抗多径衰落,并具有一定的保密性。然而,无论采用载波同步解调还是非相干接收的通信方式,混沌载波通信所具有的保密性都已经受到了不同程度的威胁。在基于载波同步的混沌保密系统中,混沌同步特性容易被攻击者利用进行状态空间重构;对于非相干的混沌扩频系统,截获者可通过训练预测出各码元的时间窗口,并进行与权威接收端类似的差分解调。
混沌与密码学有着紧密的联系,一个好的密码系统应该具备以下几个条件:(1)把明文变换为尽可能随机的密文;(2)加密算法对明文有高度敏感性;(3)加密系统对密钥有高度敏感性。由于混沌具有对初值的敏感性、良好的伪随机特性、轨道的不可预测性等特征,这些特征正好能够满足密码系统的要求。
Logistic映射是一个非常简单却具有重要意义的非线性迭代方程,虽然它具有确定的方程形式,不包含任何不确定因素,却能产生完全随机的、对参数滋的动态变化和初值极为敏感的序列。其定义如下:
初始值极度敏感,对于相差的初始值,方程迭代出来的轨迹差别相差很明显,一般情况下,很难从一段有限长度的序列来推断出混沌系统的初始条件。该混沌模型迭代方程简单,混沌加密参数只有一个,这决定了其加密运算速度快,特别是比高维的混沌系统要快很多,但其密钥空间比较小,安全性稍差,因此不考虑单独使用它。
Henon混沌系统是1976年由Henon提出的一种二维迭代系统,具有两个参数的平面映射族。Henon混沌映射定义如下:
式中,a、b为控制参数,当1.05<a<1.8、b=0.3时,Henon映射处于混沌状态.当处于混沌时,它与Logistic模型同样具有混沌的特性,不同的是Henon映射是一个具有两个参数的平面映射族。虽然理论上对Henon混沌的研究比较成熟,但是由于其产生混沌序列的特殊性,一般也不单独使用。
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.[!--empirenews.page--]
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逐一"异或"即可得到加密矩阵。
"异或"矩阵的使用增强了整个算法的安全性。置换矩阵和"异或"矩阵的使用,进一步增强了加密效果,使抗攻击能力得到增强。[!--empirenews.page--]
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所示。可见即使使用与正确密钥差值微小错误的密钥进行解密,得到的仍是与原图像差别很大的错误图像,即说明本文所用算法对密钥具有高度的敏感性。
[!--empirenews.page--]
3.3图像剪裁测试
从解密后的图像中,剪裁掉右上角25%大小后的图像如图7所示,剪裁掉中间一个大小为100×100后的图像如图9所示。经解密后的图像分别如图8、图10所示。可以看出,对密文进行剪裁干扰后进行恢复,恢复后的图像也能很清楚地反映原始图像的一些特征,而且密文集中剪裁出的点都分散到原图像的不同位置,说明对图像的加密效果比较理想。
3.4图像相关性分析
为了分析原图像与密文图像的相邻像素相关性,在水平、垂直和对角线方向上分别从原始图像和密文图像中随机选择2000对相邻的像素点,并按照公式计算相关性,图11、图12分别是图像加密前后3个方向(水平方向、垂直方向、对角线方向)的相邻像素相关性。
表1为按3个方向计算所得的相关系数结果。由结果可知,原始明文图像相邻像素是高度相关的,相关系数接近于1.而加密图像的相邻像素相关系数接近于0,相邻像素已基本不相关,说明明文的统计特征已被扩散到随机的密文中。
本文提出基于双混沌映射的图像加密方法,充分利用混沌映射的性质实现图像的加密。相对于传统的单一混沌映射,密钥空间选择更广,提高了密钥流的线性复杂度,很大程度上增强了图像加密的效果。实验及测试分析证明,本方法简单易行、可靠性和安全性较好。