图像分存是图像信息安全保护中的重要内容,已得到了广泛的应用。基于Arnold变换的图像分存加密方法,它是将原图像像素置乱扩散并分解成两幅分存图像,其Arnold变换的参数由Logistic混沌映射产生,图像分存结果的安全性受到外部密钥和原图像信息共同控制,能够抵抗诸如选择性明文、差分等攻击。

一、混沌映射

混沌系统是非线性动力系统中出现的具有确定性、类似随机的过程,既非周期又不收敛,并且对初始值有极其敏感的依赖性。图像信息安全中常用的混沌映射有Logistic映射,Arnold变换和Henon映射等。本文选取Logistic映射和Arnold变换实现图像分存加密。

1、Logistic映射

一类非常简单却被广泛研究的动力系统是Logistic映射,其典型定义式为:

xn+1=μxn(1-xn

其中:0≤μ≤4称为分支参数,xn∈(0,1)。混沌动力系统的研究表明:

当0<μ≤3.569945时,该动力系统从稳定状态分叉产生倍周期;

当3.569945<μ≤4时,该动力系统进入混沌状态,由初始条件xn在Logistic映射的作用下所产生的序列{xn|n=0,1,…}非周期、不收敛,且对初始值非常敏感。

2、Arnold变换

Arnold变换是Arnold在遍历理论研究中提出的一种变换,是典型的混沌系统。Arnold变换实际上是一种点的位置移动,并且这种变换是一一对应的。根据所选择相位空间的不同可分为二维、三维、四维直至F维的Arnold变换。常用的二维离散Arnold变换可描述为:

基于Arnold变换的图像分存加密方法其中:xn和yn为变换前的值,xn+1和yn+1为变换后的值。需要注意的是,Arnold变换具有周期性,即当迭代到某一步时,将重新得到原始数据。Dyson和Falk分析了离散Arnold变换的周期性,给出了对于任意F>2,Arnold变换的周期为TF≤F2/2,并对部分的最小周期证明了P(F)≤12×F/7。考虑到固定参数Arnold变换的安全性仅与变换轮数有关,缺乏图像文件加密的灵活性和安全性,于是提出了变参数二维离散Arnold变换,其方程如下:

基于Arnold变换的图像分存加密方法

将变参数的Arnold变换推广到三维,其变换如下:

基于Arnold变换的图像分存加密方法

其中:

基于Arnold变换的图像分存加密方法

Ax、Ay、Az、Bx、By、Bz都是正整数,并且det(AHQ)=1

二、Arnold变换参数的选取

根据图像的类型选定有限域GF(2t),其中t为正整数(本文t=8)。Arnold变换的参数及轮数取值于Logistic映射生成的离散混沌序列,考虑到分存加密过程在模256内进行,因此Arnold变换的参数取1~255的整数。其详细步骤如下:

第1步用Logistic映射xn+1=μxn(1-xn)产生一维混沌实数序列{xn|xn∈(0,1)},其中3.569945…<μ≤4。

第2步如果(w+1)/257≤xn<(w+2)/257,则xn=w,显然这样得到xn∈{1,2,…,255}

三、图像分存

图像分存需要考虑到的一个重要因素是数据膨胀率,生成的分存图像是原图大小的4倍,增加了存储空间。本文提出的分存方法使分存图像的大小与原图像大小相同,可有效降低现有分存方法的数据膨胀。

1、图像分存

应用离散Arnold变换实现图像分存,将每个位置的像素都分解成两个值,选用M×N的图像I,其相应的离散Arnold变换表达式如下:

基于Arnold变换的图像分存加密方法其中:Ai,j和bi,j是由Logistic映射控制的可变参数,Ii,j是图像位置(i,j)的像素值大小,Xi,j和Yi,j分别是分解后两幅分存图像位置(i,j)处的像素值大小。选取图像位置(i,j)处灰度值的补码值255-Ii,j作为Arnold变换中y的初值,可以避免像素值为零时Arnold变换产生零值序列的问题。本文Arnold变换系数矩阵:

基于Arnold变换的图像分存加密方法其行列式|k|=1,因此满足系数矩阵在模256运算下存在逆矩阵的充要条件gcd(|k|,256)=1,所以该方程在有限域下的解具有唯一性,即得到的分解值是唯一的。由此可知图像I的每个像素Ii,j用变参数的离散Arnold变换产生的两个像素值xi,j,yi,j具有唯一性,即分存图像与原图像每个位置上的灰度值一一对应。因此,图像I经过Arnold变换所产生的两幅分存图像X、Y的大小均与I相同。其详细步骤如下:

1)用3个初始值分别是ki(i=1,2,3),参数分别是μi(i=1,2,3)的Logistic映射生成离散Arnold变换的参数ai,j、bi,j(i=1,2,…,M;j=1,2,…,N)和轮数di,j(i=1,2,…,M;j=1,2,…,N)。

2)将原图像I中位置(i,j)处的像素灰度Ii,j及其补码值255-Ii,j作为离散Arnold变换的初始值x0、y0,进行di,j轮迭代运算,得到分存图像X和Y中位置(i,j)处的灰度值xi,j,yi,

2、像素扩散的图像分存加密

使用二维离散Arnold变换得到的分存图像中每个位置的像素值仅与原图像中该位置的像素值有关,因此不能抵抗明文攻击和差分攻击。这里首先对图像像素进行置乱,再利用三维离散Arnold变换将图像分存并使像素值扩散,从而使算法具有更高的抗攻击能力。因变参数的离散Arnold变换消除了周期性,所以选用变参数的二维离散Arnold变换对图像置乱,以提升加密的效果。

首先用两个初始值分别是ki(i=1,2),参数分别是μi(i=1,2)的Logistic映射生成二维离散Arnold变换的参数ai、bi(i=1,2,…,lu),其中lu为置乱轮数。

其次在第i轮使用参数为ai、bi的二维离散Arnold变换对图像进行置乱,经过lu轮后得到置乱加密图像I。Logistic映射的初始值ki(i=1,2),参数μi(i=1,2)和置乱循环轮数lu均作为密钥使用。三维离散Arnold变换的系数矩阵也满足有限域下可逆的充要条件gcd(|AHQ|,256)=1,因此其分解值具有唯一性。本文三维离散Arnold变换表达式如下:

基于Arnold变换的图像分存加密方法

其中Ii,j是图像位置(i,j)处像素值的大小。为便于算法描述,记I(i,j)=I(Ni+j),令M×N=l,二维下标的Ii,j被记为一维下标的I(Ni+j),即为I1,I2,…,Il。r取0~255中的任意整数。分存步骤如下:

1)用初始值分别是ki(i=1,2,…,7),参数分别是μi(i=1,2,…,7)的Logistic映射生成离散Arnold变换的参数ax(i)、bx(i)、ay(i)、by(i)、az(i)、bz(i)(i=1,2,…,2×l)和轮数di(i=1,2,…,2×l)。

2)选取参数是ax(1)、bx(1)、ay(1)、by(1)、az(1)、bz(1)的离散Arnold变换,将I1及255-I1作为变换的初始值x0和y0,r作为初始值z0,进行d1轮迭代运算,生成x1、y1、z1,然后X1→x1,Y1→y1,r→z1。

3)选取参数是ax(2)、bx(2)、ay(2)、by(2)、az(2)、bz(2)的离散Arnold变换,将I2及255-I2作为变换的初始值x0和y0,r作为初始值z0,进行d2轮迭代运算,生成x2、y2、z2,然后X2x2,Y2y2,rz2。如此继续,直到i=l。

4)选取参数是ax(l)、bx(l)、ay(l)、by(l)、az(l)、bz(l)的离散Arnold变换,将Il及255-Il作为变换的初始值x0和y0,r作为初始值z0,进行dl轮迭代运算,生成xl、yl、zl,然后Xl→xl,Yl→yl,r→zl。

5)重复1)~4)一遍,其中离散Arnold变换的参数为ax(l+i)、bx(l+i)、ay(l+i)、by(l+i)、az(l+i)、bz(l+i),轮数为dl+i(i=1,2,…,l)。

6)将得到的X、Y作为分存图像,最终的r值作为解密密钥。

3、彩色图像分存

一幅彩色图像由RGB3个灰度分量图像组成,因此加密彩色图像可以看做对RGB3个灰度分量图像进行加密。这里为了使RGB灰度图像间的像素得到扩散,采用如下三维离散Arnold变换:

基于Arnold变换的图像分存加密方法

其中每组离散Arnold变换产生分存图像的方法与灰度图像方法相同,首先,使用参数可变的二维离散Arnold变换对灰度图像分量分别进行轮数为lu1、lu2、lu3的置乱;其次,用Logistic映射生成长度为6×l的混沌序列,每组三维离散Arnold变换依次取2×l个混沌值作为参数和轮数。得到灰度分量图像R的分存图像为X1、Y3,灰度分量图像G的分存图像为X2、Y1,灰度分量图像B的分存图像为X3、Y2,则原彩色图像I的分存图像X由X1、X2、X3组成,分存图像Y由Y1、Y2、Y3组成,最终的rr、rg、rb的值作为解密密钥。

4、解密过程

解密是分存加密的逆过程,需要利用离散Arnold变换的逆变换,根据密钥参数进行逆向迭代运算可得到原图像。本文选取的二维Arnold变换逆变换为:

基于Arnold变换的图像分存加密方法

而三维Arnold变换的逆变换为:

基于Arnold变换的图像分存加密方法

基于Arnold变换的图像分存加密方法不仅可以对原图像的像素进行了非线性扩散,而且明文、密文、密钥之间的函数关系具有高度的非线性和复杂的统计关系。同时内部密钥与明文图像也紧密相关,明文图像的微小改变不仅会影响整幅分存图像而且还会改变内部密钥,也能够抵抗差分攻击。

小知识之Arnold变换:

Arnold变换是一种常用的图像置乱技术,Arnold变换的定义如下:

对任意N*N矩阵(所有元素都相同的矩阵除外),设i,j为矩阵元素原始下标,经过Arnold变换后新下标为i',j',且满足下式:

i'=(i+j)mod N
j'=(i+2j)mod N
i,j:0,1,.........N-1

Arnold变换具有周期性,即经过若干次变换后,矩阵回到最初状态,且周期T与N的大小有关。理论基础没找到,但可以用程序来进行计算,可以设i,j从一个点出发,不断使用以上变换,再次回到这个起点时,经历的变换次数就是周期。