基于m序列變換和混沌映射的圖像加密算法

基于m序列變換和混沌映射的圖像加密算法是利用m序列發(fā)生器中移位寄存器狀態(tài)的遍歷性進行位置置換;同時,也利用了m序列的偽隨機特性能很好地實現(xiàn)圖像位置置亂。圖像替代是改變圖像每個像素點的值,使替代后的圖像直方圖近似于由隨機序列組成的圖像的直方圖。這種方法可以有效地紊亂圖像,使經(jīng)替代處理后圖像的相關(guān)性進一步降低,從而更好地保護圖像數(shù)據(jù)。

一、Logistic混沌映射

Logistic混沌映射是一個源于人口統(tǒng)計的動力學(xué)系統(tǒng),其系統(tǒng)方程為:

基于m序列變換和混沌映射的圖像加密算法

其中Xk為映射變量,μ為系統(tǒng)參量,它們的取值范圍分別為:-1<Xk<1,0<μ≤2。Logistic映射是一個非常簡單,卻又具有重要意義的非線性迭代方程,當(dāng)1.401155≤μ≤2時,系統(tǒng)處于混沌狀態(tài),此時系統(tǒng)對初始值xo和參數(shù)μ具有敏感依賴性,可用來提供數(shù)量眾多,非相關(guān),類隨機而又確定的可再生信號,便于圖像文件加密和解密使用。

二、m序列變換

1、m序列原理

偽隨機序列可以通過一個佗級線性反饋移位寄存器得到,如圖1所示。

基于m序列變換和混沌映射的圖像加密算法

其中an-1,an-2,a1,ao為寄存器的狀態(tài),反饋線的連接狀態(tài)用ci表示,ci=1表示反饋線接通(參與反饋),ci=o表示反饋線斷開,但是cn=c0=1。寄存器的每一級輸出經(jīng)反饋相加后作為最高位的輸入an。n級線性反饋移位寄存器可能產(chǎn)生的最長周期為2n-1,稱這種最長的序列為m序列。線性反饋移位寄存器能產(chǎn)生m序列的充要條件是反饋移位寄存器的特征多項式為本原多項式。

2、m序列變換

根據(jù)m序列的理論,本文設(shè)計了一種基于m序列的圖像位置置亂方法,即稱之為m序列變換,其變換原理如下:

設(shè)數(shù)字圖像為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)作為其特征方程,且移位寄存器的初始狀態(tài)為非零狀態(tài)。則數(shù)字圖像,f(x,y)的水平坐標(biāo)xr和垂直坐標(biāo)yr可分別用前kx個和后ky個移位寄存器的狀態(tài)來表示,其對應(yīng)關(guān)系如式(2):

基于m序列變換和混沌映射的圖像加密算法

其中r表示m序列由第0時刻開始的移位次數(shù),T∈{o,1,2,…,2k -2}。而akx +ky—i,r和aky一j,r表示前kx個和后ky個移位寄存器在r時刻的狀態(tài)。根據(jù)m序列原理可知Xr∈{o,
1,…,2kx-1)和yr={o,1,…,2ky-1),但xr和yr不能同時為零。在圖像位置置亂中,xr和yr可作為原圖像經(jīng)過m序列變換后的水平和垂直坐標(biāo)。顯然,m序列在移位時得到的xr,
和yr有些超出了圖像的尺寸界限,在m序列變換中對這些點要作舍棄處理。

設(shè)f'(x',y')表示f(x,y)經(jīng)m序列變換后圖像,其中x'=0,1,2,...M -1; y'=0,1,2,…N-1,則m序列變換算法描述如下:

(1)設(shè)f(x,y)的第1個像素點(o,o)映射到,f'(x',y')的除(o,o)外的任意一點(x0',y0'),x0'和y0'分別對應(yīng)前kx個和后ky個移位寄存器的狀態(tài),其對應(yīng)關(guān)系參照式(2)。

(2)m序列移位一次,并由移位寄存器狀態(tài)用式(2)計算x1和y1,檢查x1和y1是否滿足式(3):

基于m序列變換和混沌映射的圖像加密算法

若不滿足,m序列繼續(xù)移位,并由移位寄存器狀態(tài)用式(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序列繼續(xù)移位,按照步驟(2)方法對f(x,y)其它像素點映射到f'(x',y')中,m序列經(jīng)過一個周期后,正好將f(x,y)除(M-1,N-1)點外的其它所有像素點都映射到f'(x',y')的對應(yīng)點,最后將,f(x,y)的(M-1,N-1)點映射到f'(x',y')的(0,0)點。

上述過程實現(xiàn)了圖像的m序列變換。當(dāng)f(x)為本原多項式時,k=kx+ky級線性反饋移位寄存器的周期為2kx+ky一1,舍棄不同時滿足0≤xr≤M -1和0≤yr≤N-1的映射點,再把移位寄存器的全零狀態(tài)補上,上述m序列變換顯然是一一映射,用它可實現(xiàn)圖像的位置置亂。其圖像置亂的結(jié)果取決于任意選定的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灰度圖像進行位置置亂加密處理的實驗結(jié)果如圖2所示,在本文實驗中取x0'=1o和y0'=21。

基于m序列變換和混沌映射的圖像加密算法

很遺憾,在僅用m序列變換進行圖像位置置亂的圖像加密中,如果公布圖像位置置亂的加密算法,此時x0'和y0'失去密鑰作用。圖3是x0'和y0'取不同值得到的解密圖,盡管與原圖像不盡相同,但經(jīng)過簡單的裁剪和拼接,就可恢復(fù)出原圖像。因此,這類算法是不能公開的,其秘密不是完全寓于密鑰,這不符合現(xiàn)代密碼體制的規(guī)范。這是m序列變換的一個缺點。

基于m序列變換和混沌映射的圖像加密算法
為了使得m序列變換適用于現(xiàn)代密碼體制,本文設(shè)計了一種基于m序列變換與Logistic混沌映射相結(jié)合的圖像加密算法,該算法能很好地避免上述問題,其加解密算法步驟如下。

三、基于m序列變換與混沌映射相結(jié)合的圖像加解密算法

加密算法描述如下:

步驟1輸入待加密圖像,用矩陣表示為fo(i,j),i=0,1,…,M -1;j=0,1,…,N-I。設(shè)定圖像加密的迭代次數(shù)r。

步驟2輸入Logistic混沌映射的初始值x0,1,yo,2和參數(shù)μ1、μ2,采用式(1)迭代M×N+k次生成不同矩陣g1(i,j)和g2(i,j),其中o<i< M-1,o≤j≤N-1(說明:其原因是保證Logistic映射的初值敏感性和參數(shù)敏感性,矩陣g1(i,j)和g2(i,j)應(yīng)該舍棄Logistic映射開始迭代七次的數(shù)據(jù))。由于處理的信號是數(shù)字圖像,一般要求矩陣g1(i,j)和g2(i,j)的元素值為正整數(shù)(如g1,g2∈[o,255]),可采用式(4)進行取整操作:

基于m序列變換和混沌映射的圖像加密算法

其中u表示系統(tǒng)迭代次數(shù),這兩個矩陣用于圖像灰度值替代操作的隨機參數(shù)。輸入的初始值x01,xo2和參數(shù)μ1,μ2即為圖像加密的密鑰之一。

步驟3 圖像灰度值替代:對圖像fo(i,j)逐點按照式(5)進行圖像灰度值的替代得到f1(i,j):

基于m序列變換和混沌映射的圖像加密算法

其中L為圖像的灰度級。

步驟4圖像置換,隨機選擇參數(shù)x0'和y0',采用上述的m序列變換對圖像f1(i,j)進行位置置換處理,得到f2(i,j)。

步驟5重復(fù)步驟3和步驟4,直至迭代達到r次為止。

圖像解密是圖像加密的逆過程。

四、實驗結(jié)果及其分析

在Matlab 6.0編程環(huán)境下采用本文算法對大小為128x 256的灰度圖像進行加解密處理,其中xo1=0.4509, x02=0.87807,μ1=1.989,μ2=2,x0'=1o,y0'=21和r=1,其實結(jié)果如圖4所示。

基于m序列變換和混沌映射的圖像加密算法

1、統(tǒng)計分析

(1)直方圖

由圖5所示實驗結(jié)果,很清楚表明,與原始圖像直方圖比較,加密圖像直方圖有很大的不同,它非常均勻。因此,經(jīng)本文算法加密后圖像在傳輸中具有更好的隱蔽性。

基于m序列變換和混沌映射的圖像加密算法

(2)相關(guān)性

原始圖像中相鄰像素的相關(guān)性是很大的,為了破壞統(tǒng)計攻擊,必須降低相鄰像素的相關(guān)性。本文采用式(6)-式(7)計算原始圖像和加密圖像的M×N/2對像素點測試其在水平和垂直方向的相關(guān)系數(shù),其測試值如表1所示。

基于m序列變換和混沌映射的圖像加密算法

其中x和y表示兩個相鄰的像素灰度值,且在實際數(shù)值計算時則采用如式(8)—式(10)的E(x),D(x)和cov(x,y)的離散形式:

基于m序列變換和混沌映射的圖像加密算法

為了描述方便,用rf0,rfm和rfen分別表示原始圖像,m序列變換置亂后圖像和本文算法加密后圖像的相關(guān)系數(shù)。其相關(guān)系數(shù)如表1所示。

基于m序列變換和混沌映射的圖像加密算法

2、Logistic映射的敏感性測試

在圖6實驗中,在只改變混沌系統(tǒng)的一個初始值或一個參數(shù)而其它參數(shù)都相同情況下,均不能正確解密,說明Logistic映射對初始值和系統(tǒng)參數(shù)具有敏感依賴性。因此,在未知準(zhǔn)確密鑰時,即使初始值x01,xo2和參數(shù)μ1,μ2己知,是難以將加密圖像正確解密的。

基于m序列變換和混沌映射的圖像加密算法

3、x0'和y0'對圖像解密的敏感性測試

在圖7實驗中,若只改變端和璣中一個值情況下,則圖像不能正確解密。它說明xL和y可以作為一個圖像加密的密鑰。與僅用m序列變換時使圖像位置置亂加密算法x0'和y0'密鑰失效相比,其不同在于解密圖像盡管幾個分塊的圖像相對位置不變,但我們可以從中理解信息的含義,只是圖像的絕對位置改變了。由于我們在像素值替代時,引入了由混沌系統(tǒng)產(chǎn)生的位置參數(shù),使x0'和y0'參數(shù)也具有參數(shù)敏感性。

基于m序列變換和混沌映射的圖像加密算法

4、算法安全性能分析

從上述實驗結(jié)果及其分析可知,必須正確輸入密鑰,即初始值x01,xo2,參數(shù)μ1、μ2,x0',y0'和迭代次數(shù)'全部正確才能對加密圖像正確解密。因此本算法對圖像加密的密鑰空間在Matlab 6.0試驗平臺上可達到1070,其中參數(shù)x01,xo2,μ1、μ2的空間數(shù)量級均為1015,迭代次數(shù)r空間數(shù)量級為105。x0'和y0'的密鑰空間與圖像尺寸大小有關(guān),其總的密鑰空間大小為M×N-1,詳見m序列變換算法說明。對尺寸大小為128×256的圖像而言,其空間數(shù)量級為105。非授權(quán)者若用窮舉法進行破密是很難在有限的時間內(nèi)破密成功。

根據(jù)Kerckhoffs準(zhǔn)則,加密算法要與密鑰完全分開是現(xiàn)代密碼體制的要求。上述實驗結(jié)果表明本文提出的算法可以公開,完全符合現(xiàn)代密碼體制的要求。

小知識之加密算法

數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應(yīng)的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑來達到保護數(shù)據(jù)不被非法人竊取、閱讀的目的。 該過程的逆過程為解密,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。