陳 軍, 張向利, 張紅梅
(桂林電子科技大學(xué) 認(rèn)知無(wú)線(xiàn)電與信息處理省部共建教育部重點(diǎn)實(shí)驗(yàn)室,廣西 桂林 541004)
隨著網(wǎng)絡(luò)和數(shù)字多媒體技術(shù)的飛速發(fā)展,人們的生活方式有了很大變化。數(shù)字圖像能形象地表達(dá)人們的所思所想,因此數(shù)字圖像成為了人們進(jìn)行日常溝通交流的主要方式之一。由于網(wǎng)絡(luò)開(kāi)放共享的特點(diǎn),數(shù)字圖像在存儲(chǔ)和傳輸中很容易受到人為攻擊,而圖像加密就是保障圖像信息安全的主要方式。
圖像具有數(shù)據(jù)量大、相關(guān)性強(qiáng)、冗余度高、能量分布分散等特性。隨著計(jì)算機(jī)容量和存儲(chǔ)的不斷升級(jí)以及密碼分析的發(fā)展進(jìn)步,一些傳統(tǒng)加密算法的缺點(diǎn)開(kāi)始逐漸顯現(xiàn)出來(lái)[1]。傳統(tǒng)的加密算法若用于圖像加密,會(huì)導(dǎo)致計(jì)算量大,效率低下,很難保證實(shí)時(shí)性的需求?;煦缦到y(tǒng)具有的偽隨機(jī)性、初值敏感性和遍歷性等動(dòng)力學(xué)特性使得混沌十分適合運(yùn)用到圖像加密之中。近年來(lái),有很多混沌映射用于圖像加密的算法產(chǎn)生。文獻(xiàn)[2]提出了一種利用分段非線(xiàn)性L(fǎng)ogistic構(gòu)造灰度置亂對(duì)圖像進(jìn)行加密的算法,該算法較傳統(tǒng)算法運(yùn)算速度更快,但安全性不足。文獻(xiàn)[3]設(shè)計(jì)了一種采用高維混沌映射來(lái)進(jìn)行位置置亂的圖像加密算法,該算法有著較強(qiáng)的密鑰敏感度和較大的密鑰空間,但該算法未改變圖像像素灰度值,無(wú)法抵御差分攻擊。
隨著研究的不斷深入,逐漸出現(xiàn)了一些性能較好的圖像加密算法。趙玉青[4]設(shè)計(jì)了一種基于改進(jìn)的Chen超混沌系統(tǒng)的圖像加密算法,該算法引入時(shí)間延遲用以改善混沌序列,其次用改善后的超混沌序列對(duì)圖像進(jìn)行置亂,以達(dá)到加密圖像的目的。該算法密鑰空間大、敏感性高,但加密過(guò)程比較繁瑣。房東鑫等[5]提出了一種基于廣義Arnold映射和DNA編碼的圖像加密算法,該算法采用Arnold映射對(duì)圖像進(jìn)行置亂,利用DNA編碼堿基對(duì)互補(bǔ)替換進(jìn)行圖像像素灰度值擴(kuò)散得到加密圖像。但低維混沌映射存在周期窗口問(wèn)題,給加密安全性帶來(lái)了隱患。徐亞等[6]設(shè)計(jì)了一種基于Arnold映射的分塊擴(kuò)散圖像加密算法,該算法采用多種一維混沌映射的組合生成混沌序列,定義與明文等大小的矩陣進(jìn)行分塊并記錄操作,同時(shí)進(jìn)行塊內(nèi)和塊間的擴(kuò)散。該算法敏感性高,加密效果良好,但算法復(fù)雜度較高,加密速度較慢。
既要避免低維混沌映射存在周期性窗口和安全性較低的問(wèn)題,又要保證一定的加密效率。為此,研究了一種基于三維Lorenz映射和Logistic映射的圖像分塊加密算法。在傳統(tǒng)以置亂擴(kuò)散為主體的加密算法的基礎(chǔ)上,優(yōu)化改進(jìn)了具體細(xì)節(jié)操作。首先,對(duì)明文圖像進(jìn)行置亂操作;其次,對(duì)置亂后的圖像進(jìn)行分塊,然后依次對(duì)圖像進(jìn)行塊內(nèi)擴(kuò)散操作和塊間擴(kuò)散操作,最終得到加密后的密文圖像。為了有效地抵御選擇明文攻擊,利用明文圖像的哈希值對(duì)混沌映射的初值和參數(shù)進(jìn)行處理,使得每次加密時(shí)的初值和參數(shù)隨明文自動(dòng)發(fā)生變化。
Lorenz映射是三維連續(xù)混沌映射,其數(shù)學(xué)表達(dá)式的描述形式是微分方程。它是氣象學(xué)家Lorenz在1963年研究氣象學(xué)時(shí)發(fā)現(xiàn)的,其映射表達(dá)式如式(1)所示:
(1)
其中,σ、r、c為L(zhǎng)orenz映射的控制參數(shù),一般取值為σ=10,r=28,c=8/3。在σ,c不改變的條件下,當(dāng)r>24.74時(shí),Lorenz映射開(kāi)始進(jìn)入混沌狀態(tài)。
Logistic映射是美國(guó)數(shù)學(xué)生態(tài)學(xué)家R.May于1976年提出的。由于是研究昆蟲(chóng)群體繁殖規(guī)律時(shí)發(fā)現(xiàn)的,因此又被稱(chēng)為“蟲(chóng)口模型”[7]。Logistic映射最初用來(lái)研究昆蟲(chóng)的個(gè)體數(shù)量和環(huán)境間關(guān)系。它的形式雖然簡(jiǎn)單,卻蘊(yùn)含著復(fù)雜的動(dòng)力學(xué)行為。其數(shù)學(xué)表達(dá)式為:
xn+1=μxn(1-xn)。
(2)
其中:xn∈(0,1);n=0,1,,n;μ∈(0,4],μ為系統(tǒng)的控制參數(shù),當(dāng)μ取不同值時(shí),式(2)會(huì)顯現(xiàn)出不同的狀態(tài),當(dāng)3.569 945 6≤μ≤4時(shí),系統(tǒng)開(kāi)始進(jìn)入混沌狀態(tài)。
采用了一種利用明文圖像的哈希值對(duì)混沌映射的初值和參數(shù)進(jìn)行處理得到加密密鑰的方法,使得每次加密時(shí)的密鑰可自動(dòng)發(fā)生變化。
哈希函數(shù)可以將任意長(zhǎng)度的數(shù)據(jù)映射到固定長(zhǎng)度的域上,即輸入可變長(zhǎng),輸出為固定長(zhǎng)。在密碼學(xué)中,哈希函數(shù)早已有廣泛應(yīng)用,經(jīng)典的哈希算法有SHA-2、MD5等。兩幅圖像即使只有一個(gè)比特不同,它們的哈希值也完全不同[8]。
圖像加密之前首先選取哈希算法,選擇SHA-2算法,計(jì)算明文圖像的哈希值Pv,Pv的長(zhǎng)度為256位,將它劃分為8組,每組包括8個(gè)16進(jìn)制數(shù),即pk1pk2pk7pk8,k=1,2,,8。對(duì)于每一組而言,采用式(3)將其變換為10進(jìn)制浮點(diǎn)數(shù)dk,dk∈(0,0.1)。
dk=hex2dec(pk1pk2pk7pk8)×10-12
(3)
(4)
(5)
通過(guò)以上方式,確保密鑰的生成依賴(lài)于明文,每次加密時(shí)密鑰能夠自動(dòng)發(fā)生變化,而無(wú)需修改初始值[8]。
加密算法流程圖如圖1所示,算法主要包括混沌序列的產(chǎn)生,圖像的置亂、分塊和擴(kuò)散等步驟。首先,通過(guò)密鑰的生成方法對(duì)Logistic映射和Lorenz映射的初始值和參數(shù)進(jìn)行處理得到密鑰。采用Logistic映射對(duì)明文圖像進(jìn)行位置置亂,其次對(duì)置亂后的圖像進(jìn)行分塊,然后利用Lorenz混沌映射生成的序列對(duì)分塊后的圖像分別進(jìn)行塊內(nèi)擴(kuò)散和塊間擴(kuò)散操作,使每個(gè)像素盡可能多地分散到整幅圖像中,完成加密過(guò)程。
圖1 加密流程圖
加密的主要步驟:
1)讀取一幅大小為M×N的灰度圖像I,采用Logistic映射生成一組混沌序列,去掉前δ1,得到長(zhǎng)度為MN序列X(k),將序列X(k)按式(6)處理得到新的序列X(k),其中floor函數(shù)是向下取整函數(shù),使用新的序列X(k)對(duì)圖像進(jìn)行像素點(diǎn)的置亂得到置亂后的圖像I1。
floor(x(i)×1010)modMN。
(6)
2)對(duì)圖像I1進(jìn)行分塊,劃分成大小為t×t的子塊(t是M、N的公約數(shù))。
ci(x′,y′)=
(7)
⊕S(k)。
(8)
解密過(guò)程和加密過(guò)程正好相反,是加密過(guò)程的逆操作,主要步驟如下:
(9)
ci(x,y)=
(10)
3)進(jìn)行逆置亂操作,即得到最后的明文圖像。
實(shí)驗(yàn)仿真軟件選擇的是MATLAB R2014a,圖像則選取了大小為256×256的灰度圖像Lena和Baboon。加密的初始密鑰為L(zhǎng)orenz映射和Logistic映射的初始值和參數(shù),其中σ=10,r=28,c=8/3,x0=1.000 1,y0=1.300 2,z0=1.200 3,x1=0.256 7,μ=3.816 2,δ1=δ2=δ3=200。原圖像和加密圖像如圖2所示。觀(guān)察密文圖像,從圖像中看不出原始圖像的信息,表示該算法加密效果良好,達(dá)到了隱藏原始圖像信息的目的。
密鑰空間指的是密鑰的取值范圍。為了確保圖像加密算法的安全性,密鑰空間應(yīng)該大到能夠防止窮舉等暴力攻擊。Alvarez等[9]建議,加密系統(tǒng)的密鑰空間至少達(dá)到2100,才算是足夠安全。在一定程度上,密鑰空間越大越好。
加密算法實(shí)際用到的初始密鑰主要來(lái)自L(fǎng)orenz映射和Logistic映射的初始值和參數(shù),主要包括:x0,y0,z0,x1,μ,由于這些值都是雙精度實(shí)數(shù),最大精度可取到10-15,因?yàn)長(zhǎng)ogistic映射的參數(shù)值μ∈(3.6,4],故Logistic映射參數(shù)值的密鑰空間為0.5×1015,加密算法總的密鑰空間為:0.5×1015×1015×1015×1015×1015≈5×1074?2100,因此,該加密算法的密鑰空間比較大,足夠抵御窮舉等暴力攻擊。除此之外,圖像的置亂次數(shù),圖像分塊的分塊大小,塊內(nèi)擴(kuò)散次數(shù)和塊間擴(kuò)散次數(shù)等等都是密鑰的一部分,此處并未列入。
好的圖像加密算法應(yīng)對(duì)密鑰的變化足夠敏感,即使密鑰發(fā)生很小的改變,也無(wú)法正確地還原出原始明文圖像。如圖3所示,以L(fǎng)ena灰度圖像為例,圖3(a)是使用原始密鑰進(jìn)行解密得到的圖像,即正確解密恢復(fù)的原始明文圖像。圖3(b)、(c)是Logistic映射的初始值和參數(shù)改變量=10-15時(shí)進(jìn)行解密得到的圖像,與原始明文圖像完全不同。從圖3可看出,當(dāng)密鑰的改變量只有=10-15時(shí),圖像依然無(wú)法正確地完成解密。可見(jiàn)即使密鑰只有微小的變動(dòng),解密后的圖像與原圖像卻千差萬(wàn)別,表明該算法有較好的密鑰敏感性。
圖2 明文圖像和密文圖像
圖像灰度直方圖是圖像中像素的分布密度圖,是圖像最基本的統(tǒng)計(jì)特征,可以依據(jù)密文圖像的直方圖來(lái)衡量圖像加密算法的性能,一個(gè)均勻、平滑的直方圖可以抵御直方圖的統(tǒng)計(jì)攻擊。以L(fǎng)ena圖像為例,圖像加密前后的直方圖如圖4所示。通過(guò)觀(guān)察加密前后的灰度直方圖能夠發(fā)現(xiàn),原始明文圖像中,許多像素點(diǎn)的灰度值集中在少數(shù)幾個(gè)灰度值附近,而加密后的灰度直方圖顯示,像素灰度值分布相對(duì)均勻,無(wú)明顯突出灰度值的存在。這表示該加密算法加密效果較好,很難依靠直方圖攻擊來(lái)完成破解。
相鄰像素的相關(guān)性描述的是圖像相鄰像素灰度值的關(guān)聯(lián)程度,相關(guān)系數(shù)值越小,則表示相鄰像素越?jīng)]有關(guān)系,相關(guān)系數(shù)值越小,越能抵御統(tǒng)計(jì)分析攻擊,越能擁有好的加密效果。在正常情況下,依照?qǐng)D像信息的特點(diǎn),原始明文圖像相鄰像素間的關(guān)聯(lián)性很強(qiáng),而有效的圖像加密算法應(yīng)該設(shè)法削弱原始待加密圖像中相鄰像素間的相關(guān)性。相關(guān)系數(shù)的公式如下:
(11)
(12)
(13)
(14)
其中:x,y為像素的灰度值;rxy為相關(guān)系數(shù);cov(x,y)為協(xié)方差;E(x)為均值;D(x)為方差。通常密文圖像的相鄰像素的相關(guān)系數(shù)值越接近于0,加密效果越好。以L(fǎng)ena圖像為例,隨機(jī)選取原始明文圖像和加密后密文圖像中各2 000對(duì)相鄰像素,計(jì)算其水平、豎直和對(duì)角3個(gè)方向的相鄰像素值,結(jié)果如表1所示。
表1 明文圖像和密文圖像的相關(guān)系數(shù)
從表1可見(jiàn),明文圖像的相關(guān)系數(shù)非常大,趨近于1,而密文圖像中相鄰像素間的相關(guān)系數(shù)已經(jīng)趨近于0。與所列的文獻(xiàn)相比,比文獻(xiàn)[12]、[13]效果要好,與文獻(xiàn)[11]效果相當(dāng),達(dá)到了不錯(cuò)的加密效果。
信息熵可以衡量圖像灰度值的分布信息,其值越大,圖像的隨機(jī)性越好。對(duì)于密文圖像而言,信息熵越大,隨機(jī)性越好,加密效果越好。設(shè)信息源為m,則信息熵為
(15)
其中p(mi)為信息m出現(xiàn)的概率。對(duì)于256灰度級(jí)的密文圖像,其信息熵的值越接近8,則表示圖像的加密效果越好。分別計(jì)算Lena圖像和Baboon圖像的信息熵,結(jié)果如表2所示。從表2可看出,加密后圖像的信息熵已經(jīng)接近于8,比所列文獻(xiàn)的效果要好。
表2 密文圖像的信息熵
為了解決低維混沌映射密鑰空間小,安全性能不高的問(wèn)題。提出了一種基于Lorenz映射和Logistic映射的圖像分塊加密算法。首先,采用Logistic映射對(duì)明文圖像進(jìn)行置亂操作;其次,對(duì)置亂后的圖像采取分塊處理,接著根據(jù)Lorenz映射生成的混沌序列分別對(duì)圖像進(jìn)行塊內(nèi)擴(kuò)散操作和塊間擴(kuò)散操作,最終得到加密后的密文圖像。仿真實(shí)驗(yàn)結(jié)果表明:該算法密鑰空間大,密鑰敏感性強(qiáng);密文圖像灰度直方圖分布均勻,相鄰像素的相關(guān)性弱,具有較好的加密性能。