1. 引言
数字图像信息作为一种最直观的信息形式,在互联网的传播中发挥着非常重要的作用,数字图像的安全传递引起了越来越多的人关注 [1] 。
传统的加密技术在只能针对文本信息等数据量不大的情况,而数字图像数据呈二维分布,冗余量大,数据量复杂,传统的加密方式针对数字图像信息加解密效率一直不理想。近半个世纪以来,混沌系统的研究是非线性领域一个重要的课题 [2] ,鉴于混沌系统的特征和加密算法要求的特征有诸多的共性 [3] ,学者们开始将混沌运用到加密算法中。本文选用了较高维度的Lorenz系统,提出了一种基于Lorenz混沌系统的比特级加密方式。
2. Lorenz混沌系统
Lorenz混沌系统是一个经典的三维混沌系统,相对于其他低维系统而言,Lorenz混沌系统具有显著优势 [4] 。其动力学方程为:
(1)
其中,
为系统参数,
为状态变量,一般取
,r作为系统控制参数,在保持
不变时r > 24.47时Lorenz系统进入混沌状态 [5] 。
对Lorenz系统进行数值求解时,典型算法有两种 [6] ,一种是一阶欧拉法,另一种是四阶–五阶龙格库克(Ruuge-Kutta)法。四阶–五阶龙格库克(Ruuge-Kutta)法的计算精度远高于一阶欧拉法,但是计算时间也就相对来说比较长,而本算法对求解结果的精确值并没有太高的要求,所以我们采用了耗时较短的一阶欧拉法。
3. 加密解密算法
加密过程一般包括像素融合和像素置乱,两者紧密结合才能使加密效果更加完善 [7] 。本文采用比特级的加密方式,对比特级数值进行位置索引置乱,效果上可以达到像素融合的目的。算法如下:
Step 1,将原始彩色图像,分成三个关于R,G,B的灰度图,然后对每一个灰度图做如下处理:将图像的像素值二维矩阵由L行R列转换成L × R行一列的形式,每一行有一个十进制数,表示一个像素值。
Step 2,把三个灰度图的每一位像素值由十进制化成二进制形式,像素值在区间(0,255)上,所以每个十进制像素值由八位二进制数表示,不足八位的高位由0补齐。具体换算公式为:
(2)
其中
,
表示二进制数的第i位(第一位为最低位),
是原始像素值,
表示除以2再取整。
我们把每一位二进制数看成是一个数,换算过后由十进制数表示的L´R行一列的矩阵就变成了L´R行八列的形式。
Step 3,将L × R行八列的矩阵继续整形成
行一列的形式。
Step 4,代入初始值,用一阶欧拉法解Lorenz方程生成混沌序列,在做下式变化 [8] :
(3)
即序列每一个数乘以100,再取小数部分,舍弃前面一部分结果,避免初值造成的影响,最终得到的序列记作
,其中L × R是需要加密的图像的大小,三个灰度图对应的序列分别如上记为
。
Step 5,对混沌序列
分别进行排序,得到位置索引,根据位置索引对上述三个
行一列形式的矩阵进行置乱。
Step 6,对置乱后的三个
行一列形式的矩阵做第一步到第三步的逆操作。即先由
行一列形式整形成L × R行八列的形式;再把L × R行八列矩阵每一行的八个数看成是二进制的每一位合并成一个二进制数,将这个二进制数换算成一个十进制数,L × R行八列的矩阵变成L × R行一列;然后将L × R行一列的矩阵还原成L行R列的形式,最后将三幅图合成一副彩色图,即为最终的加密图像。
解密过程是加密过程的逆运算。
4. 数值模拟
选取彩色图像lena作为测试图像,在MATLAB2012环境下编程实现算法。密钥选择x0 = 0.11,y0 = 1.02,z0 = 0.1,r = 28,步长h = 0.01,lorenz方程迭代次数
次,舍弃前1000次迭代结果,避免初值产生的影响,得到如图1所示,其中图(a)表示原图像,(b)表示加密图像,(c)表示解密图像。从图像中我们可以看出,加密图像完全掩盖了原图像的信息,加密效果良好,解密图像与原图像基本一致,解密不失真。
5. 算法的有效性和安全性分析
5.1. 灰度直方图分析
一个好的加密系统必须要具备抗统计攻击的能力,灰度直方图是衡量图像统计性能的一个重要指标 [9] 。如图2所示,加密后的图像直方图(b)趋于平坦,像素值分布比较均匀,完全掩盖了原图像素值的统计特征,可以一定程度上抵抗统计攻击。
5.2. 相邻像素相关性分析
相邻像素相关性强是数字图像的重要统计特征之一,加密系统应该具有破坏相邻像素相关性强的能力。


(a) 原图像 (b) 加密图像 (c) 解密图像
Figure 1. Encryption decrypted image
图1. 加密解密图像
(a) 加密前 (b) 加密后
Figure 2. The gray value histogram of the images encrypted before and after
图2. 加密前后图像灰度值直方图
在测试图像中,随机选取1000对相邻的像素点对,记为
,其中
分别代表第 对像素的两个像素值。按如下定义的相关系数,计算这1000对像素灰度值之间的线性相关系数。
(3)
(4)
式中,x,y表示两个相邻的像素灰度值。在实际测试中用如下离散化的计算公式 [10] :
(5)
(6)
(7)
以相邻两像素灰度值为x,y坐标,得到加密前后相邻两点的相关性分析结果如图3 (水平方向)、图4 (垂直方向)、图5 (对角方向)所示。可以看出,加密前的图像像素之间具有较强的相关性,经过加密过后,这种相关性已经基本被破坏了。
5.3. 密钥空间分析
密钥主要是由Lorenz混沌系统三个分量的初始值x0、y0、z0和计算步长h组成。由Lorenz映射的特点可知,
保持不变,r > 24.47时,系统进入混沌状态。密钥的四个参量均按照浮点数的最高精度10−16计算,忽略参数的整数部分区分度,密钥的取值种类可达(1015)4,相当于二进制密钥的60位,可见密钥空间相当大,足以抵抗穷举攻击 [11] 。
5.4. 密钥雪崩效应分析
密钥的雪崩效应是指加密算法对密钥变化的敏感性,即密钥的任意参数发生微小变化,都将导致解密错误。我们分布改变x0、y0、z0和h的值,观察解密图像,考察算法对密钥的敏感度。
当参数x0、y0、z0、步长h分别改变10−15的情况下,解密图像为图6、图7、图8、图9所示,均不能正确解密,可见算法对密钥非常敏感。
(a) 加密前 (b) 加密后
Figure 3. The correlation analysis between adjacent pixels of plaintext and ciphertext (The horizontal direction)
图3. 明文图像和密文图像相邻两点的相关性分析结果(水平方向)
(a) 加密前 (b) 加密后
Figure 4. The correlation analysis between adjacent pixels of plaintext and ciphertext (The vertical direction)
图4. 明文图像和密文图像相邻两点的相关性分析结果(垂直方向)
(a) 加密前 (b) 加密后
Figure 5. The correlation analysis between adjacent pixels of plaintext and ciphertext (The diagonal direction)
图5. 明文图像和密文图像相邻两点的相关性分析结果(对角方向)

Figure 6. Ciphertext sensitivity to keyx
图6. 密文对密钥x0的敏感度

Figure 7. Ciphertext sensitivity to keyx
图7. 密文对密钥y0的敏感度

Figure 8. Ciphertext sensitivity to keyx
图8. 密文对密钥z0的敏感度

Figure 9. Ciphertext sensitivity to keyx
图9. 密文对密钥h的敏感度
正确密钥K = (0.11,1.02,0.1,0.1)
错误密钥K1 = (0.11 + 10−15,1.02,0.1,0.01),如图6所示,考察算法对密钥x0的敏感度
错误密钥K2 = (0.11,1.02 + 10−15,0.1,0.01),如图6所示,考察算法对密钥y0的敏感度
错误密钥K3 = (0.11,1.02,0.1 + 10−15,0.01),如图6所示,考察算法对密钥z0的敏感度
错误密钥K4 = (0.11,1.02,0.1,0.01 + 10−15),如图6所示,考察算法对密钥h的敏感度
6. 总结
本文提出了一种基于Lorenz混沌系统的比特级彩色数字图像加密算法,对彩色数字图像的三个分量R、G、B,分别用Lorenz混沌系统生产的三个状态分量x、y、z序列进行加密。将每一位十进制的像素值换算成八位二进制数,用混沌序列的升序排列位置索引对二进制数进行置乱,可以达到像素融合的效果。数值模拟结果表明该算法加密效果良好,不能从加密图像中提取任何原图像的有效信息,解密图像与原图像基本一致,无失真。算法的有效性和安全性分析表明,加密图像破坏了相邻像素的强相关性,均衡了原图像像素值的分布,有较强的抗统计攻击能力。密钥空间足够大,密钥对明文有明显的雪崩效应,微小的密钥差距也难以还原原图像,足以抵抗穷举攻击。