緱新科 吳貽峰
(蘭州理工大學(xué)電氣工程與信息工程學(xué)院 蘭州 730050)
隨著互聯(lián)網(wǎng)與數(shù)字圖像處理技術(shù)的快速發(fā)展,以及人們信息交流種類的變化,信息安全問題正在變得日益突出。傳統(tǒng)的保密通信方案具有算法復(fù)雜、速度慢的缺點(diǎn),在面對當(dāng)前信息傳輸中的圖像、視頻等數(shù)據(jù)量大而且冗余度高的信息時(shí)遇到了巨大挑戰(zhàn),而混沌加密依靠加密序列的生成方式而非復(fù)雜的算法,能夠很好地解決這個(gè)問題?;煦缡怯煞蔷€性確定系統(tǒng)產(chǎn)生的類隨機(jī)現(xiàn)象,它具有遍歷性、有界性、對初始條件的極端敏感性等許多特點(diǎn),在物理、電子、生物、醫(yī)學(xué)等許多領(lǐng)域都有廣泛的應(yīng)用[1~4]。
近年來,利用混沌序列加密圖像受到了研究學(xué)者越來越多的重視,但是傳統(tǒng)的混沌加密算法大多利用的是簡單的低維混沌系統(tǒng),安全性較低[5]。文獻(xiàn)[6~7]中運(yùn)用Logistic映射設(shè)計(jì)的像素值改變和位置置亂的加密算法,密鑰空間小,而且密鑰與明文像素?zé)o關(guān),使之無法抵抗差分分析。文獻(xiàn)[8]中王帥等提出的多混沌快速圖像加密算法運(yùn)用Logistic映射分別產(chǎn)生Arnold映射和Kent映射的控制參數(shù),生成混沌序列,前者用于圖像像素置亂,后者用于像素灰度擴(kuò)散,具有較好的加密效果,但是其采用的混沌系統(tǒng)都是低維系統(tǒng),復(fù)雜性較低,密鑰空間較小。文獻(xiàn)[9]中提出的一維混沌和超混沌的混合加密以及文獻(xiàn)[10]中提出的低維混沌與三維混沌的混合加密方式能夠提供隨機(jī)性更好的隨機(jī)序列,更大的密鑰空間,但是抗差分能力較弱而且加密速度并不理想。此外,在該領(lǐng)域中基于混沌的圖像加密算法大多是通過Matlab實(shí)現(xiàn)的,雖然Matlab提供了豐富的函數(shù)庫,方便算法的編寫,但是算法的執(zhí)行效率受到了較大影響。
基于以上分析,本文采用了超混沌與三維混沌混合加密的思想,并將明文關(guān)聯(lián)到加密密鑰的產(chǎn)生,通過C++對算法進(jìn)行實(shí)現(xiàn),使得算法的速率得到較大提升,安全性更高、抗差分能力更強(qiáng)。
超混沌系統(tǒng)是指具有兩個(gè)及以上正李雅普諾夫指數(shù)的混沌系統(tǒng)。本文采用的Kawakami混沌系統(tǒng)[11]是一個(gè)二維超混沌系統(tǒng),系統(tǒng)方程如下:
其中c,d是系統(tǒng)的控制參數(shù),n∈[1,+∞)。如圖1所示:當(dāng)c=0.10或0.15,d=1.60時(shí),取X、Y的初始值均屬于(0,1),系統(tǒng)具有兩個(gè)正的李雅普諾夫指數(shù)0.235和0.152,處于超混沌狀態(tài),且X的取值范圍為(-1.65,1.25),Y的取值范圍為(-1.59,1.12),具有比一維系統(tǒng)更復(fù)雜的動力學(xué)行為。
三維Bao系統(tǒng)[12]是一個(gè)含有一項(xiàng)二次非線性項(xiàng)的連續(xù)自治耗散系統(tǒng),它的系統(tǒng)方程如式(2)所示。
當(dāng) a=20,b=4,c=32時(shí),該系統(tǒng)呈混沌狀態(tài),它的三個(gè)李雅普諾夫指數(shù)分別為2.8014、0和-18.7719,并結(jié)合圖2所示的Bao系統(tǒng)的相軌圖可以看出該系統(tǒng)具有比一般混度系統(tǒng)更為復(fù)雜的拓?fù)浣Y(jié)構(gòu)和相空間,因此選用該混沌系統(tǒng)用來加密會有更高的安全性。
圖1 Kawakami映射圖
圖2 Bao系統(tǒng)相軌圖
基于混沌的圖像加密算法一般分為置亂和擴(kuò)散兩部分。置亂即打亂圖像的像素排列,使圖像呈現(xiàn)無序、類似噪聲的狀態(tài)設(shè)圖像大小為M×N,pi,j表示第i行第j列處像素值的大小。置換過程如下:
步驟1:給定Kawakami超混沌系統(tǒng)的初始值,讓系統(tǒng)先迭代N0次以防止過渡效應(yīng),然后迭代M次生成兩組長度為M的混沌序列,記為,同時(shí)任意選取三組(x,y)序列對,并做如下計(jì)算。
通過計(jì)算得到 Xbgn,Ybgn,Zbgn的值并將它們作為Bao系統(tǒng)的x,y,z參數(shù)的初始值。
在本輪設(shè)計(jì)中超混沌的初始值以及選取的序列對均可作為密鑰。
步驟2:
利用兩組混沌序列計(jì)算:
則 Xi,Yj均屬于[0,255],將第(i,j)點(diǎn)的像素值與第(Xi,Yj)點(diǎn)的像素值交換,即:
依次對每個(gè)像素進(jìn)行上述操作,完成對全部像素的置換。
對圖像進(jìn)行置亂操作,只能從視覺上對圖像進(jìn)行掩蓋,并不能改變原始圖像的灰度直方圖;像素之間的相關(guān)性會降低,但并不會呈現(xiàn)出完全的不相關(guān),因此它的安全性并不高。像素替換能夠改變像素值,當(dāng)選擇的密鑰序列隨機(jī)性很好時(shí),像素之間能夠呈現(xiàn)出完全的不相關(guān),而擴(kuò)散能夠?qū)蝹€(gè)明文或密鑰的變化產(chǎn)生的影響擴(kuò)散到整幅圖像中。大部分的混沌加密算法的抗差分性不好,主要是沒有綜合利用替換和擴(kuò)散操作,所以本文設(shè)計(jì)的算法綜合利用了這兩種操作。
步驟1:將Kawakami混沌映射迭代過程中產(chǎn)生的 Xbgn,Ybgn,Zbgn輸入到 Bao系統(tǒng)中,通過龍格-庫塔(Runge-Kutta)算法將混沌系統(tǒng)反復(fù)迭代,同樣是先迭代N0次以防止過渡效應(yīng)。Bao系統(tǒng)每迭代一次,產(chǎn)生一組新值 (b1,b2,b3),記生成的序列為
步驟2:計(jì)算
并計(jì)算 t=mod(Pi,j,3)的值,如果t=0,依次將(bi+1,bi+2,bi+3) 放 入 Bk中 ;如 果 t=1,依 次 將(bi+2,bi+3,bi+1) 放 入 Bk中 ,如 果 t=2,依 次 將(bi+3,bi+1,bi+2)放入 Bk中。重復(fù)此過程直至產(chǎn)生M×N-1個(gè)bi值,即 Bk構(gòu)造完成。
步驟3:將整幅圖像像素按行組成序列Pi(i=0,1,2……M×N-1) ,設(shè) 加 密 序 列 為Ci(i=0,1,2……M×N-1)。然后根據(jù)公式(7)進(jìn)行替代和擴(kuò)散操作。
當(dāng)加密第一個(gè)像素時(shí),可以預(yù)先設(shè)置一個(gè)參數(shù)C0∈(0,256)。在該加密公式中引入了sum(圖像像素值之和),每一個(gè)加密的像素值不僅與上一個(gè)加密的像素值相關(guān)而且與sum相關(guān),充分加大了明文與密文之間的聯(lián)系,加強(qiáng)了密鑰對像素值的敏感性。
步驟四:
重復(fù)上述加密過程T次,完成加密。
解密為該過程的逆過程,主要步驟如下:
步驟1:計(jì)算
步驟2:將第 (Xi,Yj)點(diǎn)的像素值與第(i,j)點(diǎn)的像素值交換。
為了測試加密算法的性能,實(shí)驗(yàn)中選用了8位256色的Lena圖像,其大小為300×300bit,在Visual Studio 2008下用C++對算法進(jìn)行實(shí)現(xiàn)并進(jìn)行性能測試。取Kawakami超混沌系統(tǒng)初始值為(0.7542,0.8215),N0=500。在2.1節(jié)中選取的序列對為第2017、2100、2188次系統(tǒng)的迭代值,通過計(jì)算得到Xbgn,Ybgn,Zbgn的 值 分 別 為 -8.3607224954851009、-6.8893253737156357、-8.8744568974188294,即Bao系統(tǒng)的初始值。實(shí)驗(yàn)中C0=123,sum=11150332,加密輪次T=3。加密的效果如圖3(c)所示,可見整幅圖像完全混亂,無法辨識。其中圖3(a)為原圖,圖3(b)為置換之后的圖像。
圖3
圖4 (a)和4(b)分別給出了原始圖像的灰度直方圖和加密后圖像的灰度直方圖,由圖4(b)可見加密后的圖像的像素值分布很均勻,每種像素在加密圖像中出現(xiàn)的概率幾乎相等,而原始圖像中不同像素出現(xiàn)的概率差別很大,因此加密后的圖像能夠很好地抵抗基于統(tǒng)計(jì)分析的攻擊。
一個(gè)好的圖像加密算法應(yīng)該具有足夠大的密鑰空間來抵抗攻擊者的類似窮舉的攻擊。在該算法中Kawakami超混沌系統(tǒng)的參數(shù)c,d和系統(tǒng)的初始值,Bao系統(tǒng)的系統(tǒng)參數(shù)a,b,c和通過Kawakami超混沌系統(tǒng)產(chǎn)生的Bao系統(tǒng)的初始值,加密輪次T,擴(kuò)散初始參數(shù)C0均可以作為密鑰,同時(shí)該算法中將像素值總和sum引入替換過程,使得算法的密鑰空間更大。在整個(gè)加密過程中每個(gè)數(shù)據(jù)用16位的浮點(diǎn)型表示,密鑰空間已經(jīng)大于1080,因此該算法能夠有效地抵抗窮舉攻擊,滿足正常加密需求。
圖4
信息熵是體現(xiàn)信息隨機(jī)性好壞的最重要的指數(shù),圖像信息熵能夠很好地表達(dá)圖像中像素值的分布,即隨機(jī)性是否良好。對于一個(gè)信息源x的信息熵計(jì)算方法如下:
其中n表示像素總數(shù),Xi∈n,p(xi)表示像素值Xi在該幅圖像中出現(xiàn)的概率,H(x)的值越大越好。對于一幅256色的圖像加密后的理想信息熵為lo,即8,因此,加密后的圖像的信息熵越接近8越不容易泄露信息。通過測試得到經(jīng)上述過程加密后的圖像的信息熵為7.967619,該值已經(jīng)很接近8,因此該算法能夠抵抗基于信息熵分析的攻擊。
相關(guān)性是指兩組隨機(jī)變量之間在某個(gè)方向上的線性相關(guān)程度。在圖像處理領(lǐng)域,它經(jīng)常用來表達(dá)圖像相鄰像素之間的相關(guān)性,包括水平、垂直和對角線三個(gè)方向[13]。原始圖像與加密圖像的水平相鄰像素相關(guān)性圖如圖5(a)、5(b)所示(垂直和對角線方向相關(guān)性圖類似),從圖中可以發(fā)現(xiàn):原始圖像的相鄰像素之間的線性關(guān)系很強(qiáng),而加密圖像的相鄰像素呈隨機(jī)分布狀態(tài)。
圖像加密的目的是盡可能地降低相鄰像素的相關(guān)性,使之呈現(xiàn)不相關(guān)狀態(tài)。計(jì)算方法如下:
式中x,y分別表示兩個(gè)相鄰的像素值,N表示選取的相鄰像素對數(shù),ρxy表示相鄰像素的相關(guān)系數(shù)。一般對于未加密的圖像,其相鄰像素相關(guān)性很強(qiáng),大概在0.9左右。本文分別計(jì)算了原始圖像和加密圖像的三個(gè)方向上的相鄰像素相關(guān)性的均值,所得結(jié)果如表1所示。從表中數(shù)據(jù)可知明文相鄰像素是高度相關(guān),而密文圖像相鄰像素幾乎不相關(guān)。第四列給出了文獻(xiàn)[8]中提出的運(yùn)用多個(gè)低維混沌的混合加密方法的相鄰像素相關(guān)性,通過與本文算法對比可知:超混沌與三維混沌的混合加密性能比低維混沌混合更加優(yōu)秀。
表1 相鄰像素相關(guān)性系數(shù)
差分攻擊即攻擊者通過對特定明文做出微小的變化(比如其中一個(gè)像素值改變1),然后觀察相應(yīng)密文的變化,以此獲得盡可能大的密鑰的一種攻擊。一個(gè)好的圖像加密算法應(yīng)該對明文具有很強(qiáng)的敏感性,即使是微小的變化也會使密文大不相同。一般來說,測試此性能有兩個(gè)指標(biāo):一是像素變化率(NPCR);二是灰度平均變化強(qiáng)度(UACI),它們的定義如下:
其中 C(i,j)和 C'(i,j)為在第(i,j)點(diǎn)處明文像素值改變1前后的密文,D(i,j)的定義為當(dāng)C(i,j)=C'(i,j)時(shí),D(i,j)=0;當(dāng) C(i,j)≠C'(i,j)時(shí),D(i,j)=1。NPCR和UACI的理想值為99.6094%和33.4635%。
根據(jù)本文提出的算法進(jìn)行三輪加密后,兩個(gè)指標(biāo)分別為99.6655%和33.4774%,均接近理想值。因此,本文提出的算法能夠有效地抵抗選擇明文攻擊和抗差分攻擊,安全性較高。
一個(gè)好的圖像加密算法不僅要對明文具有很強(qiáng)的敏感性而且對密鑰的敏感性也要很強(qiáng)。為了測試本文算法對密鑰的敏感性,進(jìn)行了如下測試:保持加解密參數(shù)除了Kawakami系統(tǒng)的X的初始值誤差為10-14以外,其他參數(shù)及系統(tǒng)初始值全部一致,即加密時(shí)Kawakami系統(tǒng)初始值為(0.7542,0.8215),解密時(shí)為(0.7542+10-14,0.8215),解密效果如圖6(a)所示。通過實(shí)驗(yàn)可知:只有當(dāng)兩者完全一致時(shí)才能正確解密,正確解密圖如圖6(b)所示。
本文算法是用C++編寫,而在該領(lǐng)域中大部分算法是基于Matlab實(shí)現(xiàn)的。算法中用三輪置換、替換和擴(kuò)散操作對300×300的8位256色Lena圖像進(jìn)行加密,耗時(shí)為0.031s。文獻(xiàn)[15]中提出的算法加密256×256的8位256色灰度圖像耗時(shí)0.047s;文獻(xiàn)[14]中加密256×256的8位256色灰度圖像耗時(shí)為0.065s。同時(shí)在文獻(xiàn)[14~15]中只運(yùn)用了一個(gè)四維超混沌系統(tǒng),而本文算法中使用了一個(gè)二維超混沌系統(tǒng)和一個(gè)三維混沌系統(tǒng),從理論上來說本文算法的速度應(yīng)該低于文獻(xiàn)[14~15]。
通過上述對比分析可以發(fā)現(xiàn)本文算法的執(zhí)行效率較高,在速率上比基于Matlab的加密算法有了較大提升。當(dāng)然,Matlab在驗(yàn)證加密效果時(shí)很是方便,文中灰度直方圖和相鄰像素相關(guān)性圖是用Matlab繪制,因此混合使用C++與Matlab對算法進(jìn)行實(shí)現(xiàn)和測試,效率會更高且更加方便。
圖6 解密圖
通過仿真實(shí)驗(yàn)可知:本文提出的二維超混沌與三維混沌復(fù)合的混度加密算法密鑰空間很大,能夠有效地抵抗攻擊者的統(tǒng)計(jì)分析、差分分析等各種攻擊,提升了混沌加密的安全性。同時(shí)該算法用C++實(shí)現(xiàn),對比用Matlab實(shí)現(xiàn)的算法,速率上有了較大的提升,在網(wǎng)絡(luò)數(shù)據(jù)(圖像、視頻等)的實(shí)時(shí)性傳輸中將會有更好的應(yīng)用,但是該算法未引入壓縮機(jī)制與自適應(yīng)機(jī)制,還有較大改善空間。