为了实现对彩色图像的有效保护,我们提出了一种基于多混沌系统和图像认证功能的彩色图像加密算法。该加密算法通过对彩色图像RGB分量的运算生成128位Hash值,并把该Hash值作为部分图像加密的密钥。然后通过Logistic混沌系统、统一混沌系统和Hash值对彩色图像进行像素置乱和替代操作以实现图像文件加密。
一、混沌系统
混沌现象是非线性动力系统中出现的确定性的、类似随机的过程,这种过程既非周期,又不收敛,并且对初始值有及其敏感的依赖性,本论文中用到的两种混沌动力学模型如下:
1、Logistic系统
Logistic系统是一个源于人口统计的动力学系统,也是目前广泛研究的混沌系统。
式(1)中,μ∈(O,4),xk∈(O,1)。当3.5699456
2、统一混沌系统
统一混沌系统于2002年提出,该系统将Lorenz系统和Chen系统连接起来,而Liu系统仅为其一个特例。
式(2)中:系统参数α∈[O,1],在此范围内系统具有全域性混沌特性。当α∈[O,0.8]时,系统属于广义Lorenz系统;当α=0.8时,系统属于广义Liu系统;当α∈[0.8,1]时,系统属于广义Chen's系统。在本方案中,使用统一混沌系统的x、y和z序列分别对三基色图像像素进行逐点替代加密。主要利用混沌序列产生的实值混沌序列值的小数点后7,8和9这3位数字组成正整数与256取模运算后将得到的整数,然后将整数作为该像素点的加密密钥与像素值进行与运算。
二、图像文件加密方案
1、Hash序列生成阶段
由混沌系统生成的Hash序列主要作为部分密钥参数,并可以根据这些参数对图像进行身份验证。Hash序列生成过程为:首先,对需要加密的彩色图像的R,G,B分量值利用公式(3)进行预处理,生成与图像大小相同的二维矩阵。然后,随机选择四个在O和1之间的初始值x0,x1,x2和X3。最后,生成一个128位的Hash值。
式(3)中:C为处理后的矩阵,用于Hash序列的生成。R(i,j),G(i,j),B(i,j)分别为彩色图像的R,G,B分量在(i,j)的像素值。
2、像素置乱和像素值替代算法
在加密方案中,主要的加密过程是行之间的像素置乱和每行像素的替代过程及列之间的像素置乱和每列像素的替代过程。那么,行之间的像素置乱和每行像素的替代过程为[假设对一个大小为M×N的彩色图像(A)进行加密]:首先,根据给定的Logistic系统产生与图像行大小相同的数组,并根据数值大小生成从1开始的正整数的序列M1并与图像行号组成的有序数列M一一对应;然后,将所产生的混沌序列M1的M个值由小到大按次序排列为正整数的有序序列M',由于M'与M中的元素一一对应,则M被置换成M'。最后,依次取图像的M1'(i)(i=1,2,…,M)行的像素值再经过像素替代后放入与之对应竹元素所在的行中(该行为另一个与图像同样大小的图像矩阵B)。
所选取行的像素替代过程为:首先,根据前文 所讲方法,利用统一混沌系统生成的3个为N大小的自然数数组X1,Y1,Z1分别与所选取行AM1'×N的R,G,B像素值进行与运算生成新数组Z1,Y1,Z1;然后,将所生成的Hash序列值与RGB值交换生成新的A1M1'×N(A1M1'×N即为行AM1'×N经过像素替代的新像素值)。Hash序列值与RGB值交换关系如表1。如4(i,j)的序列为{H(i+j-1)mod 128]到H(i+j+2)mod 128]的值为010},根据表1可得A(i ,j)新RGB值把分量R和G的值互相交换,而分量B中的像素值不改变。
以上即为行之间的像素置乱和每行像素的替代过程,列之间的像素置乱和每列像素的替代过程同理可得。采用这种像素置乱和像素值替代结合的方法,不仅可以把像素置乱和像素值替代同时完成,还能提高加密图像的速度和安全性。
三、图像文件的加密和解密过程
1、图像文件加密过程
加密步骤描述如下:
Step 1:输入彩色图像A;
Step 2:输入密钥x0,X1,X2和X3后产生128位Hash值;
Step 3:根据步骤2所生成的Hash值生成sw(sw←Bin2Dec{mod[(h1+h128),1]}决定行、列交换次序。如果sw为1,则先进行列交换,执行步骤4。否则先进行行交换,执行步骤5;
Step 4:对图像像素进行列交换和像素值的修改。然后,判断是否已经完成二次像素置乱和像素值替代,若已完成,执行6,否则执行5;
Step 5:对图像像素进行行交换和像素值的修改。然后,判断是否已经完成二次像素置乱和像素值替代,若已完成,执行6,否则执行4;
Step 6:输出彩色图像B。合成置乱后的三基色图,即得到加密后的图像。
2、图像文件解密过程
用户输入正确的密钥后,将加密算法逆向运算,即可获得解密图像。
四、模拟实验及性能分析
本文的实验平台为MatlabR2011b,选取512 x512的Lena彩色图像进行实验。取密钥x0=0.4325111123;x1=0.4578324123;X2=0.1345618234和X3=0.3245653323经过计算可得Hash值为“3 e66f5383fOOc6533ebbbbb53f668bbf"。取Logistic系统的在行和列的像素置乱中,密钥μ值分别是3.95和3.98,而初值也分别为μ1←0.(blb2…b32)和μ2←0.(b33b34---b64)。在统一混沌系统在行像素替代中,密钥α=0.5621,x,y,z的初值分别为x1'←0.(b65 b66…b96),y1'←0.(b97 b98…b128),z1'←0.( b17b18…b48);在列像素替代中α=0.845 6,x,y,z的初值分别为x2'←o.(b15b16…b46),y2'←0.( b47b48…b78),z2'0.(b79b80…b110),经过10次迭代,其加密、解密。
可见,密钥的微小改变也会导致解密的失败,该算法对密钥非常敏感。
1、密钥空间分析
加密系统的密钥可以这样描述:key=(M,N),其中M=M1M2…M128是一个128位的长密钥组。N=N1N2…Nh代表程序中各输入密钥,如Hash输入初值,Logistic系统和统一混沌系统的参数μ,α值等。这样该算法系统的密钥空间为2128×8(N为8个)。一个拥有如此巨大密钥空间的加密系统可以有效防止暴力破译。为了进一步加强密钥空间,密钥还可以扩展,如可输入部分系统的初值等。
2、灰度直方图
根据显示,加密前后的直方图区别很大,加密后直方图分布均匀,表明该方案能够有效抵御基于像素值统计的攻击。
3、相邻像素的相关性
可以借助概率论的相关系数来衡量相邻像素的相关性,相关系数定义为:
为计算相关性,分别随机地从原图和密图的水平,垂直和对角线分别随机取1500个相邻像素对,图3显示的是原图和加密后图像在R分量的水平相关分布图。同时,对彩色图像的B层和G层做了相同的测试,结果均与图3相似。所有相关数如表2。
图3显示了图像加密前后图像R分量在水平方向的相关性显示结果,可看出明文相邻像素的相关性很强,密文有效地掩盖了图像的突击特征。同时,表2还显示了加密前后各分量在垂直、水平和对角线方向的相关性计算结果,表明了加密后的图像像素之间的相关性大大降低了。
小知识之Hash值
Hash算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为Hash值。Hash值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的Hash都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上来说基本上是不可能的。