陳小娥
(福建船政交通職業(yè)學(xué)院 信息工程系,福建 福州 350007)
在互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、泛在網(wǎng)等網(wǎng)絡(luò)技術(shù)的共同發(fā)展下,如何安全地傳輸圖像信息,如何保證圖像信息傳輸?shù)目煽啃?、圖像信息來源的不可抵賴性,以及如何保護(hù)數(shù)字圖像版權(quán)信息等都是非常棘手的問題.對(duì)信息進(jìn)行隱藏是保證隱秘?cái)?shù)據(jù)安全的重要手段,信息隱藏技術(shù)在信息安全保障、隱蔽通信、版權(quán)保護(hù)等方面具有重要的應(yīng)用價(jià)值.圖像信息隱藏作為圖像安全研究的重要內(nèi)容,正逐漸受到國(guó)內(nèi)外學(xué)者的廣泛關(guān)注.
圖像信息隱藏指的是通過某些算法,結(jié)合一定的數(shù)據(jù)加密技術(shù),將一個(gè)待隱藏的信息嵌入到原始載體圖像中,嵌入隱藏信息后的載體圖像與原始載體圖像相比,不能被人的感知系統(tǒng)察覺出有明顯的差別,以實(shí)現(xiàn)隱藏信息的目的.通過隱藏信息,可以跟蹤侵權(quán)行為或者證明版權(quán)的歸屬.嵌入的信息一般要求既不影響原載體的使用和價(jià)值,同時(shí)也不易被修改或清除.
圖像信息隱藏技術(shù)主要分為空間域與變換域兩大類.空間域算法比較經(jīng)典的有最低有效位方法、文檔結(jié)構(gòu)微調(diào)方法等;變換域算法比較常見的有離散余弦變換、小波變換等.如文獻(xiàn)[1]提出了基于塊匹配和多層校驗(yàn)格編碼的大嵌入率圖像隱藏算法,可同時(shí)提高載密圖像和提取圖像的視覺質(zhì)量;文獻(xiàn)[2]首先對(duì)由原始圖像進(jìn)行Contourlet變換得到的低頻子帶進(jìn)行分塊,然后對(duì)子塊進(jìn)行QR分解,最后采用QIM方法進(jìn)行信息的嵌入,該文獻(xiàn)所提出的算法能有效抵抗各種常見的攻擊;文獻(xiàn)[3]通過結(jié)合中國(guó)剩余定理和PCA方法提出的信息嵌入算法,則具有很好的不可感知性.
本文主要以現(xiàn)有圖像信息隱藏算法為基礎(chǔ),借助MATLAB開發(fā)平臺(tái),提出了一種圖像信息隱藏算法,實(shí)現(xiàn)待隱藏信息的嵌入和提取、對(duì)嵌入隱藏信息后的圖像進(jìn)行多種常見攻擊及其效果顯示、對(duì)攻擊后的圖像進(jìn)行再檢測(cè)或者再提取隱藏信息等功能.
本文采用的編程環(huán)境為MATLAB R2018a.MATLAB由美國(guó)MathWorks公司發(fā)布,它主要面對(duì)科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境.可進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、分析數(shù)據(jù)、創(chuàng)建用戶界面、實(shí)現(xiàn)算法、連接其他編程語言的程序等,被廣泛應(yīng)用于數(shù)據(jù)分析、無線通信、深度學(xué)習(xí)、計(jì)算視覺、量化金融和風(fēng)險(xiǎn)管理、機(jī)器人、控制系統(tǒng)、信號(hào)處理等方面.
為了更好地隱藏信息,一般可通過對(duì)待隱藏信息進(jìn)行差錯(cuò)控制編碼、置亂、偽隨機(jī)化等進(jìn)行預(yù)處理.其中置亂就有多種方法,每種方法又可以采用不同的置亂模板算法設(shè)置不同的參數(shù),這里的置亂模板算法和參數(shù)也可作為待隱藏信息加密和解密的密鑰.本文采用俄國(guó)數(shù)學(xué)家弗拉基米爾·阿諾德提出的cat映射,將圖像中各像素點(diǎn)的位置進(jìn)行置換,達(dá)到加密的目的.cat映射變換的示意圖如圖1所示,其基本原理是先作X軸方向的錯(cuò)切變換,再作Y軸方向的錯(cuò)切變換,最后通過模運(yùn)算作切割回填操作.cat映射是一種在有限區(qū)域內(nèi)進(jìn)行反復(fù)折疊、拉伸變換的混沌映射方法.
在圖像編碼的算法中,經(jīng)常需要將一個(gè)給定的方陣進(jìn)行Z字形掃描(Zigzag Scan).對(duì)于給定的一個(gè)n×n的矩陣,Z字形掃描的過程如圖2(a)所示,即從左上角第一個(gè)像素開始以Z字形進(jìn)行編排.圖2(b)為本文采用的Zigzag掃描得到的矩陣.
圖1 cat映射變換示意圖
(a)掃描過程 (b)得到的矩陣
圖2 Zigzag掃描示意圖
一般的信息隱藏算法基本包含兩大部分,即隱藏信息的嵌入和隱藏信息的提取.本文實(shí)現(xiàn)的信息隱藏算法的主要框架如圖3所示.隱藏信息的嵌入過程如下:首先,將待隱藏信息進(jìn)行加密,使其成為表面上無規(guī)律的、不可知覺的信息;然后,通過一定的信息嵌入算法將加密后的信息嵌入到原載體圖像中,形成包含隱藏信息的圖像.隱藏信息的提取過程如下:結(jié)合原載體圖像和包含隱藏信息的圖像,通過信息提取算法,先提取出直接隱蔽信息,該信息可能是雜亂無章的;接著根據(jù)之前加密過程使用的密鑰,再將提取的隱蔽信息經(jīng)過信息解碼算法,恢復(fù)成最終所需要的明文信息.
為了使嵌入的隱藏信息具有更好的不可見
圖3 圖像信息隱藏算法框架
性,同時(shí)也為了實(shí)現(xiàn)隱藏的信息即使被攻擊者竊取也不易被破解的目的,通??梢栽谇度胼d體圖像前對(duì)隱藏信息進(jìn)行一定程度的加密,如將隱藏信息轉(zhuǎn)變成具有不可預(yù)測(cè)的隨機(jī)性信號(hào).本文采用的是cat映射,對(duì)于大小為N×N的圖像,映射方程為:
其中,(xn+1,yn+1)是變換后圖像的像素點(diǎn),(xn,yn)是原圖像的像素點(diǎn).
隱藏信息的嵌入算法主要采用離散余弦變換域方法.對(duì)于一幅M×M的圖像,它的離散余弦變換公式是:
其中,x,y=0,1,…,M-1;
圖像經(jīng)過離散余弦變換后,輸出的頻率系數(shù)矩陣最左上角的直流系數(shù)的幅度最大.對(duì)于二維圖像的離散余弦變換,如果將變換后得到的矩陣按照“之”字形(Zig-Zag)排序成一維序列,則序列前面部分主要是低頻系數(shù),序列后面部分主要是高頻系數(shù).
隱藏信息嵌入的具體步驟如下:
(1)加密待隱藏信息.將待隱藏信息經(jīng)過cat映射變換進(jìn)行加密,將其轉(zhuǎn)換成較無規(guī)律可循的信息.
(2)圖像空間的轉(zhuǎn)換.將原載體圖像由RGB顏色空間轉(zhuǎn)換為YUV顏色空間,并選擇U通道作為待隱藏信息的嵌入層.
(3)為限制離散余弦變換對(duì)全局的影響,采用基于圖像分塊的離散余弦變換[5].即,首先將原載體圖像U通道進(jìn)行分塊處理,每分塊分別進(jìn)行離散余弦變換;接著再將第一步加密得到的信息分散嵌入到各分塊的離散余弦變換系數(shù)中.調(diào)整系數(shù)的公式如下:
上式中的s1和s2是兩個(gè)隨機(jī)序列.s(i)為加密后的信息構(gòu)成的序列值,實(shí)驗(yàn)中將其轉(zhuǎn)換成二值圖像,所以只有0和1兩個(gè)值.當(dāng)s(i)=1時(shí)取s1作為隨機(jī)序列;當(dāng)s(i)=0時(shí)取s2作為隨機(jī)序列.將s1和s2進(jìn)行傳遞,作為之后提取隱藏信息的密鑰.
(4)將加密信息加入到載體圖像的各分塊系數(shù)中,各分塊再進(jìn)行離散余弦逆變換,逆變換公式為:
其中,x,y,c(u),c(v)的取值同上.
(5)合并圖像各分塊,將圖像由YUV顏色空間轉(zhuǎn)換回RGB顏色空間,從而完成信息的隱藏.
隱藏信息的提取可看成是隱藏信息嵌入的逆變換.將加入隱藏信息的圖像同樣進(jìn)行分塊處理,對(duì)每分塊進(jìn)行離散余弦變換,通過對(duì)比提取序列與S1的相關(guān)系數(shù)、提取序列與S2的相關(guān)系數(shù),即可提取直接隱蔽信息.
由上一步提取的直接隱蔽信息,經(jīng)過cat映射逆變換即可獲取最終隱藏信息.采用的cat映射逆變換方程如下:
具體參數(shù)含義同2.2.
如果加入隱藏信息的圖像受到某種攻擊,可以將獲取的隱藏信息與原待隱藏信息進(jìn)行對(duì)比,計(jì)算其歸一化相關(guān)系數(shù)或者峰值信噪比,以進(jìn)一步評(píng)價(jià)算法或者提取信息的質(zhì)量.
在算法實(shí)現(xiàn)過程中,將隱藏信息的加密過程所采用cat映射的迭代次數(shù)設(shè)置為10,載體圖像大小為512 pixel×512 pixel,待隱藏信息的圖像大小為64 pixel×64 pixel.圖4為用MATLAB編程實(shí)現(xiàn)的圖像信息隱藏算法主要界面.該算法實(shí)現(xiàn)了待隱藏信息和原載體圖像的選擇,加隱藏信息后的圖像的生成,不受任何攻擊的加隱藏信息圖像的信息提取,加隱藏信息圖像遭受各種攻擊后效果圖的顯示以及受攻擊后隱藏信息的提取等功能.其中,圖4側(cè)重顯示了加隱藏信息的圖像在遭受高斯噪聲攻擊后的效果圖以及從該圖像提取的隱藏信息效果圖.
圖4 圖像信息隱藏算法實(shí)現(xiàn)示意圖
在隱藏信息嵌入過程中,采用MATLAB所提供的一個(gè)專門的塊處理函數(shù)(blkproc函數(shù)) 對(duì)原載體圖像U通道進(jìn)行分塊處理.該塊處理函數(shù)簡(jiǎn)化了很多復(fù)雜運(yùn)算,可以自動(dòng)實(shí)現(xiàn)圖像塊處理的整個(gè)過程.以下是隱藏信息嵌入過程中的部分關(guān)鍵代碼及相關(guān)注釋說明.
%將載體圖像的U通道分成8*8個(gè)塊(需要時(shí)填充零),對(duì)每個(gè)塊調(diào)用函數(shù)′dct2′,并重新將結(jié)果組合到輸出圖像original
original=blkproc(U,[8 8],′dct2′);
result=original;
開始嵌入隱藏信息
for i=1:markrow
for j=1:markcolumn
if binimage(i,j)==1
sequence=sequence1;
else
sequence=sequence2;
end;
for k=1:8
result((i-1)*8+k,j*8-k+1)=original((i-1)*8+k,j*8-k+1)+weight*sequence(k);
end
end;
end;
%嵌入完成后,對(duì)result分成8*8分塊,對(duì)每個(gè)塊通過調(diào)用函數(shù)′idct2′進(jìn)行DCT逆變換,然后再重新組合結(jié)果給result.
result=blkproc(result,[8 8],′idct2′);
為評(píng)價(jià)提取出來的隱藏信息的質(zhì)量,采用以下兩個(gè)指標(biāo)進(jìn)行衡量.
(2)峰值信噪比(Peak signal-to-noise ratio,PSNR)可以用于表示圖像的失真度.PSNR的值越大,說明兩幅圖像越相近,即嵌入的隱藏信息的不可見性越好.其定義為:
其中,p,q表示圖像的大小為p×q,A取255,f(x,y)表示原始載體圖像在位置(x,y)的值,ρ(x,y)表示加隱藏信息的圖像在位置(x,y)的值.
通過PSNR的值可以評(píng)價(jià)算法對(duì)信息的隱藏效果.如圖5所示,圖5(a)為原載體圖像,圖5(b)為待隱藏的信息,即帶有“信息工程”4個(gè)字的圖像;圖5(c)為圖5(b)經(jīng)過cat映射加密后的信息;圖5(d)為經(jīng)過本文算法加入隱藏信息后的圖像.計(jì)算圖5原載體圖像和加隱藏信息后的圖像的峰值信噪比為45.3988 dB,說明本文的算法能較好地保證隱藏信息的不可見性.
分別對(duì)本文算法生成的添加隱藏信息的圖像進(jìn)行剪切、添加噪聲以及圖像的增亮、變暗等常見攻擊試驗(yàn).圖6(a)~圖6(c)分別為對(duì)添加隱藏信息的圖像進(jìn)行中間、上方、下方1/16的剪切攻擊,為更好地觀察效果,給這3幅圖增加了邊框;圖6(d)~圖6(f)為與其對(duì)應(yīng)的提取信息效果圖.圖7(a)~圖7(c)分別為對(duì)添加隱藏信息的圖像進(jìn)行均值為0、方差為0.001和0.002的高斯噪聲攻擊,以及方差為0.005的椒鹽噪聲攻擊;圖7(d)~圖7(f)為與其對(duì)應(yīng)的提取信息效果圖.圖8(a)為圖像增亮攻擊,圖像增亮采用取原圖像灰度值的2倍值方式;圖8(b)為圖像變暗攻擊,圖像變暗采用取原圖像灰度值的1/2值方式;圖8(c)為增亮后提取的信息;圖8(d)為變暗后提取的信息.
(a)原載體圖像 (b)待隱藏的信息
(c)cat映射加密后的信息 (d)加入隱藏信息后的圖像
(a)中間剪切 (b)上方剪切 (c)下方剪切
(d)提取的信息 (e)提取的信息 (f)提取的信息
圖6剪切攻擊及其提取的隱藏信息
(a)高斯0.001 (b)高斯0.002 (c)椒鹽0.005
(d)提取的信息 (e)提取的信息 (f)提取的信息
(a)圖像變亮攻擊 (b)圖像變暗攻擊
(c)提取的信息 (d)提取的信息
經(jīng)過各種攻擊后,待隱藏信息與提取出的隱藏信息的NC值,以及原載體圖像和加隱藏信息后的圖像的PSNR值如表1所示.由表1數(shù)據(jù)可見,本文算法對(duì)常見的多種攻擊能保持較強(qiáng)的魯棒性.
表1 各種攻擊性能測(cè)試
攻擊類型參數(shù)NCPSNR/dB中間剪切1/160.905 845.816 1上方剪切1/160.955 145.402 4下方剪切1/160.961 746.561 2高斯噪聲0,0.0010.953 038.811 6高斯噪聲0,0.0020.812 135.432 2椒鹽噪聲0.0050.892 238.807 2圖像變亮20.751 330.838 9圖像變暗1/20.962 024.848 3
本文提出并實(shí)現(xiàn)了一種基于MATLAB的圖像信息隱藏算法,即:先利用cat映射將待隱藏的信息進(jìn)行一定程度的加密;接著對(duì)原載體圖像分塊進(jìn)行離散余弦變換;最后在變換后的系數(shù)中按照一定規(guī)律嵌入加密的待隱藏的信息,完成信息的隱藏.攻擊試驗(yàn)表明,該算法具有較強(qiáng)的魯棒性,能有效地應(yīng)對(duì)常見的攻擊;但是對(duì)于圖像增亮與變暗的攻擊,該算法處理效果還不是很理想,可進(jìn)一步通過改進(jìn)算法來提高其抗攻擊的能力.