張亦明 崔杰
摘 要:目前應用較為廣泛的圖像篡改檢測技術一般為數字水印技術和單項散列函數。然而數字水印的安全往往建立在整個圖像數據的安全上,對水印數據的修改和編輯往往會影響結果的判斷;而散列函數潛在的碰撞威脅也影響檢測的最終結果。針對這些問題,文中提出了一種將這兩種技術優(yōu)點相結合的圖片篡改檢測方案。其中,在使用數字水印算法的同時使用了AES等對稱加密算法來加密水印。將水印隱藏在載體圖像的同時,輔以安全性更高的單向散列函數來進一步提取圖像特征。既利用了水印技術的不可見性特點,也利用了單向散列函數簡單高效的特點,同時對稱加密算法的使用進一步保證了方案的安全性。之后將給出方案的安全性分析,并測試方案的運行效率。實驗結果驗證了新方案的可行性,從效率和魯棒性角度來看,新方案的優(yōu)勢更加明顯。
關鍵詞:篡改檢測;對稱加密算法;單向散列函數;數字水印
中圖分類號:TP303 文獻標識碼:A 文章編號:2095-1302(2016)08-00-04
0 引 言
隨著計算機和網絡技術的飛速發(fā)展,圖像、音頻、視頻等傳統(tǒng)媒體產品的數字化也得以普及。這使得圖像的準確獲取、存儲、傳輸和復制變成了一個簡單的過程。然而,由此產生的問題卻日益嚴重。由于網絡的開放性和隱蔽性,圖片數字化的特點也給了不法分子可趁之機。在網絡上傳播的圖片很容易被他人非法侵權,盜版,甚至被惡意篡改,這使得圖片的版權保護面臨嚴峻考驗。為此,人們提出了針對圖片的篡改檢測技術。目前應用較為廣泛的圖像篡改檢測技術是數字水印技術和單項散列函數。兩種技術具有各自的使用范圍和優(yōu)缺點。
數字水印技術是在不影響人們視覺感官的前提下向圖像數據的冗余部分中嵌入隱蔽的信息,通過檢測和提取圖片中的水印信息來判斷圖片是否被篡改。而單向散列函數是為圖片生成一個摘要,通過比對圖片的摘要信息來判斷圖片是否被篡改。但對于數字水印技術來說,圖像數據的安全性建立在水印數據的安全性基礎上,一旦水印數據被惡意篡改,版權方往往無法借助水印得到正確的結果;對于單向散列函數來說,雖然一般只需要由相應的數據生成一個Hash值,從而可方便地檢測出數據是否被篡改,但由于MD5,SHA-1等算法本身的薄弱因素,產生的摘要發(fā)生碰撞的概率較大,這個弱點一旦被不法分子掌握并被用來篡改原始數據,那么同樣可能得不到正確的結果。這就給版權保護等帶來了極大的挑戰(zhàn)。
因此單純使用以上兩種技術都不能夠較好地判斷圖片是否被篡改。本文力圖將二者的優(yōu)點相結合,使用的數字水印技術以EMD算法為例,先利用AES算法將水印圖片加密,再將其轉化為二進制流,通過一個魔方矩陣將水印嵌入到目標圖片中。在處理水印之前使用一個安全性較高的Hash算法為載體圖像生成一個摘要,將其與用戶自設的口令異或,并以此結果作為加密密鑰。當需要檢測圖片是否被篡改時,可以通過比對提取并解密圖片中的水印加以判斷,相比僅靠單一技術得到的結果,本方案得到的結果更加準確,且能應用于版權保護。
1 預備知識
1.1 數字水印技術
數字水印(Digital Watermarking)是指嵌入數字載體中的圖像、文字、符號、數字等數字信號,是一種可作為標識的信息。數字水印可以嵌入到不同類型的載體中,這些載體可以是圖像、音頻、視頻等多媒體文件,也可以是文檔、軟件等。數字水印的一個特點便是嵌入到載體中的水印不影響原始載體的正常使用及存在價值,也不容易被人感知。鑒于這個特點,數字水印技術被廣泛運用于版權保護、數據防偽及篡改檢測等領域。
國內外諸多學者都在數字水印這一領域做出了許多研究,并且提出各種數字水印算法。比較常見的便是LSB算法。LSB算法在認證時將從圖像各像素點的最低位提取信息,并還原成水印,通過比對提取得到的水印信息來判斷圖像是否被篡改。這種方案的優(yōu)點是實現較為簡單,但其不足也很明顯,即LSB只能提取像素最低位信息。一旦攻擊者針對圖像的高位進行篡改,那么將無法判斷出圖像是否被篡改。除此之外,攻擊者也可以使用LSB算法來提取圖像中的水印信息,由此得到水印并對水印本身進行篡改來偽造對整個圖像的篡改。這樣在檢測篡改時便無法得知是水印被篡改還是原圖像被篡改,從而無法通過認證。另外,LSB還是一種不可逆的水印提取算法,一旦對圖像進行篡改檢測,在提取水印之后將無法還原原有的載體圖像,即無法還原原有的圖像信息。故具有較大的弊端。相比LSB,Zhang和Wang提出的EMD(Exploiting Modification Direction)算法具有更大的藏量以及更好的魯棒性[1],并且可以稍作修改后實現可逆的數字水印。在保證得到載體圖像無損失的前提下提取水印,從而更好地滿足圖像篡改檢測方案的要求。
1.2 單向散列函數
單向散列函數(Hash函數)指的是由一串長度不定的消息來生成固定長度數值的算法。輸出數值也稱為“散列值”或“消息摘要”,其長度通常在128~256位之間。其單向性保證了在已知一個消息散列值的基礎上,要找到另一個不同消息的散列值等于已知的散列值在計算上是不可行的。這使得單向散列函數可運用于數字簽名及完整性校驗等領域中。
一個較安全的單項散列函數f要滿足以下三個條件:
(1)已知任意一個摘要值y,要尋找一個消息x,使得f(x)=y,在計算上是不可行的。
(2)給定一個消息x1,且x1屬于信息域A,即x1∈A。要找到x2∈B,使得f(x1)=f(x2),在計算上是不可能的。這也叫弱抗碰撞性條件。
(3)尋找x1,x2,使得f(x1)=f(x2),在計算上也是不可行的。這也叫強抗碰撞性條件。
由于單向散列函數是將一個無窮域上的消息映射到一個有窮域中產生一個固定長度的摘要,因而對于同一摘要必然存在無窮多不同的消息,因此碰撞必然存在。而一般的單項散列函數都可以滿足前兩個條件。但針對已知Hash函數的破解基本上是對于第三個條件來進行的。
目前較為常用的Hash函數便是MD5函數以及SHA-1函數。通過文獻[2]和文獻[3]可看出,MD5算法以其較為簡單、迭代次數較少的特點具有較為廣泛的應用前景,經常運用到消息完整性驗證等場景中。然而由于這些單項散列函數本身具有的缺陷,攻擊者可以在保證散列值不變的前提下,利用生日攻擊來大大提高發(fā)生碰撞的概率,從而篡改相應的原始消息。在實際運用中往往會在兩個文件后填充這些特定的數據從而使得修改后的文件具有相同的MD5。文獻[4]和文獻[5]指出了MD系Hash算法的迭代式結構的不足。攻擊者可以通過 “生日”攻擊方式實驗不同的隨機數值直至找到碰撞。然后在已有一對碰撞消息的前提下,在其后接上任意消息串,所得的摘要值仍不變。同時,根據對MD5-Hash的研究,文章也指出,攻擊者可以在MD5算法的前幾步中對原有消息做相應的修改,通過構造2-block碰撞差分鏈來提高發(fā)現碰撞的效率,從而能在較短時間內找出一個與原有消息摘要值相同,僅需由原有消息做出相應修改的消息。類似MD5的單向散列函數具有的這種弱點,往往會給攻擊者可乘之機。對于使用了Hash算法的篡改檢測方案而言,一旦攻擊者對原始圖像做出相應的修改,那么相應的方案便無法檢測出正確的測試結果。
1.3 對稱加密算法
對稱加密算法也稱為對稱密鑰,單密鑰算法,它使用一串數據作為密鑰,這串密鑰同時能用于數據加密和解密。它將一段明文加密為密文,從而使未授權用戶無法得到明文中的信息。對稱加密算法經過不斷地演變和漫長的發(fā)展,已成為現今密碼學的核心內容。
如今常用的對稱加密算法便是高級加密標準(Advanced Encryption Standard,AES)算法,相比其前輩數據加密標準算法(Data Encryption Standard,DES)而言,AES在GF(2n)上的運算及其本身具有的很強的擴散和混淆功能保證了算法的安全性。作為一種由Rijndael密碼體系發(fā)展而來的算法,AES算法具有安全、快速的優(yōu)點,能夠較好地抵御差分攻擊。
AES算法主要有字節(jié)替換(SubByte)、行移位(ShiftRow)、列混淆(MixColumn)和輪密鑰加(AddRoundKey)四個步驟。字節(jié)替換過程中引入S-盒保證明文的非線性變換,能夠使明文抵御代數攻擊;行移位和列混淆保證了整個系統(tǒng)的擴散程度,使得到的密文的每一位都受到明文中許多位的影響;而輪密鑰加進一步增加了密文的混亂程度,使得系統(tǒng)的安全性得以保證。
作為現今主流的一種加密算法,AES的運算效率很高,并且被廣泛運用于各種設備當中。根據文獻[6,7]的論證結果,對于128 b的AES算法來說,僅對明文做出1 b的修改,加密得到的密文發(fā)生變化的比特數就已經趨近于64 b。這表明AES算法具有很好的雪崩效應特性。所以將AES算法運用到篡改檢測的方案中,可以更有效地防止信息被篡改,提高方案的安全性。
1.4 圖像篡改檢測技術
隨著信息媒體的數字化不斷普及,針對圖片、視頻、軟件等數據的惡意篡改問題也日益嚴重,使版權保護面臨著越來越嚴峻的挑戰(zhàn)。針對這一問題,研究人員提出了各種不同的篡改檢測算法。其中,數字水印以其簡單、快捷的優(yōu)點得以流行。文獻[8-10]驗證了使用數字水印算法來進行篡改驗證的可能性。文章給出了各種不同的基于數字水印的檢測方案,在特定的環(huán)境下具有較好的檢測性能。然而不可忽視的是,數字水印技術也有其不足。由于數據的安全性建立在水印的安全性基礎上,而水印本身的脆弱性使得攻擊者能夠輕易將水印提取并篡改。因此現有的使用數字水印的篡改檢測方案無法很好地判斷篡改結果,這也意味著這一技術還有很大的發(fā)展空間。
2 預處理
2.1 Hash函數構造
方案共分為圖片預處理部分及篡改檢測部分。預處理部分的流程框圖如圖1所示。
已知有一張載體圖片P和一張水印圖片W。在方案的預處理部分,將使用Hash算法為載體圖片P生成一個摘要值H。此處使用一種混沌Hash算法來構造摘要值。根據文獻[11],混沌具有初值敏感性、偽隨機性和遍歷性。這些特點決定了混沌系統(tǒng)可以適用于Hash函數的構造。由于混沌系統(tǒng)本身的復雜性,在已知當前狀態(tài)值的情況下,計算前一狀態(tài)值十分困難,因而這種Hash函數相比傳統(tǒng)的MD5、SHA-1等算法具有較好的安全性。這種基于時空混沌系統(tǒng)的Hash函數使得明文信息通過系統(tǒng)的關鍵參數來間接作用于混沌系統(tǒng),因而與混沌系統(tǒng)的狀態(tài)更加難以預測?;诖耍痉桨笇⑹褂眠@種基于時空混沌系統(tǒng)的Hash函數。具體的過程描述為:
(1)設置16個8 b初始變量,并將其轉化為16進制,產生一列初始變量IV[1…16]=[01,23,45,67,89,AB,CD,EF,FE,DC,BA,98,76,54,32,10]。按照公式(1)將其變換為區(qū)間[0,1]上的數,得到序列x0。
(4)將最終得到的x2N變?yōu)槎M制形式,并從x2N (i), i=1,2…,16中各取8比特(即小數點后8到16位的數),合并在一起構成128位的摘要值H。這個摘要值H將用于對原圖像本身進行篡改檢測,同時,它也將作為AES加密算法的密鑰,對水印進行加密。
2.2 AES加密
在這一過程中,方案將對水印圖片W進行加密,并將上一步得到的原圖像摘要值H和用戶自行設定的口令C做異或操作,得到AES算法的密鑰K,使用AES算法對W加密。經過這一過程最終將得到已被加密的水印W'。W'將作為下一步數字水印算法所要嵌入的內容。
2.3 水印嵌入
將原圖像P作為載體圖像,同時將已經加密的水印W'作為水印算法要隱藏的信息。此時將圖片P復制為2張。使用水印算法將已加密的水印W'分別隱藏到兩張圖片中,最終得到結果圖片P1和P2。本方案基于文獻[1]對其算法進行改進,使EMD算法滿足可逆水印算法的要求,從而在檢測時能夠無損地提取原圖信息。此處規(guī)定P1對外公開,作為待測圖片;P2作為模板圖片,只用于篡改檢測。
水印嵌入的具體步驟為:
(1)將已加密的水印W'轉化為一個二進制串B。
(2)將載體圖像P復制一份,分別為P00和P01。并將圖片P,P00和P01的像素值排成一列,得到像素數組D[1,2...n],D0[1,2...n],D1[1,2...n]。n為圖像P的像素個數。
(3)預先設置一個如圖2所示的魔術矩陣,也可對該魔術矩陣做相應的更改。
(4)對二進制串B進行分段處理,再將其轉化為一個五進制串F[1,2..k],k為該五進制串的長度。
(5)此時隱藏水印,共需進行k次操作。在第i步(i∈[1,k])時,取D(i)的R通道和G通道的值,記為r(i)和g(i),將其作為魔術矩陣的坐標,找到對應的權值w。針對w的值做相應操作。
(6)若w=0或w=255,則不對D0(i)或D1(i+1)做任何修改;除此之外,則以w為中心,向上或下,左或右,找到權值等于F(i)的坐標。若此時i(mod2)=1,則將D0[i]的R通道與G通道的值修改為r(i)和g(i);若i(mod2)=0,則將D1[i+1]的R通道與G通道的值修改為r(i)和g(i)。重復執(zhí)行步驟(5)直至i=k。此時整個水印嵌入工作完成。
3 圖片篡改檢測方案
該檢測方案的具體步驟為:
(1)已知待測圖片P1和模板圖片P2,將其排列為像素數組D00和D01。由D00序號為奇數的像素和D01序號為偶數的像素經EMD水印算法還原成疑似加密水印W1;由D01序號為奇數的像素和D00序號為偶數的像素來還原成疑似載體圖片P'。
(2)使用與圖片預處理時相同的Hash算法來對P'進行處理,得到其摘要值H'。
(3)將H'與用戶口令C做異或操作,所得結果將作為AES算法的密鑰K'。
(4)使用K'來解密W1得到結果為W2,根據W2的情況來判斷圖片是否被篡改。若W2正常顯示,則待測圖片P1未被篡改;若W2不能正常顯示,則待測圖片P1已被篡改。
4 實驗結果
4.1 不可見性分析
實驗將使用Visual Studio 2013對方案進行仿真。使用了30張大小為520×800的載體圖片以及大小為128×128的水印圖片。經圖片預處理后原圖片與最終獲得的待測圖片的部分對比如圖4所示。
4.2 效率分析
實驗將基于Visual Studio 2013來對整個方案進行仿真。測試了方案的圖片預處理部分以及圖片篡改檢測部分所要運行的時間。結果發(fā)現,在主頻為2.6 GHz的機器中運行時,選擇了30張大小為520×800的載體圖片和大小為128×128的水印圖片,在圖片預處理部分運行了水印加密、特征值提取以及水印嵌入這幾個步驟,其平均共耗時為18 s,而在圖片篡改檢測部分對未篡改圖片進行檢測,平均耗時21 s即可獲得正常的水印圖像及原圖像。綜上所述,本方案的運行時間在可接受的范圍內。
4.3 安全性分析
由于整個方案使用了安全性較高的單向散列函數——基于時空混沌的Hash函數,所以攻擊者無法通過對原圖片做特定的篡改來使其摘要值保持不變;將待測圖片與模板圖片分開,僅公開待測圖片和模板圖片,使用模板圖片來代替原有Hash值的地位,由于用戶口令不公開,即使攻擊者同時獲取待測圖片和模板圖片也無法提取并置換圖片中的水印,保證了水印的安全性;另一方面,對水印使用AES算法,并用原圖片的摘要值和用戶水印異或后得到的結果來對其加密。由于AES算法本身具有雪崩效應,可進一步保證方案能夠檢測到攻擊者對待測圖片的篡改。
5 結 語
相比現有常用的幾種圖像篡改檢測方案,本方案將現有較為常用的幾種圖像篡改檢測方案的優(yōu)點相結合。相比使用單一的檢測方案,該方案將會更加可靠。除此之外,本方案的實現過程較為簡單,且運行效率較高,耗費較短的時間就可完成檢測。在數字水印技術中引入對稱加密算法,保障了水印的安全性,防止其被惡意篡改。同時,相比僅僅使用MD5,SHA-1等常用的單向散列函數檢測方案,本方案選用安全性更高的Hash算法,進一步減小了發(fā)生碰撞的概率,同時較為有效地檢測出攻擊者對圖像的惡意篡改。相比傳統(tǒng)的方案,本方案具有簡單、高效的特點,更適合用于快速的篡改檢測場景中。如果將方案使用的魔術矩陣、模板圖片和用戶口令由版權方保管,那么本方案同樣也可以運用到相應的版權保護場景中。當采用安全性更高的對稱加密算法和魯棒性更佳的可逆水印算法來取代本方案所使用的算法時,整個方案的安全性將進一步得到保證。
參考文獻
[1] Zhang Xinpeng, Wang Shuozhong. Efficient Steganographic Embedding by Exploiting Modification Direction[J]. IEEE Communications Letters, 2006, 10(11): 781-783
[2]魏曉玲.MD5加密算法的研究及應用[J].信息技術,2010(7):145-147.
[3]張裔智,趙毅,湯小斌.MD5算法研究[J].計算機科學.2008,35(7):295-297.
[4]梁杰. MD5-Hash函數的安全性分析[D].上海:上海交通大學,2007.
[5]張紹蘭.幾類密碼Hash函數的設計和安全性分析[D].北京:北京郵電大學,2011.
[6]何明星,林昊.AES算法原理及其實現[J].計算機應用研究,2002 (12):61-63.
[7]鄧元慶, 謝濤, 石會,等. AES算法的密鑰雪崩效應特性研究[C].中國電子教育學會高教分會,2011.
[8]鄭二功.基于圖像內容的隱寫分析與篡改檢測[D].鄭州:解放軍信息工程大學,2011.
[9]楊群亭.基于數字水印的圖像篡改檢測與版權保護技術研究[D].天津:南開大學,2012.
[10]蔣銘.多媒體數字版權保護水印算法研究及應用[D].北京:北京郵電大學,2012.
[11]王永.混沌加密算法和Hash函數構造研究[D].重慶:重慶大學,2007.
[12]趙翔,郝林.數字水印綜述[J].計算機工程與設計,2006,27(11):1946-1950.