基于置亂和m序列整數(shù)調制的圖像加密算法

圖像文件加密主要包含兩種技術,一種是位置置亂技術,即改變圖像的相互位置關系,降低圖像的相關性,從而達到圖像文件加密的目的。另一種是像素值替代技術,即改變圖像每個像素點的像素值,降低圖像相鄰像素之間的相關性,從而更好地保護圖像數(shù)據(jù)。這兩種方法或多或少的都存在有一些缺陷,為此,我們在研究m序列產生原理的基礎上,提出了基于置亂和m序列整數(shù)調制的圖像加密算法。這種方法可以有效地紊亂圖像,而且還具有很好的安全性。

一、正弦混沌映射

正弦映射是一個非線性動力系統(tǒng),其方程為:

基于置亂和m序列整數(shù)調制的圖像加密算法

其中μ為正弦映射的系統(tǒng)參數(shù)(0<μ≤1),其取值大小決定正弦映射的周期、分岔與混沌三種狀態(tài);而xn∈[-1,0)或者xn∈(0,1]。通常采用Lyapunov指數(shù)和功率譜兩種方法來研究正弦映射的混沌行為。

1、Lyapunov指數(shù)法

對一維動力系統(tǒng)xn+1=f(xn),其Lyapunov指數(shù)定義為:

基于置亂和m序列整數(shù)調制的圖像加密算法

因此,正弦映射量xn+1=μsin( πxn)的Lyapunov指數(shù)為:

基于置亂和m序列整數(shù)調制的圖像加密算法

當λ>O時,正弦映射處于混沌狀態(tài),且此時對初始值敏感;當λ<O時,正弦映射處于周期狀態(tài),且對初始值不敏感,而λ=O為臨界狀態(tài)。Lyapunov指數(shù)大于零是判斷非線性系統(tǒng)混沌行為的一個必要條件,但不是充分條件。

2、功率譜方法

對于時間序列x1,x2,…,xN,其功率譜可以通過以下步驟進行計算:

1)先對N個采樣值加上周期條件知Xn+j=Xj,計算自相關函數(shù):

基于置亂和m序列整數(shù)調制的圖像加密算法

2)然后對Cj進行離散傅立葉變換,得到傅立葉系數(shù):

基于置亂和m序列整數(shù)調制的圖像加密算法

記ak=Re( Pk),bk=Im( Pk),則有Qk=ak2+bk2。這里稱Qk為功率譜或者功率譜密度函數(shù)。

圖1為正弦映射在不同系統(tǒng)參數(shù)下產生序列的功率譜,從功率譜進行分析可以觀察到典型的混沌特性。當功率譜圖具有單峰(或多峰),則對應于周期(或擬周期)序列,如圖1(a)所示??梢则炞C,當時,正弦映射的Lyapunov指數(shù)大于零,但其功率譜為單峰,此時由正弦混沌系統(tǒng)產生的序列不是混沌序列。當功率譜圖無明顯的峰值或峰值連成一片,則對應混沌序列,如圖1(b)所示o以上表明,取定一個大于零的系統(tǒng)參數(shù)p后,可以進一步計算序列的功率譜,由此確定序列是否為混沌序列。

基于置亂和m序列整數(shù)調制的圖像加密算法

二、m序列變換與m序列整數(shù)調制

1、m序列原理

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

基于置亂和m序列整數(shù)調制的圖像加密算法

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

2、m序列變換

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

設數(shù)字圖像為f(x,y),x=0,1,…,m-1;y=0,1,…,n-1,若m和m滿足2kx-1<m<2kx和2ky-1<n<2ky,取一個k=kx+ky級線性反饋移存器的本原多項式f(x)作為其特征方程,且移位寄存器的初始狀態(tài)為非零狀態(tài)。則數(shù)字圖像f(x,y)的水平坐標≈和垂直坐標兒可分別用前kx和后ky個移位寄存器的狀態(tài)來表示,其對應關系如下式:

基于置亂和m序列整數(shù)調制的圖像加密算法

其中r表示m序列由第0時刻開始的移位次數(shù),r∈{0,1,2,…,2k-2}。而akx+ky-i,r和aky-j,r分別表示前kx個和后ky個移位寄存器移位r次的狀態(tài)。

當然,可任取kx個移位寄存器的狀態(tài)按照不同的排列方式得到xr,剩余的ky個移位寄存器的狀態(tài)也按照不同的排列方式得到Yr,這等效于將移位寄存器的狀態(tài){a0r,a1r,…,akx+ky-i,r}進行排列,為了描述方便,排列后的移位寄存器狀態(tài)用{b0r,b1r,…,bkx+ky-i,r}表示,則(6)式可改為:

基于置亂和m序列整數(shù)調制的圖像加密算法

根據(jù)m序列原理可知xr∈{0,1 ,…,2kx-1}和yr∈{0,1,….2ky-1},但xr和yr不能同時為零。在圖像位置量亂中,x和y可作為原圖像經過m序列變換后的水平和垂直坐標。顯然,只有當m=2kx和n= 2ky時.m序列在移位時得到的‘和y,不可能超出圖像的尺寸界限;否則,由(7)計算得到的毛和兒就有一部分數(shù)據(jù)超出了圖像的尺寸界限,在m序列變換中對這些點要作舍棄處理。因此,m序列變換算法描述如下:

(1)任意選擇表示圖像位置xr與yr時使用的移位寄存器的一種排列方式,并任意選擇(x’o,y'o),將f(x,y)第1個像素點(0.0)的值與f(x,y)中任意一個像素點(x’o.y'o)的值相互交換,x’o和,y’o分別對應移位寄存器經排列后前kx個和后ky食的狀態(tài),其對應關系參照式(7)。其中x’o =0,1,2,…,m- 1;y'o=0,1,2,…,n-1,但x’o和Y'o不能同時取零。

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

基于置亂和m序列整數(shù)調制的圖像加密算法

若不滿足,m序列繼續(xù)移位,并由移位寄存器狀態(tài)用式(7)計算x2和y2,檢查x2和y2是否滿足式(8),直到尋找到滿足式(8)的xr和yr為止,并把此時的xr和yr記為寫x1'和y1',將f(x,y)第2個點的像素值f(x,y)與(x’1.y'1)中點的像素值相互交換。

(3)m序列繼續(xù)移位,按照步驟(2)方法對f(x,y)其他像素點與對應點的像素值相互交換,m序列經過一個周期(t=2k-1)后,正好將f(x,y)除(M -1,N一1)一點外的其他所有像素點與對應點的像素值相互交換了一遍。

(4)最后,m序列繼續(xù)移位,按照步驟(2)方法,此時找到滿足式(8)條件的點為(x'o,y'o)點,將(x,y)的點(M -1,N一1)與點(x’o,y'o)的像素值相互交換。

上述過程實現(xiàn)了圖像的m序列變換。當特征方程f(x)為本原多項式時,k=kx+ky級線性反饋移位寄存器的周期為2kx+ky一1,舍棄不同時滿足0≤xr≤M-1和0≤yr≤N-1的點,用它即可實現(xiàn)圖像的位置置亂。其圖像置亂的結果取決于任意選擇的移位寄存器的排列方式和任意選擇的(x’o,y'o),它們均可作為可作為圖像加解密的獨立密鑰。其中k=kx+ ky個移位寄存器的捧列方式為k!,而x’o和y'o的密鑰空間分別是x’o∈{?0,1,…,m-1}和y'o∈{0,1,…,n-1},但是x’o和y'o不能同時為零。所以,m序列變換的總密鑰空間大小為K!(MN-1)。

基于置亂和m序列整數(shù)調制的圖像加密算法

?圖3是分別采用m序列變換和其他方法對一幅256×256的lenna灰度圖像加密的實驗結果。

從以上實驗結果可以看出,常用的一些位置置亂變換,如8tarid8td映射和Amold變換均需要變換多次后才能達到較好的圖像置亂效果,而m序列變換只需變換一次就可以達到非常好的置亂效果,說明本文提出的m序列變換對圖像進行位置置亂時其加密效率高。原因在于這種方法是依次不斷地交換兩個像素點的位置并利用了m序列的偽隨機特性,加密過程為非線性過程。因此,它不僅圖像文件加密效果好,而且加密效率高。

3、 m序列整救調鑰

設f(x,y),x=0,1,…,M- 1;y=0,1,…,N-1為一幅待加密灰度圖像,灰度級為L∈ {0,1,2,…,255},用正弦映射產生一幅同樣尺寸大小的混沌圖像,用g0(x,y),x∈{0,1,
…,m-1},y∈{0,1.…,n- 1 }表示,其灰度級為f’={ 1,2,…,255}。根據(jù)f(x,y)和g0(x,y)的灰度級范圍,可以取一個本原多項式f(x)=x8+x4+x3+x2+1作為n=8級的m序列產生器的特征方程。依據(jù)m序列原理可知,m序列的周期為p=2n-1=255,即m序列產生器中移位寄存器有255種狀態(tài)(均為非零狀態(tài)),若用它們表示混沌圖像go(x,y)的灰度值,二者正好一一對應,其對應關系如下:

基于置亂和m序列整數(shù)調制的圖像加密算法

其中g0(x,y)表示(x,y)處的混沌圖像g 0(x,y)的灰度值。

因此,圖像的m序列整數(shù)調制方法可描述如下:

(1)待加密圖像f(x,y)在(x,y)處的像素值為f(x,y)≠0,以f(x,y)像素值作為g0(x,y)在(x,y)處像素go(x,y)的m序列移位次數(shù),go(x,y)對應m序列產生器中移位寄
存器的一個初始狀態(tài)vo={a70,a60,a50,a40,a30,a20,a10},經過f(x ,y)次移位后,移位寄存器的狀態(tài)發(fā)生改變,其狀態(tài)變?yōu)関m={a7m,a6m,a5m,a4m,a3m,a2m,a1m},此時v狀態(tài)可對應一個整數(shù)gm(x,y),對應關系為;

基于置亂和m序列整數(shù)調制的圖像加密算法

(2)若待加密圖像f(x,y)在(x,y)處的像素值以f(x,y)=0,g(x,y)= 0。

對所有像素點作上述處理后,得到的所有gm(x,y)構成一個矩陣gm(x,y),它即為m序列整數(shù)調制后的加密圖像。

4、m序列整數(shù)調整的快速算法

從m序列整數(shù)調翩原理可以看出,采用m序列整數(shù)調制進行圖像加密的計算復雜度高,整個加密過程所需要的時間很長,其原因是當f(x,y)的像東值不為零(尤其是較大)時,m序列整數(shù)調鑰的移位次數(shù)也相應增多,造成總的運算復雜度增加。為此,本文設計了一個快速算法:

算法思想:考慮到用m序列整效調制進行圖像文件加密實際上包括很多重復運算,可以把g0(x,y)經f(x,y)≠o次m序列移位后得到gm(x,y)設計成一個映射表(也稱為映射關系>o并將該映射表保存為一幅灰度圖像( en. bmp),其灰度級為{ 1,2,…,255}。此外,用m序列整數(shù)調制進行圖像解密的計算復雜度也很高,類似用m序列整數(shù)調制進行圖像加密的方法把由gm(x,y)≠0和go(x,y)得到f(x,y)≠0也設計成另一個映射表,并保存為另一幅灰度圖像( de. bmp)。

這樣,對圖像f(x,y)進行加密時,當f(x,y)≠0時,只要從映射表( en. bmp)中尋找對應關系就可明顯的提高圖像加密的速度。同理,當gm(x,y)≠0。圖像解密時也是在映射表( de.bmp)中尋找對應關系。

三、 圖像混沌加密算法

第1步 輸入原始圖像,用矩陣表示為fo(x,y),X∈{0,1,…,M-1},y∈{1 0,1.…,N-1},灰度級L=256。

第2步 對fo(x,y)進行圖像預處理:

基于置亂和m序列整數(shù)調制的圖像加密算法

其中g 1(x,y)和g2(x,y)是由(1)式正弦混沌系統(tǒng)迭代并作取整得到的兩幅混沌圖像??墒箞D像經此預處理后f1(x,y)接近于隨機圖像。

當原圖像中含有大量的零并且比較集中或有規(guī)律時,若不作上述頂處理而直接進行m序列整數(shù)調制,其圖像加密效果不理想。因此,上述采用改進的貓映射進行圖像預處理的目的是使m序列整數(shù)調制方法適合于任意圖像文件加密。

第3步用3節(jié)和4節(jié)的m序列整數(shù)調制及其快速算法,將f1(x,y)圖像調制在混沌圖go(x,y)上,得到加密圖go(x,y)。

第4步用2節(jié)m序列變換對gm(x,y)進行圖像的位置置亂,得到f2(x,y)。

解密算法是加密算法的逆過程。

四、基于置亂和m序列整數(shù)調制的圖像加密算法優(yōu)勢

與其他加密算法相比,本文加密算法具有以下優(yōu)點:

(1)m序列變換是利用交換圖像像素點的值,無須證明m序列變換是否為一一映射,采用m序列變換肯定保留了原圖像的所有信息。其加密效果好,效率高,具有很好的保密性,密鑰空間由任意選擇的移位寄存器的捧列方式和任意選擇的(x'0,y'o)決定。m序列變換的總密鑰空間大小為K(MN-1)。

(2)m序列整數(shù)調制與按位異或運算用于圖像文件加密相比,它更難解密。按位異或運算對圖像是一種偽裝,如果揭開這層面紗,一切暴露無遺;而m序列整數(shù)調制是將待加密目像作為m序列整數(shù)調制的調制參數(shù),將待加密圖像信息調制在一幅混沌圖像上,要解密它必須準確知道密鑰x0和μo。

(3)該加密算法對圖像尺寸大小沒有限制。

(4)該加密算法總的密鑰空間非常大。

小知識之M序列

M序列(即De Bruijn序列)又叫做偽隨機序列、偽噪聲(PN)碼或偽隨機碼。可以預先確定并且可以重復實現(xiàn)的序列稱為確定序列;既不能預先確定又不能重復實現(xiàn)的序列稱隨機序列;不能預先確定但可以重復產生的序列稱偽隨機序列。