孫容海, 施林甫, 俞春強(qiáng), 勞 歡, 唐振軍
廣西師范大學(xué)廣西多源信息挖掘與安全重點實驗室,廣西桂林541004
圖像信息隱藏技術(shù)[1-5]主要通過修改載體圖像中的不重要信息來隱藏秘密數(shù)據(jù),在版權(quán)保護(hù)、隱蔽傳輸和內(nèi)容鑒定等方面有重要應(yīng)用.一般而言,修改操作不可避免地引起載體圖像失真,然而軍事、醫(yī)學(xué)圖像等應(yīng)用場景不允許原始圖像有失真,要求實現(xiàn)可逆地嵌入秘密信息,即提取完秘密信息后,原始載體圖像能夠被無損恢復(fù).針對可逆方式的信息隱藏需求,研究人員開展了針對圖像載體的可逆信息隱藏研究.通常,可逆圖像信息隱藏可分為面向明文圖像的可逆信息隱藏和面向密文圖像的可逆信息隱藏.
面向明文圖像的可逆信息隱藏,其主流的技術(shù)有無損壓縮[6-7]、差值擴(kuò)展[8-9]和直方圖平移[10-13]等.無損壓縮技術(shù)通過無損壓縮圖像的最低有效位(least significant bit, LSB)或量化殘差獲取隱藏空間,因為無損壓縮率較低,所以這類方法隱藏容量小,大多應(yīng)用于圖像鑒定和水印等方面.差分?jǐn)U展技術(shù)計算相鄰一對像素的差值,將該差值擴(kuò)展兩倍,秘密信息隱藏在擴(kuò)展后差值的LSB 位中,這類方法隱藏容量約為0.5 bpp(平均一個像素隱藏的比特數(shù)).直方圖平移技術(shù)通過平移像素直方圖或預(yù)測差值直方圖嵌入秘密信息.由于基于直方圖平移的方法具有較大的隱藏容量和較好的載密圖像質(zhì)量,因此近年研究人員更多關(guān)注直方圖平移技術(shù).
密文圖像可逆信息隱藏算法將秘密信息嵌入到密文圖像中生成載密圖像,對載密圖像解密和提取秘密信息后,能夠無損恢復(fù)原始密文圖像.這類算法包括不可分離可逆信息隱藏算法[14-16]和可分離可逆信息隱藏算法[17-24]兩大類.不可分離算法的特點是接收端需要同時掌握加密密鑰和隱藏密鑰才能提取信息和解密圖像,并且不能互換解密階段和信息提取階段的次序.如果互換次序,則信息無法準(zhǔn)確提取,圖像也無法準(zhǔn)確恢復(fù).可分離算法的特點是圖像解密和信息提取是獨立分離的,接收端可以根據(jù)密鑰的掌握情況執(zhí)行不同的操作.如果僅有加密密鑰,只能對圖像進(jìn)行解密;如果僅有隱藏密鑰,只能提取秘密信息;如果同時擁有兩者,不僅能提取秘密信息,還能無損恢復(fù)原始圖像.
下面簡要回顧一些有代表性的密文圖像可逆信息隱藏算法.例如,文獻(xiàn)[14]首次提出密文可逆信息隱藏算法,是密文圖像可逆信息隱藏研究的開創(chuàng)性工作.該算法采用高效的流加密方法對圖像進(jìn)行加密.隱藏時,對密文圖像分塊,通過取反圖像塊內(nèi)一半像素的低3位,實現(xiàn)在每個圖像塊中嵌入1 比特數(shù)據(jù).在接收端,通過波動函數(shù)提取秘密信息和恢復(fù)原始圖像.當(dāng)分塊較小時,該算法的信息提取和圖像恢復(fù)會出現(xiàn)錯誤.文獻(xiàn)[15]通過改進(jìn)文獻(xiàn)[14]的波動函數(shù)并加入邊信息來減少圖像恢復(fù)和信息提取的錯誤率,提高了隱藏容量.文獻(xiàn)[16]考慮塊內(nèi)不同像素的位置,設(shè)計一種分塊復(fù)雜度計算方法,提高了信息提取的正確率.文獻(xiàn)[17]提出一種可分離密文圖像可逆信息隱藏算法,該算法通過壓縮密文圖像的LSB 獲取稀疏空間,再將秘密信息嵌入到稀疏空間.為了進(jìn)一步提高壓縮比,從而提高隱藏容量,文獻(xiàn)[18]利用低密度校驗碼對密文圖像像素的低比特位進(jìn)行壓縮得到較大的隱藏空間.文獻(xiàn)[19]利用非加密的可逆信息隱藏算法將部分信息自嵌入到其他部分以獲取嵌入信息的空間,該算法具有較大的隱藏容量和低失真的特點.文獻(xiàn)[20]從明文圖像中選取目標(biāo)像素,然后采用差分?jǐn)U展方法將目標(biāo)像素自嵌入到明文圖像中,再采用Paillier 加密方法進(jìn)行加密,生成密文圖像.隱藏時,將秘密信息進(jìn)行分組并轉(zhuǎn)換成十進(jìn)制數(shù),由十進(jìn)制數(shù)和偏移量構(gòu)成偽裝像素,通過替換目標(biāo)像素實現(xiàn)隱藏.文獻(xiàn)[21]先用密文圖像像素的LSB 替換alpha 通道透明值的LSB,接著用比特替換方法在alpha 通道透明值的高7 位和密文圖像像素的LSB 中隱藏信息,最后用密文圖像和alpha 通道構(gòu)造密文PNG 圖像.文獻(xiàn)[22]采用比特位異或的方法對圖像進(jìn)行加密,根據(jù)隨機(jī)函數(shù)確定密文圖像中的載體像素,采用高位取反的方法隱藏信息.提取信息時,先對圖像解密,由于像素高位存在0 或1 兩種可能且其中一個為原始比特位,因此采取曲面插值預(yù)測的方法計算這兩種可能預(yù)測差值,通過對比兩種預(yù)測差值大小提取秘密信息及恢復(fù)圖像.文獻(xiàn)[23]在加密前計算像素預(yù)測差值,由于預(yù)測差值直方圖分布近似拉普拉斯分布,因此采用哈夫曼編碼對預(yù)測差值進(jìn)行無損壓縮,得到較大的隱藏空間,實現(xiàn)大容量可逆隱藏.文獻(xiàn)[24]提出了一種基于圖像塊分組的加密域可逆信息隱藏算法.該算法通過流密碼異或加密圖像,隨后將密文圖像分塊,并對圖像塊分組,再根據(jù)秘密信息修改每組中相應(yīng)圖像塊,從而實現(xiàn)信息隱藏.最近,文獻(xiàn)[25]利用同態(tài)乘法和直方圖平移技術(shù)將秘密信息嵌入密文圖像;文獻(xiàn)[26]運(yùn)用同態(tài)乘法和密文分組技術(shù)實現(xiàn)在密文圖像中隱藏信息;文獻(xiàn)[27]根據(jù)游程編碼的編碼長度對密文圖像塊進(jìn)行分類,然后根據(jù)圖像塊類型進(jìn)行游程編碼或二值矩陣壓縮,從而騰出空間實現(xiàn)信息嵌入;文獻(xiàn)[28]利用像素高位信息將密文圖像塊分為平滑區(qū)域和復(fù)雜區(qū)域兩種類型,然后壓縮平滑圖像塊的位平面,在騰出的空間中嵌入信息.
考慮到傳統(tǒng)圖像插值方法計算密文圖像的插值結(jié)果時,其生成的直方圖并非近似均勻分布,用這類插值圖像作為信息隱藏的載體會引起監(jiān)聽者的注意,降低信息隱藏系統(tǒng)的安全性.為此,針對密文域圖像信息隱藏應(yīng)用,本文提出一種面向密文圖像信息隱藏的隨機(jī)插值方法.該方法計算得到的密文插值圖像,其直方圖近似均勻分布,具有較好的安全性.對比實驗結(jié)果表明本文隨機(jī)插值方法的安全性能比其他3 種文獻(xiàn)插值方法都好.
傳統(tǒng)圖像插值技術(shù)有最近鄰插值、雙線性插值和雙三次插值等.近年,一些研究人員利用圖像插值方法[29-31]設(shè)計了多種明文圖像信息隱藏技術(shù),這些隱藏技術(shù)在插值像素中嵌入信息,實現(xiàn)了大容量隱藏和圖像無損恢復(fù).常用的插值方法有相鄰均值插值(neighbor mean interpolation, NMI)方法[29]、相鄰像素插值(interpolation by neighboring pixels, INP)方法[30]和相鄰像素最大化差值的插值(interpolation by maximizing the difference values between neighboring pixels, IMNP)方法[31].這些插值方法在明文圖像信息隱藏方面取得了較好效果,但并不適用于密文圖像信息隱藏.其主要原因是,常用圖像加密算法生成的密文圖像,其直方圖近似均勻分布,然而采用上述插值方法對密文圖像進(jìn)行操作卻不能保持該特性.如果采用這類密文插值圖像作為信息隱藏的載體,可能會引起攻擊者的注意從而降低信息隱藏算法的安全性.
針對密文域圖像信息隱藏應(yīng)用,本文提出一種密文圖像隨機(jī)插值方法.該方法生成的密文圖像的插值圖像,其直方圖近似均勻分布,具有較高的安全性.本文的密文圖像隨機(jī)插值方法共有以下7 個步驟:
步驟1生成初始插值圖像,其長和寬分別為密文圖像的兩倍,設(shè)置偽隨機(jī)函數(shù)的種子;
步驟2用密文圖像的像素直接填充插值圖像的奇數(shù)行和奇數(shù)列;
步驟3計算奇數(shù)行和偶數(shù)列的像素時(最后一列的像素除外),用其左右兩個像素進(jìn)行隨機(jī)插值;
步驟4計算偶數(shù)行和奇數(shù)列的像素時(最后一行的像素除外),用其上下兩個像素進(jìn)行隨機(jī)插值;
步驟5計算偶數(shù)行和偶數(shù)列的像素時(位于最后一行且最后一列的像素除外),確定其4 個對角像素的最大值和最小值,根據(jù)隨機(jī)數(shù)的取值對最大值或最小值進(jìn)行隨機(jī)擾動插值;
步驟6計算最后一列的像素時,隨機(jī)選取該像素所在行的一個像素進(jìn)行填充;
步驟7計算最后一行的像素時,隨機(jī)選取該像素所在列的一個像素進(jìn)行填充.
如圖1 為本文插值方法的流程圖.上述步驟的詳細(xì)計算過程如下:
圖1 本文隨機(jī)插值方法的框圖Figure 1 Block diagram of the proposed random interpolation method
步驟1初始化插值圖像和偽隨機(jī)函數(shù).假設(shè)I是大小為H ×W的密文圖像,它生成一幅2H×2W大小的插值圖像E,其中E的所有像素初始化為零.設(shè)置偽隨機(jī)函數(shù)的種子為密鑰S,由偽隨機(jī)函數(shù)生成的隨機(jī)數(shù)的取值范圍為[0, 1].
步驟2計算奇數(shù)行和奇數(shù)列的像素.設(shè)I的第i+1 行和第j+1 列的像素為I(i,j),其中0iH ?1 和0jW ?1;E的第s+1 行和第t+1 列的像素為E(s,t),其中0s2H ?1 和0t2W ?1,然后執(zhí)行賦值E(2i,2j)=I(i,j),其中0iH ?1 和0jW ?1.
步驟3計算奇數(shù)行和偶數(shù)列的像素(最后一列的像素除外).采用隨機(jī)數(shù)服從均勻分布的偽隨機(jī)函數(shù)生成隨機(jī)數(shù)w1,接著進(jìn)行插值計算E(2i,2j+1) = Rd(E(2i,2j)×w1+E(2i,2j+2)×(1?w1)),其中0iH ?1 和0jW ?2,Rd(·)代表向最近整數(shù)取整的函數(shù).
步驟4計算偶數(shù)行和奇數(shù)列的像素(最后一行的像素除外).由偽隨機(jī)函數(shù)生成隨機(jī)數(shù)w2,然后進(jìn)行插值計算E(2i+1,2j) = Rd(E(2i,2j)×w2+E(2i+2,2j)×(1?w2)),其中0iH ?2 和0jW ?1.
步驟5計算偶數(shù)行和偶數(shù)列的像素(位于最后一行且最后一列的像素除外).計算Q1= min{E(2i,2j),E(2i+2,2j), E(2i,2j+2), E(2i+2,2j+2)}和Q2= max{E(2i,2j),E(2i+2,2j), E(2i,2j+2), E(2i+2,2j+2)},其中min{}和max{}分別表示最小值和最大值函數(shù).采用偽隨機(jī)函數(shù)生成隨機(jī)數(shù)w3,計算隨機(jī)擾動值r1= Rd(P1× w3) 和r2= Rd((255?P2)w3),采用偽隨機(jī)函數(shù)生成隨機(jī)數(shù)w4,若0w4<0.15,則E(2i+1,2j+1) =Q1?r1;若0.15w4<0.4,則E(2i+1,2j+1) =Q1;若0.4w4<0.5,則E(2i+1,2j+1)=mod(Q1+r1,256);若0.5w4<0.6,則E(2i+1,2j+1)=abs(Q2?r2);若0.6w4<0.85,則E(2i+1,2j+1)=Q2;若0.85w41.0,則E(2i+1,2j+1)=Q2+r2,其中mod(,)代表取模函數(shù),abs()代表取絕對值函數(shù),0iH ?2 和0jW ?2.
步驟6計算最后一列的像素.由偽隨機(jī)函數(shù)生成隨機(jī)數(shù)w5,令k= mod(Rd(w5×248),2W ?1),接著執(zhí)行賦值E(i,2W ?1)=E(i,k),其中0i2H ?2.
步驟7計算最后一行的像素.由偽隨機(jī)函數(shù)生成隨機(jī)數(shù)w6,令k= mod(Rd(w6×248),2M ?1),接著執(zhí)行賦值E(2H ?1,j)=E(k,j),其中0j2W ?1.
下面舉例說明本文隨機(jī)插值的過程.如圖2(a)所示,原始2×2 圖像塊中的4 個像素分別為I(0,0) = 51、I(0,1) = 8、I(1,0) = 135 和I(1,1) = 201,根據(jù)步驟2 計算得到像素E(0,0) = 51、E(0,2) = 8、E(2,0) = 135 和E(2,2) = 201,如圖2(b)所示.對于這個原始圖像塊,由偽隨機(jī)函數(shù)生成4 個值在[0,1] 的隨機(jī)數(shù)a、b、c和d,假設(shè)它們的取值為a= 0.121 2,b= 0.315 5,c= 0.413 3 和d= 0.621 2,根據(jù)上述計算方法得到E(0,1) = Rd(0.121 2×51 + (1?0.121 2)×8) = 13,E(2,1) = Rd(0.315 5×135 +(1?0.315 5)×201) = 180,E(1,0) = Rd(0.413 3×51+(1?0.413 3)×135) = 100 和E(1,2)=Rd(0.621 2×8+(1?0.621 2)×201)=81,而對于E(1,1)取值,假設(shè)此時服從均勻分布的偽隨機(jī)函數(shù)生成的隨機(jī)數(shù)為0.315 3,屬于區(qū)間[0.15, 0.40),則根據(jù)步驟5 可知,它的值取E(0,0)、E(0,2)、E(2,0)和E(2,2)中的最小值8.
圖2 隨機(jī)插值示意圖Figure 2 Diagram of random interpolation
為驗證本文插值方法的性能,選取10 幅標(biāo)準(zhǔn)圖像作為測試數(shù)據(jù)進(jìn)行實驗.如圖3 所示,這些圖像均為灰度圖像,尺寸為512×512.
圖3 標(biāo)準(zhǔn)圖像Figure 3 Standard images
為了驗證本文插值方法的有效性,選擇常用的Logistic 混沌映射[3]來生成密文圖像.Logistic 混沌映射定義為
式中,μ為混沌控制參數(shù).本文實驗選取迭代初始值x0與μ作為Logistic 混沌系統(tǒng)的密鑰.加密圖像時,先利用式(1)迭代計算得到一個混沌矩陣C= (Ci,j)M×N,然后將矩陣元素值映射到[0, 255]區(qū)間,公式為
式中,⊕為對應(yīng)元素異或操作.該圖像加密方法的解密過程與加密過程類似,即在密鑰控制下由式(1)和(2)生成混沌矩陣C,通過對密文圖像與混沌矩陣C進(jìn)行異或操作便可解密圖像.利用Logistic 混沌映射加密得到的密文圖像,其圖像內(nèi)容為無任何視覺意義的噪聲圖像且直方圖近似均勻分布.
實驗中,先對10 幅標(biāo)準(zhǔn)測試圖像進(jìn)行Logistic 混沌映射加密,接著用本文方法對密文圖像進(jìn)行計算.觀察實驗結(jié)果發(fā)現(xiàn),本文方法生成的插值圖像仍然是無視覺意義的噪聲圖像,安全性較好.限于篇幅,僅選擇一幅紋理圖像(Baboon)和一幅平滑圖像(Girl)進(jìn)行舉例說明.圖4(a)和圖5(a)是Baboon 和Girl 的原圖,圖4(b)和圖5(b)是利用Logistic 混沌映射加密得到的Baboon 和Girl 的密文圖像,圖4(c)和圖5(c)是將本文隨機(jī)插值方法分別應(yīng)用于圖4(b)和圖5(b)而得到的隨機(jī)插值圖像.觀察圖4(c)和圖5(c)發(fā)現(xiàn),它們均為無視覺意義的噪聲圖像,說明本文隨機(jī)插值方法在視覺效果方面具有較好的安全性.
圖4 Baboon 原圖、密文圖像及其隨機(jī)插值結(jié)果Figure 4 Original Baboon, its encrypted version and its random interpolated image
圖5 Girl 原圖、密文圖像及其隨機(jī)插值結(jié)果Figure 5 Original Girl, its encrypted version and its random interpolated image
圖6 Baboon 密文圖像的4 種插值結(jié)果的直方圖對比Figure 6 Histogram comparison of the interpolated encrypted images of Baboon among four interpolation methods
圖7 Barbara 密文圖像的4 種插值結(jié)果的直方圖對比Figure 7 Histogram comparison of the interpolated encrypted images of Barbara among four interpolation methods
圖8 Peppers 密文圖像的4 種插值結(jié)果的直方圖對比Figure 8 Histogram comparison of the interpolated encrypted images of Peppers among four interpolation methods
圖9 Girl 密文圖像的4 種插值結(jié)果的直方圖對比Figure 9 Histogram comparison of the interpolated encrypted images of Girl among four interpolation methods
為了體現(xiàn)本文隨機(jī)插值方法的優(yōu)越性,與NMI 方法[29]、INP 方法[30]和IMNP 方法[31]等3 種方法生成的密文圖像的插值圖像直方圖進(jìn)行對比.限于篇幅,僅選擇兩幅紋理圖像(Baboon 和Barbara)和兩幅平滑圖像(Peppers 和Girl)為例進(jìn)行說明.圖6~9 列出了不同插值方法對這4 幅圖像的密文圖像計算得到的插值圖像的直方圖.對比結(jié)果顯示,本文隨機(jī)插值方法生成的插值圖像直方圖近似于均勻分布,而3 種文獻(xiàn)對比方法的直方圖并非均勻分布.由于常見圖像加密算法生成的密文圖像的直方圖近似均勻分布,因此對于密文圖像信息隱藏,選擇本文方法的密文圖像插值結(jié)果作為載體,其安全性要高于3 種文獻(xiàn)對比方法.值得注意的是,對于不同密文圖像,不同插值方法的插值結(jié)果的直方圖分布均呈現(xiàn)相似性.這是因為Logistic 混沌映射加密不同輸入圖像時,其輸出的密文圖像的直方圖均呈現(xiàn)近似均勻分布.換言之,盡管插值方法處理的密文圖像所對應(yīng)的原圖不同,但這些密文圖像的數(shù)據(jù)分布是相似的,因此導(dǎo)致最終輸出的直方圖結(jié)果具有相似性.
信息熵[11]是判斷圖像安全性能的一種有效指標(biāo),反映了圖像內(nèi)容的隨機(jī)程度,其計算公式為
式中,E={e0,e1,··· ,eL?1},P(ei)是ei的發(fā)生概率.通常,信息熵的取值與密文圖像的安全性正相關(guān),即信息熵取值越大,密文圖像的安全性越高.對于灰度密文圖像,L=256,其信息熵的理論最大值是8.表1 是圖像信息熵的計算結(jié)果,其中第2 列是密文圖像的信息熵,第3~6列是NMI 方法、INP 方法、IMNP 方法和本文方法計算得到的插值結(jié)果的信息熵.觀察發(fā)現(xiàn),本文方法的信息熵均大于3 種對比方法的信息熵,安全性更好.此外,本文方法的信息熵與密文圖像的信息熵差異較小且接近理論最大值8.
表1 不同插值方法用于不同密文圖像的插值結(jié)果的信息熵對比Table 1 Information entropy comparisons of the interpolated encrypted images generated by different interpolation methods
針對明文信息隱藏技術(shù)的插值方法在應(yīng)用于密文圖像隱藏時存在的安全性問題,本文利用隨機(jī)分配插值權(quán)重的策略,設(shè)計了一種密文圖像隨機(jī)插值方法.由于本文方法可確保密文圖像插值結(jié)果的直方圖特性與常見圖像加密算法的密文圖像直方圖特性保持一致,因此利用本文方法的插值結(jié)果作為密文圖像信息隱藏的載體,具有較好的安全性.與基于插值方法的明文圖像信息隱藏技術(shù)類似,一種可行的密文圖像信息隱藏方案是通過密鑰隨機(jī)選取插值像素,然后將秘密比特隨機(jī)嵌入到插值像素的1 個或多個位平面.對比實驗結(jié)果表明,本文的隨機(jī)插值方法在安全性方面優(yōu)于3 種文獻(xiàn)插值方法,具有一定的優(yōu)越性.