一種基于Zigzag變換及混沌序列的圖像加密方法

目前廣泛應(yīng)用于加密的混沌模型主要有Logistic映射,其有著形式簡單、產(chǎn)生混沌時間序列短等優(yōu)點(diǎn)。如果在混沌加密之前,對圖像數(shù)據(jù)進(jìn)行小波變換,變換后得到的小波系數(shù)中如果有一個發(fā)生改變,就會通過小波變換的逆運(yùn)算體現(xiàn)在所有的象素點(diǎn)中,這樣的加密效果會更好。為此,我們引入兩種混沌映射,設(shè)計了出了一種對二維小波分解所得到全部頻率系數(shù)進(jìn)行Zigzag置亂和應(yīng)用混沌序列改變象素值相結(jié)合的圖像加密算法。

一、Zigzag變換

Zigzag置換是一種置亂方法,通過對一個矩陣中的元素從左上角開始按“之”字形依次掃描取數(shù)來達(dá)到對數(shù)據(jù)進(jìn)行置換。首先將掃描到的元素先依次存放到一個一維數(shù)組中,然后再將此一維數(shù)組按一定的方式置換為二維矩陣,則上述的置換過程可看作是對矩陣中元素的置換,這樣的過程就叫做Zigzag置換。Zigzag置換的特點(diǎn)是算法實現(xiàn)簡單,時間復(fù)雜度低。其在數(shù)字圖像處理中應(yīng)用比較多,基于Zigzag置亂在視頻加密方法及圖像數(shù)據(jù)壓縮等方面已有廣泛的應(yīng)用。

在算法分析領(lǐng)域有兩個很重要的概念:時間復(fù)雜度和空間復(fù)雜度,二者往往是矛盾的。在信息安全領(lǐng)域,往往更追求的是算法的時間復(fù)雜度低而相對不在意空間復(fù)雜度。如在AES加密過程中,其S變換使用查表的方法得到的程序,加密效率遠(yuǎn)遠(yuǎn)高于其他加密算法。在本文所設(shè)計的變換過程中也使用查表的方法完成Zigzag排列。下圖給出一組8_8的Zigzag排列的系數(shù)的行列變換表及其逆變換表。

一種基于Zigzag變換及混沌序列的圖像加密方法

按照變換表就可以對一個8_8的矩陣I進(jìn)行Zigzag置亂,具體置亂過程可由下式表示:

一種基于Zigzag變換及混沌序列的圖像加密方法

其中:z(i,j)表示置亂后矩陣i,j處的元素,r(i,j),c(i,j)分別為行、列變換索引表i,j處的元素。由相應(yīng)的逆變換表可以得到原始矩陣。

二、混沌序列模型

混沌現(xiàn)象是在非線性動力系統(tǒng)中出現(xiàn)的確定性的、類似隨機(jī)的過程,這種過程既非周期又不收斂,并且對初始值極其敏感,正是由于此性質(zhì),在信息安全中得到了廣泛的應(yīng)用。

1、Henon映射

Henon映射定義為:

一種基于Zigzag變換及混沌序列的圖像加密方法

其中:a,b均為任意常數(shù),b=1時為保面積映射,b<1時為耗散映射。參數(shù)取值為a=1.4,b=0.3,此時系統(tǒng)處于混沌狀態(tài)。

2、正弦平方映射

正弦平方映射方程為:

一種基于Zigzag變換及混沌序列的圖像加密方法

上式中x0#R,且0<x0<1,當(dāng)b>1時,其Lyapunov指數(shù)大于零,且Lyapunov指數(shù)λ=ln(b),系統(tǒng)工作在混沌狀態(tài)。

3、初值敏感性測試

本文在這里設(shè)計了一種測試混沌序列初值敏感性的方法,以正弦平方映射為例來說明實現(xiàn)方法。設(shè)有兩個初值,僅相差10-5,由這兩個初值分別得到兩組序列值,再計算出他們對應(yīng)值的差值,進(jìn)而可以繪制出初值敏感性圖,部分代碼如下。下圖(a)、(b)畫出了henon映射100步內(nèi)的誤差圖,由圖可知差異有時可達(dá)最大值,下圖(c)給出了正弦平方映射50步內(nèi)的誤差圖,差異有時甚至接近1。

x(1,:)=[0.4,0.400001];

fori=2:50

x(i,:)=sin(a*asin(sqrt(x(i-1,:)))).^2;

endy=x(:,1)-x(:,2);

figure,plot(y)

一種基于Zigzag變換及混沌序列的圖像加密方法

三、基于Zigzag變換及混沌序列的圖像加解密算法

1、加解密過程

(1)基于Zigzag變換的置亂

考慮一幅大小為M_N具有N級灰度的圖像,對其采用適當(dāng)?shù)男〔ɑM(jìn)行二維小波分解得到其全部頻率系數(shù),可以采用自己設(shè)計的一個隨機(jī)置亂表代替Zigzag變換表和式(1),把所得到的頻率系數(shù)轉(zhuǎn)換成矩陣,然后對其進(jìn)行8_8分塊使用Zigzag變換表進(jìn)行掃描。經(jīng)掃描后得到一組置亂了的頻率系數(shù),再利用其進(jìn)行二維小波重構(gòu),這樣便得到了置亂后的圖像。為了能使置亂效果更好,可以多次對頻率系數(shù)進(jìn)行變換。要想得到正確的圖像,必須要用變換時使用的變換表得到其相應(yīng)逆變換表和變換的次數(shù)n。因此,可以把所設(shè)計的變換表和變換次數(shù)n作為密鑰,從而實現(xiàn)圖像加密。

(2)混沌密鑰模板序列生成及象素值變換

本文所設(shè)計的加密算法就是利用Henen映射、正弦平方映射對初值敏感的性質(zhì)生成混沌序列作為密鑰模板進(jìn)而與象素值進(jìn)行運(yùn)算來得到一幅雜亂無章的圖像。由于圖像的灰度級為N級,其值從0~N-1,Henen映射、正弦平方映射產(chǎn)生的混沌序列值不在此范圍之內(nèi)。為了將以上映射產(chǎn)生的混沌序列與圖像象素值運(yùn)算,需做一些適當(dāng)?shù)男拚?,把所生成的值映射到集合{0,1,2_,N,N-1}。

a、混沌密鑰模板序列值的修正

設(shè)Henen映射,正弦平方映射所生成的混沌序列分別為r1,r2,r3。為了方便后邊的運(yùn)算,使用Matlab中的reshape函數(shù)將r1,r2,r3轉(zhuǎn)換成矩陣的形式,稱為密鑰模板矩陣。可用式(4)進(jìn)行修正。

一種基于Zigzag變換及混沌序列的圖像加密方法

其中,round()函數(shù)為取整,abs()表示求絕對值。

b、象素值變換

設(shè)I(i,j)為圖像(i,j)坐標(biāo)處的象素值,其中1_i_M,1_j_N,I(i,j)為(i,j)坐標(biāo)處變換后圖像的象素值,本文采用r1,r2,r3設(shè)計象素值變換映射,可由式(4)表示:

一種基于Zigzag變換及混沌序列的圖像加密方法

N是圖像的顏色深度(對于256級的灰度圖像,N=256),⊕代表按位異或運(yùn)算,mod代表求模運(yùn)算。為了增加密文圖像的安全性,可以多次進(jìn)行上述過程。這部分所用密鑰為:key1=(x01,y01,x02,b,n),x01,y01為式(2)的初值,x02,b為式(3)的初值和參數(shù),n為迭代次數(shù)。為了提高圖像加密過程的效率,對于待加密的原圖像可以進(jìn)行分塊處理。解密是加密的逆,其逆運(yùn)算式為:

一種基于Zigzag變換及混沌序列的圖像加密方法

由此式就可完成象素變換的解密運(yùn)算。

c、加密算法

對明文圖像I進(jìn)行小波分解得到分解的全部頻率系數(shù),對其進(jìn)行Zigzag變換,然后用此結(jié)果進(jìn)行二維小波重構(gòu)得到一次加密結(jié)果I1。

應(yīng)用混沌序列模板r1,r2,r3及式(5)對I1進(jìn)行加密得到密文象素流I1(i,j),可重復(fù)步驟(1)、(2)兩步多次。解密算法是加密過程的逆。

3、算法思想的擴(kuò)展

在上節(jié)中主要描述了對一幅灰度圖像的加密過程,本算法也可應(yīng)用于彩色圖像,具體過程是分別提取彩色圖像的R,G,B顏色分量,分別對其進(jìn)行3.1節(jié)所述的加密,然后對3個加密結(jié)果使用cat函數(shù)就可得到加密后的結(jié)果。同時在加密算法中,需要3個密鑰模板,則還可以使用三個不同的混沌映射來得到,在加密彩色圖像時,對每個分量加密時可以選取不同的初值和參數(shù),這樣可以大大增大密鑰空間。

四、仿真試驗及結(jié)果分析

在Matlab7.0編程環(huán)境下,本文首先按照上面所述的加密算法對大小為96_96的lenna灰度圖像進(jìn)行了加解密試驗,然后又按上面所述思想實現(xiàn)了彩色圖像的加解密。在試驗中,對圖像使用haar小波基進(jìn)行二維小波分解,key1中的參數(shù)x01=0.2,y01=0.1,x02=0.5,b=3.9,n=1,試驗結(jié)果如圖所示:

一種基于Zigzag變換及混沌序列的圖像加密方法

由上圖(b)、(e)可看出加密后的圖像已是一幅無紋理,雜亂無章的圖像,從中不能得出原圖像的任何信息,得到了理想的加密結(jié)果。

1、算法的安全性分析

在信息安全領(lǐng)域,Kerckhoffs準(zhǔn)則認(rèn)為:一個安全保護(hù)系統(tǒng)的安全性不是建立在他的算法對于對手是保密的,而是應(yīng)該建立在他所選擇的密鑰對于對手來說是保密的。

2、密鑰空間分析

由上文加密算法的描述過程可知,該加密系統(tǒng)使用了Zigzag變換表和兩個不同的混沌系統(tǒng)。Zigzag變換表由兩個8_8行、列索引表構(gòu)成,其可以作為密鑰,在混沌序列的產(chǎn)生過程中,需要3個不同的初始條件和1個參數(shù)以及加密次數(shù),由此可見密鑰空間是非常大的,可以有效地抵抗窮舉攻擊。

(1)密鑰敏感性測試

上圖(g)是當(dāng)解密時只把x02的值做了微小的變化得到的解密結(jié)果,其中x02=0.500000001。結(jié)果表明,解密結(jié)果是一幅雜亂無章的圖像,解密失敗。體現(xiàn)了很好的密鑰敏感性,同時也達(dá)到了密碼學(xué)中混淆和擴(kuò)散的目的。

(2)抗惡意攻擊

當(dāng)?shù)谌呓厝〉诫s亂無章加密圖像但無法獲取解密密鑰就不可能得到明文圖像,則其就可能對密文圖像進(jìn)行加噪、剪切等惡意攻擊來破壞圖像。上圖(h)是加密圖像受加椒鹽噪聲攻擊的解密結(jié)果,可看出解密結(jié)果雖然有一些噪聲顆粒,但整個圖像輪廓還是可見的。實驗過程也做了其他攻擊,結(jié)果都體現(xiàn)了算法的魯棒性。圖像中相鄰象素間存在較大的相關(guān)性,利用這一固有性質(zhì)可以進(jìn)行統(tǒng)計分析攻擊。上圖(i)是原圖像的灰度值統(tǒng)計直方圖,上圖(j)是文件加密圖像的象素直方圖。

可見,加密過程將原始圖像灰度值的不均勻分布變成了灰度值的均勻分布,使密文灰度值在[0,255]整個空間范圍內(nèi)取值概率均等,使明密文的相關(guān)性大大降低,體現(xiàn)了算法抗統(tǒng)計分析攻擊的能力。

對于彩色圖像可得到相同結(jié)果。

本文給出了基于小波分解所得到的頻率系數(shù)的Zigzag置亂和應(yīng)用兩個混沌系統(tǒng)生成相應(yīng)的混沌序列經(jīng)修正后轉(zhuǎn)換成圖像加密模板矩陣,進(jìn)而應(yīng)用這兩個加密模板對象素值進(jìn)行變換的加密算法,該算法易實現(xiàn)。

小知識之Kerckhoffs準(zhǔn)則

密碼學(xué)上的Kerckhoffs準(zhǔn)則(也稱為柯克霍夫假說、公理、或定律)系由奧古斯特·柯克霍夫(Auguste Kerckhoffs在19世紀(jì)提出:即使密碼系統(tǒng)的任何細(xì)節(jié)已為人悉知,只要密匙(key,又稱金鑰或密鑰)未泄漏,它也應(yīng)是安全的。_信息論的發(fā)明者克勞德·艾爾伍德·香農(nóng)(Claude Shannon)則改成說:“敵人了解系統(tǒng)”,這樣的說法則稱為香農(nóng)箴言。 它和傳統(tǒng)上使用隱密的設(shè)計、實作、或其他等等來提供加密的隱晦式安全(Security through obscurity)想法相對。