张雪锋, 陈尧尧, 翟羽佳
(西安邮电大学 通信与信息工程学院, 陕西 西安 710121)
随着互联网和数字多媒体技术的飞速发展,基于视频、图像等多媒体数据的应用日益普及。许多数字图像包含个人隐私、机密信息等敏感信息,使得对数字图像加密成为一个研究热点[1-2]。由于混沌系统具有良好的遍历性、随机性、非周期性以及对系统参数和初值敏感性等密码学特征[3],因此被应用于图像加密算法中[4],如基于混沌系统的像素位置置乱[5]方法。由于该方法只能改变像素的位置不能改变像素值,致使加密效果有限。近年来研究者提出了基于混沌系统的位平面图像加密算法[6-7],不仅能置换像素位置,也能改变像素的灰度值,改善了算法性能。在基于混沌的图像加密算法中,对混沌系统的选择直接影响图像加密效果。多维混沌系统结构复杂,硬件实现和计算的难度较大。而一维混沌系统虽然结构简单、容易实现且计算复杂度低,但其参数取值范围较小且生成的伪随机序列分布不均匀[8-9]。
为了兼顾算法的简单性和加密性能,本文拟提出一种基于一维混沌映射和比特块置乱的彩色图像加密算法。使用Logistic映射生成的伪随机序列置乱彩色图像像素的位置,将图像的每个像素值转换成二进制数,得到24个位平面,将每个位平面分成8×8的比特块,再用伪随机序列进行置乱,对结果图像进行扩散操作,实现图像加密。
Logistic混沌映射因其结构简单、容易实现,被广泛应用于加密领域。第n+1次Logistic混沌映射生成的伪随机值[4]可以表示为
xn+1=u×xn×(1-xn)。
(1)
其中,控制参数u∈(0,4];初始值x0∈(0,1);第n次生成的伪随机值xn∈[0,1],且遍历区间[0,1]内的所有值。当取3.569 945 6…1.2 一维混沌映射
文[10]给出一种一维混沌映射,其第n+1次生成的伪随机值为
(2)
其中,控制参数a∈[3,8],混沌映射的初始值y0∈[0,1],yn遍历区间[0,1]内的所有值。该混沌系统容易实现、结构简单,本文利用其生成的伪随机序列来置乱比特块加密。
一个非负整数d可以用q位二进制数表示为
(3)
一幅像素级为256灰度图像的每个像素值可由8位二进制数表示,因此一幅灰度图像可分解成8个位平面,第i(i=1,2,…,8)个位平面包含所有像素的第i个比特值,并且高位平面包含灰度图像的有用信息比低位平面多[11]。
Lena明文图像和Lena明文图像R(red)分量如图1所示。
图1 Lena图像
一幅数字灰度图像可以用一个二维整数矩阵来表示,因此一幅像素级为256级的灰度图像可分成8个位平面,每个位平面可以分成一组比特块,以实现图像加密。反之,将比特块组合成一个位平面,就能够恢复出原始灰度图像[11]。
设一幅彩色图像的大小为M×N,令
mod(M,8)=0, mod(N,8)=0,
以灰度图像R的第7位平面为例,其被分成 的比特块后的结果如图2所示。
图2 第7位平面比特块划分结果
对位平面进行比特块划分后,就可以采用分块算法嵌入隐秘信息,在尽可能少地修改图像原始比特位的前提下,有效地保持图像纹理的渐变规律。
使用Logistic映射生成的伪随机序列置乱彩色图像的像素位置,将图像的每个像素值转换成二进制数,得到24个位平面,将每个位平面分成8×8的比特块,再利用伪随机序列对比特块进行置乱得到置乱图像,对置乱后的图像进行扩散操作,完成图像加密。
本文彩色图像加密算法采用对称密钥结构,即加密过程和解密过程采用相同的密钥。加密算法密钥为x0,y0,u,a。
加密算法的基本步骤如下。
步骤1构造混沌序列。
将彩色图像I分成三幅大小均为M×N的灰度图像R、G和B,并分别转换成M×N阶的行矩阵,按行拼接得到1×3MN阶的矩阵P。
(4)
其中
选取混沌系统式(1)的控制参数u和a分别为
(5)
步骤2生成伪随机序列,置乱图像。
给定Logistic映射初始值x0和控制参数u,根据式(1)进行3MN次迭代计算,生成伪随机序列X1={x1,x2,…,x3MN}并升序排序,得到整数型伪随机序列T1={tX,1,tX,2,…,tX,3MN}。生成伪随机序列的过程如图3所示。
图3 生成伪随机序列的过程
根据整数型伪随机序列T1对矩阵P进行置乱操作,得到1×3MN阶矩阵Q。将矩阵Q分成3个长度均为1×MN的阶矩阵R1、G1和B1。将R1中的像素值转换成8×MN阶的二进制数矩阵,按行分成8个1×MN阶矩阵,将每个矩阵分割成8×8的比特块,8个矩阵共得到8mxmy个比特块,组成比特块集合
R2={R2,1,R2,2,…,R2,8mxmy}。
对G1和B1进行相同操作,得到比特块集合
G2={G2,1,G2,2,…,G2,8mxmy},B2={B2,1,B2,2,…,B2,8mxmy}。
按行拼接R2、G2和B2共得到24mxmy个比特块,组成比特块集合
K1={K1,1,K1,2,…,K1,24mxmy} 。
给定一维映射初始值y0和控制参数a,根据式(2)进行24mxmy次迭代计算,生成伪随机序列Y1={y1,y2,…,y3MN,经过升序排序,得到整数型伪随机序列T2={tY,1,tY,2,…,tY,3MN}。使用整数型伪随机序列T2对K1进行置乱操作,得到比特块集合
D={D1,D2,…,D24mxmy}。
步骤3置乱扩散,得到密文图像。
将D分为3个集合
D1={D1,D2,…,D8mxmy},D2={D8mxmy+1,D8mxmy+2,…,D16mxmy},D3={D16mxmy+1,D16mxmy+2,…,D24mxmy}。
将D1中的每个元素分成8个1×mxmy阶的行矩阵,每个行矩阵转换成mx×my阶矩阵。将每个矩阵扩展成M×N的二进制数矩阵,并转换成为M×N阶行矩阵,8个行矩阵按列拼接得到8×MN阶矩阵R3。对D2和D3进行相同操作,得到矩阵G3和B3。按列拼接R3、G3和B3,并转换成1×3MN阶的十进制置乱矩阵K2。
令fi=mod(X1(i)×1015,256),(i=1,2,…,3MN)求出扩散矩阵f=[f1,f2,…,f3MN]。根据扩散矩阵f和置乱矩阵K2得到加密图像的像素矩阵
C=[C1,C2,…,C3MN],
其中Ci=mod(fi+K2,i,256)⊕Ci+1,K2,i为K2中的第i个元素。将C按行分成3个矩阵
C1=[C1,C2,…,CMN],C2=[CMN+1,CMN+2,…,C2MN],C3=[C2MN+1,C2MN+2,…,C3MN]。
将C1、C2和C3分别转换为代表图像红、绿、蓝三个分量的M×N矩阵
综合3个分量矩阵,最终得到彩色密文图像CI。
给出的图像加密算法是一个对称密钥加密算法,即加密过程和解密过程采用相同的密钥,解密过程是加密过程的逆过程。将彩色密文图像CI分成CR、CG和CB三个分量,分别转换为1×MN阶的行矩阵,并拼接成1×3MN阶矩阵C,求出十进制置乱矩阵K2,按照与加密过程相反步骤即可恢复原始图像。
分别选取分辨率均为512×512的Lena和pepper图像进行实验。Lena图像的密钥
x0=0.121 6,y0=0.952 9,u=3.993 5,a=7.743 7;
pepper图像的密钥
x0=0.466 7,y0=0.156 9,u=3.992 1,a=7.748 6。
加密和解密结果如图4所示。从视觉效果上看,所提出图像加密算法的明文图像与密文图像没有关联,解密图像与明文图像高度一致,说明本文算法的加密和解密效果较好。
图4 Lena和pepper 加解密结果
密钥空间是指用于加密系统的全部密钥数。有效的图像加密算法应具有足够大的密钥空间,以抵抗暴力攻击[12]。安全的密钥空间一般为2100[13]。所提算法的密钥包含混沌系统的初始值x0,y0和控制参数u,a。由于计算机的有效精度为10-16,因此本文算法密钥空间为(1016)4=1064,比安全的密钥空间2100大,说明所提算法具有足够大的密钥空间,可以抵抗暴力攻击。
差分攻击是指攻击者对明文图像改变前和改变后的两幅图像加密,通过对比两幅加密图像,找出明文图像和密文图像之间的关联,来攻击密码算法的一种方法[14]。有效的加密算法在改变明文图像的同时,也对密文产生影响。一般使用像素值改变率(number of pixels change rate, NPCR)和归一化像素值平均改变强度(unified average changing intensity, UACI)检测抗差分攻击的性能[12]。
随机选择Lena明文图像R分量的一个像素值I(100,100)=173进行实验。为检测抗差分攻击的性能,将这个像素值改为100。像素值改变后Lena密文图像的NPCR和UACI值如表1所示。可以看出,对明文图像微小改变会导致密文图像的全部改变,表明本文算法可以抵抗差分攻击。
表1 像素值改变后Lena密文图像的NPCR和UACI值
用原始密钥和改变后的密钥加密Lena图像分析密钥的敏感性。分别将原始密钥x0从0.121 6改变为0.121 600 000 001,y0从0.952 9改变为0.952 900 000 001,u从3.993 5改变为3.993 500 000 001,a从7.743 7改变为7.743 700 000 001,计算密钥改变前后密文图像的相邻像素相关性。相邻像素相关性越小,表明加密算法的安全性越强,可以更加有效地抵抗统计攻击。密钥改变前后加密图像相应位置的像素相关性如表2-表5所示。可以看出,密钥改变前后密文图像相应位置的像素相关性接近0,说明加密密钥的微小改变会导致密文图像完全不同,表明本文算法具有较高的密钥敏感性。
表2 x0改变前、后加密图像各分量之间的像素相关性
表3 y0改变前、后加密图像各分量之间的像素相关性
表4 u改变前、后加密图像各分量之间的像素相关性
表5 a改变前、后加密图像各分量之间的像素相关性
使用原始密钥得到的解密图像和使用修改密钥得到的解密图像如图5所示。可以看出,二个解密图像之间完全无关。二个解密图像相应位置像素相关性如表6-表9所示,可以看出,二个解密图像相应位置像素相关性接近0,说明即使解密密钥的微小改变,也不能得到正确明文图像。因此,本文算法具有较好的密钥敏感性,可以抵抗统计攻击。
图5 Lena解密密钥敏感性
密钥改变前的各分量密钥改变后的各分量RGBR0.004 00.003 70.003 9G0.003 80.003 70.003 8B0.003 80.004 00.003 9
表7 y0改变前、后加密图像各分量之间的像素相关性
表8 u改变前、后加密图像各分量之间的像素相关性
表9 a改变前、后加密图像各分量之间的像素相关性
在图像传输过程中,噪声对解密图像的质量有一定影响,一般用噪声攻击和抗剪切变换攻击来检测算法的鲁棒性[15]。对密文图像分别添加强度为1%、5%和10%的椒盐噪声,受椒盐噪声攻击的Lena解密图像如图6所示。可以看出,图像的噪声是随机分布在解密图像中。随着噪声强度的增加,对解密图像的影响也相应增加,但解密图像中仍包含明文图像的信息。说明本文算法可以抵抗一定程度的噪声攻击。
图6 椒盐噪声攻击后的Lena解密图像
对密文图像的中心部位进行不同面积的剪切,测试算法的抗剪切变换攻击性能。分别以1/16、1/8和1/4的比例剪切Lena的密文图像,得到相应的解密图像如图7所示。可以看出,虽然解密图像的质量随着剪切块大小的增加而降低,但是密文图像局部信息丢失不会导致解密图像相应部分信息的丢失,说明本文算法具有较好的鲁棒性,可以抵抗一定程度的噪声攻击和剪切变换攻击。
图7 Lena剪切攻击后的Lena解密图像
直方图描述图像像素值的分布情况,理想密文图像的直方图呈均匀分布[16]。Lena明文图像、文献[8]算法、本文算法密文图像的R、G和B分量直方图分别如图8-图10所示。可以看出,本文算法密文图像的直方图均衡度较好,而明文图像的直方图和文献[8]密文图像的直方图均衡度较差,说明本文算法可以抵抗统计攻击。
图8 Lena明文直方图
图9 文献[8]算法的Lena密文直方图
图10 本文算法的Lena密文直方图
相邻像素的强相关性是衡量图像加密的一个重要指标。相邻像素相关性越小,加密算法的安全性越强,可以更加有效地抵抗统计攻击[17]。分别从明文图像和文献[8]、文献[11]、本文算法密文图像的水平、垂直和对角线三个方向随机选取5 000对相邻像素并分析其相关性。Lena明文图像和密文图像相邻像素间的相关系数如表10-表12所示。可以看出,明文图像相邻像素间的相关系数接近1,而密文图像相邻像素间的相关系数接近0,说明用统计的方法难以得到正确的明文图像,本文算法可以抵抗统计攻击。
表10 水平方向两个相邻像素的相关系数
表11 垂直方向两个相邻像素的相关系数
表12 对角线方向两个相邻像素的相关系数
信息熵反映了数字图像的像素灰度级分布的均匀程度。像素灰度级分布越均匀,信息熵越大,加密效果越好[18]。一幅256级灰度图像的理想信息熵为8[13],加密图像的信息熵值越接近于8,说明图像加密算法的结果越好。Lena明文图像的信息熵和文献[8]、文献[11]、本文算法相应密文图像的信息熵如表13所示。可以看出,本文算法的密文图像的三个分量信息熵均趋于8,好于文献[8]的结果,说明本文算法可以抵抗统计攻击。
表13 Lena明文图像和不同算法密文图像的信息熵
提出了一种基于一维混沌映射和比特块置乱的彩色图像加密算法。使用Logistic映射生成的伪随机序列置乱原始彩色图像,将置乱的结果分解成24个位平面,依次将每个位平面划分为8×8特块并置乱,对置乱图像进行扩散操作,实现图像的加密。对密钥空间、明文敏感性、密钥敏感性、鲁棒性、直方图、相邻像素相关性和信息熵仿真分析,结果表明,本文算法具有较好的加密效果,并且可以抵抗一定程度的暴力攻击、噪声攻击、剪切变换攻击、差分攻击和统计攻击,具有一定的安全性。