圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

為了實(shí)現(xiàn)對(duì)數(shù)字圖像的有效保護(hù),我們提出一種基于Hash函數(shù)和多混沌系統(tǒng)的圖像加密算法。該圖像加密算法通過(guò)像素置亂、灰度置亂及灰度擴(kuò)散實(shí)現(xiàn)圖像文件加密。

一、混沌系統(tǒng)

1、Lorenz混沌系統(tǒng)

本文在像素置亂階段使用Lorenz混沌系統(tǒng),它的動(dòng)力學(xué)方程為:

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

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

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密
2、 Logistic混沌系統(tǒng)

灰度置亂階段采用Logistic系統(tǒng)產(chǎn)生隨機(jī)序列,其原型為:

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

式中:xn映射變量,0≤xn≤1,μ——系統(tǒng)參數(shù),0≤μ≤4。當(dāng)3.5699456…≤μ≤4時(shí),系統(tǒng)進(jìn)入混沌狀態(tài)。文中所采用的Logistic混沌系統(tǒng)中μ取為3.9999。圖1(b)出示了當(dāng)x0=0.123456781時(shí)的混沌實(shí)數(shù)序列圖,從圖中可以看出,序列呈現(xiàn)出一種近化隨機(jī)的狀態(tài)。

二、 圖像文件加密方案

1、圖像像素置亂

圖像像素置亂的主要目的是為了有效地打亂像素位置。常用的像素置亂方法主要有兩種,一是直接對(duì)圖像的像素點(diǎn)坐標(biāo)位置進(jìn)行線性變換,如Arnold變換,幻方變換,3D貓映射,二是先對(duì)圖像進(jìn)行分塊,然后再置亂,但此種方法的安全性不高。本文利用Hash表來(lái)實(shí)現(xiàn)像素位置的變換,置亂表由Hash函數(shù)產(chǎn)生,函數(shù)的基本描述為h(c,λ,d,s,L),其中C代表Lorenz混沌系統(tǒng),λ是變換參數(shù),d是采樣步長(zhǎng),s是采樣起始點(diǎn),L是Hash表長(zhǎng)度。

假設(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的采樣步長(zhǎng);

(3)根據(jù)Hash函數(shù)h(c,λ,d,s,L)構(gòu)造規(guī)則及混沌序列構(gòu)造散列表h2,其中d2是h2的采樣步長(zhǎng);

(4)根據(jù)h1和h2先后對(duì)圖像的行列進(jìn)行變換。

2、圖像灰度置亂

在現(xiàn)代加密體制中,置換和替代仍是加密體制的兩個(gè)基本構(gòu)造模塊,單獨(dú)的置換和替代也能達(dá)到一定的加密效果,但如果能兩者兼顧則效果更好。在上節(jié)中我們利用Hash函數(shù)對(duì)像素的位置進(jìn)行了置亂,但這并不能改變灰度值,加密圖像和原圖像仍具有相同的灰度統(tǒng)計(jì)直方圖,因此必須對(duì)圖像灰度進(jìn)行替代,以抵抗攻擊者的統(tǒng)計(jì)分析。由于圖像灰度的組成元素是0~255的整數(shù)值,本文用一種類似初等密碼中的多表代替密碼對(duì)灰度數(shù)值進(jìn)行置亂,使其不再保持原來(lái)的灰度值。

對(duì)大小為M×N的灰度圖像,圖像灰度置亂步驟為:

(1)根據(jù)初始條件x0由Logistic混沌系統(tǒng)生成一條長(zhǎng)度為l的隨機(jī)序列S,并將其變換為[0,255]之間的整數(shù)值。

(2)將圖像的灰度矩陣按行優(yōu)先拉伸成一維數(shù)組,然后與序列S中的值對(duì)應(yīng)進(jìn)行比特異或,得到序列S;

(3)把S按列優(yōu)先還原成灰度矩陣。

若序列S的長(zhǎng)度l<M×N,則重復(fù)使用S;若序列S的長(zhǎng)度l≥M×N,灰度替代就近似于一次一密,安全性則大大加強(qiáng)。

加密算法中像素灰度值的替代處理實(shí)際上也是灰度空間的置換,替代過(guò)程使灰度值相近的兩個(gè)相鄰像素,在經(jīng)過(guò)處理后,灰度值相差很大,徹底打亂了相鄰像素的灰度相關(guān)性。

3、像素灰度值的擴(kuò)散

僅僅對(duì)圖像進(jìn)行像素和灰度的置亂容易受到選擇明文的攻擊,攻擊者可以選擇單個(gè)像素點(diǎn)的變化,而得到像素位置變化的對(duì)應(yīng)關(guān)系,而擴(kuò)散機(jī)制的引入則可以很好地避免這一弱點(diǎn),良好的擴(kuò)散機(jī)制不僅可以使明文的一位灰度值發(fā)生變化時(shí)能夠迅速的引起其后的所有灰度值發(fā)生變化,有效地抵御差分攻擊,而且還能起到很好的灰度置亂作用。為此,引入如下擴(kuò)散公式:

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

式中:P(k)——待處理的像素值,c(k一1)——上一個(gè)處理過(guò)的像素的灰度值,D——擴(kuò)散因子,x0——初始密鑰面控制生成;N——灰度級(jí)。

4、圖像文件加密和解密過(guò)程

根據(jù)以上分析,可得到圖像文件加密的基本流程,如圖2所示。

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

加密步驟描述如下:

設(shè)圖像像素所表示的二維數(shù)組為G=(gi)M×N,其中M×N是圖像的大小,gi為坐標(biāo)(i,j)處的像素值。

(1)由Lorenz系統(tǒng)產(chǎn)生初始值,將明文圖像按2—1節(jié)所示的方法進(jìn)行像素置亂,置亂后輸出圖像為G’;

(2)由Logistic系統(tǒng)產(chǎn)生混沌序列并按2—2節(jié)的多表代替規(guī)則對(duì)G’進(jìn)行灰度置亂,置亂后輸出的圖像為G”;

(3)對(duì)G”進(jìn)行灰度擴(kuò)散,輸出即為密文圖像;出于安全性的考慮可對(duì)(2),(3)兩步重復(fù)多次。

解密過(guò)程與加密過(guò)程相似,其中擴(kuò)散的逆變換公式為:

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

三、模擬實(shí)驗(yàn)及性能分析

1、實(shí)驗(yàn)結(jié)果

本文的實(shí)驗(yàn)平臺(tái)為Matlab 7.0,選取256×256的Lena灰度圖像進(jìn)行實(shí)驗(yàn)。其中Lorenz系統(tǒng)的密鑰(x0,λ,d,s)=(0.42,10的10次方,3,300),面為初始值。Logistic系統(tǒng)的初始值為0.12345678901234,隨機(jī)序列S的長(zhǎng)度l=2000。

加解密效果如圖3所示,其中圖3(a)為明文圖像,圖3(b)為加密后圖像,圖3(c)是Logistic系統(tǒng)密鑰取為0.12345678901235時(shí)的解密圖像,圖3(d)為密鑰正確時(shí)的解密圖像。

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

2、統(tǒng)計(jì)分析

(1)灰度直方圖

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

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

(2)相鄰像素的相關(guān)性

由圖像的特性可知,一幅圖像中相鄰像素間存在較大的相關(guān)性,這也使得攻擊者經(jīng)常利用統(tǒng)計(jì)分析的方法對(duì)圖像進(jìn)行密碼分析,好的加密算法應(yīng)當(dāng)有效地打亂這種相關(guān)性。為此,可以借助概率論的相關(guān)系數(shù)來(lái)衡量相鄰像素的相關(guān)性,相關(guān)系數(shù)定義如下:

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

式中:cov(x,y))——協(xié)方差,D(x) ——方差,E(x)——均值,xy——相鄰像素的灰度值。

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

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

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

3、差分攻擊

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

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

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

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

4、密鑰空間及敏感性分析

(1)密鑰空間

在像素置亂階段,對(duì)Lorenz混沌初始條件,散列函數(shù),以及參數(shù)見進(jìn)行窮盡攻擊是不可能的,假設(shè)對(duì)于一個(gè)M×N的256級(jí)的灰度圖像,行變換序列和列變換序列分別有M!和N!種,因此,要加密一個(gè)大小為M×N且灰度級(jí)為256的圖像,可用的初始序列和變換序列有M!×N!種情況。在灰度置亂階段,由于Logistic混沌隨機(jī)序列了的引入,當(dāng)S的長(zhǎng)度為L(zhǎng)時(shí),理論上有256L個(gè)不同的值,同時(shí)厶的取值可以是從1到圖像向量拉伸的長(zhǎng)度M×N,總的組合種類數(shù)為:

圖像加密算法之基于Hash函數(shù)和多混沌系統(tǒng)的加密

可見,若把像素置亂與灰度置亂結(jié)合起來(lái)的密鑰空間按照目前的計(jì)算條件對(duì)其進(jìn)行窮舉攻擊是根本不可能的。

(2)密鑰敏感性

好的圖像加密算法在加密過(guò)程中應(yīng)對(duì)密鑰非常敏感,密鑰的一點(diǎn)細(xì)微變化都能引起密文的極大變化,這包括兩方面含義:一是加密密鑰的細(xì)微改變,應(yīng)使兩幅密文圖像幾乎完全不同;二是解密密鑰的細(xì)微改變,其解密過(guò)程將失敗。

仿真實(shí)驗(yàn)結(jié)果表明,當(dāng)Logistic系統(tǒng)的初始密鑰分別為0.12345678901234和0.12345678901235時(shí),加密后的兩幅圖像中有99.26%的像素灰度值不相同,密鑰的微小變化導(dǎo)致密文幾乎完全不同。同樣,在解密過(guò)程中,密鑰的微小變化也會(huì)導(dǎo)致解密的失敗,如圖3,圖3(a)為明文圖像,圖3(b)是初始密鑰為0.12345678901234加密圖像,圖3(c)是解密密鑰取為0.12345678901235時(shí)的解密圖像,從兩幅圖像看,解密幾乎完全失敗。因此本文算法在加解密過(guò)程中都有良好的密鑰敏感性。

小知識(shí)之?dāng)U散因子

擴(kuò)散因子:這是一個(gè)用于評(píng)估期刊影響力的學(xué)術(shù)指標(biāo),顯示總被引頻次擴(kuò)散的范圍。具體意義為期刊當(dāng)年每被引100次所涉及的期刊數(shù)。

擴(kuò)散因子= 總被引頻次涉及的期刊數(shù)×100/總被引頻次