基于Arnold變換的圖像分存加密方法

圖像分存是圖像信息安全保護(hù)中的重要內(nèi)容,已得到了廣泛的應(yīng)用。基于Arnold變換的圖像分存加密方法,它是將原圖像像素置亂擴(kuò)散并分解成兩幅分存圖像,其Arnold變換的參數(shù)由Logistic混沌映射產(chǎn)生,圖像分存結(jié)果的安全性受到外部密鑰和原圖像信息共同控制,能夠抵抗諸如選擇性明文、差分等攻擊。

一、混沌映射

混沌系統(tǒng)是非線性動(dòng)力系統(tǒng)中出現(xiàn)的具有確定性、類似隨機(jī)的過(guò)程,既非周期又不收斂,并且對(duì)初始值有極其敏感的依賴性。圖像信息安全中常用的混沌映射有Logistic映射,Arnold變換和Henon映射等。本文選取Logistic映射和Arnold變換實(shí)現(xiàn)圖像分存加密。

1、Logistic映射

一類非常簡(jiǎn)單卻被廣泛研究的動(dòng)力系統(tǒng)是Logistic映射,其典型定義式為:

xn+1=μxn(1-xn

其中:0≤μ≤4稱為分支參數(shù),xn∈(0,1)?;煦鐒?dòng)力系統(tǒng)的研究表明:

當(dāng)0<μ≤3.569945時(shí),該動(dòng)力系統(tǒng)從穩(wěn)定狀態(tài)分叉產(chǎn)生倍周期;

當(dāng)3.569945<μ≤4時(shí),該動(dòng)力系統(tǒng)進(jìn)入混沌狀態(tài),由初始條件xn在Logistic映射的作用下所產(chǎn)生的序列{xn|n=0,1,…}非周期、不收斂,且對(duì)初始值非常敏感。

2、Arnold變換

Arnold變換是Arnold在遍歷理論研究中提出的一種變換,是典型的混沌系統(tǒng)。Arnold變換實(shí)際上是一種點(diǎn)的位置移動(dòng),并且這種變換是一一對(duì)應(yīng)的。根據(jù)所選擇相位空間的不同可分為二維、三維、四維直至F維的Arnold變換。常用的二維離散Arnold變換可描述為:

基于Arnold變換的圖像分存加密方法其中:xn和yn為變換前的值,xn+1和yn+1為變換后的值。需要注意的是,Arnold變換具有周期性,即當(dāng)?shù)侥骋徊綍r(shí),將重新得到原始數(shù)據(jù)。Dyson和Falk分析了離散Arnold變換的周期性,給出了對(duì)于任意F>2,Arnold變換的周期為T(mén)F≤F2/2,并對(duì)部分的最小周期證明了P(F)≤12×F/7。考慮到固定參數(shù)Arnold變換的安全性僅與變換輪數(shù)有關(guān),缺乏圖像文件加密的靈活性和安全性,于是提出了變參數(shù)二維離散Arnold變換,其方程如下:

基于Arnold變換的圖像分存加密方法

將變參數(shù)的Arnold變換推廣到三維,其變換如下:

基于Arnold變換的圖像分存加密方法

其中:

基于Arnold變換的圖像分存加密方法

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

二、Arnold變換參數(shù)的選取

根據(jù)圖像的類型選定有限域GF(2t),其中t為正整數(shù)(本文t=8)。Arnold變換的參數(shù)及輪數(shù)取值于Logistic映射生成的離散混沌序列,考慮到分存加密過(guò)程在模256內(nèi)進(jìn)行,因此Arnold變換的參數(shù)取1~255的整數(shù)。其詳細(xì)步驟如下:

第1步用Logistic映射xn+1=μxn(1-xn)產(chǎn)生一維混沌實(shí)數(shù)序列{xn|xn∈(0,1)},其中3.569945…<μ≤4。

第2步如果(w+1)/257≤xn<(w+2)/257,則xn=w,顯然這樣得到xn∈{1,2,…,255}

三、圖像分存

圖像分存需要考慮到的一個(gè)重要因素是數(shù)據(jù)膨脹率,生成的分存圖像是原圖大小的4倍,增加了存儲(chǔ)空間。本文提出的分存方法使分存圖像的大小與原圖像大小相同,可有效降低現(xiàn)有分存方法的數(shù)據(jù)膨脹。

1、圖像分存

應(yīng)用離散Arnold變換實(shí)現(xiàn)圖像分存,將每個(gè)位置的像素都分解成兩個(gè)值,選用M×N的圖像I,其相應(yīng)的離散Arnold變換表達(dá)式如下:

基于Arnold變換的圖像分存加密方法其中:Ai,j和bi,j是由Logistic映射控制的可變參數(shù),Ii,j是圖像位置(i,j)的像素值大小,Xi,j和Yi,j分別是分解后兩幅分存圖像位置(i,j)處的像素值大小。選取圖像位置(i,j)處灰度值的補(bǔ)碼值255-Ii,j作為Arnold變換中y的初值,可以避免像素值為零時(shí)Arnold變換產(chǎn)生零值序列的問(wèn)題。本文Arnold變換系數(shù)矩陣:

基于Arnold變換的圖像分存加密方法其行列式|k|=1,因此滿足系數(shù)矩陣在模256運(yùn)算下存在逆矩陣的充要條件gcd(|k|,256)=1,所以該方程在有限域下的解具有唯一性,即得到的分解值是唯一的。由此可知圖像I的每個(gè)像素Ii,j用變參數(shù)的離散Arnold變換產(chǎn)生的兩個(gè)像素值xi,j,yi,j具有唯一性,即分存圖像與原圖像每個(gè)位置上的灰度值一一對(duì)應(yīng)。因此,圖像I經(jīng)過(guò)Arnold變換所產(chǎn)生的兩幅分存圖像X、Y的大小均與I相同。其詳細(xì)步驟如下:

1)用3個(gè)初始值分別是ki(i=1,2,3),參數(shù)分別是μi(i=1,2,3)的Logistic映射生成離散Arnold變換的參數(shù)ai,j、bi,j(i=1,2,…,M;j=1,2,…,N)和輪數(shù)di,j(i=1,2,…,M;j=1,2,…,N)。

2)將原圖像I中位置(i,j)處的像素灰度Ii,j及其補(bǔ)碼值255-Ii,j作為離散Arnold變換的初始值x0、y0,進(jìn)行di,j輪迭代運(yùn)算,得到分存圖像X和Y中位置(i,j)處的灰度值xi,j,yi,

2、像素?cái)U(kuò)散的圖像分存加密

使用二維離散Arnold變換得到的分存圖像中每個(gè)位置的像素值僅與原圖像中該位置的像素值有關(guān),因此不能抵抗明文攻擊和差分攻擊。這里首先對(duì)圖像像素進(jìn)行置亂,再利用三維離散Arnold變換將圖像分存并使像素值擴(kuò)散,從而使算法具有更高的抗攻擊能力。因變參數(shù)的離散Arnold變換消除了周期性,所以選用變參數(shù)的二維離散Arnold變換對(duì)圖像置亂,以提升加密的效果。

首先用兩個(gè)初始值分別是ki(i=1,2),參數(shù)分別是μi(i=1,2)的Logistic映射生成二維離散Arnold變換的參數(shù)ai、bi(i=1,2,…,lu),其中l(wèi)u為置亂輪數(shù)。

其次在第i輪使用參數(shù)為ai、bi的二維離散Arnold變換對(duì)圖像進(jìn)行置亂,經(jīng)過(guò)lu輪后得到置亂加密圖像I。Logistic映射的初始值ki(i=1,2),參數(shù)μi(i=1,2)和置亂循環(huán)輪數(shù)lu均作為密鑰使用。三維離散Arnold變換的系數(shù)矩陣也滿足有限域下可逆的充要條件gcd(|AHQ|,256)=1,因此其分解值具有唯一性。本文三維離散Arnold變換表達(dá)式如下:

基于Arnold變換的圖像分存加密方法

其中Ii,j是圖像位置(i,j)處像素值的大小。為便于算法描述,記I(i,j)=I(Ni+j),令M×N=l,二維下標(biāo)的Ii,j被記為一維下標(biāo)的I(Ni+j),即為I1,I2,…,Il。r取0~255中的任意整數(shù)。分存步驟如下:

1)用初始值分別是ki(i=1,2,…,7),參數(shù)分別是μi(i=1,2,…,7)的Logistic映射生成離散Arnold變換的參數(shù)ax(i)、bx(i)、ay(i)、by(i)、az(i)、bz(i)(i=1,2,…,2×l)和輪數(shù)di(i=1,2,…,2×l)。

2)選取參數(shù)是ax(1)、bx(1)、ay(1)、by(1)、az(1)、bz(1)的離散Arnold變換,將I1及255-I1作為變換的初始值x0和y0,r作為初始值z(mì)0,進(jìn)行d1輪迭代運(yùn)算,生成x1、y1、z1,然后X1→x1,Y1→y1,r→z1。

3)選取參數(shù)是ax(2)、bx(2)、ay(2)、by(2)、az(2)、bz(2)的離散Arnold變換,將I2及255-I2作為變換的初始值x0和y0,r作為初始值z(mì)0,進(jìn)行d2輪迭代運(yùn)算,生成x2、y2、z2,然后X2x2,Y2y2,rz2。如此繼續(xù),直到i=l。

4)選取參數(shù)是ax(l)、bx(l)、ay(l)、by(l)、az(l)、bz(l)的離散Arnold變換,將Il及255-Il作為變換的初始值x0和y0,r作為初始值z(mì)0,進(jìn)行dl輪迭代運(yùn)算,生成xl、yl、zl,然后Xl→xl,Yl→yl,r→zl。

5)重復(fù)1)~4)一遍,其中離散Arnold變換的參數(shù)為ax(l+i)、bx(l+i)、ay(l+i)、by(l+i)、az(l+i)、bz(l+i),輪數(shù)為dl+i(i=1,2,…,l)。

6)將得到的X、Y作為分存圖像,最終的r值作為解密密鑰。

3、彩色圖像分存

一幅彩色圖像由RGB3個(gè)灰度分量圖像組成,因此加密彩色圖像可以看做對(duì)RGB3個(gè)灰度分量圖像進(jìn)行加密。這里為了使RGB灰度圖像間的像素得到擴(kuò)散,采用如下三維離散Arnold變換:

基于Arnold變換的圖像分存加密方法

其中每組離散Arnold變換產(chǎn)生分存圖像的方法與灰度圖像方法相同,首先,使用參數(shù)可變的二維離散Arnold變換對(duì)灰度圖像分量分別進(jìn)行輪數(shù)為lu1、lu2、lu3的置亂;其次,用Logistic映射生成長(zhǎng)度為6×l的混沌序列,每組三維離散Arnold變換依次取2×l個(gè)混沌值作為參數(shù)和輪數(shù)。得到灰度分量圖像R的分存圖像為X1、Y3,灰度分量圖像G的分存圖像為X2、Y1,灰度分量圖像B的分存圖像為X3、Y2,則原彩色圖像I的分存圖像X由X1、X2、X3組成,分存圖像Y由Y1、Y2、Y3組成,最終的rr、rg、rb的值作為解密密鑰。

4、解密過(guò)程

解密是分存加密的逆過(guò)程,需要利用離散Arnold變換的逆變換,根據(jù)密鑰參數(shù)進(jìn)行逆向迭代運(yùn)算可得到原圖像。本文選取的二維Arnold變換逆變換為:

基于Arnold變換的圖像分存加密方法

而三維Arnold變換的逆變換為:

基于Arnold變換的圖像分存加密方法

基于Arnold變換的圖像分存加密方法不僅可以對(duì)原圖像的像素進(jìn)行了非線性擴(kuò)散,而且明文、密文、密鑰之間的函數(shù)關(guān)系具有高度的非線性和復(fù)雜的統(tǒng)計(jì)關(guān)系。同時(shí)內(nèi)部密鑰與明文圖像也緊密相關(guān),明文圖像的微小改變不僅會(huì)影響整幅分存圖像而且還會(huì)改變內(nèi)部密鑰,也能夠抵抗差分攻擊。

小知識(shí)之Arnold變換:

Arnold變換是一種常用的圖像置亂技術(shù),Arnold變換的定義如下:

對(duì)任意N*N矩陣(所有元素都相同的矩陣除外),設(shè)i,j為矩陣元素原始下標(biāo),經(jīng)過(guò)Arnold變換后新下標(biāo)為i',j',且滿足下式:

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

Arnold變換具有周期性,即經(jīng)過(guò)若干次變換后,矩陣回到最初狀態(tài),且周期T與N的大小有關(guān)。理論基礎(chǔ)沒(méi)找到,但可以用程序來(lái)進(jìn)行計(jì)算,可以設(shè)i,j從一個(gè)點(diǎn)出發(fā),不斷使用以上變換,再次回到這個(gè)起點(diǎn)時(shí),經(jīng)歷的變換次數(shù)就是周期。