王 慧,栗風(fēng)永,朱恒杰
(上海電力大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 200120)
可逆信息隱藏(reversible data hiding,RDH)算法早期多應(yīng)用于明文圖像,主流的方法包括基于無(wú)損壓縮的算法[1]、基于差值擴(kuò)展的算法[2]和基于直方圖平移的算法[3]。因人們對(duì)個(gè)人隱私愈加重視,密文域可逆信息隱藏(reversible data hiding in encrypted domain,RDH-ED)由此得到發(fā)展[4]。密文域可逆信息隱藏在醫(yī)學(xué)診斷、法庭取證等領(lǐng)域有重要意義[5,6]。
針對(duì)加密圖像嵌入率低的問(wèn)題,學(xué)者們?cè)O(shè)計(jì)了適應(yīng)加密域的算法。Zheng等[7]對(duì)加密圖像像素的低有效位(least significant bit,LSB)進(jìn)行無(wú)損壓縮,該方法最大嵌入率可達(dá)到1 bpp(bits per pixel),但直接解密圖像的視覺質(zhì)量(peak signal tonoise ratio,PSNR)不高。Nguyen等[8]根據(jù)平滑像素的局部復(fù)雜度選擇平滑像素來(lái)產(chǎn)生額外空間。該方法解密圖像的PSNR較高,但嵌入率較低。Li等[9]在預(yù)測(cè)誤差中提出比特替換的算法,該方法具有較高的PSNR,但嵌入容量小,Lena圖嵌入率僅為0.5 bpp。Chen等[10]對(duì)灰度圖像的位平面進(jìn)行重排列和比特流壓縮以騰出空間。該方法雖有效提高了算法的嵌入率,但平面壓縮利用效率并不高。
本文提出一種基于圖像位平面循環(huán)異或的可逆信息隱藏方案。提出的方法首先對(duì)圖像高位平面進(jìn)行依次循環(huán)異或,然后設(shè)計(jì)塊的重排列機(jī)制對(duì)異或后的圖像進(jìn)行無(wú)損壓縮。實(shí)驗(yàn)結(jié)果表明,該方法與現(xiàn)有的方法相比,不僅實(shí)現(xiàn)了完美的可逆性,而且能夠在高嵌入率的情況下保證載體明文圖像依然具有較高的視覺質(zhì)量。
提出方案主要由以下幾部分組成:首先圖像擁有者將原始圖像進(jìn)行位平面分解,高有效位平面之間相互異或形成新的高位平面。然后圖像擁有者利用基于塊的重排列算法對(duì)新高位平面比特流重排列,將重排列構(gòu)造的4種比特流利用無(wú)損壓縮方法以騰出空間。利用流密碼對(duì)騰出空間的圖像加密。隨后信息隱藏者利用LSB替換將額外信息嵌入到騰出的空間。接收方提取秘密信息并恢復(fù)原始圖像。接收方在收到載密加密圖之后,對(duì)圖像進(jìn)行解密,提取嵌入的輔助信息和秘密信息,并利用這些信息恢復(fù)原始圖像。
記標(biāo)準(zhǔn)灰度圖I大小為M×N,圖像像素Ii,j是位置為(i,j)的像素值,每個(gè)像素是由8個(gè)比特構(gòu)成,其取值范圍在[0,255]。假設(shè)Bk表示第k個(gè)位平面,bi,j,k是平面Bk中位置為(i,j)的比特,則

(1)
Bk=Bk+1⊕Bk,k=7,6,…,4
(2)
定義k=8和k=1分別表示原始圖像的最高、最低位平面,平面異或操作只在圖像的高8-4位平面中進(jìn)行。位平面異或的步驟如式(2)所示,⊕表示異或操作。
由于高位平面的比特位包含較大的相關(guān)性,因此高位平面與低位平面異或后的平面容易出現(xiàn)連續(xù)的相同比特,這使得異或后的平面更容易被壓縮。相關(guān)結(jié)論會(huì)在后續(xù)實(shí)驗(yàn)中驗(yàn)證。
在圖像高位平面循環(huán)異或之后,對(duì)圖像位平面進(jìn)行壓縮以便騰出空間來(lái)嵌入秘密信息。傳統(tǒng)的圖像無(wú)損壓縮方法是統(tǒng)一按行或按列掃描位平面,但此方法沒(méi)有充分利用到圖像像素之間的空間相關(guān)性,故而平面壓縮率較低。為了提高壓縮效率,提出的方案采取基于塊的重排列策略。
首先將位平面分成相同尺寸大小的塊,如2×2,然后按照4種掃描順序?qū)ξ黄矫姹忍亓鬟M(jìn)行重排列:Type=00代表塊內(nèi)比特按行掃描,塊與塊之間也按行掃描;Type=01代表塊內(nèi)比特按行掃描,塊與塊之間按列掃描;Type=10代表塊內(nèi)比特按列掃描,塊與塊之間按行掃描;Type=11代表塊內(nèi)比特按列掃描,塊與塊之間按列掃描。重排列后的位平面比特流較原始比特流有更多的“0”、“1”連續(xù)比特段,因此更適合壓縮來(lái)騰出空間。進(jìn)一步對(duì)重排列后的位平面進(jìn)行無(wú)損壓縮,如行程編碼。
在原始圖像經(jīng)平面循環(huán)異或和壓縮處理后,采用流密碼對(duì)處理后的圖像加密。同樣記處理后的圖像中Bk表示第k個(gè)位平面,bi,j,k是平面Bk中位置為(i,j)的比特。
利用標(biāo)準(zhǔn)流密碼的加密密鑰K1生成二進(jìn)制比特流ri,j,k,對(duì)圖像進(jìn)行流加密
(3)

圖像位平面經(jīng)壓縮后會(huì)騰出部分空間,假設(shè)原始的圖像比特流長(zhǎng)度為L(zhǎng)o,壓縮之后的比特流長(zhǎng)度為L(zhǎng)e,輔助信息(如塊排列順序)長(zhǎng)度為l,則能夠嵌入的秘密信息長(zhǎng)度Lc為
Lc=Lo-Le-l
(4)
計(jì)算出額外秘密信息容量之后,我們進(jìn)一步利用信息隱藏密鑰K3隨機(jī)從圖像的LSB平面上選擇長(zhǎng)度Lc的比特位,先將這些比特填充到高位平面壓縮后騰出的空間中以便接收者對(duì)圖像進(jìn)行復(fù)原,然后將秘密信息按順序嵌入到LSB平面的這些比特位中。最終,數(shù)據(jù)隱藏者將載密的加密圖像發(fā)給接收方。
當(dāng)接收者接收到載密的加密圖像時(shí),可以通過(guò)不同的密鑰從中獲得不同的數(shù)據(jù):①只有圖像加密密鑰K1和置亂密鑰K2;②只有信息隱藏密鑰K3;③同時(shí)擁有圖像加密密鑰、置亂密鑰和信息隱藏密鑰K1,K2,K3。
情況1:只有圖像加密密鑰K1和置亂密鑰K2。接收方可以直接解密圖像,并利用解壓縮和逆循環(huán)異或得到載密的解密圖像。由于秘密信息僅在LSB平面嵌入,因此載密解密圖像在視覺質(zhì)量上與原始圖像很近似。此種情況可以查看圖像內(nèi)容但無(wú)法獲得秘密信息。
情況2:只有信息隱藏密鑰K3。接收者可以準(zhǔn)確提取嵌入的秘密信息,但無(wú)法查看原始載體圖像內(nèi)容。
情況3:同時(shí)擁有圖像加密密鑰、置亂密鑰和信息隱藏密鑰K1,K2,K3。如果接收方同時(shí)擁有加密密鑰和數(shù)據(jù)隱藏密鑰,則可以無(wú)失真恢復(fù)原始載體圖像,同時(shí)準(zhǔn)確提取秘密信息。
本文通過(guò)一系列實(shí)驗(yàn)來(lái)測(cè)試提出算法的優(yōu)勢(shì),實(shí)驗(yàn)中使用了6幅經(jīng)典的灰度圖像,包括Lena、Lake、Airplane、Peppers、Tiffany、Baboon。所有圖像的大小都是512×512。實(shí)驗(yàn)從算法有效性、嵌入容量、圖像視覺質(zhì)量以及安全性4個(gè)方面分別給出對(duì)比結(jié)果。為了展示算法性能,通過(guò)計(jì)算原始圖像和載密明文圖像的峰值信噪比PSNR(peak signal to noise ratio)來(lái)例證算法在圖像視覺質(zhì)量上的優(yōu)越性。記載密明文圖為ID
(5)
(6)
其中,MSE是原圖像I和載密明文圖像ID的均方誤差,MAXI表示圖像顏色的最大值。PSNR的值越大,失真越少,視覺質(zhì)量越高。
實(shí)驗(yàn)首先驗(yàn)證了提出算法的有效性。圖1給出了使用Lena和Baboon圖像的測(cè)試結(jié)果,其中Lena是較為平滑的圖像,而Baboon是紋理豐富的圖像,從實(shí)驗(yàn)結(jié)果看,不論紋理圖像還是平滑圖像,提出的算法都能正確提取秘密信息,同時(shí)完美恢復(fù)原始圖像,這說(shuō)明算法整體是有效的。此外,實(shí)驗(yàn)中Lena圖像的嵌入率為2.533 bpp,而Baboon圖像的嵌入率為1.002 bpp,但是通過(guò)解密之后的含密明文圖像中,Lena圖像的PSNR值為39.830 dB,如圖1(d)所示,而Baboon圖像的PSNR值為51.087 dB,如圖1(i)所示。從實(shí)驗(yàn)結(jié)果可知,提出的算法對(duì)平滑圖像和紋理圖像都有很好的嵌入效果,在高容量的情況下均能保持良好的視覺質(zhì)量。

圖1 Lena和Baboon測(cè)試結(jié)果(分塊大小s=2)
提出的算法利用位平面的循環(huán)異或操作來(lái)構(gòu)造更長(zhǎng)行程的比特流,我們首先測(cè)試循環(huán)異或操作對(duì)嵌入容量的影響。實(shí)驗(yàn)分別測(cè)試使用循環(huán)異或操作和不使用循環(huán)異或時(shí)在相同壓縮方法下壓縮率對(duì)比。由于位平面壓縮率直接影響到騰出的空間大小,因此它可以直觀反映秘密信息的嵌入容量。實(shí)驗(yàn)選取4幅圖:Lena、Tiffany、Airplane、Baboon圖,分別進(jìn)行位平面壓縮(第8MSB平面未實(shí)施壓縮)。表1給出了測(cè)試結(jié)果。從表中可以看出,圖像的第4位平面可壓縮空間很小,甚至沒(méi)有壓縮,因?yàn)樵谠撈矫妫嘏帕泻蟮谋忍亓鹘?jīng)過(guò)無(wú)損壓縮之后的比特流長(zhǎng)度大于或者等于原始比特流長(zhǎng)度,故此時(shí)的壓縮率為0。對(duì)于第7、6、5位平面,使用循環(huán)異或之后的壓縮率明顯提升,以Tiffany圖像為例,第7位平面使用循環(huán)異或前后減少了4670比特的空間占用,第6位平面減少了29 062比特,第5位平面減少了43 556比特,這說(shuō)明提出的方法騰出的空間更大,能夠嵌入更多的秘密信息。這主要是因?yàn)槲黄矫娈惢虻牟僮魇蛊矫姹忍亓鲹碛懈嚅L(zhǎng)的“0”、“1”行程段,進(jìn)而提高了平面的壓縮率。
由于塊重排列環(huán)節(jié)中分塊大小s會(huì)直接影響到后續(xù)的壓縮效果,進(jìn)而對(duì)騰出的空間產(chǎn)生影響,因此,實(shí)驗(yàn)進(jìn)一步測(cè)試不同的分塊大小情況下的最大嵌入容量。表2分別給出了當(dāng)塊大小為s=2,s=4和s=8時(shí)算法的嵌入率(bpp)。從表中可以看出,當(dāng)分塊大小s=2時(shí),不管是平滑圖像或紋理圖像,嵌入率能夠達(dá)到最高。隨著分塊尺寸變大,載密圖像的嵌入率逐漸減小,這是因?yàn)閳D像相鄰像素具有相關(guān)性,塊越小,塊內(nèi)聯(lián)系越緊密,經(jīng)過(guò)重排列之后更容易產(chǎn)生長(zhǎng)行程的“0”、“1”比特序列。

表1 算法在相同壓縮算法條件下使用循環(huán)異或和未使用循環(huán)異或時(shí)的位平面壓縮率對(duì)比

表2 塊重排列中不同分塊大小對(duì)嵌入率的影響
為了給出充分對(duì)比,我們使用6幅標(biāo)準(zhǔn)圖像對(duì)比不同 方案下的嵌入率。對(duì)比方法選擇Zheng等方法[7]、Nguyen等方法[8]、Li等方法[9]、Chen等方法[10]。實(shí)驗(yàn)在s=2的條件下進(jìn)行。表3給出了對(duì)應(yīng)的實(shí)驗(yàn)結(jié)果,可以看出,在不同的測(cè)試圖像上,本文提出的算法嵌入率具有較明顯的優(yōu)勢(shì),相比文獻(xiàn)[7]、文獻(xiàn)[8]、文獻(xiàn)[9]、文獻(xiàn)[10]的算法,平均嵌入率分別提高了1.25 bpp、2.14 bpp、1.75 bpp、0.49 bpp。這是因?yàn)槠矫娈惢蚝臀黄矫鎵嚎s的方法使行程編碼的壓縮率變高,充分利用了相鄰像素的相關(guān)性,騰出更多的空間來(lái)嵌入秘密信息,最終嵌入率得到顯著提升。

表3 不同算法圖像-嵌入率比較
對(duì)于不同的可分離加密圖像可逆信息隱藏算法,載密明文圖像的質(zhì)量決定了算法性能的優(yōu)劣。實(shí)驗(yàn)選取已有的Zheng等[7]、Nguyen等[8]、Li等[9]、Chen等[10]這4種可逆信息隱藏方法,與本文提出的算法進(jìn)行對(duì)比。橫坐標(biāo)表示嵌入率,縱坐標(biāo)為載密明文圖像的PSNR值。從圖2中可以看出,相同嵌入率下,提出的算法在不同測(cè)試圖像上都能達(dá)到較好的視覺質(zhì)量效果,并且與其它4種方法相比具有較為明顯的優(yōu)勢(shì)。另外,由于Chen等的方法也使用壓縮位平面來(lái)騰出空間,而提出的方法使用循環(huán)異或操作構(gòu)造更容易壓縮的位平面,因此相比Chen等的方法,提出方法在相同嵌入率下平均PSNR值有了明顯提升,在1.50 bpp時(shí),對(duì)Lena圖像平均提升3.80 dB;在0.50 bpp時(shí),對(duì)Baboon圖像平均提升13.07 dB。
此外,當(dāng)嵌入率較低時(shí),如小于1.00 bpp時(shí),提出的方法和Chen等的方法的載密解密圖像能夠直接達(dá)到∞,這是因?yàn)閮煞N方法都使用壓縮騰出了部分空間來(lái)保存LSB平面的原始載體信息,當(dāng)嵌入容量小于壓縮騰出的空間時(shí),盡管不能提取秘密信息,但兩種方法的載密含密圖像都能夠?qū)崿F(xiàn)完美恢復(fù)。
實(shí)驗(yàn)從圖像熵和密鑰敏感性兩個(gè)方面分析提出算法的安全性。信息熵反映了圖像中的平均信息量,熵越高,圖像越安全,它的定義為[11]
(7)
式中:s表示信息源,p(si)表示符號(hào)si的概率,2n表示信息源的總狀態(tài)數(shù),對(duì)于灰度圖像通常設(shè)為256。密鑰的敏感性通過(guò)使用統(tǒng)一平均變化強(qiáng)度(UACI)和像素變化率(NPCR)來(lái)定量分析,定義分別如下[12]
(8)
(9)
其中,c1(i,j)和c2(i,j)是原始圖像和加密圖像的同一位置的像素(第i行和第j列),而M和N是圖像的寬度和高度,sign()為符號(hào)函數(shù)。

圖2 6幅測(cè)試圖像的視覺質(zhì)量對(duì)比
根據(jù)文獻(xiàn)[13],對(duì)于單個(gè)灰度圖像,NPCR和UACI的理論值分別為100%和33.46%。即離理論值越近,密鑰就越敏感。表4給出了不同算法和本文算法在信息 熵和密鑰敏感性上的對(duì)比。由表4可知,本文使用的加密方法在不同圖像的熵值和密鑰敏感性非常接近理論值,且與已有方法相比并無(wú)明顯下降,說(shuō)明提出的方法在安全性度量方面保持了較好的性能,可以滿足安全性要求。

表4 不同加密算法安全性比較
本文提出一種基于平面異或和位平面壓縮的加密域可逆信息隱藏算法。提出的算法利用圖像相鄰像素具有相關(guān)性,異或相鄰的高位平面,從而構(gòu)成新的高位平面矩陣。這一操作使構(gòu)成的新平面比特流中長(zhǎng)行程段增加,短行程的數(shù)量減少。進(jìn)一步將形成的新的位平面矩陣進(jìn)行基于塊的重排列和比特流壓縮操作,從而騰出更多空間。實(shí)驗(yàn)結(jié)果表明,該方法在嵌入大容量信息的情況下仍能保持良好的圖像視覺質(zhì)量,秘密信息的提取和載體圖像的恢復(fù)也實(shí)現(xiàn)了可分離操作,且能無(wú)失真地恢復(fù)原始載體圖像。在未來(lái)的工作中,我們將從兩方面對(duì)本文方法進(jìn)行拓展,首先是循環(huán)異或可能會(huì)增加運(yùn)算時(shí)間,考慮進(jìn)一步減少實(shí)驗(yàn)計(jì)算量;其次塊的重排列存在多種情況,可考慮利用自適應(yīng)的塊尺寸來(lái)約束重排列過(guò)程,使壓縮效率提升,進(jìn)而提高嵌入容量。