王 洋,邵利平,陸 海
(陜西師范大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,陜西 西安 710119)
隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)傳輸信息的安全性變得尤為重要。為保證其安全性,人們提出了多種以圖像為載體的信息隱藏方法,如密寫[1-3]、分存[4-7]、水印[8]和偽裝[9-14]等。其中基于塊替換和塊拼圖的馬賽克偽裝策略是一類典型的信息隱藏方法。
這類方法通常將密圖劃分為小塊作為馬賽克,通過對有意義掩體圖像的相似塊替換來隱藏密圖或?qū)⒚軋D劃分小塊作為字典,采用拼圖的方法來產(chǎn)生與之不相關(guān)的含密有意義掩體。例如,文獻(xiàn)[9]通過在大數(shù)據(jù)庫中選取與密圖特征相似的公開圖像,通過相似塊替換,將密圖偽裝成公開圖像。為避免大數(shù)據(jù)庫搜索和確保含密掩體視覺質(zhì)量,文獻(xiàn)[10-11]采用相似塊替換,將一幅秘密圖像隱藏在多幅圖像中,即將密圖小塊劃分為n份嵌入n張掩體圖像中。為提高隱藏效率和減少匹配誤差,文獻(xiàn)[12]按密圖小塊和掩體小塊的均值和標(biāo)準(zhǔn)差排序來建立密圖小塊和掩體小塊的映射關(guān)系,然后由密圖小塊重構(gòu)掩體圖像。文獻(xiàn)[13]在文獻(xiàn)[12]的基礎(chǔ)上,進(jìn)一步引入均值聚類對密圖小塊和掩體小塊進(jìn)行分類和匹配。文獻(xiàn)[14]采用分類閾值優(yōu)化算法來改進(jìn)文獻(xiàn)[13],使密圖小塊與掩體小塊之間的匹配均方誤差更小。
文獻(xiàn)[9-14]可生成有意義含密掩體圖像來對隱藏的密圖進(jìn)行掩蓋。然而這些文獻(xiàn)都不可避免地涉及參數(shù)的嵌入,例如文獻(xiàn)[9-11]需要嵌入密圖小塊在原密圖的位置信息,文獻(xiàn)[12-14]則需要嵌入掩體小塊索引或聚類索引、密圖小塊與掩體小塊均值差、密圖小塊的旋轉(zhuǎn)方向以及截?cái)鄽埐畹阮~外參數(shù)。針對額外參數(shù)的嵌入方式,上述文獻(xiàn)均采用修改式嵌密的方法,例如文獻(xiàn)[9,12-14]采用基于LSB的可逆嵌入方法[15]嵌入和提取額外參數(shù);文獻(xiàn)[10]通過簡單LSB方法將相關(guān)參數(shù)嵌入到掩體圖像中;文獻(xiàn)[11]通過差值擴(kuò)展嵌入相關(guān)參數(shù)并提取秘密信息。
而這樣的做法帶來的問題是,修改式嵌密的方法難免會在掩體圖像中遺留下修改的痕跡,難以抵抗密寫分析算法的檢測,容易引起信道潛在攻擊者的懷疑;文獻(xiàn)[9-14]均涉及LSB嵌入,對非顯著比特位較敏感,魯棒性差,在遭受攻擊時(shí),容易導(dǎo)致嵌入的參數(shù)丟失。
針對上述缺陷,文中以字符畫為特殊載體,通過在與密鑰相關(guān)的嵌密位置放置字符來表達(dá)秘密信息。首先,利用密鑰生成隨機(jī)坐標(biāo)序列決定秘密比特在掩體圖像中的嵌密位置;之后,遍歷掩體圖像像素,對于嵌密和非嵌密位置,分別放置與密鑰和位置信息相關(guān)聯(lián)或與掩體放置位置像素相近的字符來對秘密比特進(jìn)行表達(dá)和掩蓋;最后,將字符放置過程產(chǎn)生的偏差利用誤差擴(kuò)散傳遞給掩體周圍未處理像素,從而產(chǎn)生含密字符畫圖像。在恢復(fù)階段,利用密鑰確定秘密比特嵌入位置,并利用密鑰和位置信息提取對應(yīng)嵌密位置的秘密比特。
相比于文獻(xiàn)[9-14],文中采用生成式方法,生成與掩體圖像相關(guān)的含密字符畫,并利用含密字符畫中特定字符對秘密信息進(jìn)行表達(dá),同時(shí)無需額外參數(shù)的嵌入,因而不涉及對掩體圖像的修改,從而不會遺留修改痕跡;此外,該策略對像素非顯著比特位不敏感,可抵抗一定程度的噪聲攻擊或JPEG壓縮;同時(shí),偽裝與提取階段完全由密鑰驅(qū)動,對密鑰依賴性高,從而提供更高的安全性。
該方法利用字符1代表白色像素點(diǎn),字符0代表黑色像素點(diǎn),根據(jù)掩體圖像生成對應(yīng)的含密半色調(diào)字符畫,并在生成過程中將代表秘密比特的字符放置在含密半色調(diào)字符畫指定位置。即首先利用密鑰生成隨機(jī)坐標(biāo)序列來決定秘密信息比特在掩體圖像中的嵌密位置;對于嵌密和非嵌密位置,分別放置與密鑰和位置信息相關(guān)聯(lián)或與掩體放置位置相近的字符對秘密比特進(jìn)行表達(dá)和掩蓋,并將字符放置后與掩體圖像對應(yīng)位置像素點(diǎn)的誤差向周圍擴(kuò)散。在提取時(shí),首先利用密鑰生成隨機(jī)坐標(biāo)序列,之后從含密半色調(diào)字符畫中截取對應(yīng)位置字符,并通過密鑰與坐標(biāo)位置提取所隱藏的秘密比特。該方法的處理流程框圖如圖1所示,并對該策略進(jìn)行詳細(xì)說明。
圖1 字符畫生成偽裝與提取策略流程框圖
這里約定秘密比特序列B=(bi)l,T=(ti,j)m0×n0為灰度掩體圖像,k0,k1為兩個密鑰參數(shù)。設(shè)字符的大小為m1×n1,初始化空白字符畫M=(mi,j=0)m2×n2,其中m2×n2滿足的約束見式1,即可將M劃分為m0n0個m1×n1的正方形網(wǎng)格用于放置字符。
m2=m0·m1,n2=n0·n1
(1)
(2)
(3)
之后,通過密鑰k0生成包含l個兩兩不等m0×n0范圍內(nèi)的隨機(jī)坐標(biāo)序列H=(hi)l,hi=(xi,yi)。
bcur=(bi+ri·x+ri·y)mod2
(4)
其中,ri是由k1生成的隨機(jī)整數(shù)序列R=(ri)l中第i個元素。這里之所以將bi與嵌密位置信息相關(guān)聯(lián)是為了使bi在不同位置對應(yīng)不同的2值比特,以避免bi和bcur存在固定的一對一映射關(guān)系,從而提高安全性。
(5)
(6)
在上述過程中,還需要由密鑰k0和k1生成隨機(jī)嵌密位置序列H=(hi)l和隨機(jī)整數(shù)序列R=(ri)l。為保證生成的H,R具備密鑰微小變化時(shí)的敏感性,H,R均由logistic混沌映射生成。式7給出了logistic混沌映射的具體迭代過程。
x=μx(1-x)
(7)
其中,x∈(0,1)為迭代參數(shù);μ∈(3.569 945 6,4]為系統(tǒng)參數(shù)。將x,μ代入式7迭代生成新的x作為輸出的隨機(jī)數(shù)。
算法1:隨機(jī)嵌密位置序列H=(hi)l的生成算法。
輸入:密鑰k0=(xinit,μinit),序列長度l,掩體圖像分辨率m0×n0;
輸出:隨機(jī)嵌密位置序列H=(hi)l。
(1)初始化H=φ,v=xinit,i=0;
(2)將v,μinit代入式7生成新的v,并將v代入式8生成隨機(jī)位置(x,y);
(8)
(3)重復(fù)執(zhí)行步驟2,直至(x,y)?H,將(x,y)添加至H中,令i=i+1;
(4)重復(fù)執(zhí)行步驟2和步驟3,直至i=l;
(5)對H按光柵掃描順序進(jìn)行重新排列,將排序后的H作為最終輸出的H。
算法2:隨機(jī)整數(shù)序列R=(ri)l的生成算法。
輸出:隨機(jī)整數(shù)序列R=(ri)l。
ri=?v×1010」
(9)
(3)重復(fù)執(zhí)行步驟2,直至i=l。
(10)
(11)
之后遍歷含密位置序列H=(hi)l,對于?hi∈H,在M中以(xi·m1,yi·n1)為左上角起點(diǎn),截取一個分辨率為m1×n1的矩陣小塊P,計(jì)算P的均值來判斷P所代表的字符bcur。
最后按式12將bcur解碼為秘密比特bi,并將bi添加至B中。
bi=(bcur-ri·xi-ri·yi)mod2
(12)
重復(fù)執(zhí)行上述流程,直至H=(hi)l遍歷完畢。
結(jié)合第1節(jié)的工作,以下給出完整的基于字符畫的生成式偽裝和提取策略,分別如算法3和算法4所示。
算法3:基于字符畫的生成式偽裝策略。
輸入:秘密比特序列B=(bi)l,掩體圖像T=(ti,j)m0×n0和初始密鑰k0=(xinit,μinit);
輸出:含密字符畫圖像M=(mi,j)m2×n2。
(3)按算法1生成含密位置序列H=(hi)l;
(4)按算法2生成隨機(jī)整數(shù)序列R=(ri)l;
算法4:基于字符畫的生成式偽裝提取策略。
輸入:含密字符畫圖像M=(mi,j)m2×n2,初始密鑰k0=(xinit,μinit);
輸出:秘密信息B=(bi)l。
(2)按算法1生成含密位置序列H=(hi)l;
(3)按算法2生成隨機(jī)整數(shù)序列R=(ri)l;
(4)初始化i=0,B=φ;
(5)讀取hi=(xi,yi)∈H;
(6)在M中以(xi·m1,yi·n1)為左上角起點(diǎn),截取分辨率為m1×n1的矩陣小塊P,并讀取P所代表的字符bcur;
(7)按式12將bcur解擾動為秘密比特bi,將bi添加至B中,令i=i+1;
(8)重復(fù)執(zhí)行步驟5~步驟7,直至i=l。
算法3在嵌入時(shí)僅通過密鑰決定嵌密位置,通過生成式方法產(chǎn)生有意義含密字符畫并利用指定字符來表達(dá)秘密信息生成含密掩體,所提方法不涉及任何參數(shù)嵌入,不會遺留修改痕跡。算法4在提取時(shí),只需讀取對應(yīng)位置字符,并將其解擾動以提取秘密比特。所提方法對圖像非顯著比特位不敏感,具備良好的魯棒性,可抵抗一定程度的噪聲攻擊和低質(zhì)量JPEG壓縮。此外,秘密比特的隨機(jī)映射和秘密比特的嵌密位置以及隨機(jī)擾動均由密鑰k0和k1生成,且k1由初始密鑰k0映射而得,使得文中方法對密鑰具備完全的依賴性。
實(shí)驗(yàn)測試環(huán)境為Windows 10操作系統(tǒng),CPU為Intel(R) Core(TM) i5-6600,主頻為3.31 GHz,內(nèi)存為8.00 GB,實(shí)驗(yàn)編程語言為JAVA jdk 1.8.0_65。
選取兩張64×64灰度圖像camera和cameraman作為掩體圖像,如圖2(a)和圖2(b)所示;選取1首總共20個漢字的古詩作為秘密信息,如圖2(c)所示。
圖2 實(shí)驗(yàn)測試圖像
實(shí)驗(yàn)采用峰值信噪比(peak signal to noise ratio,PSNR)來驗(yàn)證含密馬賽克圖像與攻擊后馬賽克圖像之間的差異度,其計(jì)算公式如下:
(13)
其中,MSE(mean square error)為含密馬賽克圖像與攻擊后馬賽克圖像的每個圖像的均值之間的均方誤差,計(jì)算如下:
(14)
使用誤碼率(error rate,ER)衡量恢復(fù)的字節(jié)序列與原字節(jié)序列之間的差異,其計(jì)算式如下:
(15)
其中,lerror是發(fā)生錯誤的字節(jié)數(shù)量;ltotal是總字節(jié)數(shù)。
以下分別通過正確性實(shí)驗(yàn)、密鑰依賴性實(shí)驗(yàn)和抗攻擊實(shí)驗(yàn)對所提策略的性能進(jìn)行檢驗(yàn)。
為驗(yàn)證所提策略的正確性,以圖2(c)為秘密信息,圖2(a)和圖2(b)為掩體圖像,按不同密鑰參數(shù)由算法3生成含密字符畫圖像,然后按算法4從含密字符畫圖像中提取秘密信息。表1給出了實(shí)驗(yàn)參數(shù),圖3和圖4分別給出了生成的含密字符畫結(jié)果和與之對應(yīng)的恢復(fù)信息。
由表1、圖3和圖4可看出,所提方法可生成高質(zhì)量的含密字符畫圖像,并能通過正確密鑰提取秘密信息,且提取的秘密信息相對于原秘密信息的ER為0,說明秘密信息完整恢復(fù)。
編號掩體圖像實(shí)驗(yàn)參數(shù)xinitμinit馬賽克圖像恢復(fù)信息ER1圖2(a)0.758221533.85463216圖3(a)圖4(a)02圖2(a)0.758221543.85463215圖3(b)圖4(b)03圖2(b)0.258221543.95463215圖3(c)圖4(c)04圖2(b)0.958221543.65463216圖3(d)圖4(d)0
圖4 正確性實(shí)驗(yàn)恢復(fù)信息
為驗(yàn)證所提策略對密鑰的依賴性,對表1第1~4組實(shí)驗(yàn)的密鑰參數(shù)進(jìn)行修改,然后按算法4從含密字符畫圖像(圖3(a)~3(d))中恢復(fù)出秘密信息。
表2給出了密鑰依賴性實(shí)驗(yàn)數(shù)據(jù),其中“-”表示未修改,對應(yīng)的恢復(fù)信息如圖5所示。
圖5 密鑰敏感性實(shí)驗(yàn)恢復(fù)信息
表2 修改密鑰參數(shù)的密鑰敏感性驗(yàn)證實(shí)驗(yàn)參數(shù)
從表2和圖5可看出,只有提供正確的密鑰才能獲取正確的秘密信息,而錯誤的密鑰參數(shù)將無法提取秘密信息且誤碼率高達(dá)100%。
為驗(yàn)證所提方法的抗攻擊性能,分別對正確性實(shí)驗(yàn)中生成的含密字符畫圖像進(jìn)行下列攻擊:①JPEG壓縮:對選中的含密字符畫圖像進(jìn)行不同質(zhì)量因子的JPEG壓縮;②加噪攻擊:對選中的含密字符畫圖像添加不同強(qiáng)度的隨機(jī)噪聲。
圖6 抗攻擊實(shí)驗(yàn)恢復(fù)信息
圖7 抗攻擊實(shí)驗(yàn)中遭受攻擊字符畫
編號字符畫圖像遭受攻擊字符畫攻擊參數(shù)秘密信息攻擊方式攻擊占比或質(zhì)量因子原始恢復(fù)PSNRER1圖3(a)圖7(a)JPEG壓縮50圖2(c)圖6(a)27.5102圖3(c)圖7(b)JPEG壓縮80圖2(c)圖6(b)35.0103圖3(b)圖7(c)隨機(jī)噪聲8%圖2(c)圖6(c)14.1404圖3(d)圖7(d)隨機(jī)噪聲20%圖2(c)圖6(d)10.110
以下對圖3(a)和圖3(c)進(jìn)行不同質(zhì)量因子的JPEG壓縮,對圖3(b)和圖3(d)添加不同強(qiáng)度的隨機(jī)噪聲,表3給出了抗攻擊實(shí)驗(yàn)的實(shí)驗(yàn)參數(shù),圖6和圖7分別給出了抗攻擊實(shí)驗(yàn)中恢復(fù)信息和遭受攻擊字符畫圖像。
由圖6、圖7和表3中的實(shí)驗(yàn)數(shù)據(jù)可以看出,含密字符畫圖像盡管遭受了不同程度的JPEG壓縮和隨機(jī)噪聲攻擊,按算法4提取的恢復(fù)信息的誤碼率依然為0,表明所提方法具備良好的抗JPEG壓縮以及隨機(jī)噪聲性能,并且能有效提取秘密信息。
基于馬賽克拼圖的信息隱藏由于需借助修改式嵌入的方式嵌入額外信息,因此在難以抵抗密寫分析的同時(shí)魯棒性較低。針對上述問題,提出了一種基于字符畫的生成式圖像信息隱藏方法,借助字符生成掩體圖像的同時(shí),表達(dá)秘密信息。該方法首先將秘密信息轉(zhuǎn)化成秘密信息序列,利用密鑰生成隨機(jī)整數(shù)序列來決定秘密信息比特在掩體圖像中的嵌密位置;對于嵌密和非嵌密位置,分別放置與密鑰和位置信息相關(guān)聯(lián)或與掩體放置位置相近的字符畫來對秘密比特進(jìn)行表達(dá)和掩蓋,并將字符畫放置后的誤差向周圍擴(kuò)散。在恢復(fù)階段,利用密鑰確定秘密比特嵌入位置,并利用密鑰和位置信息提取對應(yīng)嵌密位置的秘密比特。與傳統(tǒng)馬賽克拼圖的信息隱藏方法相比,該策略僅通過隨機(jī)放置位置的字符對秘密信息表達(dá)而不涉及對字符的修改,在嵌密和提取的過程中完全依賴密鑰,具備較高的安全性。