安婷玉,蔣東華,劉立東
(長安大學(xué) 信息工程學(xué)院,陜西 西安 710064)
加密與可逆信息隱藏結(jié)合不僅能保護(hù)遙感圖像內(nèi)容的安全,還能在其遭到非法使用時(shí)利用嵌入的信息進(jìn)行溯源[1,2]。但由于二者均通過修改載體數(shù)據(jù)來進(jìn)行安全保護(hù),故直接疊加會相互干擾[3]。
對于一幅包含秘密信息的加密遙感圖像,需要滿足以下3種情況:①接收者只擁有加密密鑰時(shí),能解密包含嵌入數(shù)據(jù)的加密圖像,得到與原始圖像相似的圖像;②接收者只擁有嵌入密鑰時(shí),能從包含嵌入數(shù)據(jù)的加密或者解密圖像中提取秘密信息;③接收者同時(shí)擁有加密密鑰和嵌入密鑰時(shí),無論是先解密還是先提取信息均可無損恢復(fù)原始遙感圖像。文獻(xiàn)[4]提出的加密域可逆信息隱藏算法只能在解密之后進(jìn)行秘密信息的提取,不滿足情況②的要求。文獻(xiàn)[5]雖然克服了此缺陷,能在加密圖像中直接提取信息,但該方法在解密圖像中提取嵌入信息需要依賴加密密鑰,不滿足情況②的要求。文獻(xiàn)[6]將置亂加密與數(shù)字水印技術(shù)結(jié)合實(shí)現(xiàn)二者的獨(dú)立。然而,該方法僅針對置亂加密,加密結(jié)構(gòu)簡單密鑰空間小,具有一定局限性。
本文利用整數(shù)小波變換的正交性對遙感圖像進(jìn)行加密和信息嵌入。采用基于超混沌洛倫茲系統(tǒng)的置亂擴(kuò)散加密結(jié)構(gòu),相對于流密碼和置亂加密結(jié)構(gòu)更復(fù)雜,能夠?qū)崿F(xiàn)較好的加密性能。采用直方圖移位的方式進(jìn)行信息嵌入,保證一定嵌入率的基礎(chǔ)上解密圖像擁有更高的峰值信噪比。擁有不同密鑰的接收者可以解密或者信息提取,二者不會相互干擾,解密和信息提取后能夠無損恢復(fù)原始遙感圖像。
洛倫茲系統(tǒng)是一個(gè)三維連續(xù)混沌系統(tǒng),其動力學(xué)方程式如式(1)所示
(1)
(2)
第一代小波變換定義請參見文獻(xiàn)[8],但其變換后產(chǎn)生的小波系數(shù)是浮點(diǎn)數(shù),由于計(jì)算機(jī)精度的限制,往往會造成部分信息丟失。第二代小波變換,又稱整數(shù)小波變換,在保留第一代小波變換特性的基礎(chǔ)上實(shí)現(xiàn)了從整數(shù)到整數(shù)的無損小波變換。其結(jié)構(gòu)簡單,運(yùn)算量低,能夠在空域完成對雙正交小波的構(gòu)造;S變換是最簡單的整數(shù)小波變換,是線性Haar小波變換的近似整數(shù)形式[9]。遙感圖像的特殊性決定了任意細(xì)節(jié)的丟失對于遙感圖像來說都是不允許的,尤其涉及資源環(huán)境的遙感圖像。對遙感圖像進(jìn)行S變換,得到單層分解后的圖像矩陣;因?yàn)樽儞Q是可逆的,對分解后的圖像進(jìn)行S重構(gòu)變換,能夠完全恢復(fù)原始圖像,不會丟失原始圖像的任何細(xì)節(jié)。S變換的步驟為以下幾步:
(1)將原始圖像信號sj分為偶序列sj,2k和奇序列sj,2k+1, 每個(gè)子集的長度是原來的一半;
(2)利用偶序列和奇序列的相關(guān)性對每一行進(jìn)行S變換,接著對每一列進(jìn)行S變換得到分解后的圖像。S變換的分解式如式(3)所示
(3)
其中,sj-1,k和dj-1,k分別是信號經(jīng)S變換后的低頻部分和高頻部分,[ ]表示向下取整。
(3)重構(gòu)原始圖像時(shí),對分解后的圖像做S重構(gòu)變換,先對每一列進(jìn)行S重構(gòu)變換,再對每一行進(jìn)行S重構(gòu)變換得到無損恢復(fù)的原始圖像。S變換的重構(gòu)式如式(4)所示
(4)
迄今為止,已經(jīng)提出不同類型的可逆信息隱藏技術(shù),其中它們主要基于3種策略:無損壓縮、差分?jǐn)U展和直方圖平移[10]。根據(jù)整數(shù)小波變換后圖像矩陣的特點(diǎn),本文采用基于直方圖平移的方法進(jìn)行信息嵌入?;谥狈綀D的信息隱藏通過平移直方圖空出峰值像素點(diǎn)左側(cè)或者右側(cè)的像素值點(diǎn)的位置來嵌入秘密信息,在提取秘密信息之后,由數(shù)據(jù)嵌入引起的失真可以被完全消除,原始宿主圖像可以無損恢復(fù)。
Zigzag變換是一種掃描置亂算法,其原理是將矩陣中的元素根據(jù)“z”字形狀進(jìn)行掃描,并將掃描的元素按照掃描順序存儲在一維數(shù)組中,然后轉(zhuǎn)化成二維矩陣,這樣可以將矩陣元素進(jìn)行位置改變[11]。圖2為Zigzag變換示意圖。
本文提出的遙感圖像密文域信息隱藏算法框架如圖3所示。圖像擁有者對原始遙感圖像進(jìn)行整數(shù)小波變換,對變換后的低頻分量利用基于超混沌洛倫茲系統(tǒng)的置亂-擴(kuò)散加密方法進(jìn)行加密,將加密算法與低頻分量的統(tǒng)計(jì)信息相關(guān)且擴(kuò)散密鑰與置亂結(jié)果相關(guān)來提高加密算法的安全性以抵抗選擇明文攻擊;對變換后的3個(gè)高頻分量利用直方圖平移的方法進(jìn)行信息嵌入,采用雙峰值直方圖嵌入的方式提高嵌入容量;最后將加密后與信息嵌入后的4個(gè)分量進(jìn)行逆小波變換之后傳輸圖像。
圖像接收者對接收到的圖像進(jìn)行小波變換,根據(jù)獲取的不同密鑰執(zhí)行不同的操作:情景a:只有加密密鑰,解密低頻分量獲得與原始遙感圖像相似的圖像;情景b:只有嵌入密鑰,無論接收到的圖像是否經(jīng)過解密,均可以提取3個(gè)高頻分量中的秘密信息;情景c:同時(shí)擁有兩種密鑰,解密低頻分量同時(shí)提取高頻分量中的秘密信息,將恢復(fù)后的4個(gè)分量逆小波變換后可以得到無損恢復(fù)的原始遙感圖像。
對原始遙感圖像進(jìn)行整數(shù)小波變換(integer wavelet transform,IWT),得到4個(gè)分量,其中包括一個(gè)低頻分量(LL),3個(gè)高頻分量分別是水平方向高頻分量(HL)、垂直方向高頻分量(LH)、斜線方向高頻分量(HH),圖4為整數(shù)小波變換的示意圖。
混沌系統(tǒng)具有良好的初始值敏感性、偽隨機(jī)性和結(jié)果不可預(yù)測性,非常適合用于圖像加密,采用置亂和擴(kuò)散的加密結(jié)構(gòu)對小波變換后的低頻分量加密,并將加密算法與明文相關(guān)且置亂結(jié)果用于擴(kuò)散密鑰中提高加密性能以抵抗選擇明文攻擊。以下是加密算法的步驟:
步驟1 將第一組密鑰x0,y0,z0,w0和大小為M×N的明文原始圖像P輸入到圖像加密系統(tǒng)中去;
步驟2 對輸入明文圖像的所有像素值進(jìn)行求和,總和用SUM表示。計(jì)算Nx=SUMmodMN, 這里Nx為混沌系統(tǒng)迭代次數(shù)的一部分;
步驟3 在第一組密鑰x0,y0,z0,w0的控制下,用步長為0.002的四階龍格-庫塔法迭代式(2)Nx+MN次,并將x的迭代結(jié)果作為混沌序列,記為x={x1,x2,x3,…,xNx+MN}, 刪除序列x的前Nx項(xiàng)元素得到M×N個(gè)元素組成的新序列x′。迭代中加入Nx的目的是為了消除瞬時(shí)效應(yīng)并且與明文圖像進(jìn)行關(guān)聯(lián),避免選擇明文攻擊與已知明文攻擊;
步驟4 通過對步驟3中獲得的序列x′進(jìn)行升序排列得到升序序列x″={x″1,x″2,x″3,…,x″MN} 以及置亂位置序列t={t1,t2,t3,…,tMN}, 其中ti的含義是升序序列x″中第i個(gè)元素在序列x′中所在的位置;
步驟5 利用Zigzag變換對明文圖像P進(jìn)行預(yù)置亂,以混淆低頻分量的像素值,并將預(yù)置亂后的圖像轉(zhuǎn)換為一維像素向量,記為P_1={P1,P2,P3,…,PMN};
步驟6 Zigzag預(yù)置亂后的一維像素向量P_1={P1,P2,P3,…,PMN} 利用置亂位置序列t(i)和式(5)進(jìn)行置亂
P′(i)=P_1(t(i));i=1,2,…,MN
(5)
步驟7 輸入第二組密鑰x1,y1,z1,w1,用步長為0.002的四階龍格-庫塔法迭代式(4)Nx+P′(MN)+MN次,得到混沌序列z,記為z={z1,z2,z3,…,zNx+P′(MN)+MN}, 刪除序列z的前Nx+P′(MN) 項(xiàng)元素得到M×N個(gè)元素組成的新序列z′且將兩次迭代刪除的元素個(gè)數(shù)分別作為密鑰傳輸。
步驟8 找出明文圖像中最大的像素值m,并將m作為密鑰傳輸。然后對混沌序列z′按式(6)執(zhí)行操作,即可得到擴(kuò)散序列Q
(6)
步驟9 按如式(7)所示,使用擴(kuò)散序列Q對P′進(jìn)行擴(kuò)散
(7)
其中,mod表示與元素進(jìn)行求余操作,?表示按位異或;
步驟10 利用Zigzag逆變換將一維密文像素向量C′轉(zhuǎn)為M×N的矩陣,得到密文圖像C。
步驟11 發(fā)送方利用rand函數(shù)產(chǎn)生一個(gè)1×16的二進(jìn)制隨機(jī)矩陣,并將存儲在其中的二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)作為加密密鑰e,用密鑰e對Nx進(jìn)行異或加密得到N′x。
步驟12 構(gòu)造元素均為255的矩陣A∈M*N, 且將步驟7中迭代得到的混沌序列wend-1/16M×N+1:end進(jìn)行排序得到位置序列sw,end為混沌序列w中最后一個(gè)元素的序號且其取值與混沌序列w的長度相同。利用最低有效位(least significant bit,LSB)算法將N′x嵌入到矩陣A中,嵌入過程如式(8)所示
(8)
步驟13 將第一組加密密鑰、第二組加密密鑰以及密鑰e通過公鑰加密的方式進(jìn)行傳輸。
整數(shù)小波變換后遙感圖像高頻分量的直方圖如圖5所示。從圖5中可以看出整數(shù)小波變換后高頻分量的直方圖很尖銳而且下降速度很快,這樣的數(shù)據(jù)特點(diǎn)非常適合用直方圖平移進(jìn)行信息嵌入,因此在這個(gè)階段將所有高頻分量以直方圖平移的方式嵌入秘密信息。采用直方圖平移的方法將部分像素峰值點(diǎn)平移到峰值像素點(diǎn)兩側(cè),目的是減少直方圖的中心峰值從而完成信息隱藏。秘密信息隨機(jī)產(chǎn)生,其長度由每個(gè)高頻分量的直方圖峰值確定。以下是信息隱藏算法步驟:
步驟1 將所有高頻分量作為信息隱藏部分的輸入;
步驟2 找到直方圖中的兩個(gè)峰值點(diǎn),按照直方圖上兩個(gè)峰值像素點(diǎn)從左往右的次序依次指定為PL和PR,找到PL左側(cè)的零點(diǎn)記為ZL,以及PR右側(cè)的零點(diǎn)ZR,數(shù)據(jù)傳輸時(shí)將這4個(gè)值作為密鑰進(jìn)行傳輸。生成隨機(jī)數(shù)據(jù)的長度要使范圍[PL,PR]內(nèi)的所有像素都包括在內(nèi);
步驟3 按照式(9)進(jìn)行信息嵌入
(9)
其中,Pi為嵌入之前的像素,P′i為變換后的像素,bk為第k個(gè)嵌入的二進(jìn)制數(shù)據(jù)位。嵌入秘密信息后的3個(gè)高頻分量的直方圖如圖6所示。
擁有嵌入密鑰的接收者可以從包含嵌入數(shù)據(jù)的加密圖像中提取出秘密信息,且無論接收到的圖像是否經(jīng)過解密都可以進(jìn)行信息提取。以下是信息提取算法的步驟:
步驟1 將接收圖片小波變換之后的所有高頻分量作為信息提取部分的輸入;
步驟2 按照式(10)進(jìn)行信息提取
(10)
其中,R_P′i為接收到的包含嵌入數(shù)據(jù)的圖像像素值,R_PL和R_PR為嵌入密鑰,b′k為從包含嵌入數(shù)據(jù)的圖像中提取的第k個(gè)二進(jìn)制信息位。
解密過程是加密過程的逆過程,接收者只要擁有加密密鑰就可以從包含嵌入數(shù)據(jù)的加密圖像中解密得到與原始圖像相似的圖像。以下是解密算法的步驟:
步驟1 將加密密鑰和密文圖像C輸入到解密算法中,在加密密鑰的控制下使用與加密時(shí)同樣的方法迭代混沌序列,得到擴(kuò)散矩陣Q和置亂位置序列t;
步驟2 利用Zigzag變換將密文圖像C轉(zhuǎn)換為一維密文像素向量C′,按如式(11)所示,使用擴(kuò)散矩陣Q對C′進(jìn)行逆擴(kuò)散
(11)
步驟3 按如式(12)所示,使用步驟1中得到的置亂位置序列t(i)對逆擴(kuò)散后的像素向量P′進(jìn)行逆置亂
P″(t(i))=P′(i),i=1,2,…,MN
(12)
步驟4 利用Zigzag逆變換將像素向量P″轉(zhuǎn)為M×N的矩陣,得到明文圖像矩陣P。
對圖像的小波系數(shù)進(jìn)行處理會引起空域上像素值的變化,這種變化可能會導(dǎo)致不可避免的上溢或者下溢現(xiàn)象。對于8 bit的數(shù)字圖像來說,上溢代表像素值大于255,下溢代表像素值小于0。因此在圖像傳輸時(shí)這些溢出的像素值會產(chǎn)生截?cái)?,大?55的像素值會突變成255,小于0的像素值會突變成0,這對于載體圖像的無損恢復(fù)來說是不允許的。為了解決這一問題,本文使用定位圖來進(jìn)行溢出處理。
首先,圖像擁有者對得到的包含嵌入數(shù)據(jù)的加密圖像IE進(jìn)行掃描,生成一個(gè)與圖像像素一一對應(yīng)的位置圖L
(13)
其中,IE(i,j) 為包含嵌入數(shù)據(jù)的加密圖像IE的像素值。通過使用位置圖L可以記錄下產(chǎn)生溢出的像素坐標(biāo)。然后,圖像擁有者需要對產(chǎn)生溢出的像素進(jìn)行調(diào)整,對于存在溢出的像素值,按式(14)進(jìn)行處理
(14)
其中,IE(i,j)′為溢出處理后的圖像像素。隨后,圖像擁有者需要將位置圖L進(jìn)行無損壓縮,壓縮后用流密碼加密的方式進(jìn)行加密傳輸。
接收方得到壓縮加密后的定位圖后先用密鑰解密定位圖再解壓縮得到與原始定位圖完全相同的定位圖。然后,根據(jù)定位圖L還原溢出處理之前的像素IE(i,j)
(15)
在將像素IE(i,j)′ 還原成IE(i,j) 后,接收方可以根據(jù)2.4小節(jié)和2.5小節(jié)中描述的方法將秘密信息提取出來并恢復(fù)出原始的載體圖像。
實(shí)驗(yàn)結(jié)果如圖7所示。實(shí)驗(yàn)選取的測試圖像是圖7(a)所示的大小為512×512的遙感圖像playground,圖像加密后原始圖像的低頻分量轉(zhuǎn)化為不可讀亂碼高頻分量不變,以生成圖7(b)所示的加密圖像,然后在加密圖像的3個(gè)高頻分量中嵌入37 953比特的秘密信息得到包含嵌入數(shù)據(jù)的加密圖像如圖7(c)所示,當(dāng)接受方僅擁有加密密鑰時(shí),解密低頻分量后得到的圖像如圖7(d)所示,由于整數(shù)小波變換的正交性,圖7(d)等價(jià)于僅對原始圖像執(zhí)行信息嵌入操作后的圖像,當(dāng)接收方僅擁有嵌入密鑰時(shí),無論接收到的圖像是圖7(c)還是圖7(d)均可以提取秘密信息,圖7(e)為從圖7(c)中提取秘密信息后得到的圖像,圖7(f)為從圖7(d)中提取秘密信息后得到的圖像,可以看出圖7(f)與原始圖像完全相同,即算法能夠無損恢復(fù)出原始圖像。
明文圖像中的局部像素點(diǎn)之間一般來講具有極其大的相關(guān)性,為了使圖像加密算法達(dá)到較好的加密效果,必須讓密文圖像中局部像素點(diǎn)之間擺脫這種相關(guān)性。我們從明文圖像和密文圖像中隨機(jī)抽取n=10000對相鄰像素點(diǎn)進(jìn)行相關(guān)性分析,通過式(16)~式(19)來計(jì)算明文圖像和密文圖像的相關(guān)系數(shù)
(16)
(17)
(18)
(19)
其中,x,y表示圖像中兩個(gè)相鄰像素的灰度值,E(x)表示變量x的期望,D(x)表示變量x的方差,最終計(jì)算得到的相關(guān)系數(shù)rxy的值屬于[0,1]。圖8顯示了Man灰度圖像和相應(yīng)密碼圖像之間的相關(guān)分布,可看出密文圖像的相鄰像素之間沒有可檢測的相關(guān)性。
此外,表1顯示了明文圖像與密文圖像的相關(guān)性系數(shù)。其中,H、V、D分別代表水平、垂直和斜線方向??梢钥闯黾用苤髨D像中局部像素點(diǎn)之間的相關(guān)系數(shù)變小即相關(guān)性變?nèi)鯃D像的安全性變高。
表1 明文圖像和密文圖像相鄰像素的相關(guān)性
圖像的直方圖反映該圖像中所有像素值的分布,如果不對明文圖像的像素值進(jìn)行掩蓋,則會泄露圖像的像素分布信息。一個(gè)好的密碼系統(tǒng)所生成的密文圖像的所有像素值應(yīng)該十分均勻分布在[0,255]灰度級之間,使其不被統(tǒng)計(jì)分析。從圖9中可以看出,明文圖像的直方圖分布十分不均勻,但是經(jīng)過提出的加密系統(tǒng)加密以后生成的密文圖像的直方圖卻十分均勻分布在[0,255]之間,說明我們的加密算法具有優(yōu)良的擴(kuò)散特性和抵抗統(tǒng)計(jì)分析的能力。
信息隱藏會對載體圖像產(chǎn)生一定的影響,信息隱藏之后的載體要求具有不可感知性,即對載體的改變不可察覺主觀上可以通過視覺的感知,客觀上評價(jià)直接解密的載體圖像相對于原始圖像的失真情況主要有峰值信噪比(peak signal to noise ratio,PSNR),其取值依賴于均方差(mean square error,MSE),通過式(20)~式(21)進(jìn)行計(jì)算
(20)
(21)
其中,d表示數(shù)據(jù)中的最大值,對于灰度圖像d=255;M,N表示圖像寬高;X,Y分別表示原始圖像和解密后包含秘密信息的圖像,i,j分別表示像素點(diǎn)的橫縱坐標(biāo)。PSNR與MSE成反比,當(dāng)MSE越小時(shí)PSNR值越大,則兩幅圖像像素值改變量越少,差異越小,反之失真越大。測試不同圖像解密圖像在最大嵌入率下的PSNR,并與文獻(xiàn)[5,12,13]進(jìn)行對比,測試結(jié)果見表2。
從表2可以看出,當(dāng)嵌入容量達(dá)到最大時(shí),本文算法的PSNR值明顯較高,故解密圖像的質(zhì)量也更好。
嵌入率(embedding rate,ER)是評價(jià)可逆信息隱藏算法中秘密信息嵌入容量的指標(biāo),它表示平均每像素嵌入的比特?cái)?shù),單位是bpp(bit per pixel),其計(jì)算公式如式(22)所示
(22)
其中,Bm表示載體圖像能夠嵌入的最大信息容量,M×N為載體圖像的大小。該評價(jià)指標(biāo)說明,對于同一幅載體圖像,其ER值越大則說明可嵌入的信息容量越大。測試不同圖像的嵌入率,并與文獻(xiàn)[5,12,13]進(jìn)行對比,測試結(jié)果見表3。
表3 不同算法最大嵌入率對比
從表3可以看出,本文的嵌入率更高;尤其是Lena和Airplane,相對于文獻(xiàn)[5,12,13]有很大的提升,主要原因是圖像較平滑,使得整數(shù)小波變換之后細(xì)節(jié)分量直方圖更尖銳,嵌入容量更大。而Baboon圖像的紋理比較豐富,其細(xì)節(jié)分量相對比較平緩,嵌入容量也較小。此外,圖10所示為圖像Airplane在不同嵌入率和不同算法的解密圖像PSNR對比??梢钥闯?本文算法能夠獲得更好的解密圖像質(zhì)量。
遙感圖像作為一種敏感信息,不僅需要存儲和傳輸過程中的安全性,還需要使用過程中的安全性。為此,本文提出了一種基于整數(shù)小波變換的融合加密技術(shù)和可逆信息隱藏技術(shù)的遙感圖像綜合安全保護(hù)方案。在該方案下,接收到包含秘密信息的加密圖像的接收者可以根據(jù)擁有密鑰的不同分別進(jìn)行解密或者信息提取,解密和信息提取不會相互影響,最終可以無損恢復(fù)原始遙感圖像。基于超混沌洛倫茲系統(tǒng)的置亂擴(kuò)散加密結(jié)構(gòu),彌補(bǔ)了目前基于流密碼加密或者分塊置亂加密在結(jié)構(gòu)上和安全性上的不足;實(shí)驗(yàn)結(jié)果表明,在保證一定嵌入率的基礎(chǔ)上本文提出算法的解密圖像質(zhì)量更好。