王 慧,栗風(fēng)永,朱恒杰
(上海電力大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,上海 200120)
可逆信息隱藏(reversible data hiding,RDH)算法早期多應(yīng)用于明文圖像,主流的方法包括基于無損壓縮的算法[1]、基于差值擴展的算法[2]和基于直方圖平移的算法[3]。因人們對個人隱私愈加重視,密文域可逆信息隱藏(reversible data hiding in encrypted domain,RDH-ED)由此得到發(fā)展[4]。密文域可逆信息隱藏在醫(yī)學(xué)診斷、法庭取證等領(lǐng)域有重要意義[5,6]。
針對加密圖像嵌入率低的問題,學(xué)者們設(shè)計了適應(yīng)加密域的算法。Zheng等[7]對加密圖像像素的低有效位(least significant bit,LSB)進行無損壓縮,該方法最大嵌入率可達到1 bpp(bits per pixel),但直接解密圖像的視覺質(zhì)量(peak signal tonoise ratio,PSNR)不高。Nguyen等[8]根據(jù)平滑像素的局部復(fù)雜度選擇平滑像素來產(chǎn)生額外空間。該方法解密圖像的PSNR較高,但嵌入率較低。Li等[9]在預(yù)測誤差中提出比特替換的算法,該方法具有較高的PSNR,但嵌入容量小,Lena圖嵌入率僅為0.5 bpp。Chen等[10]對灰度圖像的位平面進行重排列和比特流壓縮以騰出空間。該方法雖有效提高了算法的嵌入率,但平面壓縮利用效率并不高。
本文提出一種基于圖像位平面循環(huán)異或的可逆信息隱藏方案。提出的方法首先對圖像高位平面進行依次循環(huán)異或,然后設(shè)計塊的重排列機制對異或后的圖像進行無損壓縮。實驗結(jié)果表明,該方法與現(xiàn)有的方法相比,不僅實現(xiàn)了完美的可逆性,而且能夠在高嵌入率的情況下保證載體明文圖像依然具有較高的視覺質(zhì)量。
提出方案主要由以下幾部分組成:首先圖像擁有者將原始圖像進行位平面分解,高有效位平面之間相互異或形成新的高位平面。然后圖像擁有者利用基于塊的重排列算法對新高位平面比特流重排列,將重排列構(gòu)造的4種比特流利用無損壓縮方法以騰出空間。利用流密碼對騰出空間的圖像加密。隨后信息隱藏者利用LSB替換將額外信息嵌入到騰出的空間。接收方提取秘密信息并恢復(fù)原始圖像。接收方在收到載密加密圖之后,對圖像進行解密,提取嵌入的輔助信息和秘密信息,并利用這些信息恢復(fù)原始圖像。
記標準灰度圖I大小為M×N,圖像像素Ii,j是位置為(i,j)的像素值,每個像素是由8個比特構(gòu)成,其取值范圍在[0,255]。假設(shè)Bk表示第k個位平面,bi,j,k是平面Bk中位置為(i,j)的比特,則
(1)
Bk=Bk+1⊕Bk,k=7,6,…,4
(2)
定義k=8和k=1分別表示原始圖像的最高、最低位平面,平面異或操作只在圖像的高8-4位平面中進行。位平面異或的步驟如式(2)所示,⊕表示異或操作。
由于高位平面的比特位包含較大的相關(guān)性,因此高位平面與低位平面異或后的平面容易出現(xiàn)連續(xù)的相同比特,這使得異或后的平面更容易被壓縮。相關(guān)結(jié)論會在后續(xù)實驗中驗證。
在圖像高位平面循環(huán)異或之后,對圖像位平面進行壓縮以便騰出空間來嵌入秘密信息。傳統(tǒng)的圖像無損壓縮方法是統(tǒng)一按行或按列掃描位平面,但此方法沒有充分利用到圖像像素之間的空間相關(guān)性,故而平面壓縮率較低。為了提高壓縮效率,提出的方案采取基于塊的重排列策略。
首先將位平面分成相同尺寸大小的塊,如2×2,然后按照4種掃描順序?qū)ξ黄矫姹忍亓鬟M行重排列:Type=00代表塊內(nèi)比特按行掃描,塊與塊之間也按行掃描;Type=01代表塊內(nèi)比特按行掃描,塊與塊之間按列掃描;Type=10代表塊內(nèi)比特按列掃描,塊與塊之間按行掃描;Type=11代表塊內(nèi)比特按列掃描,塊與塊之間按列掃描。重排列后的位平面比特流較原始比特流有更多的“0”、“1”連續(xù)比特段,因此更適合壓縮來騰出空間。進一步對重排列后的位平面進行無損壓縮,如行程編碼。
在原始圖像經(jīng)平面循環(huán)異或和壓縮處理后,采用流密碼對處理后的圖像加密。同樣記處理后的圖像中Bk表示第k個位平面,bi,j,k是平面Bk中位置為(i,j)的比特。
利用標準流密碼的加密密鑰K1生成二進制比特流ri,j,k,對圖像進行流加密
(3)
圖像位平面經(jīng)壓縮后會騰出部分空間,假設(shè)原始的圖像比特流長度為Lo,壓縮之后的比特流長度為Le,輔助信息(如塊排列順序)長度為l,則能夠嵌入的秘密信息長度Lc為
Lc=Lo-Le-l
(4)
計算出額外秘密信息容量之后,我們進一步利用信息隱藏密鑰K3隨機從圖像的LSB平面上選擇長度Lc的比特位,先將這些比特填充到高位平面壓縮后騰出的空間中以便接收者對圖像進行復(fù)原,然后將秘密信息按順序嵌入到LSB平面的這些比特位中。最終,數(shù)據(jù)隱藏者將載密的加密圖像發(fā)給接收方。
當(dāng)接收者接收到載密的加密圖像時,可以通過不同的密鑰從中獲得不同的數(shù)據(jù):①只有圖像加密密鑰K1和置亂密鑰K2;②只有信息隱藏密鑰K3;③同時擁有圖像加密密鑰、置亂密鑰和信息隱藏密鑰K1,K2,K3。
情況1:只有圖像加密密鑰K1和置亂密鑰K2。接收方可以直接解密圖像,并利用解壓縮和逆循環(huán)異或得到載密的解密圖像。由于秘密信息僅在LSB平面嵌入,因此載密解密圖像在視覺質(zhì)量上與原始圖像很近似。此種情況可以查看圖像內(nèi)容但無法獲得秘密信息。
情況2:只有信息隱藏密鑰K3。接收者可以準確提取嵌入的秘密信息,但無法查看原始載體圖像內(nèi)容。
情況3:同時擁有圖像加密密鑰、置亂密鑰和信息隱藏密鑰K1,K2,K3。如果接收方同時擁有加密密鑰和數(shù)據(jù)隱藏密鑰,則可以無失真恢復(fù)原始載體圖像,同時準確提取秘密信息。
本文通過一系列實驗來測試提出算法的優(yōu)勢,實驗中使用了6幅經(jīng)典的灰度圖像,包括Lena、Lake、Airplane、Peppers、Tiffany、Baboon。所有圖像的大小都是512×512。實驗從算法有效性、嵌入容量、圖像視覺質(zhì)量以及安全性4個方面分別給出對比結(jié)果。為了展示算法性能,通過計算原始圖像和載密明文圖像的峰值信噪比PSNR(peak signal to noise ratio)來例證算法在圖像視覺質(zhì)量上的優(yōu)越性。記載密明文圖為ID
(5)
(6)
其中,MSE是原圖像I和載密明文圖像ID的均方誤差,MAXI表示圖像顏色的最大值。PSNR的值越大,失真越少,視覺質(zhì)量越高。
實驗首先驗證了提出算法的有效性。圖1給出了使用Lena和Baboon圖像的測試結(jié)果,其中Lena是較為平滑的圖像,而Baboon是紋理豐富的圖像,從實驗結(jié)果看,不論紋理圖像還是平滑圖像,提出的算法都能正確提取秘密信息,同時完美恢復(fù)原始圖像,這說明算法整體是有效的。此外,實驗中Lena圖像的嵌入率為2.533 bpp,而Baboon圖像的嵌入率為1.002 bpp,但是通過解密之后的含密明文圖像中,Lena圖像的PSNR值為39.830 dB,如圖1(d)所示,而Baboon圖像的PSNR值為51.087 dB,如圖1(i)所示。從實驗結(jié)果可知,提出的算法對平滑圖像和紋理圖像都有很好的嵌入效果,在高容量的情況下均能保持良好的視覺質(zhì)量。
圖1 Lena和Baboon測試結(jié)果(分塊大小s=2)
提出的算法利用位平面的循環(huán)異或操作來構(gòu)造更長行程的比特流,我們首先測試循環(huán)異或操作對嵌入容量的影響。實驗分別測試使用循環(huán)異或操作和不使用循環(huán)異或時在相同壓縮方法下壓縮率對比。由于位平面壓縮率直接影響到騰出的空間大小,因此它可以直觀反映秘密信息的嵌入容量。實驗選取4幅圖:Lena、Tiffany、Airplane、Baboon圖,分別進行位平面壓縮(第8MSB平面未實施壓縮)。表1給出了測試結(jié)果。從表中可以看出,圖像的第4位平面可壓縮空間很小,甚至沒有壓縮,因為在該平面,重排列后的比特流經(jīng)過無損壓縮之后的比特流長度大于或者等于原始比特流長度,故此時的壓縮率為0。對于第7、6、5位平面,使用循環(huán)異或之后的壓縮率明顯提升,以Tiffany圖像為例,第7位平面使用循環(huán)異或前后減少了4670比特的空間占用,第6位平面減少了29 062比特,第5位平面減少了43 556比特,這說明提出的方法騰出的空間更大,能夠嵌入更多的秘密信息。這主要是因為位平面異或的操作使平面比特流擁有更多長的“0”、“1”行程段,進而提高了平面的壓縮率。
由于塊重排列環(huán)節(jié)中分塊大小s會直接影響到后續(xù)的壓縮效果,進而對騰出的空間產(chǎn)生影響,因此,實驗進一步測試不同的分塊大小情況下的最大嵌入容量。表2分別給出了當(dāng)塊大小為s=2,s=4和s=8時算法的嵌入率(bpp)。從表中可以看出,當(dāng)分塊大小s=2時,不管是平滑圖像或紋理圖像,嵌入率能夠達到最高。隨著分塊尺寸變大,載密圖像的嵌入率逐漸減小,這是因為圖像相鄰像素具有相關(guān)性,塊越小,塊內(nèi)聯(lián)系越緊密,經(jīng)過重排列之后更容易產(chǎn)生長行程的“0”、“1”比特序列。
表1 算法在相同壓縮算法條件下使用循環(huán)異或和未使用循環(huán)異或時的位平面壓縮率對比
表2 塊重排列中不同分塊大小對嵌入率的影響
為了給出充分對比,我們使用6幅標準圖像對比不同 方案下的嵌入率。對比方法選擇Zheng等方法[7]、Nguyen等方法[8]、Li等方法[9]、Chen等方法[10]。實驗在s=2的條件下進行。表3給出了對應(yīng)的實驗結(jié)果,可以看出,在不同的測試圖像上,本文提出的算法嵌入率具有較明顯的優(yōu)勢,相比文獻[7]、文獻[8]、文獻[9]、文獻[10]的算法,平均嵌入率分別提高了1.25 bpp、2.14 bpp、1.75 bpp、0.49 bpp。這是因為平面異或和位平面壓縮的方法使行程編碼的壓縮率變高,充分利用了相鄰像素的相關(guān)性,騰出更多的空間來嵌入秘密信息,最終嵌入率得到顯著提升。
表3 不同算法圖像-嵌入率比較
對于不同的可分離加密圖像可逆信息隱藏算法,載密明文圖像的質(zhì)量決定了算法性能的優(yōu)劣。實驗選取已有的Zheng等[7]、Nguyen等[8]、Li等[9]、Chen等[10]這4種可逆信息隱藏方法,與本文提出的算法進行對比。橫坐標表示嵌入率,縱坐標為載密明文圖像的PSNR值。從圖2中可以看出,相同嵌入率下,提出的算法在不同測試圖像上都能達到較好的視覺質(zhì)量效果,并且與其它4種方法相比具有較為明顯的優(yōu)勢。另外,由于Chen等的方法也使用壓縮位平面來騰出空間,而提出的方法使用循環(huán)異或操作構(gòu)造更容易壓縮的位平面,因此相比Chen等的方法,提出方法在相同嵌入率下平均PSNR值有了明顯提升,在1.50 bpp時,對Lena圖像平均提升3.80 dB;在0.50 bpp時,對Baboon圖像平均提升13.07 dB。
此外,當(dāng)嵌入率較低時,如小于1.00 bpp時,提出的方法和Chen等的方法的載密解密圖像能夠直接達到∞,這是因為兩種方法都使用壓縮騰出了部分空間來保存LSB平面的原始載體信息,當(dāng)嵌入容量小于壓縮騰出的空間時,盡管不能提取秘密信息,但兩種方法的載密含密圖像都能夠?qū)崿F(xiàn)完美恢復(fù)。
實驗從圖像熵和密鑰敏感性兩個方面分析提出算法的安全性。信息熵反映了圖像中的平均信息量,熵越高,圖像越安全,它的定義為[11]
(7)
式中:s表示信息源,p(si)表示符號si的概率,2n表示信息源的總狀態(tài)數(shù),對于灰度圖像通常設(shè)為256。密鑰的敏感性通過使用統(tǒng)一平均變化強度(UACI)和像素變化率(NPCR)來定量分析,定義分別如下[12]
(8)
(9)
其中,c1(i,j)和c2(i,j)是原始圖像和加密圖像的同一位置的像素(第i行和第j列),而M和N是圖像的寬度和高度,sign()為符號函數(shù)。
圖2 6幅測試圖像的視覺質(zhì)量對比
根據(jù)文獻[13],對于單個灰度圖像,NPCR和UACI的理論值分別為100%和33.46%。即離理論值越近,密鑰就越敏感。表4給出了不同算法和本文算法在信息 熵和密鑰敏感性上的對比。由表4可知,本文使用的加密方法在不同圖像的熵值和密鑰敏感性非常接近理論值,且與已有方法相比并無明顯下降,說明提出的方法在安全性度量方面保持了較好的性能,可以滿足安全性要求。
表4 不同加密算法安全性比較
本文提出一種基于平面異或和位平面壓縮的加密域可逆信息隱藏算法。提出的算法利用圖像相鄰像素具有相關(guān)性,異或相鄰的高位平面,從而構(gòu)成新的高位平面矩陣。這一操作使構(gòu)成的新平面比特流中長行程段增加,短行程的數(shù)量減少。進一步將形成的新的位平面矩陣進行基于塊的重排列和比特流壓縮操作,從而騰出更多空間。實驗結(jié)果表明,該方法在嵌入大容量信息的情況下仍能保持良好的圖像視覺質(zhì)量,秘密信息的提取和載體圖像的恢復(fù)也實現(xiàn)了可分離操作,且能無失真地恢復(fù)原始載體圖像。在未來的工作中,我們將從兩方面對本文方法進行拓展,首先是循環(huán)異或可能會增加運算時間,考慮進一步減少實驗計算量;其次塊的重排列存在多種情況,可考慮利用自適應(yīng)的塊尺寸來約束重排列過程,使壓縮效率提升,進而提高嵌入容量。