趙 迪,邵利平,任平安
陜西師范大學(xué) 計算機科學(xué)學(xué)院,西安 710119
傳統(tǒng)信息隱藏,例如密寫[1-2]、分存[3]和水印[4]等,通常采用修改式嵌密,會在嵌密載體中留下修改痕跡,從而難以抵抗密寫分析器的檢測。
為解決該問題,人們提出了搜索式無載體信息隱藏[5-7]。相對于修改式嵌密,搜索式無載體信息隱藏通過選取適合的自然未修改載體來表達秘密信息。但這類方法需從大規(guī)模自然載體數(shù)據(jù)集中尋找適合的未修改載體,搜索代價高且單載體嵌密容量極低,即使借助倒排索引,其存儲和維護代價也十分高昂。
除了搜索式無載體信息隱藏,一些學(xué)者也提出了紋理生成式信息隱藏[8-12],通過生成自然界中不存在的圖像,使得攻擊者找不到追溯的根源;主要包括紋理構(gòu)造式信息隱藏[8-9]和紋理合成式信息隱藏[10-12]。其中紋理構(gòu)造式信息隱藏主要通過模擬紋理生成的方式來產(chǎn)生類自然紋理,用于對秘密信息進行掩蓋。相對于紋理構(gòu)造式信息隱藏,紋理合成式隱藏可產(chǎn)生紋理更為復(fù)雜和逼真的類自然紋理圖像,這類方法通常將秘密信息直接編碼為自然紋理小塊,通過自然紋理小塊拼接的方式來生成與給定自然樣例圖像相似的含密紋理圖像。為生成含密紋理,紋理合成式信息隱藏通常采用縫合線算法將相鄰小塊進行拼接[10-11],將指定位置出發(fā)連接重疊區(qū)域相鄰像素差異最小的誤差線作為邊界,把兩側(cè)位于不同分塊的像素融合在一起,但特定位置起始的最小誤差線并不一定是重疊區(qū)域所有像素差異最小的縫合線,因此容易產(chǎn)生縫合痕跡,從而無法對秘密信息進行掩蓋。為減少拼接痕跡和提高視覺質(zhì)量,文獻[12]提出了最小誤差紋理合成算法,選取重疊區(qū)域像素差異和最小的誤差線作為縫合線并依據(jù)最小拼接代價優(yōu)先原則進行相鄰小塊拼接;為提高抗攻擊能力,文獻[12]還將給定樣例圖像隨機截取的樣例紋理小塊進行差異均值聚類,通過選取聚類中心位置最接近的樣本小塊來構(gòu)造編碼樣本小塊。文獻[12]盡管可產(chǎn)生差異最小的拼接紋理并通過選取具有最大類間差異的聚類中心位置的編碼樣本小塊來提高含密紋理圖像的抗攻擊能力,但從根本上依然無法消除拼接痕跡。
另外,紋理構(gòu)造式和紋理合成式信息隱藏生成的紋理圖像都較為簡單,從而不能對秘密信息進行有效掩蓋。
為生成有意義掩體圖像,一些文獻還給出了基于馬賽克拼圖的信息隱藏策略[13-17]。這類方法將密圖劃分的小塊作為字典,通過對有意義掩體圖像的相似塊替換來隱藏密圖。例如,文獻[13]利用相似塊替換將密圖偽裝成公開圖像,文獻[14]進一步將密圖劃分為四份放在預(yù)先選擇的四張掩體圖中。為避免文獻[13-14]預(yù)先選取與密圖相似的公開圖像作為掩體,文獻[15]將密圖和掩體小塊按標(biāo)準(zhǔn)差升序排列,通過引入可逆顏色變換將密圖小塊偽裝成掩體小塊。文獻[16]引入優(yōu)化分類閾值算法改進文獻[14],使得生成偽裝圖像和目標(biāo)圖像的均方差最小。但文獻[13-16]都采用修改式嵌密來嵌入重構(gòu)秘密信息圖像的相關(guān)參數(shù),因此不可避免地存在固有的修改痕跡。為避免修改式嵌密,文獻[17]利用任意選取的圓形圖像直接表達秘密信息,通過馬賽克拼圖來產(chǎn)生有意義含密掩體。基于馬賽克拼圖的信息隱藏盡管可產(chǎn)生有意義含密掩體,但馬賽克間存在著固有的拼接痕跡,從而導(dǎo)致生成嵌密掩體的視覺質(zhì)量較差。另外這類方法生成的含密掩體在嵌密時會損失部分視覺質(zhì)量,從而導(dǎo)致嵌密后的掩體無法恢復(fù)。
針對以上文獻存在的問題,并借鑒于紙張印刷中廣泛采用的調(diào)整單色墨水濃淡產(chǎn)生連續(xù)色調(diào)的半色調(diào)印刷方法,本文提出了一種結(jié)合二次聚類編碼的生成式可逆信息隱藏方法,所提方法將隨機產(chǎn)生的不同灰度階的二值噪點小塊作為候選樣本小塊,經(jīng)由二次聚類編碼濾除不同灰度階的相似樣本小塊,來篩選同一灰度階的編碼樣本小塊用于二值秘密信息的編碼表示。通過生成的隨機二值參考圖結(jié)合隨機嵌密位置來放置不同灰度階的編碼樣本小塊,產(chǎn)生含密掩體。在提取時,首先由密鑰按二次聚類編碼產(chǎn)生編碼樣本小塊,然后結(jié)合二值參考圖和嵌密位置提取二值秘密信息比特。
相對于既有工作,本文的主要貢獻在于:
(1)相比于搜索式無載體信息隱藏[5-7],本文方法所需的樣本小塊均由密鑰產(chǎn)生,無需數(shù)據(jù)庫,無需在信道中傳遞大量含密自然載體。
(2)相比于紋理生成式信息隱藏[8-12],本文方法能生成視覺質(zhì)量良好的有意義圖像,不存在拼接痕跡,并且具有較好的抗攻擊能力。
(3)相比于傳統(tǒng)馬賽克拼圖信息隱藏[13-17],本文方法不存在任何修改式嵌入,不會遺留拼接痕跡,可靠性高。
(4)無論秘密信息如何嵌入,本文方法的含密掩體均可等質(zhì)量地?zé)o損恢復(fù)為原始掩體圖像,且嵌入和提取過程完全依賴于用戶密鑰,具有較高的安全性。
(5)借鑒文獻[12]通過選取具有最大類間差異的聚類中心位置編碼樣本小塊來提高含密紋理圖像的抗攻擊能力,本文進一步給出了二次聚類編碼,用于拉開不同灰度階樣本小塊間的距離和濾除不同灰度階的相似樣本小塊的影響,同時保證同灰度階的不同編碼樣本小塊具有最大的類間差異以提高抗攻擊能力。
圖1 給出了本文所提方法的流程框圖。在嵌密時,首先輸入p階掩體圖像C=(cx,y)M×N,cx,y∈{0,1,…,p-1}并生成黑色噪點樣本小塊,i=0,1,…,p-1,j=0,1,…,r-1,其中r為C中每個灰度階生成的樣本小塊數(shù)量;其次樣本小塊經(jīng)由二次聚類編碼產(chǎn)生編碼樣本小塊Ak,0,Ak,1,k=0,1,…,p-1;再次生成隨機二值參考圖S和嵌密坐標(biāo)序列T,結(jié)合S、T和C,從Ak,0,Ak,1,k=0,1,…,p-1 中選取合適的編碼樣本小塊來編碼秘密信息比特位串B以及生成含密掩體Cfinal。在提取時,首先構(gòu)造與嵌密過程中同樣的編碼樣本小塊Ak,0,Ak,1,k=0,1,…,p-1,二值參考圖S和嵌密坐標(biāo)序列T,然后結(jié)合S和T重構(gòu)秘密信息比特位串B并恢復(fù)原掩體。
在嵌入階段主要涉及的處理環(huán)節(jié)有二次聚類編碼和含密掩體圖像生成。
2.1.1 二次聚類編碼
文獻[12]通過選取聚類中心位置最接近的樣本小塊構(gòu)造編碼樣本小塊,使得所提方法相對于文獻[10-11]進一步提高了抗攻擊能力。借鑒文獻[12]的差異均值聚類,本文進一步給出了構(gòu)造編碼樣本小塊的二次聚類編碼算法,用于拉開不同灰度階樣本小塊間的距離和濾除不同灰度階相似樣本小塊的影響,同時保證同一灰度階的編碼樣本小塊對秘密信息具有充分的表達能力且具有最大的類間差異以提高編碼樣本小塊的抗攻擊能力。
Fig.1 Diagram of generating information hiding method through quadratic clustering coding圖1 結(jié)合二次聚類編碼的生成式信息隱藏方法框圖
二次聚類編碼的過程是:首先由用戶密鑰產(chǎn)生不同灰度階的黑色噪點樣本小塊;其次通過二次聚類算法中的第一重聚類篩選算法將黑色噪點樣本小塊劃分為多個類別,通過劃分類別識別出不同灰度階的相似樣本小塊并進一步濾除不同灰度階的相似樣本小塊的影響;最后進一步通過第二重聚類篩選算法構(gòu)造同一灰度階的編碼樣本小塊,在保證同一灰度階的編碼樣本小塊對不同秘密信息充分表達能力的同時,進一步拉開同灰度階編碼樣本小塊的距離,以提高編碼樣本小塊對抗攻擊時的區(qū)分度。
本文之所以通過用戶密鑰產(chǎn)生樣本小塊而不采用搜索式無載體信息隱藏構(gòu)建的數(shù)據(jù)庫樣本,其原因是:搜索式無載體信息隱藏采用自然未修改載體來表達秘密信息,由于自然未修改載體對不相關(guān)秘密信息的表達能力十分有限,導(dǎo)致搜索式無載體信息隱藏需構(gòu)建大數(shù)據(jù)庫并涉及大量含密載體在信道中密集傳輸,即使借助倒排索引也無法緩解其構(gòu)建、搜索和傳輸代價。而本文方法是直接構(gòu)建表達二值秘密信息的樣本小塊,并且針對掩體圖像的所有灰度階像素,都提供了對應(yīng)的灰度階編碼樣本小塊,因此擁有對秘密信息的充分表達能力。并且通過用戶密鑰來生成不同灰度階的樣本小塊,使得收發(fā)方僅需共享相同的密鑰,即可生成同樣的樣本小塊,避免了信道中密集傳輸樣本小塊所帶來的安全風(fēng)險,同時也不需要構(gòu)建搜索式無載體信息隱藏涉及的大數(shù)據(jù)庫。
記輸入分辨率為M×N像素的p階灰度掩體圖像C=(cx,y)M×N,cx,y∈{0,1,…,p-1},則生成黑色噪點樣本小塊的具體過程是:
取用戶密鑰k1作為隨機數(shù)種子,對C中的每個灰度階Gi=i,i=0,1,…,p-1 隨機生成r個分辨率為H×W的樣本小塊,i=0,1,…,p-1,j=0,1,…,r-1,其中由Gi生成的具體過程可描述為式(1):
式(1)中,隨機樣本小塊生成函數(shù)RandBlock(Gi,H,W)具體執(zhí)行的功能如算法1 所示。
算法1隨機樣本小塊生成算法
步驟1初始化分辨率為H×W的空白圖像,其中H、W滿足的約束如式(2);按式(3)計算上生成的黑色像素點的數(shù)量X。
步驟2隨機生成長度為X的隨機坐標(biāo)序列U=((xk,yk))X,其中(xk,yk)∈H×W且U中坐標(biāo)兩兩不等。
步驟3對U中的每個坐標(biāo)(xk,yk),置上的元素rxk,yk=0 直至U序列中的所有坐標(biāo)處理完畢,將輸出。
在算法1 中,用戶密鑰k1用于同步嵌入和提取過程隨機樣本小塊,i=0,1,…,p-1,j=0,1,…,r-1 的生成過程。使得只有正確的用戶密鑰k1,才能保證生成的樣本小塊完全一致。
進一步,以用戶密鑰k2為隨機數(shù)種子,將生成的p×r個樣本小塊按均值聚類為p個類別S0,S1,…,Sp-1,在每個類別Sk中剔除灰度值不為Gk的樣本小塊,其中k=0,1,…,p-1,將其稱為二次聚類編碼第一重聚類篩選算法,如算法2 所示。
算法2二次聚類編碼第一重聚類篩選算法
步驟1對每個Gi,i=0,1,…,p-1 隨機生成的r個分辨率為H×W的樣本小塊,j=0,1,…,r-1,根據(jù)用戶密鑰k2從中隨機選擇一個樣本小塊作為初始聚類中心Dk,其中k=0,1,…,p-1。
步驟2按式(4)計算到Dk=(ds,t)H×W的距離,其中i,k=0,1,…,p-1,j=0,1,…,r-1,按距離最小找到所屬的類別Sind,ind∈{0,1,…,p-1},將其加入到Sind中。
步驟3記是Sk中的第i個樣本小塊,|Sk|是Sk中的樣本小塊數(shù)量,這里可按式(5)計算Sk中所有樣本小塊的均值Mk,然后按式(6)尋找最優(yōu)樣本小塊,按式(7)更新聚類中心Dk,其中i=0,1,…,|Sk|-1,k=0,1,…,p-1。
步驟4重復(fù)執(zhí)行步驟2 到步驟3,直至聚類過程趨于穩(wěn)定或達到指定的迭代次數(shù),輸出S0,S1,…,Sp-1,將Sk中灰度值不為Gk的樣本小塊刪除。
在算法2 中,用戶密鑰k2用于同步嵌入和提取過程中二次聚類編碼的初始聚類中心,使得通信雙方由相同的聚類中心出發(fā),從而產(chǎn)生一致的聚類結(jié)果。
算法2 將Sk中灰度均值不為Gk的樣本小塊刪除的目的是拉開不同灰度階樣本小塊的距離,避免不同灰度階的樣本小塊中存在的相似樣本小塊,以降低樣本小塊在遭受攻擊時的誤判概率。
進一步對每個集合Sk按均值聚類劃分為兩個類別Sk,0和Sk,1,從中分別選取離Sk,0和Sk,1聚類中心位置最近的樣本小塊作為編碼樣本小塊Ak,0,Ak,1,其中k=0,1,…,p-1,將其稱之為二次聚類編碼第二重聚類篩選算法,其具體處理過程和算法2 類似,第二重聚類篩選算法的目的是最大化同一灰度階樣本小塊的編碼距離,從而降低同一階灰度樣本在遭受攻擊時的誤判概率以提高編碼樣本小塊的抗攻擊能力。
傳統(tǒng)紋理生成式信息隱藏方法[10-11]利用不同類別的紋理小塊代表不同的秘密信息,但只是簡單地從同一類別中隨機篩選樣本小塊來表達秘密信息,未考慮到同類樣本小塊在對抗攻擊時的差異性,因此在遭受攻擊時極易出現(xiàn)類別提取錯誤。為提高抗攻擊能力,文獻[12]將給定樣本圖像隨機截取的樣本小塊進行差異均值聚類,選取離每個類別聚類中心位置最近的樣本小塊作為編碼樣本小塊,來降低攻擊所導(dǎo)致的類別提取錯誤。本文借鑒文獻[12]的聚類方法,將樣本小塊通過兩次聚類過程編碼為具有最大類間差異的編碼樣本小塊,使其在遭受攻擊時不易產(chǎn)生類別識別偏差,從而具有較強的抗攻擊能力。文獻[12]雖然提高了抗攻擊能力,但該方法首先要將代表秘密信息的小塊放置在空白圖像上,隨后進行紋理小塊的拼接形成對秘密信息的掩蓋,不能生成有意義的含密掩體圖像;而本文所生成的含密掩體為無拼接痕跡的有意義圖像,可更好地解決該問題。
2.1.2 含密掩體圖像生成
以用戶密鑰k3為隨機數(shù)種子生成分辨率為M×N的二值參考圖S=(sx,y)M×N,sx,y∈{0,1},記秘密信息是長度為l的二值比特位串B=(bi)l,bi∈{0,1},由用戶密鑰k4確定隨機坐標(biāo)序列T=((xi,yi))l,其中(xi,yi)∈M×N且T中坐標(biāo)兩兩不等,算法3 給出了秘密信息嵌入和含密掩體圖生成算法,其中k3生成的二值參考圖S=(sx,y)M×N用于對嵌入的秘密信息進行嵌入前加密;k4生成的嵌密坐標(biāo)序列T=((xi,yi))l,用于決定秘密信息的嵌入位置,若沒有正確的k3和k4將無法準(zhǔn)確地提取秘密信息。
算法3秘密信息嵌入和含密掩體圖生成算法
步驟1初始化含密掩體圖,對C=(cx,y)M×N中的每個元素cx,y,以(x?H,y?W)為左上角坐標(biāo),按含密掩體圖生成策略在Cfinal上放置H×W的樣本小塊。
(1)若(x,y)?T,置k為cx,y處的k值,然后從Ak,0,Ak,1隨機選取一個,作為放置的H×W樣本小塊。
(2)若(x,y)∈T且(x,y)=(xi,yi),置k為cx,y處的k值,按式(8)確定編碼樣本小塊Ak,b′i中的,然后將Ak,b′i作為放置的分辨率為H×W像素的樣本小塊。
步驟2反復(fù)執(zhí)行步驟1,直至B中的所有元素bi處理完畢,將生成的Cfinal作為含密掩體輸出。
為保證隱藏策略對密鑰的完全依賴性,密鑰k1、k2、k3、k4由Logistic 混沌映射按式(9)生成,其中系統(tǒng)參數(shù)μ∈[3.57,4.00],初始密鑰x0∈(0,1)和消除暫態(tài)效應(yīng)的濾除迭代次數(shù)IT,IT>0 由通信雙方約定。
取式(9)連續(xù)生成的4 個隨機數(shù)作為用戶密鑰k1、k2、k3、k4,而k1、k2、k3、k4又進一步影響樣本小塊,i=0,1,…,p-1,j=0,1,…,r-1、二次聚類編碼樣本小塊Ak,0,Ak,1,k=0,1,…,p-1、二值參考圖S和隨機嵌密坐標(biāo)序列T的生成,使得本文嵌入過程和通信雙方約定的密鑰具有完全的依賴性。
在提取時,同隱藏方法一致,首先輸入初始系統(tǒng)參數(shù)μ∈[3.57,4.00],密鑰x0∈(0,1)和消除暫態(tài)效應(yīng)的濾除迭代次數(shù)IT,IT>0,取Logistic 混沌映射連續(xù)生成的4 個隨機數(shù)作為用戶密鑰k1、k2、k3、k4。
其次按第2.1 節(jié)生成編碼樣本小塊Ak,0,Ak,1,k=0,1,…,p-1,并以k3為隨機數(shù)種子生成分辨率為M×N的二值參考圖S=(sx,y)M×N,根據(jù)秘密信息的長度控制參數(shù)l,由k4確定隨機坐標(biāo)序列T=((xi,yi))l。
再次遍歷含密坐標(biāo)序列T=((xi,yi))l,輸入分辨率為M?H×N?W的含密掩體圖,根據(jù)隨機坐標(biāo)序列T=((xi,yi))l,按秘密信息提取策略提取秘密信息B,并由Cfinal重構(gòu)原始掩體圖像C=(cx,y)M×N,其具體方法如算法4 所示。
算法4秘密信息提取和掩體圖像恢復(fù)算法
步驟1對于T=((xi,yi))l中的每個(xi,yi),將其作為左上角坐標(biāo),從Cfinal中截取分辨率為H×W的樣本小塊R=(rs,t)H×W,按式(10)從Ak,b′i,k=0,1,…,p-1,b′i=0,1尋找與R=(rs,t)H×M最接近的編碼樣本小塊。
步驟2參考S按式(11)提取bi:
步驟3反復(fù)執(zhí)行步驟1 和步驟2,直到T=((xi,yi))l中的所有坐標(biāo)處理完畢,將B=(bi)l輸出作為提取的秘密信息。
步驟4將含密掩體圖分割為M×N個分辨率為H×W的小塊Cx,y,x=0,1,…,M-1,y=0,1,…,N-1,將Cx,y對應(yīng)的灰度均值gx,y作為c′x,y,將,x=0,1,…,M-1,y=0,1,…,N-1 作 為 恢復(fù)的掩體圖像。
提取階段的密鑰k1、k2、k3、k4也由Logistic 混沌映射按式(9)生成,和隱藏階段的k1、k2、k3、k4保持一致,而k1、k2、k3、k4也進一步影響著樣本小塊、二次聚類編碼樣本小塊Ak,0,Ak,1,k=0,1,…,p-1、二值參考圖S和隨機嵌密坐標(biāo)序列T的生成,使得本文提取過程也和通信雙方約定的密鑰具有完全的依賴性。
結(jié)合第2 章的工作,以下給出完整的結(jié)合二次聚類編碼的生成式可逆信息隱藏策略,分別如算法5 和算法6 所示。
算法5信息隱藏算法
步驟1輸入由通信雙方約定的系統(tǒng)參數(shù)μ∈[3.57,4.00],初始密鑰x0∈(0,1)和消除暫態(tài)效應(yīng)的濾除迭代次數(shù)IT,IT>0,取Logistic 混沌映射連續(xù)生成的4 個隨機數(shù)作為用戶密鑰k1、k2、k3、k4。
步驟2輸入p階灰度圖像C=(cx,y)M×N,以k1為隨機數(shù)種子,按算法1 生成樣本小塊,i=0,1,…p-1,j=0,1,…,r-1。
步驟3以k2為隨機數(shù)種子,按算法2 將,i=0,1,…,p-1,j=0,1,…,r-1聚類為p個類別S0,S1,…,Sp-1。
步驟4對每個集合Sk進一步聚類劃分為兩個類別Sk,0和Sk,1,從中分別選取離Sk,0和Sk,1聚類中心位置最近的樣本小塊作為編碼樣本小塊Ak,0,Ak,1,其中k=0,1,…,p-1。
步驟5以k3為隨機數(shù)種子生成分辨率為M×N的二值參考圖S=(sx,y)M×N,sx,y∈{0,1},由k4確定隨機坐標(biāo)序列T=((xi,yi))l,(xi,yi)∈M×N且T中坐標(biāo)兩兩不等。
步驟6初始化含密掩體圖,按算法3 嵌入秘密信息B并生成含密掩體圖Cfinal。
步驟7輸出含密掩體圖。
算法6信息提取算法
步驟1輸入系統(tǒng)參數(shù)μ∈[3.57,4.00],密鑰x0∈(0,1)和消除暫態(tài)效應(yīng)的濾除迭代次數(shù)IT,IT>0,取Logistic 混沌映射連續(xù)生成的4 個隨機數(shù)作為用戶密鑰k1、k2、k3、k4。
步驟2以k1為隨機數(shù)種子,按算法1 生成樣本小塊,i=0,1,…,p-1,j=0,1,…,r-1。
步驟3以k2為隨機數(shù)種子,按算法2 將,j=0,1,…,r-1 聚類為p個類別S0,S1,…,Sp-1。
步驟4對每個集合Sk進一步通過聚類劃分為兩個類別Sk,0和Sk,1,從中分別選取離Sk,0和Sk,1聚類中心位置最近的樣本小塊作為編碼樣本小塊Ak,0,Ak,1,其中k=0,1,…,p-1。
步驟5以k3為隨機數(shù)種子生成分辨率為M×N的二值參考圖S=(sx,y)M×N,sx,y∈{0,1},根據(jù)秘密信息的長度控制參數(shù)l,由k4確定隨機坐標(biāo)序列T=((xi,yi))l,(xi,yi)∈M×N且T中坐標(biāo)兩兩不等。
步驟6輸入含密掩體圖,按算法4 提取秘密信息B并恢復(fù)掩體圖像。
同紋理生成式信息隱藏[8-12]和馬賽克拼圖信息隱藏[13-17]相比,由于本文編碼樣本小塊都是由均勻分布的隨機二值噪點構(gòu)成,不會存在明顯的拼接痕跡,也不涉及任何修改式嵌入且所提方法無論秘密信息如何嵌入,含密掩體均可等質(zhì)量地恢復(fù)原始掩體圖像,通過引入二次聚類編碼,也提高了含密掩體的抗攻擊能力;由于本文方法是通過二值噪點小塊的空間分辨率來表達掩體像素的灰度分辨率,從而將多灰度階掩體圖轉(zhuǎn)化為二值圖像,并且針對掩體圖像的所有灰度階像素,二值秘密信息的兩種狀態(tài),都提供了對應(yīng)灰度階的編碼樣本小塊且擁有對二值秘密信息的完全表達能力,在嵌密容量內(nèi)無論嵌入多少比特秘密信息,嵌密后均不會損失原掩體的視覺質(zhì)量,可準(zhǔn)確重建原始掩體;此外,所提方法的用戶密鑰k1、k2、k3、k4均由logistic 混沌映射的初始參數(shù)x0、μ和IT生成,對密鑰具備完全的依賴性,若無法提供x0、μ和IT,將無法提取出秘密信息。
實驗測試環(huán)境為Windows 10 操作系統(tǒng),CPU 為Intel?CoreTMi5-6600,主頻為3.31 GHz,內(nèi)存為8.00 GB,實驗編程語言為JAVA jdk 1.8.0_65。
采用峰值信噪比(peak signal to noise rate,PSNR)和誤碼率(bit error rate,BER)分別對嵌入提取的秘密信息圖像視覺質(zhì)量以及秘密信息恢復(fù)質(zhì)量進行評價,PSNR 的計算式如式(12)所示:
式中,MSE為均方誤差(mean square error),計算式如式(13)所示:
式中,pi,j、p′i,j為待比較圖像像素值,m×n為圖像分辨率。
誤碼率BER的計算式如式(14)所示:
式中,le為提取錯誤的秘密信息比特數(shù);ln為秘密信息長度。
圖2 給出了實驗圖樣,實驗中選取分辨率為256×256 像素的灰度圖像(圖2(a)、圖2(b))作為原始圖像,由圖2(a)、圖2(b)經(jīng)誤差擴散法生成的16 級灰度圖像(圖2(c)、圖2(d))作為實驗輸入的灰度掩體圖像;為驗證本文方法秘密信息嵌入不會對掩體圖像造成任何視覺質(zhì)量損失,分別選取分辨率為450×120 像素的二值圖像(圖2(e))和分辨率為300×100 像素的二值圖像(圖2(f))作為嵌入的秘密信息圖像。
Fig.2 Experiment images圖2 實驗圖樣
以下分別通過正確性實驗、密鑰依賴性實驗、抗攻擊實驗、掩體恢復(fù)實驗、二次聚類編碼有效性驗證實驗和與傳統(tǒng)方法的對比實驗對所提策略的性能進行檢驗。
為驗證所提策略的正確性,取樣本小塊的分辨率為8×8,按算法5 嵌入秘密信息并生成含密掩體圖像,然后按算法6 從含密掩體圖像中提取秘密信息。
表1 給出了實驗參數(shù),圖3(a)~圖3(d)分別為生成的分辨率為2 048×2 048 像素的含密掩體圖像,圖4(a)~圖4(d)為圖3(a)~圖3(d)對應(yīng)的恢復(fù)秘密信息。
由表1、圖3 和圖4 可看出,所提方法可生成視覺質(zhì)量較好的含密掩體圖像,并能通過正確密鑰提取秘密信息且提取的秘密信息相對于原秘密信息的BER為0,PSNR為無窮大,說明秘密信息能完整恢復(fù)。
為驗證所提策略對密鑰的依賴性,對正確性驗證實驗中的實驗參數(shù)x0和μ進行微小修改,然后按算法6從含密掩體圖3(a)、圖3(b)中恢復(fù)出秘密信息。
Table 1 Correctness verification experiment parameters表1 正確性驗證實驗參數(shù)
Fig.3 Stego cover images in correctness verification experiment圖3 正確性驗證實驗的含密掩體圖
Fig.4 Recovered secret information圖4 恢復(fù)的秘密信息
表2 給出了密鑰依賴性實驗的實驗參數(shù),表3 和表4 進一步驗證了用戶密鑰k1、k2、k3、k4微小改變時的密鑰依賴性驗證實驗結(jié)果,其中“—”表示未修改,對應(yīng)的恢復(fù)秘密信息如圖5(a)~圖5(p)所示。
從表2、表3、表4 和圖5 可以看出,無論是對x0和μ還是對k1、k2、k3、k4分別進行任意微小改動,提取出的秘密信息相對于原秘密信息的PSNR始終在3 dB 左右,從而無法獲取任何有價值的信息;BER均在50%左右,具有較大的不確定性,說明只有提供正確的密鑰才能獲取正確的秘密信息,而錯誤的密鑰將無法提取秘密信息。
Table 2 Initial key dependency verification experiment parameters表2 初始密鑰依賴性驗證實驗參數(shù)
Table 3 User keys k1,k2,k3,k4 dependency verification experiment parameters表3 用戶密鑰k1、k2、k3、k4 依賴性驗證實驗參數(shù)
Table 4 User keys k1,k2,k3,k4 dependency verification experiment results表4 用戶密鑰k1、k2、k3、k4 依賴性驗證實驗結(jié)果
為驗證所提方法的抗攻擊性能,分別對正確性實驗中生成的含密掩體圖像圖3(a)和圖3(c)進行攻擊,包括:(1)剪裁攻擊,對含密掩體圖像隨機剪裁不同數(shù)量的分辨率為50×50 像素的馬賽克小塊;(2)加噪攻擊,對含密掩體圖像添加不同強度的椒鹽噪聲;(3)畫線攻擊,在含密掩體圖像上進行隨機畫線。
表5 給出了抗攻擊實驗的實驗參數(shù),圖6 和圖7分別給出了攻擊后的含密掩體和恢復(fù)的秘密信息。其中,圖6(a)~圖6(d)為剪裁攻擊,圖6(e)~圖6(h)為椒鹽噪聲攻擊,圖6(i)、圖6(j)為隨機畫線攻擊。
由圖6、圖7 和表5 可以看出,盡管含密掩體圖像遭受了不同程度的剪裁攻擊、椒鹽噪聲攻擊以及隨機畫線攻擊,但提取的秘密信息的BER均在3%以下,說明所提方法的二次聚類編碼策略可有效地分擔(dān)各種攻擊,具備良好的抗攻擊能力。
Fig.5 Recovered secret information in key dependency verification experiment圖5 密鑰依賴性驗證實驗恢復(fù)秘密信息
為驗證含密掩體可等質(zhì)量無損地恢復(fù)為原始掩體圖像,以正確性驗證實驗圖3 生成的含密掩體圖3(a)~圖3(d)為例,按算法4 重構(gòu)掩體圖像。
Table 5 Attack experiment parameters表5 抗攻擊實驗參數(shù)
Fig.6 Attacked cover images in attack experiment圖6 抗攻擊實驗中遭受攻擊的含密掩體圖
Fig.7 Recovered secret information in attack experiment圖7 抗攻擊實驗中恢復(fù)的秘密信息
Fig.8 Recovered cover images圖8 恢復(fù)的掩體圖像
Table 6 Recovered cover images experiment parameters表6 掩體恢復(fù)實驗參數(shù)
圖8 給出了重構(gòu)后的掩體圖像,表6 給出了具體的實驗參數(shù)。其中圖8(a)、圖8(b)所對應(yīng)的嵌密容量為54 000 bit,圖8(c)、圖8(d)所對應(yīng)的嵌密容量為30 000 bit。從表6 和圖8 可看出,無論嵌密容量是54 000 bit 還是30 000 bit,本文所嵌入的秘密信息不會對含密掩體圖的視覺質(zhì)量造成任何影響,因此所提方法可等質(zhì)量無損地將含密掩體圖重構(gòu)為原掩體圖像。
為驗證二次聚類編碼的有效性,將算法5 和算法6 所涉及的二次聚類編碼中的第一重聚類篩選算法剔除,然后和包含完整二次聚類編碼的算法5 和算法6 的實驗結(jié)果在同等攻擊情況下進行對比。圖9 給出了實驗結(jié)果,圖9(a1)~圖9(d2)為占比2.3%的剪裁攻擊后的含密掩體圖;圖9(e1)~圖9(h2)為與之對應(yīng)的提取的秘密信息;圖9(i1)~圖9(l2)為占比20%的噪聲攻擊后的含密掩體圖(圖9(i1)~圖9(l2)的實際分辨率為2 048×2 048 像素,因此20%的噪聲在圖中無法顯示出來);圖9(m1)~圖9(p2)為與之對應(yīng)的提取的秘密信息;圖9(q1)~圖9(t2)為隨機畫線攻擊后的含密掩體圖;圖9(u1)~圖9(x2)為與之對應(yīng)的提取的秘密信息。其中,編號為1 的分組對應(yīng)的圖樣為剔除第一重聚類的實驗圖像,編號為2 的分組對應(yīng)的圖樣為完整二次聚類編碼的實驗圖像。表7 給出了相關(guān)的實驗參數(shù),表8 給出了具體的實驗數(shù)據(jù)。
Table 7 Parameters in validity of quadratic clustering coding experiment表7 二次聚類編碼的有效性驗證實驗參數(shù)
從圖9 可看出,使用完整二次聚類編碼的編號為2 的所有分組恢復(fù)結(jié)果明顯好于剔除第一重聚類篩選算法的編號為1 的所有分組,這些也可被表8 中的最好結(jié)果(粗體數(shù)據(jù))所證實,并且隨著樣本小塊數(shù)量的增加,完整二次聚類編碼相對于剔除第一重聚類篩選算法的優(yōu)勢越來越明顯,表現(xiàn)為表8 剪裁、加噪和隨機劃線對應(yīng)的4 個分組隨著樣本小塊數(shù)量的增加,PSNR和EBR的差異都在增加。原因是隨著樣本小塊數(shù)量的增加,產(chǎn)生相似樣本塊的可能性增大,完整二次聚類編碼的第一重聚類篩選算法可有效地剔除相似樣本小塊的影響,降低誤判概率,從而在同等攻擊程度上,具備更強的抗攻擊能力。
Fig.9 Images in validity of quadratic clustering coding experiment圖9 二次聚類編碼的有效性驗證實驗圖像
4.6.1 拼接痕跡對比
圖10 為傳統(tǒng)裂縫拼接法[10-11]和最小誤差紋理合成法[12]的實驗結(jié)果,其中圖10(a)、圖10(b)為分辨率為256×144 像素的樣例圖像,重疊區(qū)域大小為256×32;圖10(c)為傳統(tǒng)裂縫拼接的實驗結(jié)果,圖10(e)為最小誤差紋理合成的實驗結(jié)果。圖10(d)和圖10(f)分別對圖10(c)和圖10(e)拼接的重疊區(qū)域和誤差線進行了標(biāo)記。注:為使拼接痕跡更為明顯,實驗中增大了拼接重疊區(qū)域的大小。圖11 給出了本文方法生成的二值樣本塊直接拼接的實驗結(jié)果,其中圖11(a)和圖11(b)是分辨率為256×128 像素的二值噪點樣本塊,圖11(c)是圖11(a)和圖11(b)進行直接拼接的結(jié)果。
從圖10 和圖11 的實驗結(jié)果可以看出,傳統(tǒng)裂縫拼接和最小誤差紋理合成都有明顯的拼接痕跡,本文方法因為使用了二值噪點圖作為樣本小塊,因此即使不借助任何拼接算法也能有效地避免拼接痕跡。
4.6.2 嵌密容量對比
傳統(tǒng)基于搜索的無載體信息隱藏主要通過檢索數(shù)據(jù)庫中包含指定秘密矢量的自然無修改載體來傳遞秘密信息。由于自然載體圖像和文本對與之不相關(guān)的秘密信息的表達能力十分有限,導(dǎo)致這類方法單載體嵌密容量極低,涉及大量載體在信道中密集傳輸,從而容易引起懷疑和攻擊,導(dǎo)致傳輸?shù)拿孛苄畔⒃馐芷茐摹?/p>
Table 8 Results in validity of quadratic clustering coding experiment表8 二次聚類編碼有效性驗證實驗結(jié)果
Fig.10 Traditional image synthesis and minimum error texture synthesis圖10 傳統(tǒng)圖像合成和最小誤差紋理合成
Fig.11 Spliced result of proposed method圖11 本文方法的拼接結(jié)果
文獻[5]將數(shù)據(jù)庫中每張圖像劃分為9 個相等的圖像塊,通過均值比較的方式將一張圖像映射為8 bit信息;文獻[6]依據(jù)圖像的SIFT(scale invariant feature transform)特征并結(jié)合圖像數(shù)據(jù)集的K均值聚類以及BOF(bag of features)特征來產(chǎn)生特征向量并將其映射為8 bit 信息。文獻[5-6]均通過最終映射的8 bit 信息將圖像集劃分為256 個類別,嵌密容量均為8 bit/圖像。文獻[7]構(gòu)建的數(shù)據(jù)庫更為龐大,通過K均值聚類建立圖像局部分塊特征和10 000 個視覺詞匯之間的對應(yīng)關(guān)系表達秘密信息,其嵌密容量僅為1.57 和1.86 中文字符/圖像。
因此搜索式無載體信息隱藏的單載體嵌密容量極低。
本文所提方法通過編碼樣本小塊來隱藏秘密信息,每個編碼樣本小塊代表1 bit 秘密信息,樣本小塊的分辨率僅為8×8 像素。由于本文方法所生成的含密掩體圖是將原始掩體圖的每個像素點擴展為8×8分辨率的小塊而生成的,因此本文方法的單載體嵌密容量與原始掩體圖像大小有關(guān);以4.1 節(jié)正確性驗證實驗為例,嵌密容量為65 536 bit/圖像。
4.6.3 掩體視覺質(zhì)量對比
圖12 給出了文獻[17]基于馬賽克拼圖的信息隱藏的含密掩體圖,其中圖12(a)、圖12(b)是含密掩體圖,圖12(c)、圖12(d)是與之對應(yīng)的局部放大圖。從圖12 可看出,文獻[17]馬賽克之間存在著固有的拼接痕跡且含密掩體圖上存在著大量的突兀點,導(dǎo)致文獻[17]含密掩體整體視覺質(zhì)量較差。
從圖3 和圖8 可看出,本文含密掩體視覺質(zhì)量則整體較好,且本文所提策略在嵌密過程中始終選擇與掩體放置位置最接近的編碼樣本小塊,因此放置的秘密信息不會對含密掩體的視覺質(zhì)量產(chǎn)生任何影響,含密掩體可等質(zhì)量地恢復(fù)為原始掩體。
Fig.12 Experimental results of Ref.[17]圖12 文獻[17]的實驗結(jié)果
4.6.4 性能綜合對比
以下將本文策略同傳統(tǒng)修改式信息隱藏[1-4]、搜索式無載體信息隱藏[5-7]、紋理生成式信息隱藏[8-12]和馬賽克拼圖式信息隱藏[13-17]進行綜合性能對比。從表9 可看出本文算法具有較好的性能。
Table 9 Comparison with traditional methods表9 與傳統(tǒng)方法的對比
為克服傳統(tǒng)修改式信息隱藏、搜索式無載體信息隱藏、紋理生成式信息隱藏和馬賽克拼圖式信息隱藏存在的缺陷,提出了結(jié)合二次聚類編碼的生成式可逆信息隱藏方法。將隨機產(chǎn)生的不同灰度階的黑色噪點圖作為候選樣本小塊,經(jīng)由二次聚類編碼濾除不同灰度階的相似樣本小塊,并進一步篩選出同一灰度階的編碼樣本小塊用于二值秘密信息的編碼表示。所提方法通過生成的隨機二值參考圖結(jié)合隨機嵌密位置來放置不同灰度階的編碼樣本小塊以編碼秘密信息。理論和實驗表明,所提方法可生成視覺質(zhì)量良好的有意義圖像,不會產(chǎn)生任何拼接痕跡,也不涉及任何修改式嵌入,具有良好的抗攻擊能力,可抵御不同程度的剪裁攻擊、椒鹽噪聲攻擊以及隨機畫線攻擊;另外,所提方法無論秘密信息如何嵌入,含密掩體均可等質(zhì)量地?zé)o損恢復(fù)為原始掩體圖像,且嵌入和提取過程完全依賴于用戶密鑰,具有較高的安全性。本文方法盡管通過隨機黑色噪點小塊避免了拼接痕跡,但所生成的含密掩體通過空間分辨率來表達灰度分辨率,會帶來像素的膨脹,如何有效地解決該問題,還需要進一步的研究。