原始方案
介紹
該方案主要關注加密域可逆信息隱藏,即內容所有者在發送前先將原始載體加密,加密后的載體經數據隱藏者獲取並嵌入信息后發送給接收者,接收者根據相應密鑰進行解密及信息提取. 由於在某些場合下內容所有者並不信任數據隱藏者,即內容所有者擔心載體內容被數據隱藏者泄露,因此,需要一種加密域的可逆信息隱藏方案.
現有的加密域可逆信息隱藏方法
1) 加密前不做任何處理,通過簡單修改部分密文數據以嵌入信息;
2) 將密文數據壓縮以騰出空間容納額外信息;
3) 加密圖像前先進行預處理,預留出空間以便於信息嵌入;
4) 用公鑰機制加密載體數據,利用加密技術的同態性嵌入信息.
論文實現方案
方案整體結構如圖1 所示. 內容所有者利用加密密鑰對原始圖像進行加密,得到加密圖像;數據隱藏者將加密圖像分塊,利用信息嵌入密鑰將圖像塊分組,在每組中嵌入多比特信息,之后將含有秘密信息的加密圖像發送給接收者. 接收者先利用加密密鑰將密文圖像解密,得到1 幅與原始圖像近似的解密圖像,之后根據自然圖像空間相關性與信息嵌入密鑰提取秘密信息並恢復原始圖像.
圖1 方案結構圖
即:內容所有者:
-
首先,用加密密鑰將原始圖像加密
-
然后,將加密圖像分塊並分組
數據隱藏者:
-
最后,通過修改每組圖像塊中的1塊來嵌入秘密信息
接收者:
-
將含有秘密信息的加密圖像解密后,得到1幅與原始圖像近似的解密圖像
-
再根據自然圖像的空間相關性恢復圖像並提取秘密信息
圖像加密
對於未經壓縮的灰度圖像,任意1 個圖像像素pi,j的取值范圍為[0,255],(i, j)表示像素在塊中的位置. pi,j 可用8 bit 來表示,設各像素的比特位為bi,j,0,bi,j,1,…,bi,j,7,則
其中⌊⋅⌋·表示向下取整. 內容所有者利用加密密鑰產生1 個偽隨機比特流ri,j,k ,與圖像像素各比特位bi,j,k逐位進行異或運算
所得到的Bi,j,k即圖像像素pi,j加密的結果,之后將加密圖像傳送給數據隱藏者.
信息嵌入
數據隱藏者獲得加密圖像后,在不知道原始圖像內容情況下,也能執行秘密信息嵌入操作.首先將加密圖像分塊,再將圖像塊分組,修改每組圖像塊中1 個嵌入信息. 具體步驟如下:
-
將圖像分塊,每塊大小s *s. 設圖像大小為M *N,則共有n 個圖像塊:
-
將k 個圖像塊分為1 組(k≤n),記為H1,H2,…,Hk ,各組互不重疊,則共有
-
將加密后的t 比特二進制信息轉換為十進制數m (0≤m≤2t - 1≤k - 1),修改第m + 1個圖像塊Hm +1,即在當前組中嵌入了t 比特信息.對Hm +1的修改方式如圖2 所示,將圖像塊按棋盤格方式划分,之后將綠色部分所代表像素的第L 位取反(1≤L≤8),即通過翻轉綠色部分像素的第L 位實現秘密信息嵌入.
圖2 圖像塊中的像素分布
-
對各組均按步驟3 嵌入信息即完成信息嵌入操作.
由於圖像共分為g 組,每組嵌入t 比特信息. 因此信息嵌入容量為
圖像解密
將密文圖像像素用8 bit 表示:b’i ,j,0,b’i ,j,1,…,b’i ,j,7,利用加密密鑰產生1 個偽隨機比特流ri,j,k ,並與b’i ,j,k逐位進行異或運算
所得到的B’i ,j,k為像素各比特的解密結果,則解密像素灰度值為
解密圖像內容與原始圖像近似,由信息嵌入過程可知,包含額外信息的解密圖像相對於原始圖像的最小均方誤差MSE (mean square error)為
則解密圖像的峰值信噪比PSNR (peak signal to noise ratio)為
根據式(8)對應不同參數L、k,解密圖像峰值信噪比的理論值如表1 所示. 不難看出,設置合適的參數可獲得質量較高的解密圖像.。在本實驗中,參數選擇用:k=8,L=4
信息提取及圖像恢復
接收者用加密密鑰將密文圖像解密后,得到與原始圖像大致相同的解密圖像. 此時,可根據信息嵌入密鑰恢復原始圖像並提取秘密信息. 每組圖像塊中有且僅有1 個被修改,則接收者只需找出每組圖像塊中被修改的塊即可恢復圖像並提取信息.
由於自然圖像具有空間相關性,因此,圖像被修改后的平滑度小於修改前. 對於被修改的圖像塊,其平滑度較小,將其以相同方式再次修改后便返回到未修改狀態,此時平滑度較大. 被修改的圖像塊經二次修改后平滑度變大,而未被修改的圖像塊經二次修改后平滑度變小. 據此便可找出每組圖像塊中被修改的塊. 衡量圖像塊平滑度的公式為
式中:pu,v為塊中對應的像素值,(u,v)為像素在塊中的位置; d1 反映了中心像素與其預測值的差異;d2反映了相鄰像素的差異;d3 表示邊沿像素與其預測值的差異; f 為衡量當前塊的平滑度,f 越大表示平滑度越小.
信息提取及圖像恢復的具體步驟如下:
-
將圖像按照與發送端相同方式分塊並分組,對每組按步驟2 恢復圖像並提取信息.
-
對當前組的k 個圖像塊H1,H2,…,Hk按式(9) ~ (12)分別計算f 值,記為f1, f2,…, fk .按圖2 所示方式,將此k 個圖像塊中黑色部分所代表像素的第L 位取反,得到k 個新圖像塊H’1,H’2,…,H’k ,再按式(9) ~ (12)分別計算f 值,記為f’1,f’2,…, f’k .
令A = fa - f憶a (1 ≤ a ≤ k),分別計算各圖像塊所對應的A 值,記為A1,A2,…,Ak . 對於未經修改的圖像塊,fa <f’a ;而對於被修改的圖像塊,fa >f’a . 即被修改圖像塊的A 值最大. 設Aw = max{A1,A2,…,Ak },(1 ≤ w ≤ k),則認為第w 個圖像塊被修改,將H1,H2,…,H’w ,…,Hk 作為恢復的圖像塊,w -1 作為當前組提取的十進制數,轉換為二進制后即為提取的秘密信息.
-
對各組均重復步驟2 即得到秘密信息與恢復圖像.
原始實驗結果
參數設置:
M*N:256*256
s*s:8*8
k:4
t:2
L:4
(1)原始圖像
(2)加密圖像 (3)帶有水印的加密圖像
(4)帶有水印的解密圖像(5)去除水印恢復原圖
(6)嵌入的水印信息
(7)從水印提取的信息
分別計算(1)和(5)與(1)和(4)的最小均方誤差和峰值信噪比,可以看出解密后帶有水印的圖像的峰值信噪比為40多,而去除后的圖像的峰值信噪比為無窮,也就是說完美恢復為原圖像。而水印信息也完美提取出來了。
方案改進
-
原始方案只對灰度圖片有效,改進方案增加對彩色圖片的支持
-
原始方案在提取圖像時需要遍歷所有的像素塊,改進方案遍歷的像素塊減少,這是因為原始方案利用了一個改變參數,在每組中最大值所對應的塊為隱藏信息快,而實際上根據計算公式可以得出最大值是正數而其他值是負數,所以不需要在整組中作比較只需要在計算后與0相比即可得出,而之后的也就沒意義了
-
原始方案在信息嵌入時分塊大小是確定的,改進方案根據需要嵌入的信息長度動態變化分塊大小,以達到嵌入更多信息的目的
-
原始方案在信息嵌入時選擇以一種方式改變圖像,改進方案以兩種方式改變,可將嵌入信息長度增加一倍
-
原始方案只改變一層像素(不管是灰度還是彩色),改進方案對於彩色圖片可以在每一層嵌入不同的信息,增加嵌入信息容量改進結果
改進結果
參數設置:
M*N:256*256
s*s:8*8
k:8
t:3
L:4
(1)原始圖像
(2)加密圖像 (3)帶有水印的加密圖像
(4)帶有水印的解密圖像(5)去除水印恢復原圖
(6)嵌入的水印信息
(7)從水印提取的信息
分別計算(1)和(5)與(1)和(4)的最小均方誤差和峰值信噪比,可以看出解密后帶有水印的圖像的峰值信噪比為40多,而去除后的圖像的峰值信噪比為無窮,也就是說完美恢復為原圖像。而水印信息也完美提取出來了。而彩色圖像的峰值信噪比要比灰度圖像高,具有更好的隱藏效果。
GUI界面
可以看到嵌入368bit信息時,圖像的PSNR值是非常好的,由於加解密用的異或,速度比較快,且提取信息后的圖像與原圖像NC值為1,說明無損提取,完全加密域可逆信息隱藏。
總結
問題
對於上述的改進方案還是有些問題的,上述改進只是在理論上通過,實驗中還沒全部驗證,比如嵌入容量是否會提升很多,利用嵌入信息的長度自動設置組數k,這樣做是否會提升容量;還有利用圖像的平滑度去找到修改的圖像塊,正確性是否有待保證,是都每次能保證每次都能找到等,還需后續繼續學習探索。
參考文獻
[1]程航, 王子馳, 張新鵬. 基於圖像塊分組的加密域可逆信息隱藏[J]. 北京工業大學學報, 2016, 42(5):722-728.