交叉混沌序列在数字图像加密中的应用研究
2019-01-07张永红
张 永 红
(渭南师范学院 数理学院,陕西 渭南 714099)
近年来,因为混沌映射良好的特性,如初值敏感性、遍历性、短期可预测性和长期不可预测性等,所以被广泛应用于数字图像加密中,如著名的混沌映射:Logistic映射、Chebyshev映射、Arnold映射等。然而低维混沌加密方案已有很多攻击方法可以将其破解[1]。因此很多学者开始研究基于混合混沌映射[2-4]、超混沌映射[5-7]和交叉混沌映射[8-16]的加密算法。Wang Ling等给出了一种基于交叉混沌序列的图像加密算法,通过Logistic映射和Chebyshev映射生成交叉混沌序列,分别对数字图像进行融合和扩散,进而实现数字图像加密。[1]Huang Xiaoling等在Wang Ling研究的基础上给出了一种基于改进的交叉混沌序列的图像加密算法,通过Logistic混沌映射和Chebyshev混沌映射生成三组混沌序列分别对数字图像进行融合和扩散,进而实现数字图像的加密。[8]Tong XiaoJun等也给出了利用Logistic映射和Chebyshev映射生成交叉混沌序列,并对图像进行加密。[9]H H Saleh等给出了一种基于分块混沌加密算法,首先利用二维Logistic映射设计出S盒,然后利用标准映射进行置乱,利用S盒进行扩散,基于块异或得到最终的加密图像。[10]W San-Um等首先研究了与三角函数相关的混沌映射,然后利用非线性绝对三角函数映射生成哈希函数,最终实现对图像加密。[11]Zhang Miao等通过Devaney定义设计出多项式函数,并与迭代正弦映射结合生成交叉混沌映射,然后分别对JPEG图像、GIF图像、PNG图像和TIFF图像进行加密。[5,17]
本文给出了一种基于Logistic映射和迭代余弦映射生成交叉混沌序列,并将该混沌映射应用于数字图像加密中。该算法首先通过给定的初始值生成交叉混沌序列,对该混沌序列进行处理生成混沌地址集合,利用该混沌地址集合分别对原图像进行行置换和列置换,得到置乱图像;其次,另外给定初值生成新的混沌序列,并利用该混沌序列对置乱图像进行扩散操作,从而得到了最终的加密图像。该算法的优点是扩散运算和置乱运算均采用交叉混沌序列进行操作。数值实验表明,该算法加密与恢复效果良好,并且具有较高的安全性。
1 算法原理
1.1 置乱处理
给定一副分辨率为M×N的灰度图像OI,其中OI(i,j)表示(i,j)处的像素灰度值,0≤OI(i,j)≤255,i=1,2,…,M;j=1,2,…,N。
1.1.1 生成交叉混沌序列
采用式(1)生成交叉混沌序列
(1)
其中:3.569 946 …≤μ≤4;xn,yn∈[0,1],n=1,2,…。图1(a)、图1(b)分别给出了交叉混沌序列{xn}{yn}的分布图,由图1可以看出式(1)生成的交叉混沌序列具有较好的伪随机性。
(a)
(b)
1.1.2 置乱处理
给定初始值x0、y0,控制参数μ,通过式(1)可以生成交叉混沌序列C={x0,y0,x1,y1,x2,y2,…},xi,yi∈[0,1],i∈N,选择奇数列X0={x0,x1,x2,…},偶数列Y0={y0,y1,y2,…},给定初始位置参数r、s,分别从X0、Y0中第r、s项起选择M×N个数构成新的混沌序列
X1={xr+1,xr+2,…,xr+M×N},Y1={yr+1,yr+2,…,yr+M×N},
分别把X1、Y1转换成M×N的二维矩阵
通过式(2)利用X对原图像OI进行行置乱处理:
OIxij,j↔OIi,j。
(2)
通过式(3)利用Y对原图像OI进行列置乱处理:
OIi,yij↔OIi,j。
(3)
从而可以得到置乱图像CI。
1.2 扩散处理
通过式(4),把X3、Y3转换到0~255之间:
(4)
其中:i=p+1,p+2,…,p+M×N;j=q+1,q+2,…,q+M×N,round表示取整,l=14,给定融合参数τ1,τ2∈Z,通过式(5)可以实现对图像的扩散处理。
eii=(τ1ui+τ2vi+cii+eii-1)mod 256。
(5)
这里i=1,2,…,M×N。eii-1、eii分别表示最终的加密图像EI的像素灰度值,cii表示置乱图像CI的像素灰度值。
1.3 加密算法
综上所述给出详细的加密算法(CCEA):
Step1:输入:原图像OI,大小为M×N,密钥控制参数λ、μ,初始值
初始位置r,s,p,q,融合参数τ1,τ2;
Step2:利用式(2)和式(3)对原始图像OI进行置乱处理得到置乱图像CI;
Step3:利用式(5)对置乱图像CI进行扩散处理得到最终的加密图像EI。
解密算法是加密算法的逆过程。
加密算法流程图如图2所示。
图2加密算法流程图
2 数值试验
图3 对lena图应用加密解密算法(256×256)
从图3(b)可以看出CCEA算法具有较好的加密效果。
3 安全性分析
3.1 密钥空间和初值敏感性分析
另外,密钥是任何密码系统中最重要的构建元素,一个理想的加密系统应该是对密钥敏感的[2],即对密钥中的某一个密钥发生微小的变化不能正确地恢复出原图像。如图4所示,给出Lena图像在正确密钥和错误密钥的数值试验,其中图4(a)表示正确密钥的解密图像,密钥为:
p=q=100;图4(b)x0=0.100 000 000 1,其他密钥不变;图4(c)y0=0.100 000 000 1,其他密钥不变;图4(d)λ=3.999 999 999 9,其他密钥不变。
图4 密钥敏感性分析
由图4可见,当对某一个密钥进行微小的改变时,便不能正确恢复出秘密图像。由此可知CCEA算法具有较好的密钥敏感性,能够满足加密的安全性要求。
图5 图像Lena的直方图
3.2 统计分析
统计分析是证明所给算法抵抗统计攻击的鲁棒性非常重要的分析技术。[2]理想的密码系统应当具备有效抵挡任何类型统计攻击的功能。这里给出了直方图分析、相关系数分析及信息熵。
3.2.1 直方图
图5(a)和(c)可以看出:原图像和正确密钥的解密图像的直方图分布不均匀;由图5(b)(d)(e)(f)可以看出,加密图像和错误密钥的解密图像的直方图分布比较均匀。
3.2.2 相关系数
为了分析所给CCEA算法的加密效果,可以利用相关系数来衡量原图像、加密图像相邻像素之间的相关性[2]。对于一幅图像,随机选取一系列像素点作为参考点,以这些点为基准分别沿水平方向、垂直方向和对角线方向取其相邻的像素点与之构成像素对,利用相关系数公式(6)来计算图像相邻像素间的相关系数值:
(6)
其中:xi、yi分别表示像素的灰度值,i=1,2,…,n,n为选出点对的个数。原图像3个方向的相邻像素之间具有很强的相关性,而加密图像各个方向相邻像素之间相关系数值很小,即弱相关性。表1分别给出了原图像、加密图像的相邻元素的相关系数。图6给出了相关性分析,针对Lena图像,图6(a)(b)分别给出原图像和加密图像在水平方向上相邻像素的相关系数;图6(c)(d) 分别给出原图像和加密图像在垂直方向上相邻像素的相关系数;图6(e)(f) 分别给出原图像和加密图像在对角方向上相邻像素的相关系数。
图6 相关系数分析
由表1可以看出,原图像在3个方向上的相邻像素之间具有较强的相关性,而加密图像各方向相邻像素之间相关性很弱,由此可以看出算法CCEA具有较好的加密、解密效果。
表1 原图像和加密图像的相邻元素的相关系数
3.2.3 信息熵
通过图像信息熵的分析,可以看出像素值分布的随机性。对于8位深度的灰度图像,信息熵计算公式为:
(7)
其中:P(si)表示图像像素灰度值为si所发生的概率,N=256。理论上,对于灰度级为256 的灰度图像而言,其极限值为8。经仿真实验,本文算法加密后的信息熵与其他几种类似算法的结果如表2所示。可见本文算法的熵值接近于8,能有效抵抗数据攻击。
表2 信息熵算法类别加密后图像信息熵 CCEA7.982 8 加密算法107.982 8 加密算法187.982 1 加密算法17.980 5 表3 NPCR和UACI算法点原灰度新灰度NPCRUACICCEA(44,127)16316499.63533.264加密算法10(44,127)16316499.62833.265加密算法18(44,127)16316499.57933.254加密算法1(44,127)16316499.57933.254
3.3 抗攻击性分析
3.3.1 差分分析
好的加密算法应当能够有效避免已知明文攻击和选择明文攻击。[19]因此,当原图像发生微小的改变时利用所给的加密算法加密之后整个加密图像能够随之发生改变就变得尤为重要。这里选用两个比较常用的评价加密后图像的像素改变程度的标准:像素变化率(Numbers of Pixels Change Rate,NPCR)和归一化平均变化强度(unified average changing intensity,UACI)[13]。其中,NPCR用来衡量两幅图像不同像素个数所占的百分比,如式(8);UACI用来计算两幅图像不同像素的平均变化强度,如式(9)。如果一个像素灰度值的改变引起密文图像的完全变化就说明该算法能够较好地抵御差分攻击。
(8)
(9)
由表3可知,改变原图像中一个像素灰度值会导致加密图像中几乎所有像素灰度值发生改变,从而验证了该算法具有很好的抗差分攻击性能。
3.3.2 裁剪攻击
为了检验CCEA算法的抗裁剪攻击性,对加密图像进行裁剪攻击如图7所示:图7 (a)表示原图像,图7(b)表示加密图像,图7(c)表示加密图像裁剪1/16,图7(d)为图7 (c)的解密图像,图7 (e)表示加密图像裁剪1/4,图7 (f)为图7(e)的解密图像。
图7 裁剪攻击
由图7可以看出,当加密图像被裁剪掉部分图像时,利用CCEA算法仍然可以恢复出部分原图像,从而可知CCEA算法具有一定的抗裁剪攻击性。
4 结语
本文利用Logistic映射和迭代余弦映射生成了交叉混沌映射,给出基于交叉混沌映射的数字图像加密算法。该算法的优点是利用多个初始密钥生成多个混沌序列,在置乱和扩散中都利用混沌序列,可大大提高密钥空间,使得加密算法具有较高的安全性。数值实验表明,该算法加密与恢复效果良好,并且具有较高的安全性。