張 楠,夏 瑋,趙子平,程鄴華
(1.天津師范大學(xué)計(jì)算機(jī)與工程信息學(xué)院,天津 300387;2.河北工程大學(xué) 信息與電氣工程學(xué)院,河北 邯鄲 056000)
彩色圖像的廣泛應(yīng)用使得彩色圖像加密具有更大的使用價(jià)值,并日漸成為人們的研究熱點(diǎn)[1-3].近年來(lái),很多學(xué)者對(duì)彩色圖像空間域加密算法進(jìn)行了大量研究[4-13],而對(duì)頻域加密的研究較少.空間域加密算法主要是對(duì)二維灰度圖像的像素點(diǎn)進(jìn)行位置置亂,然后對(duì)置亂的像素點(diǎn)進(jìn)行異或運(yùn)算,以達(dá)到加密效果.空間域加密算法的優(yōu)勢(shì)是可以充分利用圖像數(shù)據(jù)的矩陣特征,計(jì)算速度快,算法直觀,易于理解.但是,由于加密過(guò)程破壞了像素之間的相關(guān)性,會(huì)導(dǎo)致圖像壓縮的效果變差.基于頻域的圖像加密算法對(duì)圖像進(jìn)行小波變換后的系數(shù)進(jìn)行加密處理,且可以根據(jù)人類(lèi)視覺(jué)系統(tǒng)的特征,僅對(duì)一些重要數(shù)據(jù)進(jìn)行處理,明顯減少了加密的數(shù)據(jù)量,提高了加密效率.同時(shí),這類(lèi)算法可以很好地與壓縮算法結(jié)合,減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量.
為了加強(qiáng)圖像加密的安全性,目前多采用復(fù)雜的高維混沌系統(tǒng)[14-15].相對(duì)于低維混沌系統(tǒng),高維混沌系統(tǒng)的密鑰空間更大,隨機(jī)性更強(qiáng),具有更高的安全性.本研究提出了一種基于Lorenz 混沌系統(tǒng),針對(duì)彩色圖像小波域的加密算法,首先對(duì)圖像進(jìn)行小波處理,對(duì)得到的小波域系數(shù)矩陣依據(jù)混沌系統(tǒng)產(chǎn)生的無(wú)序序列進(jìn)行多次分塊置亂,以提高置亂效率;然后采用擴(kuò)散和置亂同時(shí)進(jìn)行的方式,減少算法的遍歷次數(shù),從而提高圖像的加密效率,減少加密算法運(yùn)算的時(shí)間.
混沌現(xiàn)象是出現(xiàn)在非線性動(dòng)力系統(tǒng)中的確定性的、類(lèi)似隨機(jī)的過(guò)程,這種過(guò)程既非周期性的又不收斂,并且對(duì)初始值有極其敏感的依賴(lài)性.通過(guò)自身對(duì)初始值和結(jié)構(gòu)參數(shù)的敏感依賴(lài)性,系統(tǒng)可以提供數(shù)量眾多、非相關(guān)、類(lèi)隨機(jī)而又確定可再生的信號(hào).由于上述特點(diǎn),混沌已廣泛應(yīng)用于保密通訊中,同時(shí)也可以作為加密序列.
Lorenz 混沌具有很好的隨機(jī)性,基于此混沌序列的加密系統(tǒng)可以獲得更好的安全性.由Lorenz 混沌系統(tǒng)生成的混沌序列具有以下優(yōu)點(diǎn):(1)系統(tǒng)結(jié)構(gòu)較低維系統(tǒng)復(fù)雜,系統(tǒng)變量的實(shí)數(shù)值序列更不可測(cè);(2)通過(guò)對(duì)系統(tǒng)輸出的實(shí)數(shù)值混沌序列進(jìn)行處理,可以產(chǎn)生單變量或多變量組合的加密混沌序列,使得加密序列的設(shè)計(jì)非常靈活;(3)系統(tǒng)的初值和系統(tǒng)參數(shù)均可以作為生成加密混沌的種子密鑰,若設(shè)計(jì)過(guò)程中再加入部分控制變量,加密算法的密鑰空間將大大高于低維混沌系統(tǒng).
Lorenz 混沌映射由美國(guó)氣象學(xué)家Lorenz 在實(shí)驗(yàn)過(guò)程中提煉得出,其動(dòng)力系統(tǒng)學(xué)方程式[16]為
當(dāng)參數(shù)σ、r 和b 分別取10、28 和8/3 時(shí),Lorenz 混沌映射模型處于典型的混沌狀態(tài).基于初始條件,通過(guò)四階Runge-Kutta 迭代作用可以產(chǎn)生三維混沌序列x(i)、y(i)和z(i),該序列是非周期性的,且對(duì)初值非常敏感.
基于頻域的圖像加密原理首先對(duì)彩色圖像進(jìn)行R、G 和B 三基色分離,然后對(duì)轉(zhuǎn)換成的二維灰度圖像進(jìn)行小波變換,得到小波域系數(shù);再把混沌系統(tǒng)的初始值和參數(shù)作為密鑰,將密鑰帶入混沌系統(tǒng)使之產(chǎn)生無(wú)序?qū)崝?shù)序列,并對(duì)實(shí)數(shù)序列進(jìn)行預(yù)處理;用所得的無(wú)序?qū)崝?shù)序列根據(jù)一定的規(guī)則對(duì)小波域系數(shù)進(jìn)行置亂,接著對(duì)置亂后的數(shù)據(jù)矩陣進(jìn)行異或運(yùn)算,最終得到加密圖像.
為了降低算法的計(jì)算強(qiáng)度和空間需求,可把三維彩色圖像轉(zhuǎn)化為二維空間的灰度圖像進(jìn)行處理.將輸入的Pm×n×3原三維彩色圖像分離成R、G 和B三基色分量PR、PG和PB,分離方法為
應(yīng)用于數(shù)字圖像的離散小波變換(Discrete Wavelet Transform,DWT)可以視為利用低通濾波器和高通濾波器將數(shù)字圖像在頻域上分解為低頻和高頻兩類(lèi)系數(shù).低頻類(lèi)系數(shù)包含了圖像的大部分信息,能量較為集中,對(duì)這一部分系數(shù)進(jìn)行加密即可得到較好的圖像加密效果.
輸入PR、PG和PB共3 個(gè)灰度圖像矩陣,分別對(duì)其進(jìn)行db1 一級(jí)小波分解.將所得小波域系數(shù)的低頻系數(shù)矩陣進(jìn)行置亂加密,而高頻系數(shù)則不做改變.
設(shè)產(chǎn)生的低頻系數(shù)矩陣為DR(l,k)、DG(l,k)和DB(l,k),為了計(jì)算方便,本研究將這3 個(gè)矩陣轉(zhuǎn)化為一維序列DR(i)、DG(i)和DB(i),其中i=l×k.
采用上文中提到的Lorenz 混沌映射產(chǎn)生所需的實(shí)數(shù)序列{x(i),y(i),z(i)},但文獻(xiàn)[6]指出,該序列易受線性預(yù)測(cè)攻擊,且序列間的相關(guān)特性較高,故在對(duì)圖像進(jìn)行加密前需要對(duì)產(chǎn)生的原始序列進(jìn)行置亂預(yù)處理.
置亂預(yù)處理的具體步驟為:
(1)將序列值同時(shí)擴(kuò)大10 的m 次方倍,m≥6.
(2)利用round 函數(shù)求取步驟(1)中產(chǎn)生的每個(gè)數(shù)值的最近整數(shù),與原數(shù)值作差,得出值域在(-0.5,0.5)之間的新序列.
數(shù)學(xué)計(jì)算模型為
根據(jù)式(2)產(chǎn)生的值作如下處理,使其成為適合異或的操作數(shù),得到擴(kuò)散預(yù)處理的計(jì)算模型:
式(3)中:mod 函數(shù)是取模運(yùn)算,得出序列{Cx(i),Cy(i),Cz(i)},用于下文中的異或操作.
本研究采用小波域系數(shù)值置亂和擴(kuò)散同步進(jìn)行的方法,即每置亂1 個(gè)系數(shù)后,就對(duì)該置亂系數(shù)進(jìn)行異或擴(kuò)散.
置亂與擴(kuò)散的過(guò)程(僅用R 分量舉例說(shuō)明)為:
(1)設(shè)m 為DR(i)序列的長(zhǎng),k′=1,l′=log2(m)-1,n=l′.
(2)將DR(i)序列分成2n×2n大小的序列段,每個(gè)序列段用FR(i)來(lái)表示.
(3)將由式(2)所得的預(yù)處理過(guò)的三維實(shí)數(shù)序列{x(i),y(i),z(i)}從小到大進(jìn)行排序,在每個(gè)序列的排序過(guò)程中,根據(jù)其序列地址變化的映射生成一個(gè)由序列地址組成的序列Kx(i),將該序列作為對(duì)步驟(2)中生成的小波域低頻系數(shù)序列段進(jìn)行置亂的置亂索引,即DR(i)表示原低頻系數(shù)序列中第i段,則FR(Kx(i))表示置亂后的FR(i).
(4)令DR(i)=FR(i),k′=k′+1,n′=n′-1.這時(shí)程序回到步驟(2),進(jìn)行循環(huán)操作,直到k′≤l′.當(dāng)k′=l′時(shí),F(xiàn)R(i)的大小為2×2.
(5)對(duì)分段置亂后的Dr(i)進(jìn)行整體置亂,每置亂一個(gè)系數(shù)值后即與式(3)中生成的操作數(shù)序列進(jìn)行異或操作.
(6)輸出合成彩色圖像,完成加密.
(7)解密算法為加密算法的逆過(guò)程.
該加密模版對(duì)小波域系數(shù)進(jìn)行了多次置亂,與單次置亂算法相比較,增大了解密的難度,且置亂時(shí)先對(duì)分成的序列段進(jìn)行置亂,節(jié)省了計(jì)算時(shí)間.最后擴(kuò)散與置亂同時(shí)進(jìn)行,減少了算法對(duì)加密圖像的遍歷次數(shù).
選用大小為256×256×3、灰度值為256 色的Lena.jpg 作為實(shí)驗(yàn)圖像,利用Matlab7.0 為平臺(tái)進(jìn)行實(shí)驗(yàn),Lorenz 混沌系統(tǒng)的3 個(gè)初值分別取值為0.182 505 937 4、0.362 709 148 5 和0.251 940 736 8,參數(shù)取值為a=35,b=10,c=1,d=10 和u=8,積分步長(zhǎng)為0.001,采用四階Runge-Kutta 算法解微分方程.本研究的最終加密效果如圖1 所示,由圖1可見(jiàn),算法已經(jīng)完全隱藏了原始圖像,看不出原始圖像的輪廓.
采用本研究提出的算法與文獻(xiàn)[4]和文獻(xiàn)[6]中提出的算法對(duì)同一彩色Lena 圖像在同一設(shè)備上運(yùn)行計(jì)算,測(cè)試得到的加密運(yùn)算時(shí)間如表1 所示.
表1 算法運(yùn)行時(shí)間比較Tab.1 Comparison of running time of algorithms
由表2 可以看出,本研究提出的算法在運(yùn)行時(shí)間上比其他2 種算法節(jié)省多于1.080 0 s 的時(shí)間,達(dá)到了研究所期望的效果.文獻(xiàn)[4]中提出的算法為直接在空域上對(duì)圖像進(jìn)行置亂和擴(kuò)散;文獻(xiàn)[6]中提出的算法則是在對(duì)圖像進(jìn)行小波處理的基礎(chǔ)上,對(duì)小波域系數(shù)進(jìn)行置亂和擴(kuò)散,后2 種算法采用了相同的置亂方法.
原圖的灰度直方圖與加密后的灰度直方圖對(duì)比如圖2 和圖3 所示.
對(duì)比圖2 和圖3 可知,與分布不均勻的原始直方圖相比,加密后的直方圖平坦且灰度值呈均勻分布.這表明密文的像素值在0~255 范圍內(nèi)的取值概率均等,即對(duì)整個(gè)密文空間呈均勻分布特性,攻擊者無(wú)法從灰度值的特征中獲取有效信息,因而可以有效地防止統(tǒng)計(jì)攻擊,加強(qiáng)了圖像的安全性.
一個(gè)好的加密系統(tǒng)應(yīng)該有足夠大的密鑰空間來(lái)防止攻擊者暴力破解.本研究提出的算法中,密鑰包括了x(0)、y(0)和z(0),以及對(duì)序列預(yù)處理時(shí)的m 值,任何一個(gè)值改變都不能正確解密圖像.為了測(cè)試本研究的密鑰敏感性,采取2 組密鑰對(duì)加密圖像進(jìn)行解密,圖4a 為原始密鑰即x(0)=0.182 605 937 4,其他初始值不變時(shí)的解密圖像,圖4b 為將x(0)的值改變?yōu)?.182 605 937 5,其他初始值不變時(shí)的解密圖像,可以看出,即使在密鑰發(fā)生微小改變時(shí),也不能得到正確的解密圖像.
圖像在處理、保存和傳輸過(guò)程中經(jīng)常會(huì)受到噪聲的干擾,一個(gè)好的加密算法應(yīng)該具有良好的抗干擾能力.傳輸過(guò)程中在可能引入的隨機(jī)噪聲引起損失或加密圖像部分?jǐn)?shù)據(jù)缺損后,圖像應(yīng)均能正確解密,恢復(fù)出原圖像.從實(shí)驗(yàn)結(jié)果看,本研究算法具有較好的抗干擾能力.圖5 為加密圖像受到幾何失真或噪聲污染后的加密圖像和解密圖像.
圖5b 為加密圖像被剪切24%后的解密圖像,圖像存在噪點(diǎn),但圖像特征與細(xì)節(jié)效果仍然很明顯,效果良好.圖5d 為加密圖像被剪切50%后的解密圖像,圖像存在大量的噪點(diǎn),個(gè)別細(xì)節(jié)失真,但圖像特征依舊明顯.圖5f 是受到5%高斯噪聲污染后的解密圖像,可以看出噪聲污染對(duì)原圖像幾乎沒(méi)有影響.
本研究提出一種基于Lorenz 混沌系統(tǒng)的彩色圖像小波域加密算法,在置亂階段對(duì)系數(shù)矩陣進(jìn)行多次分塊置亂,可在增加置亂強(qiáng)度的同時(shí),降低置亂算法的強(qiáng)度.本研究所采用的擴(kuò)散和置亂同時(shí)進(jìn)行的方式減少了算法遍歷次數(shù),提高了加密效率.實(shí)驗(yàn)結(jié)果和數(shù)據(jù)分析表明:該算法具有良好的加密效果和很強(qiáng)的密鑰敏感性,可以抵抗暴力破解和其他干擾,具有較高的安全性.但小波系數(shù)所含圖像信息的減少導(dǎo)致圖像的加密強(qiáng)度有所降低,這是今后研究需要改進(jìn)的地方.
[1]BLACKLEDGE J,AHMAD M,F(xiàn)AROOQ O.A multi-level blocks scrambling based chaotic image cipher [J].Information Processing Letters,2010,94:171—182
[2]YE G D,WONG K W.An efficient chaotic image encryption algorithm based on a generalized Arnold map[J].Science Business Media,2012,69(4):2079—2087.
[3]GUAN Z Q,PENG J,JIN S Z.Research on a novel image encryption scheme based on the hybrid of chaotic maps[J].Verlag Berlin Heidelberg,2010,6064:222—229.
[4]劉云,鄭永愛(ài).基于混沌系統(tǒng)的彩色圖像加密新方案[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(3):90—93.
[5]舒永錄,張玉書(shū),肖迪,等.基于置亂擴(kuò)散同步實(shí)現(xiàn)的圖像加密算法[J].蘭州大學(xué)學(xué)報(bào):自然科學(xué)版,2012,48(2):113—116.
[6]尹顯東,姚軍,李在銘,等.基于混沌序列的頻域圖像加密技術(shù)研究[J].計(jì)算機(jī)工程與應(yīng)用,2004(34):12—14.
[7]張曉強(qiáng),王蒙蒙,朱貴良.圖像加密算法研究新進(jìn)展[J].計(jì)算機(jī)工程與科學(xué),2012,34(5):1—5.
[8]陳剛,趙曉宇,李均利.一種自適應(yīng)的圖像加密算法[J].軟件學(xué)報(bào),2005,16(11):1970-1982.
[9]陸陽(yáng),楊文泉,陳蕾.圖像頻域加密算法[J].計(jì)算機(jī)工程與應(yīng)用,2003(14):130—131.
[10]王虹,孫景.基于混沌的圖像復(fù)合置亂和多級(jí)信息隱藏算法[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(3):67—70.
[11]邱勁.混沌偽隨機(jī)序列及其在數(shù)字圖像加密應(yīng)用的研究[D].重慶:重慶大學(xué),2011:36—55.
[12]王英,鄭德玲,王振龍.空域彩色圖像混沌加密算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2006,18(6):876—880.
[13]田巖,謝玉波,李濤,等.一種基于分塊和混沌網(wǎng)的圖像置亂方法[J].中國(guó)圖象圖形學(xué)報(bào),2007,12(1):56—60.
[14]張碩,蔡如華,陳光喜.一種空頻域結(jié)合的多維混沌系統(tǒng)圖像加密方案[J].微電子學(xué)與計(jì)算機(jī),2010,27(7):60—64.
[15]鄭潔,韓鳳英.基于四維混沌系統(tǒng)的數(shù)字圖像加密算法[J].計(jì)算機(jī)工程與應(yīng)用,2009,45(12):104—106.
[16]余日,張定會(huì).彩色數(shù)字圖像的Lorenz 混沌加密[J].信息安全,2012,28(4):117—118.