基于m序列变换和混沌映射的图像加密算法是利用m序列发生器中移位寄存器状态的遍历性进行位置置换;同时,也利用了m序列的伪随机特性能很好地实现图像位置置乱。图像替代是改变图像每个像素点的值,使替代后的图像直方图近似于由随机序列组成的图像的直方图。这种方法可以有效地紊乱图像,使经替代处理后图像的相关性进一步降低,从而更好地保护图像数据。

一、Logistic混沌映射

Logistic混沌映射是一个源于人口统计的动力学系统,其系统方程为:

基于m序列变换和混沌映射的图像加密算法

其中Xk为映射变量,μ为系统参量,它们的取值范围分别为:-1<Xk<1,0<μ≤2。Logistic映射是一个非常简单,却又具有重要意义的非线性迭代方程,当1.401155≤μ≤2时,系统处于混沌状态,此时系统对初始值xo和参数μ具有敏感依赖性,可用来提供数量众多,非相关,类随机而又确定的可再生信号,便于图像文件加密和解密使用。

二、m序列变换

1、m序列原理

伪随机序列可以通过一个佗级线性反馈移位寄存器得到,如图1所示。

基于m序列变换和混沌映射的图像加密算法

其中an-1,an-2,a1,ao为寄存器的状态,反馈线的连接状态用ci表示,ci=1表示反馈线接通(参与反馈),ci=o表示反馈线断开,但是cn=c0=1。寄存器的每一级输出经反馈相加后作为最高位的输入an。n级线性反馈移位寄存器可能产生的最长周期为2n-1,称这种最长的序列为m序列。线性反馈移位寄存器能产生m序列的充要条件是反馈移位寄存器的特征多项式为本原多项式。

2、m序列变换

根据m序列的理论,本文设计了一种基于m序列的图像位置置乱方法,即称之为m序列变换,其变换原理如下:

设数字图像为f(x,y),x=0,1,…,m-1,y=0,1,…,n-1,若m和n满足2kx-1<m< 2kx和2ky-1<n< 2ky,取一个k=kx+ky级线性反馈移存器的本原多项式,f(x)作为其特征方程,且移位寄存器的初始状态为非零状态。则数字图像,f(x,y)的水平坐标xr和垂直坐标yr可分别用前kx个和后ky个移位寄存器的状态来表示,其对应关系如式(2):

基于m序列变换和混沌映射的图像加密算法

其中r表示m序列由第0时刻开始的移位次数,T∈{o,1,2,…,2k -2}。而akx +ky—i,r和aky一j,r表示前kx个和后ky个移位寄存器在r时刻的状态。根据m序列原理可知Xr∈{o,
1,…,2kx-1)和yr={o,1,…,2ky-1),但xr和yr不能同时为零。在图像位置置乱中,xr和yr可作为原图像经过m序列变换后的水平和垂直坐标。显然,m序列在移位时得到的xr,
和yr有些超出了图像的尺寸界限,在m序列变换中对这些点要作舍弃处理。

设f'(x',y')表示f(x,y)经m序列变换后图像,其中x'=0,1,2,...M -1; y'=0,1,2,…N-1,则m序列变换算法描述如下:

(1)设f(x,y)的第1个像素点(o,o)映射到,f'(x',y')的除(o,o)外的任意一点(x0',y0'),x0'和y0'分别对应前kx个和后ky个移位寄存器的状态,其对应关系参照式(2)。

(2)m序列移位一次,并由移位寄存器状态用式(2)计算x1和y1,检查x1和y1是否满足式(3):

基于m序列变换和混沌映射的图像加密算法

若不满足,m序列继续移位,并由移位寄存器状态用式(2)计算x2和y2,检查x2和y2是否满足式(3),直到寻找到满足式(3)的xr和yr为止,并把此时的xr和yr记为x1'和y1',将f(x,y)的第2个像素点(0,1)映射到f''(x',y')的点(X1',y1')。

(3)m序列继续移位,按照步骤(2)方法对f(x,y)其它像素点映射到f'(x',y')中,m序列经过一个周期后,正好将f(x,y)除(M-1,N-1)点外的其它所有像素点都映射到f'(x',y')的对应点,最后将,f(x,y)的(M-1,N-1)点映射到f'(x',y')的(0,0)点。

上述过程实现了图像的m序列变换。当f(x)为本原多项式时,k=kx+ky级线性反馈移位寄存器的周期为2kx+ky一1,舍弃不同时满足0≤xr≤M -1和0≤yr≤N-1的映射点,再把移位寄存器的全零状态补上,上述m序列变换显然是一一映射,用它可实现图像的位置置乱。其图像置乱的结果取决于任意选定的x0'和y0',因此x0'和y0'可作为图像加解密的密钥。其中x0'和y0'的密钥空间分别是x0'∈{o,1,…,M-1)和y0'={o,1,…,N-1),但是x0'和y0'不能同时为零。所以,x0'和y0'总的密钥空间大小为M×N-1。

m序列变换对图像位置置乱非常有效,它具有映射的随机性,且取决于x0'和y0'。采用m序列变换对尺寸大小为207×250灰度图像进行位置置乱加密处理的实验结果如图2所示,在本文实验中取x0'=1o和y0'=21。

基于m序列变换和混沌映射的图像加密算法

很遗憾,在仅用m序列变换进行图像位置置乱的图像加密中,如果公布图像位置置乱的加密算法,此时x0'和y0'失去密钥作用。图3是x0'和y0'取不同值得到的解密图,尽管与原图像不尽相同,但经过简单的裁剪和拼接,就可恢复出原图像。因此,这类算法是不能公开的,其秘密不是完全寓于密钥,这不符合现代密码体制的规范。这是m序列变换的一个缺点。

基于m序列变换和混沌映射的图像加密算法
为了使得m序列变换适用于现代密码体制,本文设计了一种基于m序列变换与Logistic混沌映射相结合的图像加密算法,该算法能很好地避免上述问题,其加解密算法步骤如下。

三、基于m序列变换与混沌映射相结合的图像加解密算法

加密算法描述如下:

步骤1输入待加密图像,用矩阵表示为fo(i,j),i=0,1,…,M -1;j=0,1,…,N-I。设定图像加密的迭代次数r。

步骤2输入Logistic混沌映射的初始值x0,1,yo,2和参数μ1、μ2,采用式(1)迭代M×N+k次生成不同矩阵g1(i,j)和g2(i,j),其中o<i< M-1,o≤j≤N-1(说明:其原因是保证Logistic映射的初值敏感性和参数敏感性,矩阵g1(i,j)和g2(i,j)应该舍弃Logistic映射开始迭代七次的数据)。由于处理的信号是数字图像,一般要求矩阵g1(i,j)和g2(i,j)的元素值为正整数(如g1,g2∈[o,255]),可采用式(4)进行取整操作:

基于m序列变换和混沌映射的图像加密算法

其中u表示系统迭代次数,这两个矩阵用于图像灰度值替代操作的随机参数。输入的初始值x01,xo2和参数μ1,μ2即为图像加密的密钥之一。

步骤3 图像灰度值替代:对图像fo(i,j)逐点按照式(5)进行图像灰度值的替代得到f1(i,j):

基于m序列变换和混沌映射的图像加密算法

其中L为图像的灰度级。

步骤4图像置换,随机选择参数x0'和y0',采用上述的m序列变换对图像f1(i,j)进行位置置换处理,得到f2(i,j)。

步骤5重复步骤3和步骤4,直至迭代达到r次为止。

图像解密是图像加密的逆过程。

四、实验结果及其分析

在Matlab 6.0编程环境下采用本文算法对大小为128x 256的灰度图像进行加解密处理,其中xo1=0.4509, x02=0.87807,μ1=1.989,μ2=2,x0'=1o,y0'=21和r=1,其实结果如图4所示。

基于m序列变换和混沌映射的图像加密算法

1、统计分析

(1)直方图

由图5所示实验结果,很清楚表明,与原始图像直方图比较,加密图像直方图有很大的不同,它非常均匀。因此,经本文算法加密后图像在传输中具有更好的隐蔽性。

基于m序列变换和混沌映射的图像加密算法

(2)相关性

原始图像中相邻像素的相关性是很大的,为了破坏统计攻击,必须降低相邻像素的相关性。本文采用式(6)-式(7)计算原始图像和加密图像的M×N/2对像素点测试其在水平和垂直方向的相关系数,其测试值如表1所示。

基于m序列变换和混沌映射的图像加密算法

其中x和y表示两个相邻的像素灰度值,且在实际数值计算时则采用如式(8)—式(10)的E(x),D(x)和cov(x,y)的离散形式:

基于m序列变换和混沌映射的图像加密算法

为了描述方便,用rf0,rfm和rfen分别表示原始图像,m序列变换置乱后图像和本文算法加密后图像的相关系数。其相关系数如表1所示。

基于m序列变换和混沌映射的图像加密算法

2、Logistic映射的敏感性测试

在图6实验中,在只改变混沌系统的一个初始值或一个参数而其它参数都相同情况下,均不能正确解密,说明Logistic映射对初始值和系统参数具有敏感依赖性。因此,在未知准确密钥时,即使初始值x01,xo2和参数μ1,μ2己知,是难以将加密图像正确解密的。

基于m序列变换和混沌映射的图像加密算法

3、x0'和y0'对图像解密的敏感性测试

在图7实验中,若只改变端和玑中一个值情况下,则图像不能正确解密。它说明xL和y可以作为一个图像加密的密钥。与仅用m序列变换时使图像位置置乱加密算法x0'和y0'密钥失效相比,其不同在于解密图像尽管几个分块的图像相对位置不变,但我们可以从中理解信息的含义,只是图像的绝对位置改变了。由于我们在像素值替代时,引入了由混沌系统产生的位置参数,使x0'和y0'参数也具有参数敏感性。

基于m序列变换和混沌映射的图像加密算法

4、算法安全性能分析

从上述实验结果及其分析可知,必须正确输入密钥,即初始值x01,xo2,参数μ1、μ2,x0',y0'和迭代次数'全部正确才能对加密图像正确解密。因此本算法对图像加密的密钥空间在Matlab 6.0试验平台上可达到1070,其中参数x01,xo2,μ1、μ2的空间数量级均为1015,迭代次数r空间数量级为105。x0'和y0'的密钥空间与图像尺寸大小有关,其总的密钥空间大小为M×N-1,详见m序列变换算法说明。对尺寸大小为128×256的图像而言,其空间数量级为105。非授权者若用穷举法进行破密是很难在有限的时间内破密成功。

根据Kerckhoffs准则,加密算法要与密钥完全分开是现代密码体制的要求。上述实验结果表明本文提出的算法可以公开,完全符合现代密码体制的要求。

小知识之加密算法

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。