林文兵, 張敏情, 周 能, 孔詠駿
(武警工程大學(xué)網(wǎng)絡(luò)與信息安全武警部隊(duì)重點(diǎn)實(shí)驗(yàn)室, 西安 710086)
可逆信息隱藏技術(shù)[1-2]是信息隱藏研究領(lǐng)域的重要分支,是接收方在正確提取信息后,還能無(wú)差錯(cuò)地恢復(fù)原始載體。嚴(yán)格來(lái)講,它屬于一種脆弱水印。因此,通常應(yīng)用于遠(yuǎn)程醫(yī)學(xué)、司法取證等領(lǐng)域。近年來(lái),可逆信息隱藏技術(shù)得到不斷的發(fā)展,目前有三種典型的嵌入方式:無(wú)損壓縮[3-4]、差分?jǐn)U展[5-6]和直方圖平移[7-9]。Thodi等[10]提出了預(yù)測(cè)誤差擴(kuò)展算法。此后,該算法得到不斷的改進(jìn),如直方圖平移和預(yù)測(cè)誤差擴(kuò)展相結(jié)合等。
隨著黑客攻擊,網(wǎng)易郵箱泄露等信息安全事件的頻繁發(fā)生,密文域可逆信息隱藏受到了廣泛的關(guān)注[11-13]。它要求用于嵌入信息的載體是經(jīng)過(guò)加密的,并且在正確提取信息后能無(wú)損地恢復(fù)原始載體。同時(shí),由于云服務(wù)的推廣,密文域可逆信息隱藏技術(shù)作為密文信號(hào)處理技術(shù)與信息隱藏技術(shù)的結(jié)合也得到了持續(xù)的研究。
為了提高嵌入容量,Ma等[14]提出了加密前預(yù)留空間的方法,通過(guò)將像素值的最低有效位嵌入到其他像素值中,從而得到預(yù)留空間進(jìn)行信息嵌入。雖然該方法可以提高嵌入容量,但是存在發(fā)送方不能提前知道嵌入信息的長(zhǎng)度和復(fù)雜預(yù)處理增加系統(tǒng)負(fù)擔(dān)的問(wèn)題。因此,不能滿足實(shí)際應(yīng)用。相反,加密后預(yù)留空間[15-17]是對(duì)加密后的像素進(jìn)行修改,從而得到預(yù)留空間。Zhang[15]提出加密后預(yù)留空間的方法,通過(guò)翻轉(zhuǎn)每個(gè)塊中的三個(gè)最低有效位,從而進(jìn)行信息的嵌入。Hong等[16]通過(guò)更好地運(yùn)用空間相關(guān)性,將Zhang的算法進(jìn)一步改進(jìn)。Zhang[18]提出了可分離算法,即接收方可以在明文和密文上正確提取秘密信息。Qian等[19]運(yùn)用信源分布編碼將Zhang的方法進(jìn)一步改進(jìn)。Ren等[20]將置換有序二進(jìn)制(permutation ordered binary,POB)編碼技術(shù)引入密文域可逆信息隱藏。
受文獻(xiàn)[20]的啟發(fā),為了進(jìn)一步解決嵌入信息時(shí)造成溢出問(wèn)題和加密后圖像分塊內(nèi)仍存在一定的相關(guān)性問(wèn)題。同時(shí),提高秘密信息的嵌入容量。現(xiàn)將混沌映射和POB編碼運(yùn)用于密文域可逆信息隱藏。首先,圖像擁有者運(yùn)用混沌映射對(duì)原始圖像進(jìn)行加密,得到加密圖像。然后,數(shù)據(jù)隱藏者對(duì)加密圖像進(jìn)行預(yù)處理后,運(yùn)用POB編碼技術(shù)在滿足嵌入條件的像素點(diǎn)上進(jìn)行秘密信息的嵌入。以期實(shí)現(xiàn)秘密信息的正確提取和原始圖像的無(wú)損恢復(fù)。
(1)
(2)
式中:i為二進(jìn)制字符串的位置;j為POB編碼系統(tǒng)中的數(shù)值位置;bj為二進(jìn)制字符串各個(gè)位置的數(shù)值,如0或1;Pj為二進(jìn)制字符串各個(gè)位置的數(shù)值之和;V(B)為POB編碼系統(tǒng)中的數(shù)值。
1.2.1 Logistic映射
Logistic映射[22]是一種非線性方程,具有混沌特性,可表示為
xn+1=uxn(1-xn)
(3)
式(3)中:u為控制參數(shù),取值范圍為[0,4];xn為輸出的混沌序列。
1.2.2 Sine映射
Sine映射與Logistic映射相類(lèi)似,也具有簡(jiǎn)單的混沌特性,可表示為
xn+1=rsin(πxn)
(4)
式(4)中:r為控制參數(shù),取值范圍為(0,1];xn為輸出的混沌序列。
1.2.3 改進(jìn)的混沌映射
張靜等[23]為了解決區(qū)間受限和點(diǎn)分布不均勻問(wèn)題,將Logistic映射和Sine映射結(jié)合越來(lái),得到改進(jìn)后的混沌映射,可表示為
xn+1=r{usin(πxn)[1-sin(πxn)]×2kmod1}
(5)
式(5)中:r= 20;k為控制參數(shù),取k= 18。
基于混沌映射和POB編碼的密文域可逆信息隱藏算法流程如圖1所示。
圖1 方案流程圖Fig.1 Scheme flow chart
2.1.1 混沌系統(tǒng)初始化
在圖像加密過(guò)程中,由SHA-256哈希函數(shù)生成一個(gè)256位的密鑰K。將該密鑰等分成32組。如K=k1,k2,…,k32,其中,ki= {ki,0,ki,1,…,ki,7}(i=1,2,…,32)。同時(shí),通過(guò)密鑰K和4個(gè)預(yù)設(shè)密鑰可對(duì)混沌系統(tǒng)進(jìn)行初始化,表示為
x=x0+
(6)
y=y0+
(7)
u=mod(u0+k17⊕k18⊕k19⊕k20⊕k21⊕
k22⊕k23⊕k24/256,1)
(8)
r=mod(r0+k25⊕k26⊕k27⊕k28⊕k29⊕
k30⊕k31⊕k32/256,1)
(9)
2.1.2 圖像加密
圖像擁有者將大小為M×N的原始圖像I轉(zhuǎn)化成大小為L(zhǎng)的8位二進(jìn)制圖像I′,其中,L=M×8N。同時(shí),通過(guò)混沌系統(tǒng)初始化得到的x、u、r代入式(5)中進(jìn)行N+L次迭代。然后,舍棄前N次后可得到混沌序列S= {s1,s2, …,sL},并將其按升序進(jìn)行排列得到序列Sn= {sn,1,sn,2, …,sn,L}和相應(yīng)的位置索引index = {d1,d2, …,dL}。將轉(zhuǎn)化后的圖像I′通過(guò)位置索引index進(jìn)行置亂得到圖像I″,表示為
I″i=I′di,i=1,2,…,L
(10)
同理可得,將混沌系統(tǒng)初始化的y、u、r代入式(5)中,經(jīng)過(guò)N+L次迭代,得到序列XS。而后,通過(guò)式(11),可得到擴(kuò)散圖像C。
(11)
同時(shí),將Ci進(jìn)行合并可得到大小為M×N的圖像Ic。再將混沌序列S、XS代入式(12)和式(13)中,可得S1、Xt,即
S1=mod[floor(1016S),M×N]+1
(12)
Xt=104XS-fix(104XS)
(13)
再將S1和Xt相加,組合成大小為16的數(shù)組bs,如式(14)所示。
bs(k)=S1(k2+80)+Xt(256k),k=1,2,…,16
(14)
將得到數(shù)組bs按升序進(jìn)行排列,可得到相應(yīng)的位置索引Tb= {tb1,tb2, …,tb16}。最后,將圖像Ic分成16份,按位置索引Tb進(jìn)行置亂,可得到密文圖像Im。同時(shí),將加密密鑰K、初始值x、y、r、u和迭代次數(shù)N運(yùn)用算術(shù)編碼進(jìn)行壓縮后,嵌入到最后一行的最低有效位中。
2.2.1 差分直方圖生成
數(shù)據(jù)隱藏者收到加密圖像后,將其劃分成不重疊、大小為3×3的小分塊。同時(shí),標(biāo)記為B(1,1)、B(1,2)、B(1,3)、B(2,1)、B(2,2)、B(2,3)、B(3,1)、B(3,2)、B(3,3),并以中心像素點(diǎn)B(2,2)為參考像素點(diǎn)。分塊內(nèi)的參考像素與其相鄰像素的差值可通過(guò)式(15)計(jì)算得到,即
di,j=B(i,j)-B(2,2),B(i,j)≠B(2,2)
(15)
圖2 傳統(tǒng)的移位嵌入與本文算法的直接嵌入對(duì)比Fig.2 Comparison of traditional shift embedding and direct embedding of the algorithm in this paper
由于圖像加密后仍存在一定的相關(guān)性,所以分塊內(nèi)相鄰像素間的差值一般集中在[-1,1],生成的直方圖如圖2所示。傳統(tǒng)的運(yùn)用預(yù)測(cè)誤差擴(kuò)展算法進(jìn)行信息嵌入時(shí),會(huì)先移位以騰出嵌入空間。而后,在差值為0或1上進(jìn)行信息的嵌入。以Lena為例,嵌入過(guò)程如圖2(a)、圖2(b)所示。但是,傳統(tǒng)的嵌入方法會(huì)不可避免地造成溢出問(wèn)題或者會(huì)引入輔助信息,從而增加系統(tǒng)運(yùn)算的負(fù)擔(dān)。圖2(c)是本文算法的嵌入過(guò)程,該方案在滿足參考像素與其相鄰像素的差值為-1、0、1時(shí),在相應(yīng)的像素點(diǎn)上直接進(jìn)行信息的嵌入。同時(shí),嵌入信息后不會(huì)產(chǎn)生溢出問(wèn)題。
2.2.2 信息嵌入
對(duì)加密圖像進(jìn)行分塊后,利用參考像素與其相鄰像素之間的差值生成直方圖。同時(shí),通過(guò)差值直方圖中-1、0、1的高度來(lái)預(yù)估可嵌入的容量。如果,待嵌入秘密信息的長(zhǎng)度L大于可嵌入容量時(shí),則不能進(jìn)行信息嵌入的操作。如果,待嵌入秘密信息的長(zhǎng)度L小于可嵌入容量時(shí),則對(duì)每個(gè)滿足條件的像素點(diǎn)進(jìn)行秘密信息的嵌入。而后,利用POB編碼系統(tǒng)轉(zhuǎn)化為對(duì)應(yīng)的POB值。根據(jù)POB編碼的特性,如果向每個(gè)像素點(diǎn)中嵌入1 bit秘密信息時(shí),則轉(zhuǎn)化成POB系統(tǒng)中的最大值是125;如果向每個(gè)像素點(diǎn)中嵌入2 bit秘密信息時(shí),則轉(zhuǎn)化成POB系統(tǒng)中的最大值是251。所以,本文選擇在每個(gè)滿足條件的像素點(diǎn)中嵌入2 bit秘密信息,一方面不超過(guò)灰度圖像像素的最大值,另一方面還提高了嵌入容量。最后,當(dāng)秘密信息嵌入完成后,將秘密信息的長(zhǎng)度L和像素點(diǎn)嵌入的比特?cái)?shù)進(jìn)行壓縮,然后嵌入到參考像素點(diǎn)的最低有效位。為了便于理解,以下通過(guò)一個(gè)具體例子來(lái)說(shuō)明。
如圖3所示,以Lena大小為3×3的局部分塊來(lái)細(xì)節(jié)說(shuō)明信息嵌入的過(guò)程。首先,將加密后的像素值轉(zhuǎn)化成相應(yīng)的8位二進(jìn)制。由于加密后的分塊間仍存在一定的相關(guān)性。所以,以分塊中B(2,2)=169為參考像素點(diǎn),并與其相鄰的像素作差,可得到相應(yīng)的差值di,j。同時(shí),判斷該差值是否在[-1,1]范圍內(nèi)。如果不滿足條件,則跳過(guò)該像素點(diǎn),進(jìn)行下一輪的判斷。如果滿足條件,則對(duì)該像素點(diǎn)進(jìn)行2 bit秘密信息的嵌入。假設(shè)待嵌入的秘密信息是011110…011,則對(duì)滿足條件的d1,2、d2,1、d3,1依次進(jìn)行秘密信息的嵌入,使其轉(zhuǎn)化成10位二進(jìn)制的POB序列。然后,運(yùn)用POB編碼系統(tǒng)將POB序列進(jìn)行無(wú)損壓縮,而后轉(zhuǎn)化成相應(yīng)的POB值。最后,將嵌入后的像素點(diǎn)按原來(lái)的位置進(jìn)行還原,得到含秘的加密圖像。同時(shí),將秘密信息的長(zhǎng)度L和嵌入的比特?cái)?shù)進(jìn)行算術(shù)編碼壓縮,嵌入到參考像素的最低有效位中。
當(dāng)接收方收到含秘的加密圖像后,先將含秘的加密圖像劃分成不重疊、大小為3×3的小分塊。而后,從分塊中參考像素點(diǎn)的最低有效位提取出秘密信息的長(zhǎng)度L和嵌入信息的比特?cái)?shù),并進(jìn)行解碼。其次,根據(jù)嵌入的比特?cái)?shù),將分塊里的B(1,1)、B(1,2)、B(1,3)、B(2,1)、B(2,3)、B(3,1)、B(3,2)、B(3,3)轉(zhuǎn)化成10位的POB序列。然后,取相鄰像素點(diǎn)的前8位與參考像素點(diǎn)作差值。如果差值在[-1,1]范圍內(nèi),則提取出后兩位秘密信息。如果差值不在[-1,1]范圍內(nèi),則該像素點(diǎn)沒(méi)有進(jìn)行信息嵌入操作。
在秘密信息提取完成后,從加密圖像的最后一行中提取出加密密鑰K、初始值x、y、r、u和迭代次數(shù)N。然后運(yùn)用算術(shù)編碼進(jìn)行解壓縮,根據(jù)得到的輔助信息,進(jìn)行加密的反向操作就可以無(wú)損地恢復(fù)原始圖像。
為了測(cè)試該算法性能,選用USC-SIPI圖像庫(kù)中大小為512×512的256級(jí)灰度圖像進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)環(huán)境為:CPU: Intel(R) Core(TM) i7-8550U @ 2.00GHz, RAM: 16 GB, OS: Windows 10, Programming: MATLAB R2018a。并以4張測(cè)試圖像來(lái)顯示結(jié)果,如圖4所示。主要從三個(gè)方面加密性能、嵌入容量與峰值信噪比和文獻(xiàn)性能比較進(jìn)行分析。
利用混沌系統(tǒng)對(duì)圖像進(jìn)行加密,為了驗(yàn)證該算法加密的安全性和抗攻擊能力,實(shí)驗(yàn)分析了加密圖像的相關(guān)性、直方圖和信息熵以及選擇明文攻擊下的魯棒分析。為了更好演示結(jié)果,以Lena圖像為例進(jìn)行實(shí)驗(yàn)。
3.1.1 圖像的相關(guān)性分析
原始圖像的相鄰像素之間具有一定的相關(guān)性,但是加密圖像在理想狀態(tài)下,相關(guān)系數(shù)幾乎為0,如圖5所示。
圖5 原始圖像與加密圖像的相關(guān)性Fig.5 Correlation between original image and encrypted image
從圖5可以看出,原始圖像相關(guān)性比較明顯,在對(duì)角線上的分布各不相同。然而,加密圖像接近于隨機(jī)均勻分布。因此,加密后不會(huì)造成信息泄露。
3.1.2 圖像的信息熵分析
信息熵是系統(tǒng)有序程度的度量,不確定性越大,熵也就越大。因此,對(duì)原始圖像和加密圖像的信息熵進(jìn)行分析。其中,信源s的信息熵計(jì)算公式為
(16)
式(16)中:P(si)為像素si的概率。通過(guò)實(shí)驗(yàn)可得,原始圖像和加密圖像的信息熵如表1所示。
表1 原始圖像與加密圖像的信息熵
從表1中可以得出一般情況下,原始圖像的信息熵比相應(yīng)的加密圖像小。在理想情況下,8位的灰度圖像在加密后得到的信息熵等于8。本文運(yùn)用混沌映射系統(tǒng)對(duì)原始圖像進(jìn)行加密后,圖像的信息熵近似等于8。因此,原始圖像在該加密算法進(jìn)行加密后具有較高的安全性。
3.1.3 圖像的直方圖分析
直方圖是圖像的最基本的統(tǒng)計(jì)特征,用來(lái)表示圖像中像素不同灰度值出現(xiàn)的頻率。其中,Lena的原始圖像與加密圖像的直方圖如圖6所示。
圖6 原始圖像與加密圖像的直方圖Fig.6 Histogram of original image and encrypted image
如圖6所示,一般情況下,原始圖像的直方圖分布是不均勻的,具有較大的波動(dòng)性。但是,加密圖像的直方圖分布是均勻的、一致的。因此,原始圖像經(jīng)過(guò)加密后得到的加密圖像是安全的。
3.1.4 選擇明文攻擊下的魯棒分析
已知明文攻擊是指攻擊者擁有用于待破解的密文相同密鑰加密的一個(gè)或多個(gè)明密文對(duì),密碼學(xué)中認(rèn)為選擇明文攻擊的難度比已知明文攻擊要復(fù)雜。所以,只要能夠抵抗選擇明文攻擊就能抵抗已知明文攻擊。
圖7 差異分析Fig.7 Difference analysis
如圖7所示,雖然圖7(b)相比于原始圖像只改變了1 bit。但是,加密后的圖像完全不同。所以選擇任何圖片運(yùn)用混沌映射進(jìn)行加密,都能抵抗選擇明文的攻擊。
為了顯示嵌入信息后圖像的視覺(jué)變化,通常運(yùn)用峰值信噪比(PSNR)來(lái)表示。其中PSNR可以通過(guò)式(17)和式(18)進(jìn)行計(jì)算。同時(shí),本文結(jié)合結(jié)構(gòu)相似性(SSIM)對(duì)還原后的圖像是否具有可逆性進(jìn)行判別,結(jié)構(gòu)相似性可通過(guò)式(19)計(jì)算。
(17)
(18)
(19)
式中:M、N為圖像的尺寸;p(i,j)為原始載體的像素值;c(i,j)為加密后圖像的像素值;μX、μY為圖像的像素;σX、σY為圖像像素的標(biāo)準(zhǔn)差;σXY為圖像像素的協(xié)方差。
通過(guò)測(cè)試圖像在最大嵌入容量下進(jìn)行PSNR、SSIM的測(cè)試。由于該算法只能在差值為[-1, 1]的范圍內(nèi)進(jìn)行信息嵌入。所以,最大嵌入容量是可嵌像素點(diǎn)的2倍,即最大嵌入率Ec通過(guò)式(20)計(jì)算。如表2所示,4張測(cè)試圖像本身平滑度各不相同,所以最大嵌入容量也不相同。由于Plane圖像整體上較為平滑,分塊內(nèi)像素值差異較小。因此,最大嵌入容量可達(dá)到0.502 bpp(bits per pixel)。同時(shí),還原后圖像的PSNR = ∞,SSIM = 1,表明該算法具有真實(shí)的可逆性。
(20)
式(20)中:d-1為參考像素與相鄰像素的差值為-1;d0為參考像素與相鄰像素的差值為0;d1為參考像素與相鄰像素的差值為1。
表2 加密圖像中秘密信息的最大嵌入容量
表3 本文算法與相關(guān)文獻(xiàn)的最大嵌入率比較
圖8 不同嵌入率下加密圖像中PSNR值的變化Fig.8 Changes in PSNR values in encrypted images at different embedding rates
從表3中可以得出,加密圖像中的最大嵌入容量取決于圖像的平滑度。同時(shí),與近期相關(guān)文獻(xiàn)相比,該算法的最大嵌入容量的優(yōu)勢(shì)比較明顯。例如,在Lena圖像中,運(yùn)用本文算法進(jìn)行信息嵌入,嵌入率相比于文獻(xiàn)[20]提高了0.112 1 bpp。
本小節(jié)主要對(duì)加密圖像中相關(guān)性問(wèn)題以及是否能無(wú)損恢復(fù)原始圖像進(jìn)行比較。假設(shè)向加密后的Lena、Man中嵌入79 665 bit秘密信息。從圖8可以看出,文獻(xiàn)[17]在最低有效位進(jìn)行信息嵌入,會(huì)產(chǎn)生一些微小的變化。但是,運(yùn)用POB編碼進(jìn)行信息嵌入后的PSNR會(huì)發(fā)生新的、較大的改變,從而進(jìn)一步破壞塊內(nèi)的相關(guān)性,提高了加密算法的安全性。同時(shí),本文測(cè)試了還原圖像的準(zhǔn)確率。從圖9可以看出,與文獻(xiàn)[15]和文獻(xiàn)[18]相比,隨著嵌入率增大時(shí),文獻(xiàn)[15]和文獻(xiàn)[18]在圖像還原過(guò)程中會(huì)存在失真情況。但是,運(yùn)用POB編碼進(jìn)行信息嵌入,能夠無(wú)損地恢復(fù)原始圖像。
圖9 不同嵌入率下還原圖像的PSNR值Fig.9 PSNR values of restored images at different embedding rates
將POB編碼引進(jìn)密文域可逆信息隱藏,不僅能夠解決嵌入信息時(shí)造成的溢出問(wèn)題,而且可以進(jìn)一步破壞加密圖像中的相關(guān)性。同時(shí),運(yùn)用參考像素點(diǎn)與其相鄰像素點(diǎn)作差值,使得嵌入容量有了較大的提高。但是,運(yùn)用POB編碼進(jìn)行信息的嵌入,會(huì)使直接解密的圖像存在一定的失真。所以,下一步要研究在保證嵌入容量的條件下,如何提高圖像的峰值信噪比。