圖像加密算法之排序變換加密
根據(jù)排列與圖像置亂之間的關(guān)系,利用混沌映射,提出一種新的生成排列的方法,并由此得到圖像置亂所需的行置亂矩陣和列置亂矩陣,實現(xiàn)了圖像文件的循環(huán)迭代加密。通過一系列圖像置亂效果評價指標(biāo)的測試,表明該加密算法操作簡單,具有較高的執(zhí)行效率,且有良好的置亂效果以及良好的安全性。
一、加密算法原理
對于大小為M×N的圖像AM×N,由于任一置換p都可以分解為若干個互不相交的輪換之積如果直接得到{1,2,3,…,M×N}上的全排列,則面臨易被分解為輪換之積繼而解密出圖像文件的問題。因此較好的做法是對原圖像文件分別進行行置換和列置換操作。由于圖像具有M行N列,在行置換時,對應(yīng)于每一行,均生成{1,2,3,…,N}上的排列,進行M次合并后得到“行置換矩陣”。同理,在列置換時,對應(yīng)于每一列,均生成{1,2,3,…,M}上的排列,進行N次得到“列置換矩陣’’。為了得到行(列)置換矩陣需要生成給定集合上的排列??紤]到加密圖像文件的安全傳輸以及正確解密,因此希望生成排列的算法盡可能簡單,并且傳輸該算法的參數(shù)個數(shù)盡可能少。目前,能夠滿足這些要求來生成排列變換的一種技術(shù)是使用混沌映射。
混沌現(xiàn)象是一種非線性動力系統(tǒng)中出現(xiàn)的類隨機過程,該過程是非周期的并且對初值具有很強的依賴性生成的隨機序列具有良好的偽隨機性。最早將混沌系統(tǒng)理論應(yīng)用于加密算法的是M atthews,由于混沌系統(tǒng)具有優(yōu)良的統(tǒng)計特性以及不可預(yù)測性所以近年來被廣泛應(yīng)用于圖像文件加密和數(shù)字通信領(lǐng)域。本文根據(jù)置換群的性廄利用一維混沌系統(tǒng),給出一種將實數(shù)混沌序列轉(zhuǎn)化為給定集合上整數(shù)排列的簡單方法以實現(xiàn)對圖像文件的置亂加密。具體做法是利用混沌系統(tǒng)生成實值序列,為了保證序列的隨機性,舍棄起始的序列,從中間某一位置開始取長度為2×M×N的隨機序列,進行擴大取整前M×N個隨機整數(shù)用于生成行置換矩陣,后M×N個隨機整數(shù)用于生成列置換矩陣,并轉(zhuǎn)化為與原圖像大小相同的矩陣形式,稱之為行與列隨機矩陣。
首先考慮生成行置換矩陣,記原圖像矩陣每一行的N個數(shù)順序排列時的下標(biāo)為對應(yīng)像素點的原始位置,即圖像每一行像素的原始位置為{1,2,3,…,N}。對行隨機矩陣而言,每一行均有N個隨機整數(shù),本文提出的將N個隨機整數(shù)轉(zhuǎn)化為1到N的一個排列的方法為:從第二個數(shù)開始將該隨機數(shù)與其之前的所有隨機數(shù)逐一進行模N比較,一旦該數(shù)之前的隨機數(shù)中存在與該數(shù)模Ⅳ后相同的隨機數(shù),則對該隨機數(shù)執(zhí)行加1操作,再重新與其之前的隨機數(shù)進行模N比較,反復(fù)進行,直到得到N個模N后互不相同的數(shù),用模N后的值代替原有的值,即得到一個1到N的完整排列。對M行采用相同的方法進行處理可以得到行置換矩陣。圖像行置換的方法是將原圖像矩陣每一行的所有像素點移至行置換矩陣中該行對應(yīng)位置表示的位置處。例如,若圖像的列值為5,與行置換矩陣相結(jié)合,圖像某一行在行置換矩陳,電的對應(yīng)須為[3,5,2,1,4],則該行變化前后的關(guān)系為:
,表示將原圖像中該行的第1位移至第3位第2位移至第5位,以此類推,完成對圖像的行置亂加密。同理對列隨機矩陣的每一列進行模M處理,得到列置換矩陣。將列置換矩陣與圖像矩陣相結(jié)合,按相同的方法對圖像像素點進行移動,以實現(xiàn)對圖像文件的列置亂加密。
這樣生成排列的好處在于:只需對與圖像大小相同的隨機序列進行處理并且一旦得到置換矩陣便可以很方便的對圖像文件進行迭代加密,以得到更好的加密效果。圖像加密算法過程如下:
1、原圖像的加密算法
Step1:輸入原圖像及混沌系統(tǒng)的初值,根據(jù)混沌映鼽得到隨機實數(shù)序列,對序列進行放大取整得到行與列隨機矩陣。
Step2:將行隨機矩陣每一行的Ⅳ個隨機整數(shù)變換為1到N的一個完整排列,進行M次,得到行置換矩陣。同理,將列隨機矩陣每一列的M個隨機整數(shù)變換為1到M的一個完整排列,進行N次得到列置換矩陣。
Step3:將待加密的圖像矩陣與行置換矩陣相結(jié)合,得到行加密后的結(jié)果圖像。再與列置換矩陣相結(jié)合,得到經(jīng)過行與列加密后的加密圖像文件。
Step4:完成一次迭代循環(huán)次數(shù)加1,判斷是否達到加密效果,如果滿足則終止程序,否則返回Step3。
2、加密結(jié)果圖像解密算法的實現(xiàn)
利用接收到的密鑰,重構(gòu)出行與列置換矩陣,將加密圖像文件矩陣與置換矩陣進行逆向運算,即可以獲得解密的結(jié)果圖像文件。
根據(jù)加密算法的設(shè)計思想一旦得到行與列置換矩陣,那么在圖像文件迭代加密過程中,置換矩陣并不改變,即利用同一個行與列置換矩陣對圖像文件進行循環(huán)迭代加密。加密算法中迭代次數(shù)的選擇是根據(jù)我們對圖像文件加密效果的要求而定的,而加密效果的評定是通過對實驗運行的結(jié)果圖像進行主觀評價,可以根據(jù)自己的要求設(shè)置迭代次數(shù)。
二、實驗結(jié)果
實驗部分采用表達簡潔、計算方便的Logistic混沌系統(tǒng),生成實數(shù)序列,Logistic映射定義為:
![]()
其中初值a0∈(0,1),參數(shù)μ∈(0,4],當(dāng)3. 569946…≤μ≤4時,Logistic系統(tǒng)處于混沌狀態(tài)。當(dāng)給定初值ao、參數(shù)μ后,根據(jù)(1),可以得到混沌實數(shù)序列,對生成的實數(shù)序列進行放大取整,得到整數(shù)序列,進行處理后生成行與列置換矩陣,對原圖像首先進行行置挽再對行置換圖像進行列置挽完成一次加密,迭代次數(shù)加1。
對大小為256×256的lena圖像迭代加密3次,圖1分別給出了原圖像、加密后的結(jié)果圖像、正確解密的結(jié)果圖像和不能正確解密的結(jié)果圖像。

其中加密圖像時混沌系統(tǒng)的初值為隨機生成的0. 6154,參數(shù)為4.0,而當(dāng)初值有0.0000001的改變時,便不能對加密圖像進行正確的解密,表明本加密算法對初值具有極高的敏感性以及較高的安全性。
圖2給出對圖1的lena圖像用本方法進行迭代加密的結(jié)果圖像。

其中加密圖像時混沌系統(tǒng)的初值為隨機生成的0. 4565,參數(shù)為4.0,可以直觀的看出隨著加密次數(shù)的增大,加密結(jié)果圖像越來越好。采用先行后列的置亂方式,可以使任一個像素點遍歷整幅圖像,以達到更好的加密效果。
三、加密算法分析
為了對文中提出圖像加密算法的性能進行分析,對像素個數(shù)為124× 124的圖像,隨機選取20個初值,迭代加密5次后,對每一次的結(jié)果圖像進行分析得到以下統(tǒng)計數(shù)據(jù)。
1、 不動點分析
本圖像加密算法在加密圖像文件時,只是像素點位置的變化,像素點的灰度值并沒有發(fā)生變化。不動點分析主要是統(tǒng)計圖像加密前后圖像像素點中相對位置沒有發(fā)生改變的個數(shù)。不動點越少,表示圖像的加密效果越好,加密算法的性能越好。表1給出了124×124加密結(jié)果圖像中不動點占總像素點比例的統(tǒng)計結(jié)果。由表1可知,用本加密算法得到的結(jié)果圖像中,不動點個數(shù)占整幅圖像像素點個數(shù)的比例為0. 64 -0. 92,表明了圖像的像素點基本都發(fā)生了位移,加密算法具有較好的置亂效果。

2、移動平均距離分析
本圖像加密算法的加密思路是對圖像先進行行置換加密,再進行列置換加密,移動平均距離的分析是對加密前后圖像中所有像素點移動的距離進行統(tǒng)計平均。為了方便統(tǒng)讓考慮到行置換時,各個像素點只是在本行進行移動,縱向位移為0,在列置換時,各個像素點的橫向位移為0。所以先分別統(tǒng)計出行與列置換時所有像素點移動的總距離分別為S1和S2,則移動平均距離為
。圖像像素點的移動平均距離反映了像素點總體的位移情形,移動的平均距離越大,得到加密結(jié)果圖像中各個像素點的相關(guān)性越差算法的置亂性能越高。表2給出了124×124加密結(jié)果圖像中所有像素點移動平均距離的統(tǒng)計結(jié)果。

由表2知,加密結(jié)果圖像的移動平均距離為40. 7676- 41. 3450,移動平均距離的平均值為410846,基本上與隨機置亂移動的平均值124/3≈41. 333相符,表明了加密算法具有較好的性能。
3、自然序分析
對自然序進行分析是考慮圖像在加密前后與其周圍像素點的相關(guān)性能,即若原圖像雖然經(jīng)過置亂加密,但不排除在原圖像中相鄰的像素點在置亂加密的結(jié)果圖像中依然處于相鄰的位置,這種情形稱為自然序。如果加密的結(jié)果圖像中存在過多的自然序,則使得加密圖像不能很好的隱藏原圖像中的信息。所以自然序的數(shù)目越少,加密算法的性能越好。表3和表4給出分別用原圖像中2×2與3×3的分塊對加密圖像中的自然序進行統(tǒng)計的結(jié)果。

由表3和表4知當(dāng)分別采用原圖像中所有的2×2和3×3的分塊測試加密結(jié)果圖像的自然序占圖像中全部分塊的比例時,對2×2分塊而言,自然序平均所占的比例為9. 6118e—007,這個數(shù)已經(jīng)相當(dāng)?shù)男?。而?dāng)用3×3的分塊時,所有的情形均為0,表示加密圖像中任意3×3的分塊或者大于3×3的分塊中已經(jīng)沒有和原圖像中相同的像素點,它們被置亂至圖像的其它位置,所以本算法可以使像素點遍歷整幅圖像,具有良好的置亂性能。
4、漢明相關(guān)性分析
漢明相關(guān)性分析主要是對加密結(jié)果圖像的任意一行(列)與其它各行(列)的相關(guān)性進行分析。對任意兩個序列x= {x1,x2,x3,...,Xn}與y= {y1,y2,y3,...,yn),它們的漢明相關(guān)定義為:

統(tǒng)計任意行(列)的所有元素與其它各行(列)相應(yīng)位置具有相同元素的概率,漢明值越大則相關(guān)性越強,算法的置亂性能就越差。表5和表6分別給出了對加密圖像的任意一行(列)與其它各行(列)在相同位置具有相同元素的個數(shù)的統(tǒng)計結(jié)果。

由表5和表6的行(列)漢明相關(guān)性平均值知,對加密圖像的行與列而言,其任意一行(列)的所有元素與其它行(列)的所有元素在相應(yīng)位置上有不到一個相同的像素值。
小知識之不動點
不動點,是一個函數(shù)術(shù)語,在數(shù)學(xué)中是指“被這個函數(shù)映射到其自身一個點”。









