張騰 張曌 周霆



摘 要:數字水印目前已經大規模地應用到信息安全、多媒體產品版權保護等各個領域。文章主要研究混沌密鑰在數字水印中的應用算法,使水印可以抵御各種常見攻擊,提升數字水印各方面的性能,并依托Matlab平臺進行實驗,得出實驗結果,具體分析算法性能。
關鍵詞:數字水印;混沌密鑰;離散余弦變換
隨著多媒體技術和互聯網的蓬勃發展,電子圖像和多媒體產品憑借易建易傳的特性,在互聯網上可以被高速廣泛傳播。但由于傳播過程很難受到嚴格把控,產生了一些非法途徑,電子圖像及其他多媒體產品會受到非法使用和惡意篡改。數字水印技術可以很好地解決此類問題。數字水印技術是一種在不影響原載體的質量的情況下,將特定的量化后的信息嵌入到載體中的信息隱藏技術。不同種類水印的特征截然不同,甚至完全相反。
1 混沌的定義及特征
混沌是決定性動力學系統中出現的一種貌似隨機的運動,最主要的特征是對初始條件的依賴性[1]。若混沌序列的初始條件發生了一個較小的變化,整個序列后續的值則會非常敏感地感應到這種變化,并且對后續的序列值產生巨大的影響。
目前混沌系統在數字水印中的應用,主要體現在以下3個方面:(1)直接利用混沌序列作為水印嵌入到載體中[2]。(2)利用混沌序列對水印圖像進行置換、加密等多種預處理[3]。(3)也可以將混沌序列和水印在嵌入的過程中結合。而混沌序列本身沒有特殊意義,因此混沌系統在水印技術中的應用主要多集中在后面兩個方面。可以利用混沌序列來控制選擇水印嵌入的位置,并用數據表來解決地址沖突的問題[4]。
2 算法的設計
2.1 數字水印圖像的預處理
2.1.1 數字水印的置亂
在本文中水印圖像的置亂采用Arnold變換。當對圖像進行此種置亂變換時,本質上就是把圖像所有的位點重新排列,規則如式(1)所示:
其中(x,y)是像素點原來的坐標,(x',y')是像素點移動之后的坐標。
本文采用的水印圖像是一副JPG格式的圖像,該圖像上的圖案是“FZU”3個大寫字母,如圖1所示。圖像經過Arnold變換后的變化非常明顯,如圖2所示。可以看出,經過多次變換后的圖像已經完全看不出“FZU”的形狀了,成功地達到了置亂的目的。
由數學歸納法可以證明,當作n次變換時,Arnold反變換式為:
利用反變換式,可以比較簡便地復原圖像,目前這也是比較主流的復原置亂圖像的方法。
2.1.2 基于LOGISTIC映射的數字水印加密
水印圖像置亂后,為了進一步提高水印信息的保密性,還需要對置亂后的水印圖像進行混沌加密。LOGISTIC映射又稱蟲口模型,是20世紀70年代年數學生態學家May[5]最先提出的。LOGISTIC映射描述如式(3)所示:
但是,LODISTIC映射并不是在任何時候都處在混沌狀態。經過混沌動力系統的研究工作和多次實驗驗證,當3.569 945 6…< u≤4時,LOGISTIC映射工作于混沌態。在本文研究過程中,取u=4。
利用密鑰key1生成混沌序列,序列的長度根據水印圖像的大小決定。在對混沌序列進行判決時,需要確定一個閾值,大于閾值的像素判決為1,小于閾值的像素判決為0。在本文中,key1取0.6,水印圖像的大小為64×64,即混沌序列的長度為64×64,判決閾值取0.7。當判決完成后,混沌序列就轉化為二值序列了,之后和置亂后的二值水印圖像進行異或操作即可完成對水印圖像的加密。
實驗證明加密后的圖像完全隱藏了原有圖像的信息,加密效果良好。由于混沌序列對初始條件的敏感性,只有知道密鑰key1才可以復原原有的圖像。
2.2 數字水印圖像的嵌入
2.2.1 基于LOGISTIC序列的二值水印圖像的編碼
經過預處理的水印圖像,已經成為完全隱藏原有信息的二值圖像,即所有像素點的值都是0或1。若直接將預處理的水印信息嵌入到載體中,在傳輸過程中如果發生數據的丟失或篡改時,則會直接影響提取的水印的質量。為了提高水印的魯棒性,減少傳輸過程對提取水印過程的影響,可將二值圖像進行編碼后再嵌入。
本文利用混沌密鑰和LOGISTIC映射生成兩個8位的混沌序列,分別對應二值圖像的1和0。這樣每個像素點的信息由一位數據映射為了8位數據。因為混沌序列域是(0, 1),所以兩個序列的值相差比較小(必然小于1),這將會大大影響水印的檢測過程,因此我們需要放大兩個序列的差別,具體做法如下:
(4)
其中:x(n)是原來的序列值,x(n)是處理過的序列值。經過處理后的兩個序列的差異被放大a倍,這樣在水印檢測時,不易被計算過程產生的誤差影響。a要盡量小,否則嵌入到載體中極有可能影響載體圖形的質量。在本文中,a的值取2,實驗結果表明,a=2時提取水印的效果即可達到比較好的效果。
在本文中兩個序列的混沌密鑰,分別為0.4和0.45。雖然只相差0.05,但是兩個序列后續的值相差比較大,使得圖像的編碼具有區分度,利于提高水印的魯棒性。
2.2.2 基于DCT變換的水印嵌入
本文主要針對JPG格式的彩色圖像進行水印處理,而基于離散余弦變換(Discrete Cosine Transform,DCT)的水印算法,較其他的算法相比,可以很好地兼容JPG圖像[6]。由于彩色圖像轉換為YUV模式依然有3個維度,因此本文的算法選用YUV模式進行水印信息的嵌入。
首先將水印信息嵌入到U層,將載體圖像的U層單獨提取出來,分為8×8的圖像塊進行DCT變換。之后將水印圖像加密并編碼的序列利用加性準則嵌入載體圖像的U層DCT矩陣中的特定位置。本文嵌入的位置是每個8×8DCT系數矩陣的反對角線位置[7]。
嵌入之后再對圖像進行反DCT變換就得到了嵌入水印后的圖像U層了。反變換之后的U圖層再與原載體圖像其余的兩層(Y、V)疊加即可生成彩色圖像。值得注意的是,在顯示嵌入水印的圖像之前,要先將圖像由YUV模式轉換為RGB模式。
3 實驗結果
一項符合要求的數字水印算法,應該至少滿足以下3種特征,即可以做到在盡量在不降低載體圖像質量的情況下,安全而又準確地提取到水印圖像。因此,一個成功的水印必須滿足隱蔽性、魯棒性、安全性的特點。以下是利用matlab為實驗平臺的攻擊實驗及水印的魯棒性。
3.1 加入高斯噪聲(Gaussian noise)
對圖像加入不同方差(V)的高斯噪聲,觀察攻擊后的結果,并在攻擊后的圖像中檢測水印,觀察檢測出的FZU圖像的清晰度。在嵌入強度為30的情況下,加入方差不同的高斯噪聲后分別得到的攻擊圖像及檢測出的水印圖像。在圖像加入高斯噪聲的方差越大,圖像受損越嚴重,當加入方差為0.03的高斯噪聲時,圖像幾乎看不出原來的樣子,而檢測出的水印圖像還可以辨別出‘FZU的標識,因此可以斷定,該數字水印算法可以成功抵御一般高斯噪聲的攻擊。
3.2 加入椒鹽噪聲(Salt-and-pepper noise)
將不同噪聲密度(M)的椒鹽噪聲加入圖像中,觀察水印檢測結果。實驗結果表明,在圖像受到較強椒鹽噪聲干擾時(M=0.05),也依然可以識別出水印圖像所傳遞的信息。因此該水印算法可以抵御一般椒鹽噪聲的攻擊。
3.3 對圖像進行高斯低通濾波(Gaussian low-pass filtering)
對圖像進行高斯低通濾波也是一種常見的攻擊方式。本文低通濾波參數采用默認值,即模板大小為[3 3],標準差為0.5。實驗結果表明提取出來的水印圖像非常清晰,該算法可以抵抗GLPF攻擊。
3.4 對圖像進行剪切
剪切攻擊(Cutting attack)屬于一種針對圖像的幾何攻擊。本文通過剪切圖像的不同比例(Q),來確定水印算法是否可以防御剪切攻擊。在本文設計的試驗中,Q最大可達到50%。
由實驗可知,剪切部分越大,檢測到的FZU圖像的清晰度越差。當前剪切比例分別為1/4和1/8時,可以清楚地辨別出圖案;當剪切比例為1/2時,提取出的水印圖案較模糊。但在實際應用中,剪切比例不會過大,因此,該水印算法可以抵御常見剪切攻擊。
3.5 對圖像進行壓縮
使用不同的壓縮系數(X)對圖像進行壓縮攻擊(Compression attack),根據壓縮后的圖像進行水印的檢測。當系數較小時,檢測到的FZU圖像可以清楚地識別出字母形狀,當系數比較大時,檢測到的FZU圖像比較模糊,信息丟失嚴重,由此可以得知,該數字水印算法可以抵御低強度的壓縮攻擊,但當遭遇高強度的壓縮攻擊時,水印的魯棒性較差。
4 結語
數字水印是信息隱藏技術的一種重要形式,本文主要將基于DCT的數字水印技術和混沌密鑰相結合。以Matlab為實驗平臺,使用混沌序列加密水印圖案,并使混沌序列參與水印信息的編碼過程,并將實驗模型轉化為具體的算法。實驗結果證明該方法有效地提高了水印的魯棒性和安全性,并降低了傳輸成本。
[參考文獻]
[1]張志明,王磊.基于混沌加密的DCT域圖像水印算法[J].計算機工程,2003(17):9-10.
[2]ZHANG L,LIAO X,WANG X.An image encryption approach based on chaotic maps[J].Chaos Solitons & Fractals,2005(3):759-765.
[3]吳先用.混沌同步與混沌數字水印研究[D].武漢:華中科技大學,2007.
[4]WANG Y,WONG K W,LIAO X.A chaos-based image encryption algorithm with variable control parameters[J].Chaos Solitons & Fractals,2009(4):1773-1783.
[5]李娟,馮勇,楊旭強.壓縮圖像的三維混沌加密算法[J].光學學報,2010(2):399-404.
[6]黃志洪.基于DCT的數字圖像水印技術的研究[D].廣州:華南理工大學,2011.
[7]朱海峰.DCT圖像數字水印技術[J].科技風,2012(6):35.