費(fèi)文斌,唐向宏,張 寧,王麗娜
(杭州電子科技大學(xué)通信工程學(xué)院,浙江杭州310018)
隨著計算機(jī)技術(shù)的不斷發(fā)展,與人們生活息息相關(guān)的數(shù)字產(chǎn)品已被廣泛關(guān)注,盜版問題已經(jīng)成了人們關(guān)心的焦點(diǎn)[1]。數(shù)字水印技術(shù)就是將特殊的不可見標(biāo)記嵌入到數(shù)字媒體(圖像、聲音、文檔和視頻等)中,以保護(hù)原創(chuàng)作者對其作品的所有權(quán)。目前,對于數(shù)字產(chǎn)品的保護(hù),圖像、視頻、音頻的研究已經(jīng)非常成熟,由于數(shù)字水印是利用載體本身大量的冗余信息實(shí)現(xiàn)水印的嵌入,而文本的冗余空間相對較小,所以對文本水印的研究相對較少。目前對于文本數(shù)字水印的研究主要有基于傳統(tǒng)圖像的文本水印算法[2]、基于格式的文本水印算法[3]、基于自然語言的文本水印算法[4]、以及基于文本特征的文本水印算法[5]等4類。本文將結(jié)合零水印嵌入原理,通過多音字來定位原始文本的內(nèi)容,提取兩個多音字之間的漢字以及多音字的讀音特征來構(gòu)造水印,探討一種基于多音字的零水印算法。
國家語委制定的《現(xiàn)代漢語通用字表》收錄的7 000個漢字(內(nèi)含2 500常用字、1 000次常用字)中有625個多音字,其中的326個是常用字,占多音字總數(shù)的52%[6]。本文將通過常用多音字定位原始文本的內(nèi)容,提取兩個多音字之間的漢字以及多音字的讀音特征來構(gòu)造零水印,其水印嵌入流程框圖如圖1所示。
圖1 水印嵌入流程框圖
(1)對原始文本預(yù)處理:除去文本中符號,提取出文本中所有漢字標(biāo)記T,找出T中的常用多音字D(i),i=1,2,…,k。
(2)分別記錄兩多音字D(i)與D(i+1)之間非多音漢字的個數(shù),記為p1;根據(jù)漢字拼音表,將兩多音字D(i)與D(i+1)之間的非多音漢字用漢字拼音表示,記錄這組拼音字母個數(shù),記為q1。例如:我省環(huán)保工作的先進(jìn)單位。位于多音字“省”與“作”之間的漢字?jǐn)?shù)為p1=3,相應(yīng)的拼音字母為“huanbaogong”,q1=11。多音字用灰色表示。
(3)將p1和q1分別轉(zhuǎn)化為8位二進(jìn)制碼,前后相連得到一個16位的二進(jìn)制字符串A。例如,p1=3,q1=11,轉(zhuǎn)換得到 A=[00000011 00001011]。
(4)記錄多音字D(i)的讀音數(shù),記為p2;記錄這個多音字讀音的字母總數(shù)q2。例如:多音字“會”有3個讀音,分別是huì/kuài,記讀音數(shù)p2=2,讀音的字母總數(shù)q2=7。
(5)將p2和q2分別轉(zhuǎn)化為8位二進(jìn)制碼,前后相連得到一個16位的二進(jìn)制字符串B。例如,p2=2,q2=7,轉(zhuǎn)換得到B=[00000010 00000111]。將A與B按位異或,得到字符串C。
(6)重復(fù)(2)至(5)步,直到T結(jié)束,從而形成由兩個多音字之間的漢字以及多音字的讀音特征構(gòu)成的二進(jìn)制特征序列C。
(7)將所要嵌入的原始水印信息轉(zhuǎn)化為16位二進(jìn)制Unicode碼W。
(8)水印的嵌入:將二進(jìn)制序列C和W按以下規(guī)則比較,形成水印特征Q。1)C和W相對應(yīng)的代碼都為0,則Q的對應(yīng)位也為0。2)C的代碼為0,W相對應(yīng)的代碼為1,則Q的對應(yīng)位為1。3)C的代碼為1,W相對應(yīng)的代碼為0,則Q的對應(yīng)位為2。4)C和W相對應(yīng)的代碼都為1,則Q的對應(yīng)位也為3。
水印的提取為嵌入的逆過程。按如下規(guī)則提取水印:(1)C’為0,Q的對應(yīng)位為0,則W’相對應(yīng)的位為0;(2)C’為0,Q的對應(yīng)位為1,則W’相對應(yīng)的位為1;(3)C’為1,Q的對應(yīng)位為2,則W’相對應(yīng)的位為0;(4)C’為1,Q的對應(yīng)位為3,則W’相對應(yīng)的位為1。當(dāng)不滿足以上的規(guī)則時,表明所對應(yīng)的內(nèi)容已被篡改,對篡改位置進(jìn)行定位處理。
為了驗(yàn)證本水印算法的性能,首先,在實(shí)驗(yàn)中對算法的抗文本格式轉(zhuǎn)換、文本字體調(diào)整、刪除空格、標(biāo)點(diǎn)符號轉(zhuǎn)換等常規(guī)文本操作的魯棒性進(jìn)行了仿真,仿真表明本算法對這些常規(guī)文本操作具有較強(qiáng)的魯棒性。由于在構(gòu)造水印時采用零水印,沒有向原始文本中加入任何信息,所以所嵌入的水印是完全不可見的。同時,本算法在水印容量上也有較大的提高。
為更好的說明本算法的定位能力,下面僅給出部分仿真實(shí)驗(yàn)結(jié)果。如圖2所示給出了一段含有140個字符的原始文本,其中常用多音字23個。因此,該文本的水印容量為22個漢字,能夠嵌入的水印百分比(按漢字?jǐn)?shù))=15.714 2。仿真實(shí)驗(yàn)中所嵌入的原始水印信息如圖3所示。
圖2 原始文本
圖3 原始水印信息
在水印文本中增加漢字分增加的漢字含多音字和不含多音字兩種,如圖4所示,帶單下劃線表示增加的漢字。提取的水印信息如表1所示,與原始水印不同的地方用單下劃線表示。
圖4 增加漢字后的文本
表1 提取的水印信息
從表1可以看出被增加的漢字位于第7個多音字和第8個多音字之間,當(dāng)增加含有多音字的文字時,提取的水印信息會相應(yīng)的增加,而當(dāng)增加不含多音字的文字時,提取的水印信息與原始水印信息數(shù)目保持相等,以下仿真結(jié)果類似。
在水印文本中刪除漢字也分刪除的漢字含多音字和不含多音字兩種,如圖5所示,帶波浪線標(biāo)記為刪除的漢字。提取的水印信息如表2所示。
圖5 刪除漢字后的文本
表2 提取的水印信息
替換水印文本中的漢字分為4種情況,如圖6所示,帶雙下劃線標(biāo)記為被替換后的漢字。提取的水印信息如表3所示。
表3 提取的水印信息
從以上仿真實(shí)驗(yàn)結(jié)果可以看出,本算法能有效檢測出水印文本內(nèi)容是否被刪除、增加和替換等操作,并能有效定位篡改的位置。由于仿真中,只采用了常用多音字,可以進(jìn)一步完善本算法,采用全部的多音字作標(biāo)志位,這樣能使本算法在水印容量和定位精度上進(jìn)一步得到提高。另外,在仿真實(shí)驗(yàn)中也對算法的虛檢情況進(jìn)行了仿真。采用零水印思想提出的算法盡管在不可見性和魯棒性有其獨(dú)特的優(yōu)勢,但也會產(chǎn)生虛檢的問題。非作者作品經(jīng)過零水印算法的檢測被誤判為該作者作品的概率,稱為虛檢概率。由于未對原始文本進(jìn)行改變,當(dāng)使用與原始文本內(nèi)容完全不同的文本進(jìn)行檢測時,也能得到一定數(shù)量的水印信息,會產(chǎn)生虛檢,因此對虛檢的檢測具有十分重要的實(shí)際意義。本文所指的虛檢是指用已獲取的水印信息去檢驗(yàn)其它文本是否含有水印信息。在表4中給出了利用4段不同的文本檢測的結(jié)果。虛檢率定義為R/N,其中N為文本的水印容量,R為檢測到正確的水印信息數(shù)。從表4可以看出,采用其它類似文本進(jìn)行提取水印信息時,誤檢概率都小于0.10,能夠有效防止誤判情況的發(fā)生。
表4 虛檢率
本文從漢字的一字多音出發(fā),結(jié)合零水印的思想,提出了一種基于多音字的中文文本篡改檢測水印算法。該算法采用兩個多音字之間的漢字以及多音字的讀音特征來構(gòu)造水印特征,產(chǎn)生基于文本特征的零水印算法。仿真結(jié)果表明,該算法即含有很強(qiáng)的透明性,具有較強(qiáng)魯棒性,而且本算法在提取和檢測時,沒有用到原始文本,實(shí)現(xiàn)了盲檢測。
[1] 王麗娜,張煥國.信息隱藏技術(shù)與應(yīng)用[M].武漢:武漢大學(xué)出版社,2003:25-28.
[2] 趙星陽,孫繼銀.一種可抗二值化攻擊的文本圖像可見水印算法[J].計算機(jī)應(yīng)用,19(1):165-167.
[3] Ding Huang,Hong Yan.Interword distance changes represented by sine waves for watermarking text images[J].IEEE Trans on Circuits and System for Video Technology,2001,11(12):1 237-1 245.
[4] 張 宇,劉 挺,陳毅恒.自然語言文本水?。跩].中文信息學(xué)報,2005,19(1):56-62.
[5] 趙理,崔杜武.基于漢字拼音聲調(diào)的文本水印算法[J].計算機(jī)工程,2009,35(10):142-144.
[6] 龔嘉鎮(zhèn).漢字漢語漢文化論集[M].成都:四川巴蜀書社,2002:139-140.