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