李 笑,王春玲,陳 亮
(西安工程大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,西安710048)
隨著網(wǎng)絡(luò)的快速發(fā)展,無(wú)論是國(guó)家、企業(yè)還是個(gè)人都會(huì)在網(wǎng)上進(jìn)行消息的傳輸.網(wǎng)絡(luò)在帶給我們通信便利的同時(shí)也帶給我們新的問(wèn)題:如何保證涉密信息的安全存儲(chǔ)和傳輸[1].信息隱藏技術(shù)為了解決這個(gè)問(wèn)題應(yīng)運(yùn)而生.最低有效位(Least Significant Bit,LSB)算法是信息隱藏技術(shù)中最常見的算法,它是將秘密信息隱藏在圖像像素值的最低位,利用圖像載體自身的冗余性以及人眼的不敏感性實(shí)現(xiàn)秘密信息的隱藏[2].
信息隱藏技術(shù)作為一個(gè)安全領(lǐng)域的新興課題被很多專家學(xué)者做了深入的研究,目前國(guó)內(nèi)外針對(duì)LSB算法做了很多優(yōu)化,使得基于LSB 算法的圖像信息隱藏技術(shù)更能滿足用戶的需求.徐文龍[3]根據(jù)紋理掩蔽效應(yīng)中平滑區(qū)比較敏感的特征,把秘密信息分段并轉(zhuǎn)換后優(yōu)先藏在載體圖像比較復(fù)雜的區(qū)域,使得視覺差異和魯棒性明顯降低;蘇彩霞[4]根據(jù)色彩的生理學(xué)理論,利用人眼對(duì)色彩的敏感性,用待隱藏的信息替換像素RGB 分量中不同的最低比特位個(gè)數(shù)來(lái)增大秘密信息的嵌入量,馬文姬等[5]針對(duì)只選最低位的LSB算法會(huì)導(dǎo)致隱藏信息量不夠大的缺點(diǎn),結(jié)合遺傳算法,實(shí)現(xiàn)秘密信息的自適應(yīng)嵌入,使得能夠嵌入更大的隱藏量.
一般來(lái)說(shuō),一個(gè)信息隱藏系統(tǒng)有很多特性,其中最主要的是信息隱藏量[6]、不可見性[7]和魯棒性[8],這三者相互制約,目前沒(méi)有三者皆為最優(yōu)的隱藏算法,我們只能根據(jù)實(shí)際需要選擇不同的算法來(lái)拿滿足用戶的需求[9].要想達(dá)到很好的隱藏效果,基于圖像的信息隱藏工具軟件應(yīng)該具有較大的嵌入量,隱藏過(guò)程和提取過(guò)程效率不能低,人的肉眼必須感覺不到偽裝圖像和原載體圖像有任何區(qū)別,要具有較高的安全性等特點(diǎn).本文就是在此基礎(chǔ)上,對(duì)LSB的替換算法進(jìn)行了改進(jìn),達(dá)到了較好的隱藏效果.
LSB 算法是目前基于圖像的信息隱藏技術(shù)最常用的算法,也叫做最低有效位替換算法.它實(shí)際上是利用圖像的冗余來(lái)轉(zhuǎn)換最低的信息,但人眼無(wú)法檢測(cè)到這種變化.對(duì)于灰度圖像,人眼無(wú)法區(qū)分全部256 級(jí)灰度,對(duì)于4個(gè)左右灰度等級(jí)的差異,人眼是無(wú)法分辨到的[10].它的原理是將秘密信息隱藏在圖像載體數(shù)據(jù)的最低幾位,這就相當(dāng)于在一個(gè)數(shù)據(jù)相當(dāng)大冗余性相當(dāng)強(qiáng)的原始載體上疊加了一個(gè)能量微弱的信號(hào),并不會(huì)影響原始載體的屬性、格式、使用價(jià)值等,在視覺上也很難察覺到嵌入秘密信息的載體和原始載體的區(qū)別,從而保證了秘密信息的傳送[11].
對(duì)于一副用多個(gè)比特表示其灰度值的圖像來(lái)說(shuō),其中的每個(gè)比特可看做表示了一個(gè)二值的平面,也稱位面[12].一個(gè)8 位灰度圖的8個(gè)位平面分解如圖1所示,一般用位面0 表示最低位面,位面7 表示最高位.
圖1 8 位灰度圖的位平面分解圖
傳統(tǒng)的LSB 算法,采用的是使載體圖像像素的最低一位被隱藏?cái)?shù)據(jù)所替換,隱藏效率太低,隱藏的信息量相對(duì)有限且易被破壞.
針對(duì)傳統(tǒng)LSB 圖像隱藏算法中只選取最低位導(dǎo)致的隱藏信息量不夠大以及容易被破壞的問(wèn)題,本文提出了改進(jìn)算法,并且在增大信息嵌入量的同時(shí)不影響圖像的失真度,安全性高.
分別將要隱藏的文本信息替換位平面0–7,主觀視覺效果如圖2所示:我們可以從人的主觀視覺上看到位平面7 對(duì)圖像影響最大,而位平面0 對(duì)圖像影響最小[13].在低四位上進(jìn)行隱藏幾乎看不到嵌密載體與原載體的區(qū)別,說(shuō)明在低四位進(jìn)行信息隱藏可以達(dá)到較好的隱藏效果.
圖2 將秘密信息隱藏在各平面上圖片質(zhì)量的變化
表1反映了在一張256×256的載體圖像的各個(gè)平面上嵌入一個(gè)秘密信息后的峰值信噪比(PSNR)的變化,一般來(lái)說(shuō)主觀上可以容忍的PSNR值都在20 dB以上,達(dá)到35 dB 以上意味著人眼基本察覺不出圖像質(zhì)量的降級(jí)[14].可以從表1看到低四位具有較高的信噪比.用式(1)定義嵌有秘密信息圖像的信噪比:
表1 256×256 載體各平面上隱藏信息PSNR的變化
其中,M×N是圖像的尺寸,I(x,y)表示原始圖像的像素,I′(x,y)表示嵌入秘密信息后圖像的像素.
基于以上研究本文通過(guò)替換載體圖像的低四位來(lái)實(shí)現(xiàn)信息隱藏.
(1)選擇原載體圖像,以載體圖像的一個(gè)字節(jié)信息S為例,S 可以表示為一個(gè)8 位二進(jìn)制數(shù)S8S7S6S5S4S3S2S1,取出低四位S4S3S2S1 并任意取出低四位中的其中兩位,記作SmSn.
(2)選擇需要隱藏的秘密信息,并讀取每個(gè)字節(jié)的數(shù)據(jù)X8X7X6X5X4X3X2X1,取出連續(xù)的兩位XiXj
(3)將m和n按由小到大的優(yōu)先規(guī)則按表2進(jìn)行組合,并用XiXj去匹配SmSn,如果能夠匹配成功,此時(shí)可將m和n所對(duì)應(yīng)的test 提取出來(lái),并將該test 值加到test1 集合中;如果匹配失敗,則XiXj直接替換S2S1.即S2=Xi,S1=Xj.用0 標(biāo)記若匹配失敗將找不到對(duì)應(yīng)的test 值,并將0 加到集合test1中.
表2 m、n的取值以及對(duì)應(yīng)的標(biāo)志
重復(fù)以上步驟直到秘密信息嵌入完畢.
(4)處理新產(chǎn)生的數(shù)據(jù)集test1
到第(3)步秘密信息已經(jīng)完成嵌入,但是產(chǎn)生的新的數(shù)據(jù)集test1 仍然需要處理.新的數(shù)據(jù)集test1 集合的隱藏不能完全采用秘密信息的隱藏算法,否則會(huì)產(chǎn)生新的數(shù)據(jù).為了解決這個(gè)問(wèn)題并能夠使test1 更安全的隱藏到載體圖像中.把test1 集合中的每個(gè)數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制按照連續(xù)2個(gè)比特位與載體圖像中每個(gè)字節(jié)二進(jìn)制數(shù)據(jù)的低3、4 進(jìn)行異或加密,將載體圖像二進(jìn)制數(shù)據(jù)的低1、2 位替換為異或后所得數(shù)值,從而實(shí)現(xiàn)標(biāo)識(shí)集test1的隱藏.
test1 集合信息的嵌入過(guò)程:
(1)確定test1 在載體圖像中進(jìn)行隱藏的起始位置S.在載體圖像中,從位置S 開始的數(shù)據(jù)均未隱藏過(guò)秘密信息,且隱藏量應(yīng)該能將test1 全部隱藏.
(2)在test1中取出連續(xù)的兩位二進(jìn)制數(shù)據(jù),記為FiFj,依次與載體圖像的最低三位和四位進(jìn)行異或運(yùn)算,將結(jié)果隱藏到載體圖像的最低一位和最低二位.也就是S2=Fi⊕S4,S1=Fj⊕S3.
(3)依次取出test1和載體圖像的數(shù)據(jù),進(jìn)行步驟(2)的操作,直到test1 全部隱藏完畢.
嵌入過(guò)程流程圖如圖3所示.
圖3 改進(jìn)算法的嵌入流程圖
提取過(guò)程是嵌入過(guò)程的反向操作,應(yīng)該先提取test1 再提取秘密信息.步驟如下:
(1)從偽裝了秘密信息的載體圖像中找到test1 進(jìn)行隱藏的起始位置S,從S 字節(jié)開始,依次讀取每個(gè)字節(jié)二進(jìn)制數(shù)據(jù)的最低四位S4S3S2S1,分別將S4和S2、S3和S1 進(jìn)行異或運(yùn)算,即Fi=S2⊕S4,Fj=S1⊕S3,將標(biāo)識(shí)集test1 還原出來(lái).
(2)通過(guò)test1 從表2中查找m和n的值.
(3)在偽裝圖像中依次讀取出二進(jìn)制信息,按照m和n的值提取對(duì)應(yīng)的比特位,將原始二進(jìn)制信息還原出來(lái).
(4)重復(fù)步驟(3),直到所有秘密信息被提取出來(lái).
為驗(yàn)證改進(jìn)算法的效果和穩(wěn)定性,在Matlab 平臺(tái)上選取了不同的載體圖像和不同類型的隱藏文件作了試驗(yàn).如圖4是將一個(gè)256×256的Lena 圖像作為載體圖像,利用改進(jìn)的LSB 算法,把一個(gè)267×107的二值圖像作為秘密信息嵌入載體圖像里.圖4(a)為原載體圖像,圖4(b)為秘密圖像,圖4(c)為帶有秘密信息的偽裝載體,圖4(d)為提取出來(lái)的秘密圖像.
從主觀結(jié)果來(lái)看,嵌入秘密信息后的載體圖像與原載體圖像視覺上的差別不明顯,滿足不可見性.且本文針對(duì)傳統(tǒng)LSB 隱藏算法嵌入量不夠大的情況做出了改進(jìn),利用本文算法將不同信息量的秘密信息嵌入圖4(a)中得到PSNR值,并與文獻(xiàn)[15,16]的算法進(jìn)行比較,結(jié)果如圖5所示.可以看出當(dāng)PSNR相同時(shí),本文算法可以嵌入的秘密信息量更多.
圖4 圖像隱藏算法實(shí)現(xiàn)示意圖
圖5 不同算法在相同嵌入量下的PSNR 比較
為了檢驗(yàn)此方法的抗攻擊能力,在Matlab 上對(duì)嵌入秘密信息后的載體進(jìn)行了一系列攻擊實(shí)驗(yàn),圖6反映了經(jīng)過(guò)旋轉(zhuǎn)、噪聲以及濾波后的效果.由此可見雖然由于攻擊提取出來(lái)的秘密信息存在一定失真,但是秘密信息仍能正確提取出來(lái).
圖6 各種攻擊及其提取的隱藏信息
隨著網(wǎng)絡(luò)的快速發(fā)展,信息隱藏技術(shù)已經(jīng)成為一種主流技術(shù),本文針對(duì)傳統(tǒng)的信息隱藏技術(shù)進(jìn)行改進(jìn),通過(guò)實(shí)驗(yàn)證明本文算法的不可見性高,隱藏透明性好,具有較高的安全性.對(duì)比傳統(tǒng)的LSB 算法,隱藏容量大,可以隱藏任何不超過(guò)原載體圖像大小的秘密信息,且由于隱藏位置相較于傳統(tǒng)算法更具隨機(jī)性,所以魯棒性有所增強(qiáng),抗打擊能力高,具有較高的實(shí)用價(jià)值,滿足用戶對(duì)信息隱藏的需求,可以推廣到實(shí)際應(yīng)用中.