劉公致 吳 瓊 王光義 靳培培
(杭州電子科技大學(xué)電子信息學(xué)院 杭州 310018)
隨著計算機網(wǎng)絡(luò)的快速發(fā)展,信息安全越來越受到人們的重視。圖像加密作為一種信息保護的手段,通過加密可以最大限度地確保圖像信息不會被竊密者容易的獲取,從而確保信息的安全性。
將混沌系統(tǒng)應(yīng)用到圖像加密領(lǐng)域已經(jīng)有很多的實例,大致分為兩種類型:一是直接使用已有的經(jīng)典混沌映射或者將經(jīng)典混沌映射與其他算法結(jié)合,比如脫氧核糖核酸(DeoxyriboNucleic Acid, DNA)突變原理與Chen系統(tǒng)結(jié)合的算法[1];二是在原有的經(jīng)典混沌映射基礎(chǔ)上進行改進,將改進后的混沌映射應(yīng)用到圖像加密。
混沌圖像加密的基礎(chǔ)是混沌映射序列的優(yōu)劣。針對已有經(jīng)典Logistic混沌映射存在的問題,諸如映射范圍小、非滿映射、混沌參數(shù)范圍小等,對于Logistic映射的改進方式大致分為兩個方向,一種是將Logistic映射作分段處理,根據(jù)變量xn劃分分段區(qū)間,獲得了更多的映射區(qū)域[2]。另一種是對于生成的數(shù)值做復(fù)雜化處理。文獻[3]將參數(shù)和變量相結(jié)合,來確定區(qū)間范圍,擴大了分形參數(shù)范圍。文獻[4]提出將 Sine 映射和 Logistic 映射通過指數(shù)運算復(fù)合得到一個新型混沌系統(tǒng)—正弦函數(shù)Logistic(Sine-Exponent-Logistic, SEL)混沌系統(tǒng),但這大大增加了系統(tǒng)的復(fù)雜性,運算量也增加。文獻[5]也將Logistic映射和Sine映射耦合,將1維映射擴展到2維用于圖像加密以獲得更快的速度和性能。如果對Logistic映射加入取模函數(shù),對改進映射所生成的序列進一步作了比特重新安排的處理,其遍歷性、初值敏感性、偽隨機性比未作處理前的序列更優(yōu)越[6]。也可利用兩個現(xiàn)有的混沌映射作為種子映射,余弦變換作為框架,生成一種新的混沌映射,并應(yīng)用到圖像加密算法中[7]。文獻[8]提出了一種結(jié)合纏繞 Logistic 映射和動態(tài) DNA 編碼與運算的彩色圖像加密算法。還有一些基于離散混沌和超混沌的圖像加密算法[9,10]。一般高維混沌系統(tǒng)的改進方法是在原有的混沌系統(tǒng)基礎(chǔ)上,加入非線性或線性控制器的方法來構(gòu)造的。比如文獻[11],采用在Lorenz系統(tǒng)的基礎(chǔ)上改進提出的4維超混沌系統(tǒng)應(yīng)用于圖像加密。文獻[12]在Cai構(gòu)建的3維混沌系統(tǒng)的基礎(chǔ)上加入兩個新的控制器構(gòu)造出一個5維的超混沌系統(tǒng),應(yīng)用于圖像加密。
本文在對Logistic映射加以改進,提出一種性能良好的新型混沌映射,將該映射應(yīng)用于圖像加密,具有參數(shù)取值范圍廣、計算量相對較小等特點。并且將加密后的圖像隱藏于與密文無關(guān)的載體圖像中,以達到保護原圖像的目的。
Logistic混沌映射的表達式為
(3)迭代值的分布得到了很大的改善。
Lyapunov 指數(shù)是指在相空間中相互靠近的兩條軌線隨著時間的推移,按指數(shù)分離或聚合的平均變化速率。最大Lyapunov指數(shù)定義為
改進的Logistic映射的分叉圖,Lyapunov指數(shù)圖和直方圖如圖1所示。
Logistic映射分叉圖只有μ取值在(3.5699456, 4]范圍才達到混沌狀態(tài),并且留有許多周期窗口。從圖1可以看出,改進的Logistic映射在α=5、參數(shù)μ在[–50, 50]范圍時,在[0, 5]范圍內(nèi)都是滿映射狀態(tài),并且混沌序列的值分布比較均勻。為了方便討論,下文中參數(shù)α取值默認是1。
另外,若把初值xn-1看作yn,取α=1時,式(2)還可以改寫成2維形式
表1為Logistic映射與改進后的Logistic映射的主要性能對比,可以明顯看出改進后的Logistic映射在各方面都有明顯的提升。
表1 Logistic映射與改進的Logistic映射比較
整個加密算法分為3部分,一是利用改進的Logistic生成的隨機序列對明文圖像進行異或加密,二是對預(yù)加密的密文圖像做置亂和擴散處理,三是把密文圖像隱藏到另一載體圖像之中,對其進行偽裝。具體算法描述如下:
該算法的框圖如圖2所示的加密流程圖。
首先是密鑰取值。下文將會用到圖像隱藏方法,為了方便從載圖中提取出密文序列,本文將明文圖像的行數(shù)值和列數(shù)值隱藏在密鑰當(dāng)中。為盡可能提高安全性,需要對明文圖像的行數(shù)值和列數(shù)值作一定的處理,處理后的行數(shù)值和列數(shù)值分別作為混沌序列的兩個初值密鑰。有兩種處理方法:
方法1,將明文圖像的行數(shù)值或列數(shù)值轉(zhuǎn)換成二進制數(shù),然后再進一步轉(zhuǎn)換成對應(yīng)的格雷碼形式,然后再將其轉(zhuǎn)換成十進制數(shù)。
方法2,將明文圖像的行數(shù)值或列數(shù)值轉(zhuǎn)換成二進制數(shù),假設(shè)其二進制形式為[p8, p7, p6, p5,p4, p3, p2, p1],其中p1是最低位。將該二進制數(shù)的倒數(shù)第4位和倒數(shù)第3位之間插值1,即在p4與p3之間插值1,再將該數(shù)值循環(huán)左移4位。插值的目的是防止循環(huán)左移后二進制的第1位是0,最后造成無法還原原數(shù)值。把最后生成的二進制數(shù)再轉(zhuǎn)換成十進制數(shù)。注意,在解密時要將生成的二進制數(shù)的第1位數(shù)字1去除,再做位移處理。
為了方便,對方法1編號為1,方法2編號為2,并將其記錄在參數(shù)μ中。為此可將μ分為整數(shù)和小數(shù)兩個部分,把兩種方法分別記錄在整數(shù)部分的個位和小數(shù)部分的第1位,參數(shù)μ的其他位取值和μ的取值位數(shù)根據(jù)需要確定。
選取規(guī)格為500×500的Lena圖作為明文圖像,其行數(shù)值用方法1處理、列數(shù)值用方法2處理后得到的轉(zhuǎn)換值分別為270和830,將其作為式(2)混沌映射的初值,即xn-1=270,xn=830。參數(shù)μ取小數(shù)點前后各兩位,根據(jù)其取值方法得μ=11.23。對明文圖像的預(yù)加密可分為以下3個步驟:
在Matlab中,利用式(6)對明文圖像進行預(yù)加密仿真,得到預(yù)加密圖像。
置亂過程如下:
分別從圖像的相鄰像素點相關(guān)性,直方圖分析,密鑰和明文敏感性測試,信息熵分析和復(fù)雜度幾個方面分析圖像的加密效果。
相鄰像素點相關(guān)性。明文圖像在水平、垂直、對角方向上的相鄰像素相關(guān)性都較強。理論上,密文圖像在各個方向上的相關(guān)性應(yīng)該很弱,加密系統(tǒng)的加密效果才是理想的。加密前后圖像的水平、垂直和對角方向的相鄰像素點的散點圖如圖3所示。
通過對加密前后的圖像3個方向上相鄰像素散點圖比較可以看出,在加密后,圖像各方向相鄰像素的相關(guān)性很弱,說明加密效果較好。也可以通過式(10)和式(11)計算圖像的相關(guān)系數(shù)來觀察相關(guān)性
其中,x和y代表兩個相鄰像素的值,N是圖像中像素的總數(shù),E是x或者y的期望,D是方差,c ov是協(xié)方差,r就是相關(guān)性。分別在圖像的垂直方向、水平方向和對角方向隨機選取1000個相鄰像素點,通過式(10)、式(11)計算相關(guān)系數(shù),計算結(jié)果如表2所示。由表2看出,密文圖像的相關(guān)系數(shù)接近于0,說明加密后的相鄰像素點的相關(guān)性很低。
表2 明文/密文圖像在3個方向上的相關(guān)系數(shù)
利用圖像的直方圖,可以直觀地看出一幅圖像的像素值分布特征。直方圖如圖4所示,可見密文圖像的直方圖近似均勻分布。
密鑰敏感性測試。對于密鑰的細微變化,同一明文圖像在密鑰改變前后生成的密文也有很大不同。通常采用像素變化率(the Number of Pixels Change Rate, NPCR)和歸一化平均變化程度(the Unified Average Changing Intensity, UACI)來衡量密文隨明文像素值微小改變而變化的程度,其計算公式為
其中,M和N分別代表圖像的長和寬,E和E′分別表示同一位置變化前后的像素值,D的值表示比較兩個數(shù)值是否相同,當(dāng)E(i,j)=E′(i,j)時,D(i,j)=0,否則D(i,j)=1。給定混沌映射初值是xn-1=270,xn=830和μ=11.23。分3次分別改變3 個變量的值為xn-1=270.001,xn=830.001和μ=11.231。每次只改變1項,其他變量值不變,對同一圖像加密,分別比較數(shù)值改變前后的NPCR和UACI值,得到表3。從表3可以看出,計算出的數(shù)值接近理想數(shù)值99.6%和33.4%,說明該算法具有很好的密鑰敏感性。
表3 密鑰敏感性分析(%)
明文敏感性測試。攻擊者通過觀察明文微小變化引起解密的變化,找到圖像明文與圖像密文的相關(guān)性。如果原圖像的微小變化能引起密文的很大變化,差分攻擊的影響會減小。分3次分別只改變明文圖像中的一個像素點的數(shù)值,然后用相同的密鑰產(chǎn)生隨機序列對改變后的明文圖像進行加密,分別比較像素點數(shù)值改變前后NPCR和UACI的值。隨機選取3個像素點:像素點1,坐標2行150列,將其數(shù)值改變成30;像素點2,坐標251行401列,將其數(shù)值改變成1;像素點3,坐標432行23列,將其數(shù)值改變成200。分別計算NPCR和UACI值,并對3次的數(shù)值取平均值,得到表4。由表4可以看出,得到的數(shù)值接近理想值,說明該算法具有較好的明文敏感性,能夠很好抵御差分攻擊。
表4 明文敏感性分析(%)
信息熵分析。信息熵是用來反映圖像的隨機性或不確定性的一個標準。如果一幅圖像隨機性越強,那么它的信息熵越接近數(shù)學(xué)理論值。信息熵的計算公式如式(14)所示
其中,p(Si)為信號Si的概率。n表示每個信號的二進制位數(shù)。因此,從理論上來講,對于8位二進制表示的灰度圖像,理想情況下密文圖像的信息熵應(yīng)該等于8,值越接近8則說明密文隨機性越好。經(jīng)過計算,該算法加密后的圖像的信息熵為 7.9485,接近理想值。
時間復(fù)雜度分析。本文中的圖像加密步驟主要包括圖像預(yù)加密、圖像置亂、預(yù)加密圖像再加密和圖像隱藏。設(shè)定圖像規(guī)格是M×N。圖像預(yù)加密部分生成混沌序列并且與明文圖像做異或處理,所以其時間復(fù)雜度是O(2×M×N)。圖像置亂部分也需要生成混沌序列,并置亂處理,則其算法復(fù)雜度是O(2×M×N)。預(yù)加密圖像再加密只需做異或處理,所以其時間復(fù)雜度是O(M×N)。圖像隱藏需要生成混沌序列并且密文圖像與載圖像素點為1:2的比例存放,則其算法復(fù)雜度是O(3×M×N)。綜上所述,整個加密算法總的時間復(fù)雜度是O(8×M×N)。將本算法的復(fù)雜度與已有加密算法進行比較,得到表5??梢钥闯?,本算法的時間復(fù)雜度略低于其他算法。由于本算法相較于其他算法又額外添加了圖像隱藏部分,同樣復(fù)雜度情況下,本算法性能更優(yōu)。
表5 不同算法時間復(fù)雜度比較
經(jīng)過加密的圖像雖然能夠很好地保護圖像信息,但是加密的圖像以亂碼的形式展示出來,很容易引起他人的注意與懷疑。所以,為了盡可能地降低加密圖像被破譯的風(fēng)險,需要對加密后的圖像做隱藏處理。比較流行的圖像隱藏方式是將密文圖像隱藏在不帶任何重要信息的載圖中[17]。
最低有效位算法(Least Significant Bit, LSB)是一種典型的空域算法[18]。其算法原理是:將密文信息隱藏在數(shù)字圖像二進制形式像素值的最后一位。只改變二進制形式像素值的最低位,整幅圖像沒有明顯變化。這樣,可把密文信息分拆開,嵌入到載體圖像二進制形式像素值最低位。由文獻[19]可知,從密文隱藏之后所得圖像的大小以及載體圖像像素點的利用率兩方面考慮,最合適的隱藏方法就是將密文圖像隱藏到載體圖像8位二進制形式像素值的后4位。
具體圖像隱藏步驟如下:像素位置嵌入密文數(shù)值,注意,只選取P31×mn中1~2MN的位置,選取一輪之后再從頭繼續(xù)選取,并不斷判斷該位置是否已經(jīng)選取過,若選取過,則跳轉(zhuǎn)到下一個位置,以此循環(huán),直到所有密文數(shù)據(jù)全部放入到載圖中,得到隱藏密文的圖像P 3。
選取規(guī)格為3000×4000的圖像作為載圖,在Matlab中仿真,隱藏處理后最終得到的圖像如圖6所示。
圖像解密是整個加密過程的逆過程。首先根據(jù)密鑰確定密文圖像的行數(shù)值和列數(shù)值,進而從載圖中提取出密文數(shù)據(jù),然后根據(jù)生成的隨機序列對密文數(shù)據(jù)排序得到最初密文數(shù)據(jù)如圖7(b),再將密文通過加密的反過程,最終解密得到明文圖像如圖7(c)。
本文提出改進型的混沌映射,該映射具有雙初值和雙參數(shù),混沌映射均為滿映射,并且其映射范圍可任意調(diào)控。將該映射應(yīng)用于圖像加密,使之具有廣泛的密鑰空間。該加密算法結(jié)合提出的混沌映射,使用了兩次異或處理,加密時間短,能很好地抵御明文攻擊。通過信息熵、相關(guān)性等分析后,實驗數(shù)據(jù)表明加密算法具有很好的加密效果。最后又將該映射應(yīng)用到加密圖像的置亂隱藏中,整個隱藏過程并沒有明文圖像的數(shù)據(jù)丟失,并且隱藏前后載圖大小不變,使得加密后的圖像在獲得了隱蔽性的同時,又進一步增加了圖像的安全性。該隱藏算法的局限性在于只能將密文圖像隱藏在自身大小兩倍或者更大的圖像中,適合應(yīng)用在對于圖像存儲空間要求低的領(lǐng)域中。