賈曉霞,楊玉麗
(1.太原學(xué)院 計算機科學(xué)與技術(shù)系,山西 太原 030000;2.太原理工大學(xué) 信息與計算機學(xué)院,山西 太原 030024)
近些年,隨著科技的迅猛發(fā)展,在表達(dá)和分享敏感信息時,數(shù)字視頻圖像得到越來越多的使用[1]。如何高效地進行圖像數(shù)據(jù)交流和分享一直是信息安全領(lǐng)域的研究熱點,保證圖像安全性的常用手段是圖像加密[2],在實際使用中,圖像加密技術(shù)必須保證安全、高效、快速等機制。
與其他形式的信息不同,圖像鄰近像素的信息相關(guān)性非常高,傳統(tǒng)加密方案,例如:數(shù)據(jù)加密標(biāo)準(zhǔn)(Data Encryption Standard,DES)、國際數(shù)據(jù)加密算法(Internationale Data Encrypt Algorithm,IDEA)、高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES),難以保持較高標(biāo)準(zhǔn)的安全性[3,4]?;诨煦缬成浜突煦缦到y(tǒng)的加密方案[5]的優(yōu)點有:對初始值和其他系統(tǒng)參數(shù)的高敏感性、明文敏感性、密鑰空間大、混沌性和遍歷性等,但很多加密方案不能抵御經(jīng)典攻擊。
因此,很多研究者對圖像加密進行了改進和完善,如Mao等[6]提出基于動態(tài)密鑰選擇與多方向擴散的圖像加密算法。利用128位外部密鑰來生成4個Logistic映射的初值,并設(shè)計了4方向連續(xù)擴散方法對置亂圖像進行加密,該方案對抗明文攻擊能力顯著。ELAMIR等[7]提出的圖像加密密鑰由混沌映射和DNA計算編碼規(guī)則組合而成,實驗表明該方法可以抵御多種常見攻擊,但總體計算成本較高。Chen等[8]基于rand函數(shù)生成隨機轉(zhuǎn)換規(guī)則,但問題在于其與明文圖像無關(guān)。不同的明文圖像有著相同的轉(zhuǎn)換規(guī)則,因此該方案不能抵御明文攻擊、選擇明文攻擊和統(tǒng)計攻擊。Askar等[9]提出了一種新的離散分?jǐn)?shù)階食物鏈模型,在此基礎(chǔ)上,提出了一種基于模型混沌行為和橢圓曲線密鑰交換的混合加密方案。Niu等[10]改進了約瑟夫遍歷問題,并將其與DNA編碼技術(shù)結(jié)合應(yīng)用到圖像加密中,該方法具有強密鑰敏感性,可抵御多種常見的攻擊,但密文圖像不能很好關(guān)聯(lián)到明文圖像和密鑰流,因此該方案不能抵御明文攻擊。Cheng等[11]提出了基于混沌Gyrator變換與矩陣分解的非對稱彩色圖像加密算法。該方法可有效抗擊明文攻擊,但未明確對密文攻擊的有效性。
為此,需要開發(fā)高效穩(wěn)健的安全加密方案,以克服上述問題。為克服低維混沌映射的缺點,本文采用四維混沌動力系統(tǒng)。為降低混沌數(shù)據(jù)的大小和計算成本,利用混沌動力狀態(tài)變量選擇程序,從混沌動力系統(tǒng)的迭代生成的相同混沌數(shù)據(jù)上生成多個密鑰流;本文根據(jù)密鑰流,設(shè)計了四個不同的擴散方向,像素的RGB值通過不同方向的擴散機制來增加密文隨機性,從而增強密文抗攻擊的能力。
在混沌系統(tǒng)[12]的應(yīng)用中,生成隨機數(shù)據(jù)的常用方法包括Baker映射、Lorenz映射和logistic映射等。本文選擇使用混沌tent映射[13],其定義如下
(1)
式中:a∈(0,ρ)為整數(shù),「·?表示向上取整,?·」表示向下取整。
為了生成帶期望屬性的混沌數(shù)據(jù),一般利用混動動力系統(tǒng)。在眾多混沌動力系統(tǒng)中,四維混沌動力系統(tǒng)(Chaotic dynamical system,CDS)更佳,且更為完善。采用四維混沌動力系統(tǒng),可以克服低維混沌映射系統(tǒng)的缺點。其定義如下
(2)
該新系統(tǒng)具有對稱性和耗散性,且包含非常豐富的動力結(jié)構(gòu)。a、b、c、d、b1、b2、b3和b4為CDS參數(shù)值。x1、x2、x3和x4表示4個不同維度的數(shù)值。
為降低計算成本,降低了混沌數(shù)據(jù)的大小,利用混沌動力狀態(tài)變量選擇程序[14](Chaotic dynamic state variable selection program,CDSVSP),從混沌動力系統(tǒng)迭代生成的相同混沌數(shù)據(jù)上生成多個密鑰流,下面簡單介紹CDSVSP。
取8位像素值的一維數(shù)組(大小為M×N):P={P(0),P(1),P(2),…,P(MN-1)},其中,M和N為明文圖像維數(shù)。對于初始值x0、y0、z0和w0,將式(2)迭代(M×N)/4+n0次,n0≥0,這些初始值將作為密鑰的一部分。本文借助以下定義解釋CDSVSP。
(1)首先利用CDS(式2)的每次迭代,得到4個狀態(tài)變量X、Y、Z和W的數(shù)值。設(shè)S={Xi,Yj,Zk,Wl},其中,Xi、Yj、Zk、Wl分別為X、Y、Z、W在第i、j、k、l次迭代中的狀態(tài),且i、j、k、l的數(shù)值彼此間不相等。
(2)將新變量slt(L)定義為在{Xi,Yj,Zk,Wl}中選擇的變量
(3)
利用該變量,生成P(L)的密鑰流元素。基于指標(biāo)index(L)作出決策,定義為
index(L)=mod(f(a,ρ,P(L-1)),4)
(4)
式中:f(a,ρ,x)為tent映射。a和ρ參與到密鑰構(gòu)建。對于第一個像素值,P(-1)設(shè)為種子值。
CDSVSP的工作原理如下。
選擇足夠大且彼此不同的i0、j0、k0、l0作為密鑰。為第一個像素P(0)創(chuàng)建初始狀態(tài)S={Xi0,Yj0,Zk0,Wl0}。然后,通過計算index(0)得出P(0)的選定變量slt(0)。系統(tǒng)狀態(tài)更新如下:
(5)
同理,通過計算index(1),從P(1)的更新狀態(tài)S中得到選定變量slt(1),并更新系統(tǒng)狀態(tài)。依次得到P(n)的更新狀態(tài)變量集S,并通過計算index(n)從S中選擇狀態(tài)變量slt(n)。假定P(n)的狀態(tài)為Xi、Yj、Zk、Wl。為了不失一般性,假定index(n)=0。這種情況下,選擇狀態(tài)值Xi對P(n)進行加密,狀態(tài)變量組合為{Xi+1,Yj,Zk,Wl}。類似地,計算index(n+1),并設(shè)index(n+1)=1。則狀態(tài)值Yj將被選擇以加密P(n+1),而狀態(tài)變量組合則變?yōu)閧Xi+1,Yj+1,Zk,Wl}。同理,假定index(n+2)=2,則狀態(tài)值Zk將被選擇以加密P(n+2),那么狀態(tài)變量組合變?yōu)閧Xi+1,Yj+1,Zk+1,Wl}。假定index(n+3)=3,則狀態(tài)值Wl將被選擇以加密P(n+3)。
密鑰流生成程序(Key stream generator programming,KSGP)用于加密程序的不同步驟,其簡要過程如圖1所示。即使僅有一個像素發(fā)生變化,CDSVSP也能夠從選定變量中有效生成完全不同的序列。因此,KSGP可以得出隨機密鑰流,并支持以最少資源實現(xiàn)高安全標(biāo)準(zhǔn)。
圖1 密鑰流生成程序
本文基于通過式(2)迭代得出的相同混沌數(shù)據(jù),生成完全不同的隨機密鑰流。設(shè)I=(RO,GO,BO)為給定的3個8位像素值的一維數(shù)組,大小為MN。為確保任意一個通道中單個像素值的變化會導(dǎo)向完全不同的密文圖像,利用以下公式得到RO、GO和BO的線性組合[15]:
S=mod(αRO+βGO+γBO,256)
(6)
式中:α、β、γ是密鑰的一部分,且均為整數(shù);S是8位像素值的一維數(shù)組,大小為MN。將CDSVSP應(yīng)用到S,可以得到選定狀態(tài)變量slt,并用其生成密鑰流K
K(i)=mod{round[abs(slt(i))-
floor[abs(slt(i))]]×1015,256}
(7)
式中:floor(x)表示x向下取整;abs(x)為x的絕對值;mod(x,y)表示x除以y的余數(shù);round(x)為x值的舍入函數(shù);i的數(shù)值范圍為從0到MN-1。
2.2.1 四方向擴散機制
利用不同密鑰流,將KSGP應(yīng)用到明文圖像I上3次,以生成3個密鑰流K1、K2和K3。然后,利用這些密鑰流對I進行擴散,以得到I1=(RO1,GO1,BO1),可以根據(jù)式(6)獲得。
本文根據(jù)密鑰流K1、K2和K3,設(shè)計了不同的擴散方法(10進制),這些擴散方向如圖2所示。第1種是從下到上擴散,第2種是從左下到右上的擴散,第3種是從左上到右下的擴散,第4種是從頂左到底右的擴散。隨著加密方向的增多,獲得的密文是完全不一樣的,因此,圖像加密的安全性明顯增加。以標(biāo)準(zhǔn)Lena圖像為例,其密文的熵值明顯增加。第一個方向擴散的密文圖像熵值為7.825 4,當(dāng)兩個方向擴散時,其密文的熵值為7.891 6,三個方向的密文熵值為7.940 1,四個方向的密文熵值為7.998 1。這說明在安全性方面,四個不同方向的擴散機制比某一方向擴散的表現(xiàn)更佳。這樣,從四個不同的方向來替換RGB圖像的像素值,可以明顯擴散密文的隨機性,并增加其抗攻擊的能力。
圖2 提出的四方向擴散機制
此外,將KSGP使用若干次,基于CDSVSP和所有紅、綠、藍(lán)三個通道的線性組合,生成密鑰流。由此,任何一個通道中一個像素的變化,將引發(fā)CDSVSP中選定變量的不同序列,從而導(dǎo)出完全不同的密鑰流。在所有通道上進行了像素值重新排列,因此在生成不可預(yù)測的密鑰流的過程中,通道的任何位置上的像素變化都會造成相同程度的影響??傊?,密鑰流與明文圖像的像素值直接相關(guān)。
2.2.2 置換
2.2.3 生成密文圖像
按照上一節(jié),對密鑰流Ki(i=1,2,3)與I=(RO,GO,BO)進行擴散,以改變像素值,從式(6)可知兩者是相互混合的。使用偽隨機數(shù)序列將8位十進制像素值轉(zhuǎn)換為長度4的序列。然后,將8位像素值的三個大小為MN的一維數(shù)組RO、GO和BO分別轉(zhuǎn)換為大小為M×N的紅色通道R′、綠色通道G′和藍(lán)色通道B′。最后,通過紅、藍(lán)、綠色通道,生成密文圖像(R′,G′,B′)作為本文圖像加密方案的輸出。
解密過程通過在接收器處逆向進行加密過程,以獲得明文圖像。圖3給出了本文解密過程的流程圖。首先,CDSVSP生成四維混沌值,KSGP利用已有密鑰流,合并得到解密器;然后進行去混淆操作,輸入的密文圖像進行去串聯(lián),密文圖像進入解密器,得到解密圖像。
圖3 本文RGB彩色圖像的解密
圖像加密領(lǐng)域需要應(yīng)對各種不同的攻擊,常見的攻擊包括選擇明文/密文攻擊,統(tǒng)計攻擊,蠻力攻擊,熵攻擊等。設(shè)計加密技術(shù)時必須重點關(guān)注對這些攻擊的抵御能力。在對所提方案進行性能分析時,使用了8個不同的彩色圖像,尺寸均為256像素×256像素。使用USC-SIPI圖像數(shù)據(jù)庫中的圖像“Lena”、“Baboon”、“Peppers”、“Tree”、“House”、“Beans”、“F16”和“Girl”。方法實施的平臺為Intel(R)Core(TM)i7雙核、8 GB內(nèi)存、Windows 7操作系統(tǒng),采用64位雙精度MATLAB R2016編程。
為實施本文方案,四維混沌動力系統(tǒng)的初始值和系統(tǒng)參數(shù)如下:x0=17,y0=25,z0=118,w0=5,a=-10,b=3,c=-1,d=-2,b1=1,b2=-1,b3=1,b4=1。此外,在求解CDS時取足夠小的步長,以避免任何不良行為和衰退效應(yīng)。
密鑰空間是圖像加密的重要指標(biāo)。理論上,密鑰空間越大越好,即使算法穩(wěn)健度很高,但如果密鑰空間過小,則可能會被蠻力攻擊破解[17]。本文加密方法中包含12個不同的系統(tǒng)狀態(tài)和參數(shù),即x0、y0、z0、w0、a、b、c、d、b1、b2、b3、b4。給定計算精度10-15,則本文加密方法的密鑰空間為10212。
表1給出了本文加密方法與其他先進方法的密鑰空間,其中,本文加密方法的密鑰空間組成是:CDS、KSGP、十進制轉(zhuǎn)換、四方向擴散。一般標(biāo)準(zhǔn)的密鑰空間大小應(yīng)該不低于2100,因此,本文圖像加密算法的密鑰空間遠(yuǎn)大于標(biāo)準(zhǔn)空間,同時比文獻[6,7,8]方法的密鑰空間更大。
表1 各方法的密鑰空間比較
密鑰敏感性是評估圖像加密安全性的重要指標(biāo),如果密鑰的任何極小改動都會導(dǎo)致巨大改變,則加密非常安全,因為只有使用完全正確的密鑰才能復(fù)原原始圖像。本文為了評估密鑰敏感性,使用非常微小差異的密鑰流對圖像進行加密。初始狀態(tài)x0作細(xì)小改動:x0=x0+10-15;x0=x0-10-15。使用該密鑰流對相同的圖像進行加密和解密,得出該參數(shù)的敏感性測試結(jié)果如圖4所示。由圖可知,對應(yīng)的MSE都在3500以上,出現(xiàn)了雪崩現(xiàn)象,這說明所提方法的密鑰敏感性非常強。
圖4 密鑰敏感性測試
攻擊者會嘗試各種可能方式以得到原始圖像,其中一種方式是在輸入明文圖像中作細(xì)微更改,然后對更改前后的明文圖像分別進行加密,以尋找明文圖像和加密圖像之間有價值的聯(lián)系。
像素改變率[18](Nnumber of pixels change rate,NPCR)和統(tǒng)一平均變化強度[19](Uniform average change intensity,UACI)是測試明文圖像中單個像素更改對加密圖像的影響的兩個度量。這兩個指標(biāo)分別定義為
(8)
式中:M和N為圖像尺寸,D(a,b)可表示為
(9)
100%
(10)
式中:C和C′分別為明文圖像中單個像素更改前后的密文圖像。
各方法的差分攻擊度量NPCR和UACI數(shù)值如表2所示。
表2 本文方案不同圖像的NPCR和UACI值
從表2中可觀察到,NPCR和UACI的平均值分別為99.6300%和33.5296%,這證明了所提方案能夠抵御差分攻擊。由表3可知,對于Lena圖像,本文算法在NPCR和UACI方面的性能優(yōu)于文獻[6,7,8]的算法。
表3 不同方案的NPCR和UACI均值法
本文方法使用了較少的混沌數(shù)據(jù),從而實現(xiàn)較高效率。為了分析生成的密鑰流是否完全隨機且彼此互不相關(guān),本文計算了兩者之間的NPCR和UACI,實驗部分生成密鑰流6次。如表4和表5所示,NPCR>99.6,UACI>33.4。由此證明,本文方案最大限度減少了資源使用,且并沒有降低安全性。
表4 密鑰流之間的NPCR
表5 密鑰流之間的UACI
圖像的直方圖描述了像素強度分布,攻擊者可利用圖像的直方圖獲得一些有價值信息。因此,在加密過程后,密文圖像的直方圖應(yīng)該盡可能均衡。圖5和圖6分別展示了Lena圖像明文和密文的直方圖。明文圖像中,柱形并不均衡,存在較大波動,包含很多攻擊可用的信息。而密文圖像中,柱形非常均衡,攻擊者無法從中得到有用信息。
圖5 Lena明文圖像直方圖
圖6 Lena密文圖像直方圖
方差是衡量數(shù)據(jù)/信息在平均值附近平均分布的度量。低方差意味著分布中數(shù)據(jù)點之間的差異較小。所以較小方差值有利于保持直方圖的均衡性。加密測試圖像(Lena、Baboon、Peppers、Tree、House、Beans、F16和Girl)的直方圖的方差值如表6所示,給出了Key0、Key1、Key2和Key3。利用初始密鑰Key0計算出表6第一列中的方差值,剩余列的方差值則通過更改Key0中的單個密鑰而得到。從表6可發(fā)現(xiàn),使用本文方案時,密文圖像的方差值約為800,輸入明文圖像的方差值約為86 488。結(jié)果表明,本文方法能夠有效降低方差值,實現(xiàn)了較好加密效果。
表6 不同密鑰下的加密圖像直方圖的方差值
信息熵是一個信息隨機性的度量。以概率pi(i=1,…,r)取r個不同數(shù)值的隨機消息U,其不確定性(熵)的定義為
(11)
在安全的密文圖像標(biāo)準(zhǔn)中,其熵(H)理論上應(yīng)為“8”,實踐中應(yīng)該接近8。熵值越接近8表示效果越佳。圖7是本文方法的初始明文和加密密文。表7給出了不同密文圖像的熵。從表7的結(jié)果中可發(fā)現(xiàn),相比于其他方法,本文密文圖像的熵接近8,因此,本文方案能夠抵御熵攻擊。
圖7 初始明文與加密密文
表7 不同加密方案的加密圖像信息熵比較
圖像加密算法應(yīng)在輸入明文圖像和相應(yīng)密文圖像之間建立最大差異。峰值信噪比(PSNR)是測量輸入圖像及其密文圖像之間差異的度量,其定義如下
(12)
(13)
式中:M表示圖像寬度,N表示圖像高度。P0(i,j)和P1(i,j)分別為原始圖像和加密圖像的像素強度值。MSE為原始圖像和加密圖像之間的均方誤差。較大的MSE值將生成較小的PSNR值,從而提供更好的加密安全性。
本文加密方法與其他加密方法的PSNR值如表8所示。其中,“O”、“C”、“D”分別表示原始、加密和解密圖像。使用本文算法時,明文圖像和解密圖像之間的PSNR值為(∞)。這說明明文輸入圖像和解密圖像之間沒有差異(MSE=0),即加密和解密算法沒有丟失任何像素強度值。因此,所提方案的PSNR值低于其他方案[6,7,8],具有更好的安全性。
表8 明文圖像與解密圖像間的PSNR結(jié)果比較
在安全性之外,圖像加密算法應(yīng)具有較快的運行速度以滿足實際應(yīng)用需求。為了分析時間復(fù)雜度,本文考慮了混沌數(shù)據(jù)生成和加密算法兩個方面。通過將CDSVSP應(yīng)用到數(shù)組S,生成混沌數(shù)據(jù)K。其復(fù)雜度為O(4MN),其中(M,N)為給定輸入圖像大小。四個方向擴散操作的復(fù)雜度為O(6MN)。置換和進制轉(zhuǎn)換的復(fù)雜度為O(2MN)。因此,本文方案的總復(fù)雜度為O(12MN),優(yōu)于文獻[6]的O(24MN)和文獻[7]的O(64N2),以及文獻[8]的O(128N2)。
所提方案通過CDS得出的混沌數(shù)據(jù)質(zhì)量很高,且CDSVSP能夠以極高效率從中生成完全隨機選擇的序列。同時,明文圖像的像素直接參與到所有加密步驟。此外,所提方案為每個像素使用不同的轉(zhuǎn)換規(guī)則,并采用了四個不同的擴散方向機制,增加了密文圖像的隨機性,從而實現(xiàn)更好的加密性能。仿真和實驗測試結(jié)果表明,所提加密方案能夠保持高標(biāo)準(zhǔn)安全性,且使用的資源比其他加密方案小得多,具有低時間復(fù)雜度、高效率和高安全性,對圖像安全領(lǐng)域具有借鑒意義。本文方法的一個局限是對較大尺寸的彩色圖像加密時,會使得像素的10進制轉(zhuǎn)換計算和多方向擴散的計算量明顯增加,如果優(yōu)化大尺寸圖像的加密將是本文未來研究重點。