盧守東
(廣西財(cái)經(jīng)學(xué)院信息與統(tǒng)計(jì)學(xué)院,廣西 南寧 530003)
圖像具有生動(dòng)形象的特點(diǎn),應(yīng)用十分廣泛。經(jīng)過數(shù)字化而成的數(shù)字圖像可由計(jì)算機(jī)高效處理,并能在網(wǎng)絡(luò)中快速傳播。為對(duì)數(shù)字圖像進(jìn)行有效的保護(hù),可采用相應(yīng)的加密技術(shù)。數(shù)字圖像加密是目前數(shù)字圖像處理領(lǐng)域的一個(gè)重要研究方向[1-3],基于各種混沌系統(tǒng)的數(shù)字圖像加密算法也已成為近年來的研究熱點(diǎn)之一,諸多各具特點(diǎn)、切實(shí)可行的算法已相繼出現(xiàn)在有關(guān)的文獻(xiàn)中[4-8]。
通過對(duì)圖像加密技術(shù)及有關(guān)算法的研究,本文以混沌系統(tǒng)及其產(chǎn)生的混沌序列為基礎(chǔ),提出一種通用的綜合使用像素坐標(biāo)置亂與像素值置換技術(shù)的數(shù)字圖像加密與解密算法,同時(shí)給出一種基于鄰域相鄰像素特性的抗剪切攻擊恢復(fù)算法。
混沌序列是混沌系統(tǒng)中所出現(xiàn)的混沌現(xiàn)象的運(yùn)動(dòng)軌跡。根據(jù)混沌系統(tǒng)的方程,指定不同的參數(shù)與初值,即可產(chǎn)生一系列非相關(guān)、類隨機(jī)、確定可再生的混沌序列?;煦缧蛄袑?duì)系統(tǒng)的參數(shù)與初值極其敏感,且在一定的區(qū)域內(nèi)具有遍歷性與偽隨機(jī)性,因此可用于對(duì)數(shù)字圖像進(jìn)行加密,而相應(yīng)的系統(tǒng)參數(shù)與初值均可作為密鑰的組成部分。
Logistic映射是目前應(yīng)用得相當(dāng)廣泛的、典型的一維混沌系統(tǒng),定義為[4]
式中:μ 為分支參數(shù),且 μ∈[0,4],xn∈(0,1),n=0,1,2,…。研究表明,當(dāng)3.5699456<μ≤4時(shí),Logistic映射所生成的混沌序列{xn,n=0,1,2,3,…}具有良好的隨機(jī)分布特性與遍歷性,是一種比較理想的偽隨機(jī)序列,且對(duì)初值x0十分敏感。在應(yīng)用Logistic映射時(shí),μ與x0均可作為密鑰使用。
Logistic映射具有良好的“雪崩效應(yīng)”。為提高安全性,在使用 Logistic 混沌序列{xn,n=0,1,2,3,…}時(shí),可適當(dāng)舍棄其前面的N個(gè)數(shù)據(jù)項(xiàng)(一般取N≥20)。相應(yīng)地,N也可作為密鑰的組成部分之一。
本文在進(jìn)行仿真實(shí)驗(yàn)時(shí),用于生成Logistic混沌序列的密鑰 key=(μ,x0,N)。
像素坐標(biāo)置亂是指對(duì)圖像的像素坐標(biāo)進(jìn)行變換以使其混亂。考慮到混沌序列的固有特性,可由混沌序列決定像素坐標(biāo)的變換位置,以達(dá)到理想的置亂效果。
假定圖像的大小為m×n,由密鑰key=(μ,x0,N)產(chǎn)生具有相應(yīng)長(zhǎng)度的混沌序列{x1,x2,x3,…,xm×n},將其按升序或降序進(jìn)行排序得到有序序列{xindex(1),xindex(2),xindex(3),…,xindex(m×n)},則該有序序列各數(shù)據(jù)項(xiàng)的下標(biāo)序列{index(1),index(2),index(3),…,index(m × n)}即為整數(shù)序列{1,2,3,…,m×n}的一個(gè)排列。據(jù)此,可構(gòu)造一個(gè)1-1變換Φ:k→index(k)。利用此變換Φ,可將該圖像的像素(i,j)(其中 i=0,1,2,…,m-1;j=0,1,2,…,n-1)按行列順序變換到新位置(row,col)
經(jīng)過像素的坐標(biāo)變換后,圖像將變得面目全非。
像素值置換是指對(duì)圖像的像素值進(jìn)行變換以改變其值。考慮到混沌序列的良好特性,可由混沌序列生成相應(yīng)的操作數(shù),然后再與各像素值分別進(jìn)行異或運(yùn)算,從而達(dá)到理想的置換效果。
假定圖像的大小為m×n,由密鑰key=(μ,x0,N)產(chǎn)生具有相應(yīng)長(zhǎng)度的混沌序列{x1,x2,x3,…,xm×n},將其按圖像類型轉(zhuǎn)換為無符號(hào)整數(shù)序列{z1,z2,z3,…,zm×n},然后與該圖像的像素值P(i,j)分別進(jìn)行異或運(yùn)算,即可得到置換后的像素值Pe(i,j)。
混沌序列轉(zhuǎn)換為無符號(hào)整數(shù)序列的公式為
式中:i=1,2,3,…,m ×n;k=0,1,2,3,…;abs表示取絕對(duì)值;round表示取最近整數(shù);T=2h為圖像類型值,h為二值圖像、灰度圖像或RGB真彩圖像各分量的比特深度。據(jù)此,可將k作為子密鑰使用。
像素值置換的公式為
式中:i=0,1,2,…,m-1;j=0,1,2,…,n-1。
反之,像素值恢復(fù)的公式為
經(jīng)過圖像像素值的隨機(jī)置換后,原圖像的灰度直方圖統(tǒng)計(jì)特性將被徹底改變。
在進(jìn)行數(shù)字圖像的加密時(shí),同時(shí)采用基于混沌序列的像素坐標(biāo)置亂與像素值置換,可有效提高加密圖像的抗剪切攻擊能力和抗像素特征值統(tǒng)計(jì)攻擊能力。若在進(jìn)行像素坐標(biāo)置亂與像素值置換時(shí)使用的不同的混沌序列,則加密效果更佳。
為簡(jiǎn)單起見,本文加密算法基于同樣的一個(gè)混沌序列進(jìn)行像素坐標(biāo)置亂與像素值置換,其主要步驟為:
1)讀取待加密圖像,生成像素矩陣P,并確定其大小m×n與圖像類型值T。
2)由密鑰key=(μ,x0,N)產(chǎn)生一個(gè)長(zhǎng)度為m×n的混沌序列{x1,x2,x3,…,xm×n}。
3)將{x1,x2,x3,…,xm×n}按升序或降序進(jìn)行排序,得到有序序列{xindex(1),xindex(2),xindex(3),…,xindex(m×n)},并據(jù)此生成下標(biāo)序列{index(1),index(2),index(3),…,index(m ×n)}。
4)根據(jù){index(1),index(2),index(3),…,index(m ×n)}及變換Φ:k→index(k),將像素坐標(biāo)(i,j)按行列順序變換到新位置(row,col),生成像素坐標(biāo)置亂后的圖像加密矩陣PE。
5)根據(jù)子密鑰 k及圖像類型值 T,將{x1,x2,x3,…,xm×n}轉(zhuǎn)換為無符號(hào)整數(shù)序列{z1,z2,z3,…,zm×n}。
6)將{z1,z2,z3,…,zm×n}中的各個(gè)數(shù)據(jù)項(xiàng)分別與像素矩陣PE中的對(duì)應(yīng)的像素值進(jìn)行異或運(yùn)算,生成像素值置換后的圖像加密矩陣P。
7)由像素矩陣P生成加密圖像。
本加密算法是可逆的,因此解密算法與加密算法具有相同的密鑰,但應(yīng)先恢復(fù)像素的值,然后再將各像素變換至其原來所在的坐標(biāo)位置。
針對(duì)惡意剪切等攻擊,可采用相應(yīng)的抗剪切攻擊恢復(fù)算法(簡(jiǎn)稱為ASAR算法),進(jìn)一步提高解密圖像的質(zhì)量。
像素坐標(biāo)置亂與像素值置換的雙重加密過程,極大地降低了圖像相鄰像素之間的相關(guān)性,加密圖像中的像素值已呈隨機(jī)分布狀態(tài),并均勻擴(kuò)散至整個(gè)取值范圍。因此,若發(fā)現(xiàn)連續(xù)的、等值的多個(gè)像素,則可認(rèn)為這些像素是被剪切的。為降低誤檢率,一般應(yīng)取3~6個(gè)連續(xù)像素作為判斷條件。
首先,創(chuàng)建一個(gè)與加密圖像大小一致的剪切區(qū)域標(biāo)記零矩陣CF。然后,逐行掃描加密圖像,若發(fā)現(xiàn)連續(xù)多個(gè)(本文算法為6個(gè))像素的值相同,則將CF中與這些像素對(duì)應(yīng)的元素置為255。
對(duì)于RGB加密圖像,可通過逐一比較CF各分量中對(duì)應(yīng)元素的值,將最終的剪切區(qū)域修正為各分量的相交部分。
本剪切區(qū)域檢測(cè)算法采用等值的像素掃描判斷技術(shù),因此同樣適用于涂鴉、污損等惡意攻擊的情形。
加密圖像解密后,被剪切的像素將按加密時(shí)的坐標(biāo)對(duì)應(yīng)關(guān)系變換至其原始位置,從而在整個(gè)解密圖像中呈均勻分布狀態(tài)。根據(jù)4鄰域相鄰像素的高度相關(guān)特性,可將鄰域像素的平均值作為各被剪切像素的值。本文解密圖像恢復(fù)算法的基本步驟為:
1)按對(duì)加密圖像進(jìn)行解密時(shí)各像素的坐標(biāo)變換關(guān)系,將CF中的各個(gè)元素變換至相應(yīng)像素在解密圖像中的坐標(biāo)所對(duì)應(yīng)的位置,得到一個(gè)相應(yīng)的圖像恢復(fù)標(biāo)記矩陣RF。
2)置unfinished為0。
3)逐行逐列掃描RF,若某個(gè)元素值為255,則計(jì)算其4鄰域中未被剪切(或已被恢復(fù))的像素的個(gè)數(shù)n以及相應(yīng)的像素值之和s。若n≥2,則將該元素的值置為0,同時(shí)將對(duì)應(yīng)的像素值置為平均值round(s/n);否則,置unfinished為1。
4)若unfinished=1,則轉(zhuǎn)至2)。
本文使用MATLAB R2007a平臺(tái),對(duì)各類常見圖像按文中算法進(jìn)行仿真實(shí)驗(yàn)。實(shí)驗(yàn)采用同樣的一個(gè)Logistic混沌序列對(duì)圖像進(jìn)行像素坐標(biāo)置亂與像素值置換加密,密鑰 key=(μ,x0,N)=(3.69,0.56789,50),子密鑰 k=3。對(duì)于RGB真彩圖像,亦采用同樣的混沌序列并按同樣的方式加密其R,G,B各分量。圖像經(jīng)加密后,均變得雜亂無章、面目全非,證明了算法的有效性。限于篇幅,在此只列出幾個(gè)有代表性的例子。實(shí)驗(yàn)結(jié)果見圖1~圖5。
圖1 本文算法灰度圖像Lena加密效果
圖5 圖1c抗剪切攻擊實(shí)驗(yàn)結(jié)果
如圖4所示的安全性實(shí)驗(yàn)表明,即使只對(duì)初值x0進(jìn)行微小修改(僅相差10-10),也將導(dǎo)致解密的完全失敗,此時(shí)所生成的解密圖像依然類似于待解密的加密圖像。同樣,只對(duì)其余的某個(gè)密鑰分量(μ,N或k)進(jìn)行微調(diào)時(shí),結(jié)果亦與此類似。只有在使用完全正確的密鑰與子密鑰時(shí),才能確保解密成功??梢?,本文算法具有極強(qiáng)的密鑰敏感性。此外,本文算法的密鑰分量較多(包括浮點(diǎn)型的μ,x0的與整型的N,k),因此擁有頗為巨大的密鑰空間,可有效抵御窮舉攻擊。
1)灰度直方圖
通過對(duì)各類圖像在加密前后的灰度直方圖進(jìn)行比較,可以發(fā)現(xiàn)其差異是十分明顯的。圖像經(jīng)過加密以后,其像素在整個(gè)取值范圍內(nèi)的分布相當(dāng)均勻,表明本文算法具有良好的擴(kuò)散性,可完全改變圖像的像素值統(tǒng)計(jì)特性。
2)相鄰像素的相關(guān)性
圖像相鄰像素的相關(guān)系數(shù)用于度量相鄰像素的相關(guān)性,其計(jì)算公式為[5]
式中:x,y為圖像中兩個(gè)相鄰像素的灰度值。
Lena,baidu_logo與Baboon圖像在加密前后的相鄰像素相關(guān)系數(shù)分別如表1、表2所示。實(shí)驗(yàn)數(shù)據(jù)表明,原始圖像在水平、垂直與對(duì)角方向的相鄰像素的相關(guān)系數(shù)均接近于±1.00,說明存在著高度相關(guān)性;而加密圖像在各個(gè)方向的相鄰像素的相關(guān)系數(shù)均接近于0,說明已呈幾乎不相關(guān)狀態(tài)。
表1 Lena與baidu_logo圖像相鄰像素的相關(guān)系數(shù)
表2 Baboon圖像R,G,B分量相鄰像素的相關(guān)系數(shù)
3)信息熵
圖像的信息熵用于度量圖像中灰度值的均勻分布情況,其計(jì)算公式為[6]
式中:p(xi)為圖像像素值xi出現(xiàn)的概率。
Lena,baidu_logo與Baboon圖像在加密前后的信息熵分別如表3、表4所示。實(shí)驗(yàn)數(shù)據(jù)表明,Lena加密圖像與Baboon加密圖像R,G,B各分量的信息熵均接近于8(256級(jí)灰度圖像信息熵的理論最大值),baidu_logo加密圖像的信息熵則剛好等于1(二值圖像信息熵的理論最大值)。可見,經(jīng)本文算法加密后,圖像的像素值分布已相當(dāng)均勻,且其出現(xiàn)概率亦幾乎是一致的。
表3 Lena與baidu_logo圖像的信息熵
表4 Baboon圖像R,G,B分量的信息熵
如圖5所示的抗剪切攻擊實(shí)驗(yàn)表明,即使加密圖像被隨機(jī)剪切的面積達(dá)到50%,仍然能夠直接解密出相當(dāng)不錯(cuò)的可識(shí)別的圖像,進(jìn)一步應(yīng)用ASAR算法時(shí)則可得到還原質(zhì)量更佳的恢復(fù)圖像,可見本文加密算法的抗剪切攻擊能力是較強(qiáng)的,而ASAR算法也是有效可行的。從峰值信噪比PSNR看,圖5c和圖5d分別為16.6685,10.6598,而圖5e和圖5f分別為25.6262,21.2186,這也客觀地表明了本文ASAR算法的有效性。
基于混沌系統(tǒng)及其所產(chǎn)生的混沌序列,本文提出了一種通用的數(shù)字圖像加密與解密算法,同時(shí)給出了一種基于鄰域相鄰像素特性的抗剪切攻擊恢復(fù)算法。文中的加密算法充分利用了混沌序列的固有特性,并采用像素坐標(biāo)置亂與像素值置換相結(jié)合的雙重加密技術(shù),具有較強(qiáng)的安全性。此外,該算法對(duì)于圖像的類型及大小沒有任何限制,并可使用Logistic,Henon,Lorenz等各類混沌系統(tǒng)所產(chǎn)生的混沌序列,且易于實(shí)現(xiàn),具有良好適應(yīng)性與實(shí)用性。為進(jìn)一步提高數(shù)字圖像的加密效果,可對(duì)本文算法進(jìn)行相應(yīng)的改進(jìn),如使用不同的混沌序列進(jìn)行像素坐標(biāo)置亂與像素值置換,或同時(shí)使用兩種不同的混沌系統(tǒng)等。
[1]李昌剛,韓正之,張浩然.圖像加密技術(shù)綜述[J].計(jì)算機(jī)研究與發(fā)展,2002,39(10):1317-1324.
[2]李昌剛,韓正之.圖像加密技術(shù)新進(jìn)展[J].信息與控制,2003,32(4):339-343.
[3]孫燮華.數(shù)字圖像處理:原理與算法[M].北京:機(jī)械工業(yè)出版社,2010.
[4]高飛,李興華.基于混沌序列的位圖像加密研究[J].北京理工大學(xué)學(xué)報(bào),2005,25(5):447-450.
[5]李太勇,賈華丁,吳江.基于三維混沌序列的數(shù)字圖像加密算法[J].計(jì)算機(jī)應(yīng)用,2006,26(7):1652-1654.
[6]李鵬,田東平.基于超混沌序列的數(shù)字圖像加密算法[J].微電子學(xué)與計(jì)算機(jī),2008,25(3):4-7.
[7]劉剛,王立香.一種新的基于混沌的圖像加密算法[J].電視技術(shù),2008,32(12):22-24.
[8]成亞萍,呂巍,張?zhí)?一種新的抗剪切的數(shù)字圖像加密算法[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(27):130-131.