因常用位平面加密算法的局限性,我们结合混沌系统特性,提出了一种基于加密矩阵对的图像位平面加密算法。在该算法中,把图像按像素比特位分解成若干位平面,借助双混沌系统构造加密矩阵对与二值矩阵,利用加密矩阵对对图像位平面与二值矩阵执行置换加密,再将不同加密二值矩阵与不同加密位平面进行异或加密处理。

一、混沌映射

1、Logistic映射

Logistic映射是一类被广泛研究的非线性动力系统,其方程定义如下:x(n+1)=λx(n)(1-x(n))。

当初值x(0)∈(O,1),控制参数λ∈(3.5699....4)时,系统随着参数入微小增加不断地倍周期分岔,通向混沌状态。当Logistic映射工作处于混沌状态时,其产生的混沌信号具有极好的伪随机性、遍历性以及初值和参数敏感性。

2、遍历性

遍历性是混沌系统的一个重要特性之一。理论上,Logistic映射系统取值能遍历O、1之间所有的值,且不会发生重复,但由于受现实计算精度的影响,这种特性会有所退化。图1是系统迭代运算3000次的混沌序列运动轨迹图(虚线表示),可见取值几乎铺满整个0、1区间。

3、初值及参数敏感性

表1是Logistic映射对不同初值和参数进行迭代的情况,第二、三列表示初值x(0)不变,参数入相差10-9时的迭代结果,第三、四列表示参数入不变,初值x(0)相差10-9时的迭代结果。从中,我们可以看出,当迭代次数达到50次时,系统生成结果已差别很大。图2是混沌系统参数入=3.8且初值x(0)相差10-10时进行迭代100次的轨迹,从中,我们可以看出,两组混沌映射信号产生明显分离,取值跌荡较大。

二、图像加密算法描述

笔者输入了一幅大小为MxN的Lena.bmp灰度图像P,设像素点灰度值为p(m,n),m=1,2,...,M,n=1,2,…,N。我们对各像素按8比特位进行了分解,得到了8个位平面,像素在各位平面内对应值为O或1。像素p(m,n)在第Z位平面的值表示为:

第l位平面表示为p(m,n,l),l=1,2,…,80上述图像位平面分解是可逆的,其位平面叠加逆运算为:

基于加密矩阵对的图像位平面加密算法如图3所示:

其具体加密过程如下:

①按照公式I对图像进行位平面分解,得到位平面P(m,n,l)=1,2,…,8。

②在双Logistic混沌系统中输入初始值X1(0)、X2(0)及控制参数入1、入2,设置截取位置参数δ1、δ2,舍弃前面部分序列值后生成两个混沌实值序列{h1(i)、h2(i),i=1,2,...,M×N。X1、X2(0)、入l、
入2、δ1、δ2,保存为算法密钥。

③由混沌实值序列{h1(i)、h2(i)}获取二值随机矩阵K:若对应元素hi(i)>h2Ci),则置1,否则置O,i=1,2,...,M×N。之后,笔者将所得序列{k(i)}按行扫描成大小为M×N的二值随机矩阵K。

④混沌实值序列{h1(i)}按各个元素升序排列,[Hp1,t1]=sort (hl(1:end)形成有序序列{H1'(i)},确定混沌实值序列{H1(i)}在序列{H1'(i)}中的位置编号,得到置乱地址序列{t1(i)},i=1,2,…,M×N,同理,由混沌实值序列{H2(i)}得到置乱地址序列{t2(i)}。

⑤序列{t1(i)}按照置乱地址序列{t2(i)}重新排列,可生成新序列{t3(i)};反之,序列{t2(i)}按照置乱地址序列{t1(i)}重新排列,可生成新序列{t4(i)},序列{t3(i)}、{t4(i)}继续按此方法往后进行置乱,理论上共可产生2562s对不同序列,而本文只需选择其中四对序列用来加密t2a-1、t2a,a可取1、3、6、8。笔者将四对序列按行扫描后得到大小为M×N的加密矩阵对(T2j-1,T2j),j∈(1,2,3,4)。

⑥根据加密矩阵对T1、T2,笔者分别对二值随机矩阵K与图像位平面P(m,n,1)进行置换加密,得到加密二值矩阵K1与加密位平面P'(m,N,1),之后再将K1与P'(m,N,1)执行异或加密,得到位平面P''(m,N,1),同理,根据加密矩阵对T1、T2分别对二值随机矩阵K与图像位平面P(m,N,2)进行置换加密,得到加密二值矩阵K2与加密位平面P(m,N,2),再将K2与P'(m,N,2)执行异或加密,
得到位平面P''(m,N,2)。

⑦根据加密矩阵对(T2j-1,T2j),j=2,3,4,按照步骤7)方法,笔者依次对余下位平面P(m,n,l),l=3,4,...,8执行加密操作。最后,笔者将各位平面P''(m,N,2)(l=1,2,...,8)按公式(Ⅱ)进行组合叠加,得到密文图像。

三、实验结果与分析

笔者采用Matlab 7.11平台进行了加解密仿真实验,初始密钥x1(0)=0.8,X2(0)=0.7,入1=3.9,入2=3.8,δ1=δ2=200。

1、统计分析

(1)直方图

图4、图5分别是图像加密前后的结果,从图5中看出明文图像加密后变得杂乱无章,其直方图亦接近于均匀分布。各像素取值概率趋于均衡量有效掩盖了明文图像像素的分布特性。使攻击者通过直方图无法获取原始图像信息。

(2)相邻像素相关性

笔者对明文图像和密文图像分别随机选取了1024对相邻像素对在水平、垂直、对角方向进行了相关性分析。表2是加密前后相邻像素对相关系数的情况。

数据表明,明文图像相邻两个像素之间是高度相关的,密文图像相关性则几乎降到了0。图6是水平方向相邻像素对在灰度值区间(O,255)的分布情况。笔者由图可以直观地看到明文图像相邻像素点灰度值分布表现出连续性特征,加密后这种连续性被强制置乱,其相邻像素的灰度值随机杂乱出现,且近乎均匀地布满在整个灰度区域。

2、密钥敏感性分析

图7(a-c)是在其他密钥均不变情况下,分别各自选取初值x1(0)误差10-15、参数入2误差10-14或者迭代次数δ1误差一次时的解密图像。密文图像在密钥误差变化极其微小情况下解密后仍是杂乱无章。这表明算法对密钥具有极强的依赖性和敏感性。图8是输入正确密钥时的解密结果,可以准确无误地恢复出原始图像Q Matlab 7.11数据为双精度浮点实数,该算法初值和控制参数的密钥空间数量级可达到:

1015×1015×1014×1014=1058≈2192,相当于长度为192位的二进制数,可见密钥空间足够大,若将δ1、δ2、a也作为原始密钥,则密钥空间更为可观,足以抵御各种攻击。

3、信息熵分析

一幅图像数据位越是混乱,灰度分布越是均匀,其信息熵就越接近理想值。反之,信息熵就越低口信息熵表达式如下:

式中,p (xi)表示图像像素值xi出现的概率,N为像素比特位数。

256级灰度图像的理想信息熵为:H(X)=N=8比特。根据公式(Ⅲ)计算本算法密文图像信息熵为7,99。该值非常接近理想信息熵8。这说明算法对图像置乱充分,不确定性高,加密算法对抵抗熵攻击是安全的o;

4、抗干扰能力分析

图像在传输过程中常会受到噪声等的干扰,加密图像应具有一定的抗干扰能力。如图9所示,(a)为剪切了一半的密文图像,(b)为图9(a)的解密图像,(c)、(d)分别为密文受强度均为0.01的乘性噪声和高斯噪声干扰后的解密图像。从实验结果看,该算法具有较好的抗干扰能力。

小知识之位平面

位平面是对一幅用多个比特表示其灰度值的图象来说,其中的每个比特可看作表示了1个二值的平面,也称位面。