(1.哈爾濱理工大學 測控技術與通信工程學院, 哈爾濱 150040; 2.東北林業(yè)大學 信息與計算機工程學院, 哈爾濱 150040)
摘要:
提出了一種新的空域隱藏算法。該算法利用三像素值之間的大小關系來隱藏信息,將載體圖像分成包含三像素的小塊,修改第一、第三像素值來調整大小關系;另外對秘密圖像進行了Arnold置亂預處理,利用混沌序列進行間隔隱藏。實驗表明,該算法實現(xiàn)容易、隱藏量大、安全性和不可見性好,當嵌入率達到98.8%,峰值信噪比PSNR>38 dB。
關鍵詞:信息隱藏; 分塊; 置亂; 混沌
中圖分類號:TP309.07文獻標志碼:A
文章編號:10013695(2009)03108202
Information hiding algorithm based on threepixel block
YU Xiaoyang1, HUANG Haixia1, ZHANG Jian1,2, NING Ziyu1, DONG Yanbin1
(1.College of MeasurementControl Technology Communications Engineering, Harbin University of Science Technology, Harbin 150040, China; 2. College of Information Computer Engineering, Northeast Forestry University, Harbin 150040, China)
Abstract:
This paper proposed a new hiding algorithm. It hid information by using the size relation of three pixel values. To hide information, divided the cover image into threepixel blocks, changed the first and the third pixel value to modify the size relation. In addition, used Arnold transformation to scramble the secret image and used chaotic sequence to randomly embed information. The experimental results show that the algorithm realizes easily and has big hiding capacity, good security and invisibility. When the embedding rate is up to 98.8%, the peak signal to noise ratio PSNR>38 dB.
Key words:information hiding; block; scrambling; chaos
信息隱藏是指將秘密信息隱藏于載體信息中,使人眼不易察覺,從而達到信息隱藏的目的。在空域方面,LSB算法是比較典型的算法,它是通過將信息隱藏于載體的低位,其不可見性好、實現(xiàn)容易但魯棒性差。目前針對LSB算法的檢測算法有很多,其中檢測效果比較好的有SPA和RS等。在高位隱藏方面,HSBH[1]算法將像素值隱藏于圖像的高四位中,并加入了混沌,使算法安全性提高,但是隱藏容量比較小。本文提出了一種基于分塊的空域信息隱藏算法,它是通過調整子塊像素值的大小關系來實現(xiàn)信息隱藏。該算法實現(xiàn)容易、不可見性好、隱藏量大,可實現(xiàn)盲提取。
1算法原理
假設有三個數(shù)字分別用b1、b2、b3表示,這三個數(shù)字之間的大小關系有九種,將其中任意兩種進行合并,這樣這三個數(shù)之間有八種關系;再把這八種關系與數(shù)字0~7一一對應,如表1所示,這樣每一種關系對應三個二進制比特。表1為其中的一種對應方式,實際上它們之間的對應方式有8!種,即40 320種。當改變b1、b3的值,即將b2的數(shù)值加1或減1賦給b1、b3 ,這樣就可以改變三個數(shù)的大小關系。
本文算法就是根據(jù)上述原理,將圖像分成許多子塊,每個子塊有三個像素值,通過調整塊中像素值的大小關系來達到隱藏信息的目的。由于大部分子塊中的三個像素值的差值很小,調整大小關系后,即將中間像素值加減1后賦給兩邊的像素,像素值的變化量很小,不會引起視覺上的差異。
2Arnold圖像置亂預處理
Arnold 變換[2]是Arnold在遍歷理論的研究中提出的一種變換方法,根據(jù)所選擇的相位空間的不同可分為二維、三維直至N維的Arnold變換。文中采用的是二維Arnold變換。對于大小為N×N的方形圖像,二維Arnold變換定義為
x′y′=1112xy mod (N)(1)
其中:x, y∈{0,1,2,…,N-1},分別表示像素在圖像矩陣中變化前后的坐標,這樣的變換實質就是一一對應的位置。變換運算遍歷圖像所有元素以后,將坐標(x,y)對應的圖像信息映射到新坐標(x′,y′)就得到一幅新的置亂圖像。需要注意的是,Arnold變換具有周期性,即迭代到某一步時,將重新得到原始圖像。Dyson和 Falk給出了對于任意N>2,Arnold變換周期TN≤N2/2。表2列舉了四個不同大小圖像的Arnold變換周期。
本文使用Arnold圖像置亂對秘密圖像進行預處理。在進行秘密信息提取時,只需將圖像置亂次數(shù)作為密鑰,就可以根據(jù)Arnold的變換周期進行反變換,恢復秘密圖像。
3信息的嵌入和提取算法
3.1信息嵌入的步驟
a)將大小為M1×N1的載體圖像分成許多1×3的子塊,每個子塊記為B(i,j)。其中:1≤i≤M1;1≤j≤N1/3」。每個子塊中的三個像素記為b(i,(j-1)×3+1)、b(i,(j-1)×3+2)、b(i,(j-1)×3+3)。
b)將大小為M2×N2的秘密圖像進行Arnold置亂。如果M2<N2,先對秘密圖像左邊的方塊置亂n次,再對秘密圖像右邊的方塊置亂n次;同理M2>N2,先對秘密圖像上邊的方塊置亂n次,再對秘密圖像下邊的方塊置亂n次;如果M2=N2,直接置亂n次,n為密鑰。
c)將置亂后的秘密圖像的像素值轉換成二進制形式,把秘密信息比特進行分組,每三個一組。當秘密信息比特數(shù)不能被3整除,可以添加一兩個0比特使秘密信息比特數(shù)能被3整除。
d)根據(jù)每組秘密信息的值,按照表1中的對應關系調整載體圖像的像素值。以隱藏000為例進行說明:
if秘密信息為000
{ifb(i,(j-1)×3+1)<b(i,(j-1)×3+2)≥b(i,(j-1)×3+3)
b(i,(j-1)×3+3)=b(i,(j-1)×3+2)+1;
else if b(i,(j-1)×3+1)≥b(i,(j-1)×3+2)<b(i,(j-1)×3+3)
b(i,(j-1)×3+1)=b(i,(j-1)×3+2)-1;
else if b(i,(j-1)×3+1)≥b(i,(j-1)×3+2)≥b(i,(j-1)×3+3)
b(i,(j-1)×3+1)=b(i,(j-1)×3+2)-1;
b(i,(j-1)×3+3)=b(i,(j-1)×3+2)+1;
}
e)隱藏信息后檢查b(i,(j-1)×3+1)、b(i,(j-1)×3+3)的值。如果有值為-1,就把子塊的三個像素值均加上1;如果有值為256,子塊的三個像素值均減去1,以保證灰度值在0~255。
3.2信息提取步驟
a)將載密圖像進行分塊,根據(jù)三像素值的大小關系,按照表1中所示的對應關系提取秘密信息比特。
b)將所提取出的秘密信息比特轉換成十進制的像素值。
c)根據(jù)密鑰n進行反置亂,恢復秘密圖像。
3.3嵌入算法
當實際嵌入信息比特小于載體圖像的隱藏容量時,可以考慮隨機間隔嵌入的方式[3]。其思想是根據(jù)混沌序列的值把秘密信息隨機地擴散到載體圖像中。由于混沌映射具有很強的類隨機性和對初始條件的敏感性,這使得混沌系統(tǒng)具有良好的密碼特能,這樣接收者只有在知道密鑰時才可以正確提取信息,安全性大大提高,同時將秘密信息擴散在整幅圖像中比將秘密信息集中隱藏于一小塊中隱藏效果更好,抗攻擊能力也更強。
Logistic[4]映射模型是最經典的混沌映射之一,其具體定義為
xn+1=μxn(1-xn)(2)
當3.569 9…<μ≤4時,Logistic在(0,1)處于混沌狀態(tài),這時迭代得到的序列非周期、不收斂,對初值極為敏感。研究表明,Logistic混沌序列在0和1附近概率密度較大,并且關于1/2對稱分布。
嵌入信息間隔d由迭代得到的混沌序列的值決定。當混沌序列的值x≤0.5時,d=1;當混沌序列的值d>0.5時,d=t(t≥1)(當t=1時,即為連續(xù)隱藏)。根據(jù)混沌序列的特點可知,d取1與t的概率基本相同,所以使用間隔嵌入后載體圖像中2/(t+1)的子塊可用于隱藏信息,即實際隱藏容量為2/(t+1)×M1×N1/3」,要求隱藏秘密信息所需的子塊小于間隔嵌入時載體圖像的隱藏容量,即「M2×N2×8/3≤2/(t+1)×M1×N1/3」,可求出t≤2×[M1×N1/3」/「M2×N2×8/3]-1。
在本文算法中,t的取值如下:
t=2×[M1×N1/3」/「M2×N2×8/3]-1」(3)
若t取太大,載圖隱藏不了秘密信息;t取太小,秘密信息只隱藏于載體圖像中很小的區(qū)域,達不到均勻分散的目的。
當t=1時,此時為連續(xù)隱藏,所以可將連續(xù)隱藏視為間隔隱藏的特例。根據(jù)間隔隱藏的思想,隱藏步驟c)d)之間應該加入一個步驟,即按照式(3)求取t值,根據(jù)混沌序列的值決定秘密信息在載體圖像中隱藏間隔為t或1,這樣不但使秘密信息均勻分布,而且t≠1時,混沌序列還可以起到密鑰作用。
4實驗結果
實驗是在MATLAB 7.1上進行的,選用512×512的Lena灰度圖像作為載體圖像,128×128的灰度圖作為秘密圖像,如圖1所示。嵌入秘密信息后的載密圖像與原始載體圖像在視覺上幾乎沒有差別。
4.1密鑰空間
本算法采用雙層密鑰,第一層是對秘密圖像進行置亂預處理,將置亂次數(shù)作為密鑰;第二層是采用間隔隱藏,根據(jù)混沌序列的值決定秘密信息在載體圖像的位置。由于混沌序列的初值敏感性,將初值作為密鑰,如圖2所示。當初值x0=0.8,在提取信息時分別取x0=0.80…0114,x0=0.79…915,盡管差值很小,但無法正確提取信息,所以使用混沌序列使安全性大大提高,任何攻擊者在不知密鑰的情況下都無法提取信息。當t=1時,即進行順序隱藏時,第二層密鑰不起作用,但是在不知道置亂次數(shù)時還是無法提取信息。