圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密
為了實現(xiàn)對數(shù)字圖像的有效保護,我們提出一種基于Hash函數(shù)和多混沌系統(tǒng)的圖像加密算法。該圖像加密算法通過像素置亂、灰度置亂及灰度擴散實現(xiàn)圖像文件加密。
一、混沌系統(tǒng)
1、Lorenz混沌系統(tǒng)
本文在像素置亂階段使用Lorenz混沌系統(tǒng),它的動力學(xué)方程為:

當(dāng)a=10,b=8/3,c=28時出現(xiàn)混沌吸引子,系統(tǒng)進入混沌狀態(tài),如圖1(a)所示。Lorenz系統(tǒng)對初始條件是極其敏感的,兩個誤差僅為10.15的初始條件,隨著運行時間的增加,運行軌跡
會出現(xiàn)極大的偏差,并且呈現(xiàn)無規(guī)則性。

2、 Logistic混沌系統(tǒng)
灰度置亂階段采用Logistic系統(tǒng)產(chǎn)生隨機序列,其原型為:
![]()
式中:xn映射變量,0≤xn≤1,μ——系統(tǒng)參數(shù),0≤μ≤4。當(dāng)3.5699456…≤μ≤4時,系統(tǒng)進入混沌狀態(tài)。文中所采用的Logistic混沌系統(tǒng)中μ取為3.9999。圖1(b)出示了當(dāng)x0=0.123456781時的混沌實數(shù)序列圖,從圖中可以看出,序列呈現(xiàn)出一種近化隨機的狀態(tài)。
二、 圖像文件加密方案
1、圖像像素置亂
圖像像素置亂的主要目的是為了有效地打亂像素位置。常用的像素置亂方法主要有兩種,一是直接對圖像的像素點坐標(biāo)位置進行線性變換,如Arnold變換,幻方變換,3D貓映射,二是先對圖像進行分塊,然后再置亂,但此種方法的安全性不高。本文利用Hash表來實現(xiàn)像素位置的變換,置亂表由Hash函數(shù)產(chǎn)生,函數(shù)的基本描述為h(c,λ,d,s,L),其中C代表Lorenz混沌系統(tǒng),λ是變換參數(shù),d是采樣步長,s是采樣起始點,L是Hash表長度。
假設(shè)選擇的圖像大小為MxN,圖像的置亂步驟為:
(1)由Lorenz混沌系統(tǒng)以及初始密鑰產(chǎn)生混沌序列;
(2)根據(jù)Hash函數(shù),h(c,λ,d,s,L)構(gòu)造規(guī)則及混沌序列構(gòu)造散列表h1,其中d1是h1的采樣步長;
(3)根據(jù)Hash函數(shù)h(c,λ,d,s,L)構(gòu)造規(guī)則及混沌序列構(gòu)造散列表h2,其中d2是h2的采樣步長;
(4)根據(jù)h1和h2先后對圖像的行列進行變換。
2、圖像灰度置亂
在現(xiàn)代加密體制中,置換和替代仍是加密體制的兩個基本構(gòu)造模塊,單獨的置換和替代也能達到一定的加密效果,但如果能兩者兼顧則效果更好。在上節(jié)中我們利用Hash函數(shù)對像素的位置進行了置亂,但這并不能改變灰度值,加密圖像和原圖像仍具有相同的灰度統(tǒng)計直方圖,因此必須對圖像灰度進行替代,以抵抗攻擊者的統(tǒng)計分析。由于圖像灰度的組成元素是0~255的整數(shù)值,本文用一種類似初等密碼中的多表代替密碼對灰度數(shù)值進行置亂,使其不再保持原來的灰度值。
對大小為M×N的灰度圖像,圖像灰度置亂步驟為:
(1)根據(jù)初始條件x0由Logistic混沌系統(tǒng)生成一條長度為l的隨機序列S,并將其變換為[0,255]之間的整數(shù)值。
(2)將圖像的灰度矩陣按行優(yōu)先拉伸成一維數(shù)組,然后與序列S中的值對應(yīng)進行比特異或,得到序列S;
(3)把S按列優(yōu)先還原成灰度矩陣。
若序列S的長度l<M×N,則重復(fù)使用S;若序列S的長度l≥M×N,灰度替代就近似于一次一密,安全性則大大加強。
加密算法中像素灰度值的替代處理實際上也是灰度空間的置換,替代過程使灰度值相近的兩個相鄰像素,在經(jīng)過處理后,灰度值相差很大,徹底打亂了相鄰像素的灰度相關(guān)性。
3、像素灰度值的擴散
僅僅對圖像進行像素和灰度的置亂容易受到選擇明文的攻擊,攻擊者可以選擇單個像素點的變化,而得到像素位置變化的對應(yīng)關(guān)系,而擴散機制的引入則可以很好地避免這一弱點,良好的擴散機制不僅可以使明文的一位灰度值發(fā)生變化時能夠迅速的引起其后的所有灰度值發(fā)生變化,有效地抵御差分攻擊,而且還能起到很好的灰度置亂作用。為此,引入如下擴散公式:
![]()
式中:P(k)——待處理的像素值,c(k一1)——上一個處理過的像素的灰度值,D——擴散因子,x0——初始密鑰面控制生成;N——灰度級。
4、圖像文件加密和解密過程
根據(jù)以上分析,可得到圖像文件加密的基本流程,如圖2所示。

加密步驟描述如下:
設(shè)圖像像素所表示的二維數(shù)組為G=(gi)M×N,其中M×N是圖像的大小,gi為坐標(biāo)(i,j)處的像素值。
(1)由Lorenz系統(tǒng)產(chǎn)生初始值,將明文圖像按2—1節(jié)所示的方法進行像素置亂,置亂后輸出圖像為G’;
(2)由Logistic系統(tǒng)產(chǎn)生混沌序列并按2—2節(jié)的多表代替規(guī)則對G’進行灰度置亂,置亂后輸出的圖像為G”;
(3)對G”進行灰度擴散,輸出即為密文圖像;出于安全性的考慮可對(2),(3)兩步重復(fù)多次。
解密過程與加密過程相似,其中擴散的逆變換公式為:
![]()
三、模擬實驗及性能分析
1、實驗結(jié)果
本文的實驗平臺為Matlab 7.0,選取256×256的Lena灰度圖像進行實驗。其中Lorenz系統(tǒng)的密鑰(x0,λ,d,s)=(0.42,10的10次方,3,300),面為初始值。Logistic系統(tǒng)的初始值為0.12345678901234,隨機序列S的長度l=2000。
加解密效果如圖3所示,其中圖3(a)為明文圖像,圖3(b)為加密后圖像,圖3(c)是Logistic系統(tǒng)密鑰取為0.12345678901235時的解密圖像,圖3(d)為密鑰正確時的解密圖像。

2、統(tǒng)計分析
(1)灰度直方圖
直方圖是圖像的重要統(tǒng)計特征,它直觀地反映了數(shù)字圖像的每一灰度級與該灰度級出現(xiàn)頻率的對應(yīng)關(guān)系。圖4(a)是原始圖像(圖3(a))的像素灰度直方圖,圖4(b)則對應(yīng)密文圖像(圖3(b))。根據(jù)仿真顯示,密文與明文的直方圖區(qū)別很大,密文的直方圖分布非常均勻,表明該方案能夠有效抵御基于像素值統(tǒng)計的攻擊。

(2)相鄰像素的相關(guān)性
由圖像的特性可知,一幅圖像中相鄰像素間存在較大的相關(guān)性,這也使得攻擊者經(jīng)常利用統(tǒng)計分析的方法對圖像進行密碼分析,好的加密算法應(yīng)當(dāng)有效地打亂這種相關(guān)性。為此,可以借助概率論的相關(guān)系數(shù)來衡量相鄰像素的相關(guān)性,相關(guān)系數(shù)定義如下:
![]()
式中:cov(x,y))——協(xié)方差,D(x) ——方差,E(x)——均值,xy——相鄰像素的灰度值。

圖5是通過仿真實驗對明文和密文中水平、垂直和對角線方向相鄰像素的相關(guān)性檢測。從圖中可以看出,明文的相鄰像素的相關(guān)性很強,而密文則不同,不管是水平、垂直還是對角線方向分布都比較均勻,這說明密文有效地掩蓋了圖像的統(tǒng)計特征。

3、差分攻擊
通常攻擊者會通過圖像的一點微小變化,比如只改變一個像素,來觀察加密后圖像的變化情況,進而發(fā)掘明密文之間的關(guān)系。為了測試一個像素的改變對整個密文圖像的影響,引入如下兩個量:像素變化率(NPCR)和歸一化平均變化強度(UACI)。對于只有一個像毒聲別的兩幅密文圖像C1和C2,C1(i,j)和C2(i,j)代表兩幅圖像(i,j)點的像素強度,D是一個和c1,c2同樣大小的二值矩陣,若C1(i,j)≠C2(i,j),則D(i,j)=1,否則D(i,j)=0。

其中,W和H是C1,C2的大小。將明文圖像中的第5個像素值為155改為156,仿真實驗結(jié)果如圖6所示,在參數(shù)不變的情況下,當(dāng)?shù)鷥纱我院螅琋PCR≈1。兩幅只有一位像素不同的
圖像,隨著加密次數(shù)的增加,密圖變的幾乎完全不同,原圖的差別擴散到了密圖的整個區(qū)域,因此可以增加迭代次數(shù)來提高加密的安全性,但同時加密的時間復(fù)雜度也會隨之升高。

4、密鑰空間及敏感性分析
(1)密鑰空間
在像素置亂階段,對Lorenz混沌初始條件,散列函數(shù),以及參數(shù)見進行窮盡攻擊是不可能的,假設(shè)對于一個M×N的256級的灰度圖像,行變換序列和列變換序列分別有M!和N!種,因此,要加密一個大小為M×N且灰度級為256的圖像,可用的初始序列和變換序列有M!×N!種情況。在灰度置亂階段,由于Logistic混沌隨機序列了的引入,當(dāng)S的長度為L時,理論上有256L個不同的值,同時厶的取值可以是從1到圖像向量拉伸的長度M×N,總的組合種類數(shù)為:
![]()
可見,若把像素置亂與灰度置亂結(jié)合起來的密鑰空間按照目前的計算條件對其進行窮舉攻擊是根本不可能的。
(2)密鑰敏感性
好的圖像加密算法在加密過程中應(yīng)對密鑰非常敏感,密鑰的一點細(xì)微變化都能引起密文的極大變化,這包括兩方面含義:一是加密密鑰的細(xì)微改變,應(yīng)使兩幅密文圖像幾乎完全不同;二是解密密鑰的細(xì)微改變,其解密過程將失敗。
仿真實驗結(jié)果表明,當(dāng)Logistic系統(tǒng)的初始密鑰分別為0.12345678901234和0.12345678901235時,加密后的兩幅圖像中有99.26%的像素灰度值不相同,密鑰的微小變化導(dǎo)致密文幾乎完全不同。同樣,在解密過程中,密鑰的微小變化也會導(dǎo)致解密的失敗,如圖3,圖3(a)為明文圖像,圖3(b)是初始密鑰為0.12345678901234加密圖像,圖3(c)是解密密鑰取為0.12345678901235時的解密圖像,從兩幅圖像看,解密幾乎完全失敗。因此本文算法在加解密過程中都有良好的密鑰敏感性。
小知識之?dāng)U散因子
擴散因子:這是一個用于評估期刊影響力的學(xué)術(shù)指標(biāo),顯示總被引頻次擴散的范圍。具體意義為期刊當(dāng)年每被引100次所涉及的期刊數(shù)。
擴散因子= 總被引頻次涉及的期刊數(shù)×100/總被引頻次










