摘要:密寫(Steganography)是信息隱藏(Information Hiding)的一個重要分支。鑒于密寫比信息加密更安全以及網絡與信息安全問題變得越來越重要,密寫已經成為當前國際上的研究熱點。JPEG是一種常見的圖像格式,在JPEG圖像中進行密寫有著重要的實際意義。文章主要研究了以JPEG圖像為載體進行數據密寫的基本模型,以及目前國內外以JPEG圖像為載體的密寫算法。
關鍵詞:信息隱藏;JPEG圖像;密寫;算法
0引言
密寫是信息隱藏的一個重要分支,其目的是將信息秘密地、安全地傳遞給接收方,而不引起第三方的懷疑。相對于傳統將信息加密為密文的方法,密寫是將有用信息隱藏到另一個公開的信息媒體中,是對信息存在本身或信息存在位置的保密。鑒于密寫比信息加密更安全以及網絡與信息安全問題變得越來越重要,密寫已經成為當前國際上的研究熱點。
JPEG是一種使用非常廣泛的圖像格式,以JPEG圖像作為密寫載體有著重要的應用價值。目前已出現多種以JPEG圖像為載體的密寫技術,如Jsteg、OutGuess、F5等。本文主要研究以JPEG圖像為載體進行數據密寫的基本模型,以及目前國內外以JPEG圖像為載體的密寫算法。
1基本模型
JPEG標準是靜態圖像的壓縮編碼和譯碼標準。它是第一個壓縮靜態數字圖像的國際標準,既可以用于灰度圖像,又可以用于彩色圖像。為了適應各種應用的不同要求,JPEG標準支持兩種圖像的建立模式:順序型、漸進型。同時,它還包括兩種基本的壓縮算法:一種是基于DCT(離散余弦變換)的有損壓縮算法,另一種是基于預測方法的無損壓縮算法。由于前者具有較高的壓縮率,實際上已成為目前JPEG壓縮的常見形式。基于DCT變換的編碼流程圖如圖1所示。

首先,源圖像數據被分成8*8像素塊,每塊使用正向DCT(Forward DCT,FDCT)進行變換,得到64個DCT系數值,這些DCT系數從低頻到高頻按照Zigzag次序排列,第一個值為DC(直流)系數,其他63個為AC(交流)系數。然后,使用已經規范化好的量化表對每個DCT系數量化。前一量化的DC系數用于預測當前的DC系數,然后對其差值進行編碼;63個AC系數不進行差分編碼。最后,對DCT系數進行熵編碼。熵編碼的算法有兩種:哈夫曼編碼和算術編碼,當前采用較多的是哈夫曼編碼。解碼的過程和編碼過程相反,如圖2所示。
在編碼過程中,從源圖像數據到獲取壓縮圖像數據,共經過三個步驟:FDCT變換,量化,熵編碼。其中FDCT變換和量化是有損變換過程,而熵編碼是無損變換。首先,需要確定在哪個位置隱藏信息。由于DCT變換是有損變換,量化也提-有損變換,當我們將修改后的數據再次寫入JPEG文件時,會遺失部分信息,因此當我們解碼恢復隱藏數據時就得不到和原來一模一樣的數據,所以不能在FDCT變換和量化處修改圖像數據,只能在熵編碼處修改。
隱藏算法分為三個步驟:
(1)對JPEG文件進行格式分析,獲得它的熵編碼信息,采用哈夫曼解碼或算術解碼,得到整幅圖像的DCT變換系數;
(2)按照某種規則對得到的DCT變換系數做一些微小的修改,將要隱藏的信息嵌入到DCT變換系數中;
(3)將修改后的DCT變換系數進行熵編碼寫入到新的JPEG文件中。提取秘密信息的算法則是隱藏算法的逆過程,不再贅述。最關鍵的是第二步中修改規則的制定。目前已出現多種基于不同修改原則的,以JPEG圖像為載體的密寫技術。
2密寫算法
JPEG圖像是由分塊DCT變換后的系數按照一定的量化表量化而成,量化后的系數是量化表中對應量化步長的整數倍。目前已出現了多種以JPEG圖像為載體的密寫方法。有的方法先修改量化表中對應中高頻分量的量化步長,然后將秘密信息嵌入在圖像的中高頻系數上。但修改后的中高頻量化步長會小于低頻量化步長,這種異常會暴露秘密信息的存在,因此安全性不高。大多數密寫方法并不改變原始圖像的量化表,而是根據一定的規則直接將秘密信息嵌入在量化后的DCT系數上,如Jsteg,F5,OutGuess等。
2.1 Jsteg
Jsteg是基于JPEG圖像格式的著名的密寫工具;由D.Upham最早發明,而后很多軟件采用類似方法。Jsteg是將—個二進制位的秘密信息隱藏在DCT量化后系數不是0,1、一l的最低—位。接收方解碼時只要依次取反量化DCT矩陣系數(不是0、1、-1)的最低—個二進制位即可。由于Jsteg密寫僅僅在不等于0、1、-1的DCT系數上嵌入信息,所以密寫量較小。由于算法是將秘密信息直接嵌入在DCT系數的LSB上,因此不能抵抗x分析。
2.2 F5
F5算法是Westfeld提出的一種高容量的、具有較高安全性的信息隱藏算法。由于Jsteg類的算法可以采用x。檢測法進行攻擊,Westfeld改進了隱藏方法,只修改不為0的DCT系數,當要嵌入的信息與該位置DCT系數的最低位不一致時,將該位置DCT系數的絕對值減1,秘密信息采用隨機嵌入的方法,并采用了矩陣編碼的密寫方案。F5將DCT系數絕對值減1來隱藏信息的方法,會造成收縮現象,使得量化后DCT系數中的0顯著增加,Fridrich基于這個原理已實現了對F5算法的攻擊。
2.3 OutGuess
Outguess算法是Niels Provos針對Jsteg類算法的缺陷提出的一種方法,主要分兩個部分:嵌入過程和糾正過程。嵌入過程不修改值為0、1的DCT系數,隨機決定下—個要嵌入的DCT系數的位置。糾正過程是利用那些未被修改的DCT系數進行修改來保持直方圖不變。Outguess在嵌入信息時修改了DCT系數,在糾正過程中也修改了DCT系數,這種改變會造成空間域的邊界不連續性,修改越多則不連續性越大。因此,也存在安全漏洞。
3研究現狀
3.1國內研究進展
(1)張新鵬、王朔中提出的保持分塊特性的JPEG密寫,只在圖像非0的非直流DCT系數上負載信息;同時量化后的DCT系數都是整數,用正奇數,負偶數代表秘密信息1,用正偶數,負奇數代表秘密信息O。實驗證明這種方法令原始圖像的分塊特性和直方圖都得到了很好的保持。
(2)馬加斌、程義民等提出了一種抗統計分析的DCT域信息隱藏方法:按z掃描順序抽取DCT域的低16個AC系數,記為F1,…,F16,對應的量化步長分別為q16,q16。設密寫數據為w.(取值為0或1),如果w.為0,則Fi的量化值Qi取N和N+I兩者中的偶數;反之,則Q取N和N+I中的奇數。對得到的反量化值Qi*qi進行偽隨機化處理。如果Fi>Qi*qi,則產生正幅值的隨機噪聲;反之,則產生負幅值的隨機噪聲。實驗證明這種方法很好地保持了公開圖像的噪聲分布與源圖像的一致性;而且進一步減少了DCT域系數值的變化,具有較好的抗IQM(Image Quality Metrics)偵測能力。
以上兩種方法,雖抵抗了一定程度的密寫分析,具有較好的隱蔽性,但嵌入的數據量有限。
3.2國外研究進展
(1)Mohammad Shirali-Shahreza提出的拼貼畫密寫,不是改變圖像特征和結構的信息密寫,而是改變圖像的外觀來隱藏信息。算法思想是,大量相關的物體同時被放置在一個背景圖案中,通過改變每個物體的位置和類型來隱藏秘密信息。每個物體的位置和類型代表一個具體的符號,通過把這些數字符號放在一起,信息被隱藏在圖像中。不足之處是算法的穩健性不夠高。
(2)恢復合成圖像的統計特性到原始載體圖像抵抗密寫分析。Outguess算法是直方圖補償LSB嵌入最早的嘗試。而Eggers等提出的使用直方圖保持數據映射(HPDM)是達到同樣目的的一種更為嚴格的方法。最近,K.S01.aoki,K.Sullivan等提出了Statical Restoration for Robust and Secure Steganography。方法是使用降低嵌入率的抖動量化索引調制,保留一些DCT系數用來修改密寫后的直方圖以恢復為原始圖像的直方圖。使用抖動,令直方圖匹配原始圖像,而不是原始圖像的量化或壓縮版本;通過量化索引調制,對非惡意的失真受限抗擊(如再壓縮、添加噪聲等)更健壯。實驗證明此方案顯著降低了基于統計特性的可檢測性和基于分塊密寫分析的可檢測性。不足之處:減少了嵌入數據量。
4結束語
到目前為止,還無法建立信息隱藏技術的完整理論;密寫的重要特性——穩健性、隱蔽性、嵌入數據量三者如何達到最優,還需密寫技術科研人員的不懈努力。
(注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。)