针对彩色数字图像文件的结构特征,根据数字图像置换加密原理,利用混沌序列的随机性和对初始值的敏感性等特点,研究了基于logistic混沌序列的彩色数字图像文件加密方法。
一、加密算法描述
彩色数字图像由三基色R、G、B表示,三基色分别对应三个矩阵。因此,对彩色数字图像文件进行加密,就是对彩色数字图像的每个基色的矩阵分别进行变换。
加密算法的具体流程如下:
1、三基色分离
在对彩色图像进行加密前按照公式1)将其R、G、B分量进行分离,得到三基色矩阵IR、IG、IB。
2、密钥的生成
Logistic映射是一个一维离散时间非线性动力系统,其方程如下:
其中μ∈(O,4)为分岔参数,xn∈(0,1)是系统的状态变量,当3. 5699456≤μ≤4时,该映射呈现混沌态,μ越接近4,其随机性越好,并呈现出类似平均分布白噪声的统计特性。
用于彩色图像三基色R、G、B像素值置换的混沌序列x、y、z分别表示为:
3、像素置换
由公式3)得到3个混沌序列x、y、z,分别对彩色图像的三基色矩阵的像素值置换。
1)由公式4)把得到的3个混沌序列转化成灰度矩阵Gx、Gy、Gz。
由公式2)可知,只要选取分岔参数3. 5699456<μ<4,初值0<x0 <1,0<y0<1,0<z0<1,产生的3个混沌序列的所有值都在0和1之间,保证了灰度矩阵的值在0~ 255之间。
2)读入三基色分离后的明文图像矩阵IR IG、IB,利用灰度矩阵Gx、Gy、Gz将彩色图像的每个基色像素值通过简单地按位异或操作实现图像像素值置换过程,由公式5)得到密文CR、CG、CB。
4、三基色合并
将加密之后的R、G、B分量矩阵按照公式6)合并成彩色图像,形成最终的加密图像。
解密过程是加密过程的逆过程。首先对要解密的图像进行R、G、B分量的分离操作。使用加密过程中的所有密钥,计算得到灰度矩阵,然后得到三基色分离的原图像矩阵,最后将其合并便恢复出明文图像。
二、加密算法仿真
算法的仿真平台为matlab。选用Lena彩色图像作为待加密图像,给定混沌系统的参数μ=3. 99,初值xo=0.99、yo=0.89、z0=0.79对图像文件进行加密解密,效果如图1所示。
图2为原始图像三基色加密前后的灰度直方图,可以看出密文图像的直方图与明文图像有很大的不同,加密图像的灰度直方图比较平滑且均匀分布。
三、加密算法性能分析
1、 密钥敏感性分析
选取以下两组与上述实验不同的混沌系统参数进行实验。
1)保持初值xo、yo、z0不变,变换分岔参数μ取μ=3.990000000000001;xo=0.99,yo=0.89,zo=0. 79。
2)保持分岔参数μ不变,变换初值x0、yo 、zo取μ=3. 99;xo=0.9900000000000001、yo=0. 8900000000000001、zo=0.7900000000000001。
得到的结果分别如图3、4所示,可见在参数密钥)变换极小的情况下,解密结果与原始图像大相径庭。因此,加密算法具有对密钥极其敏感的特性。
2、密钥空间分析
为应对穷举攻击,加密方案应该具有尽可能大的密钥空间。混沌系统有1个控制参数和3个初始值。使用这4个值作为密钥,matlab中默认计算精度为10—16,所以加密系统的密钥空间为1064。
3、相邻像素相关性
相邻像素相关性是数字图像的另一个重要统计特征,它可以反映图像混乱的程度。图像的相关性分为水平、垂直和对角相关性3种情形,为了对图像的相关性进行分析,下面引用相关系数的定义式对算法的加密效果进行衡量。
其中COV(xy)=E[x-E (x)]E[y-E y]为协方差,D(x)为方差、x和y表示图像的像素值。从加密前后的图像矩阵中随机选取2000个点并按7)式对其进行统计计算,结果见表1。
小知识之三基色
大多数的颜色可以通过红、绿、蓝三色按照不同的比例合成产生。同样绝大多数单色光也可以分解成红绿蓝三种色光。