李瑞民
(上海風(fēng)格信息技術(shù)股份有限公司,上海 201804)
數(shù)字水印擦除技術(shù)的研究
李瑞民
(上海風(fēng)格信息技術(shù)股份有限公司,上海 201804)
數(shù)字水印的嵌入和識(shí)別技術(shù)已有大量研究,然而數(shù)字水印的擦除算法卻鮮有研究。數(shù)字水印的擦除技術(shù)是利用一定的算法和技術(shù),對(duì)含有或未含水印的文件進(jìn)行水印發(fā)現(xiàn)、水印清除和水印破壞的操作。從上述角度提出了逆向工程法、協(xié)議規(guī)范編碼法、異構(gòu)協(xié)議互斥法、轉(zhuǎn)碼互換法、二次水印法等五種方法和數(shù)據(jù)模型,并對(duì)每種方法的魯棒性進(jìn)行了分析。
數(shù)字水?。凰〔脸?;水印發(fā)現(xiàn);水印清除;水印破壞
數(shù)字信息的制作者為了保護(hù)自己的版權(quán),會(huì)在不影響原有載體使用價(jià)值的前提下,將一些標(biāo)識(shí)信息通過(guò)一定的技術(shù)嵌入數(shù)字載體當(dāng)中[1],所嵌入的標(biāo)識(shí)被稱為數(shù)字水印(Digital Water-print)。目前與數(shù)字水印相關(guān)的技術(shù)主要有:數(shù)字水印的“嵌入”(Embed)技術(shù)和“識(shí)別”(Read)技術(shù),其中的嵌入主要是通過(guò)算法將特定的數(shù)字信息加入到某一類載體中,這類算法絕大多數(shù)都是基于算法保密的;而識(shí)別則是通過(guò)算法識(shí)別某一載體中是否含有該水印或直接讀出水印的內(nèi)容,其算法有些是保密的(便于自己識(shí)別),有些則是公開(kāi)的(便于第三方進(jìn)行識(shí)別)。結(jié)合二者,可以判斷一個(gè)載體是否合法,或判斷載體是否被篡改。
然而在一些特殊情況下,除了能判斷一個(gè)文件中是否有水印之外,還需要一定的技術(shù)將其中的水印擦除掉。如水印版權(quán)已過(guò)期,但嵌有水印的文件仍然存在,而此時(shí)水印的設(shè)計(jì)單位已不再提供技術(shù)支持以及對(duì)數(shù)字水印擦除技術(shù)純粹的科學(xué)研究;再如水印的魯棒性測(cè)試。這就催生出另一個(gè)分支,即數(shù)字水印的擦除技術(shù),目前還沒(méi)有這方面的專項(xiàng)研究。
所謂水印“擦除”(Erase)就是采用通用的數(shù)據(jù)水印常識(shí)修改載體,使原有的水印識(shí)別技術(shù)無(wú)法確認(rèn)文件是否含有該水印。由概念進(jìn)行分析,所修改的載體可以確定含有某水印,也可以不含某水??;水印識(shí)別技術(shù)從擦除后的載體中,可以是識(shí)別不出水印,也可以是識(shí)別為非預(yù)定的信息,如亂碼或無(wú)關(guān)的信息。
通常情況下,數(shù)字水印的截體可以是文件格式區(qū)域(如圖片文件的文件頭)、文件內(nèi)容區(qū)域(如圖片本身)、通信中數(shù)據(jù)包(如TCP/IP數(shù)據(jù)包的包頭和內(nèi)容中)、音視頻數(shù)據(jù)流(如音視頻壓縮數(shù)據(jù)區(qū))等各種場(chǎng)合。考慮到將數(shù)字水印的載體視為文件時(shí),既不影響對(duì)技術(shù)的理解,也方便說(shuō)明和驗(yàn)證,所以后文在說(shuō)明數(shù)字水印的擦除技術(shù)時(shí),都以文件中嵌入水印進(jìn)行闡述。
數(shù)字水印嵌入的原理很簡(jiǎn)單,其所有的算法都無(wú)一例外的要找一個(gè)協(xié)議、一個(gè)算法、一種文件數(shù)據(jù)格式(以下統(tǒng)稱為“協(xié)議”)中存在不敏感性的地方,在允許的偏差閾值內(nèi)進(jìn)行重新編碼,而編碼的從而將水印信息嵌入其中;數(shù)字的水印識(shí)別技術(shù)則是利用既定的算法,對(duì)這些不敏感的地方進(jìn)行檢測(cè),以驗(yàn)證其中是否嵌入水印,或讀出水印內(nèi)容。
根據(jù)數(shù)據(jù)格式不敏感的位置,可以將數(shù)字水印技術(shù)分為其于格式的水印和基于內(nèi)容的水印兩大類。例如,很多格式文件由文件頭和數(shù)據(jù)區(qū)組成,或者所有TCP/IP通信的數(shù)據(jù)包由包頭和數(shù)據(jù)區(qū)組成,前者是將水印嵌入到文件頭或包頭中,后者是將數(shù)據(jù)嵌入到數(shù)據(jù)區(qū)中。二者的本質(zhì)相同,但在具體應(yīng)用中,則差異巨大。
基于格式的水印主要是利用格式中協(xié)議的寬泛性和二義性,在嵌入時(shí)將要隱藏的消息作為參數(shù)進(jìn)行格式的生成,最終實(shí)現(xiàn)水印的嵌入。例如有些基于腳本和明文的源碼,協(xié)議本身的規(guī)定具有寬泛性。例如在HTML語(yǔ)法中,規(guī)定HTML標(biāo)簽關(guān)鍵字不區(qū)分大小寫,這時(shí)可以通過(guò)將標(biāo)簽關(guān)鍵字的中,每一個(gè)字母的大小寫按一定的編碼規(guī)則進(jìn)行調(diào)整,這個(gè)編碼規(guī)則正是要嵌入的水印信息。
基于內(nèi)容的水印,常常應(yīng)用在諸如圖像、音視頻領(lǐng)域[2]等數(shù)據(jù)允許“失真”的環(huán)境中,如計(jì)算機(jī)中的像素顏色采用RGB模式表示,3個(gè)表示顏色的值如果有少量變化,人的視覺(jué)很難覺(jué)察得到,為此可以先將每個(gè)值都調(diào)整無(wú)法區(qū)分的下限,然后根據(jù)水印內(nèi)容作向上浮動(dòng),以不到上限為浮動(dòng)的范圍,則整幅圖會(huì)在無(wú)法覺(jué)察的情況下,悄悄地嵌入水印信息。
對(duì)于嵌入水印的文件,假設(shè)所使用的嵌入算法為函數(shù)f,另一個(gè)同類型的嵌入算法為函數(shù)g,未嵌入水印前的內(nèi)容為x,嵌入的水印內(nèi)容為y,水印本身為w,并約定w=0表示使用協(xié)議的默認(rèn)值,則水印嵌入和識(shí)別的數(shù)學(xué)模型為
y=f(x,w)或y=g(x,w)
(1)
式中:y和g為已知;x為未知;f和w則視具體消除算法而定。
要實(shí)現(xiàn)水印的擦除,通常根據(jù)要達(dá)到的目的可以分為水印清除技術(shù)和水印破壞技術(shù)。
水印清除技術(shù)是通過(guò)協(xié)議發(fā)現(xiàn)存在水印,然后清除掉水印,使水印的文件恢復(fù)到無(wú)水印的狀態(tài)。這可以分為逆向工程法和協(xié)議規(guī)范編碼法2種技術(shù)??梢?jiàn),要實(shí)現(xiàn)水印的清除,無(wú)疑要對(duì)水印的算法和原理進(jìn)行詳細(xì)了解。
水印破壞技術(shù)則是在不確定對(duì)方是否使用水印,或不知道對(duì)方采用的哪種水印技術(shù)的情況下,在不影響原有文件使用的前提下,直接加入干擾因素,從而導(dǎo)致對(duì)方的水印識(shí)別技術(shù)失效,從而達(dá)到破壞的作用。相比于水印的清除技術(shù),水印的破壞技術(shù)更多,常用的水印破壞技術(shù)有異構(gòu)協(xié)議互斥法、轉(zhuǎn)碼互換和二次水印法等3種技術(shù)。
2.1 逆向工程法
清除水印最有效的方法是逆向工程法。顧名思義,就是采用與正向工程相反的流程,或相反的思維方式,分析或檢測(cè)出水印嵌入算法的原理、步驟,然后按照與嵌入相反的步驟將數(shù)據(jù)恢復(fù)為嵌入前的狀態(tài)。通過(guò)逆向,可以獲得水印內(nèi)容w和函數(shù)f的反函數(shù)f-1,則逆向工程的數(shù)據(jù)模型為
y′=f(f-1(y,w),0)
(2)
例如,在ICMP協(xié)議中,詳細(xì)規(guī)定了該協(xié)議所支持的所有網(wǎng)絡(luò)狀態(tài)信息數(shù)據(jù)包的包頭,但作為TCP/IP應(yīng)用時(shí),卻對(duì)其中數(shù)據(jù)包的內(nèi)容部分不作要求。為此,在實(shí)現(xiàn)ping程序的時(shí)候,Windows操作系統(tǒng)填寫的內(nèi)容固定為32個(gè)字節(jié)的字符串“abcdefghijklmnopqrstuvwabcdefghi”;而基于UNIX的多數(shù)操作系統(tǒng),如Linux及其變種、蘋果(Mactonish),以及近幾年風(fēng)靡全國(guó)手機(jī)市場(chǎng)的安卓(Android)操作系統(tǒng)則都固定為0x08~0x37這48個(gè)字節(jié)。既然沒(méi)有規(guī)定,用戶如果將其改為水印信息也無(wú)可厚非。當(dāng)然,對(duì)于這種水印的清除,只要根據(jù)協(xié)議恢復(fù)為系統(tǒng)默認(rèn)值即可。
逆向工程法針對(duì)性強(qiáng),非常有效,但是費(fèi)時(shí)費(fèi)力,可操作性差。在實(shí)際應(yīng)用中,水印嵌入算法很難獲得,甚至連加水印的可執(zhí)行程序都難獲得到,有的只是加了水印后的文件,所以只是在理論上可行。
2.2 協(xié)議規(guī)范編碼法
既然水印算法多是基于協(xié)議的寬泛性而設(shè)計(jì)的,那么利用一個(gè)嚴(yán)格的編碼器重新對(duì)文件重新編碼,則可以在不知哪里有水印有前提下,對(duì)格式進(jìn)行整體“規(guī)范化”,其效果間接地將水印進(jìn)行了清除。協(xié)議規(guī)范編碼法中,水印內(nèi)容w無(wú)從得知,但嵌入函數(shù)f是知道的,故其數(shù)據(jù)模型為
y′=f(y,0)
(3)
如JPG圖片格式分為JPG文件頭和圖像數(shù)據(jù)區(qū),在JPG的文件頭中,有2個(gè)字段明確指定圖像的寬度和高度,結(jié)合每個(gè)像素所點(diǎn)的字節(jié)數(shù)就可以算出圖像數(shù)據(jù)區(qū)的總長(zhǎng)度。幾乎所有的JPG圖片顯示程序都不對(duì)圖像數(shù)據(jù)區(qū)之后是否有數(shù)據(jù),以及數(shù)據(jù)的格式和意義進(jìn)行檢查,這就給數(shù)字水印的嵌入帶來(lái)了可能。如果人為地在圖像數(shù)據(jù)區(qū)的后面再附加一些信息,則這些信息可以安全地嵌入到JPG文件中,如命令行“copy/b a.jpg+b.txt c.jpg”即可將b.txt文件的內(nèi)容(就是要嵌入的水印信息)附加在a.jpg文件圖像數(shù)據(jù)區(qū)之后,并且生成新的c.jpg文件。要清除這樣的水印,只要在JPG圖像編碼器(如Windows自帶的“畫圖”程序)打開(kāi)c.jpg文件,然后通過(guò)“另存為”的方式保存為d.jpg文件,則重新編碼的d.jpg文件就消除掉了所附加的水印信息b.txt。
規(guī)范編碼本身并不需要準(zhǔn)確地知道水印的嵌入算法,只要通過(guò)重新編碼(如上文的“另存為”操作)則可以方便地清除水印,由于方式只依賴于編碼器,具有一定的通用性,因而具有實(shí)戰(zhàn)效果。
2.3 異構(gòu)協(xié)議互斥法
即使是相似的應(yīng)用,由于不同的算法對(duì)同一方面的關(guān)注程度不同,會(huì)出現(xiàn)一方認(rèn)為是重要機(jī)制,而另一方則完全忽視。利用這一異構(gòu)算法的差異,可以通過(guò)簡(jiǎn)單的方法破壞已有的數(shù)字水印。如同為文字編輯軟件,WORD和“記事本”功能迥異,前者關(guān)注的是“所見(jiàn)即所得”的格式效果,后者則只關(guān)注文字內(nèi)容,毫無(wú)格式可言,利用這一差異,可以做到對(duì)格式類水印的破壞。異構(gòu)協(xié)議互斥法完全是利用了兩套方法之間的互斥關(guān)系進(jìn)行破壞,假設(shè)另有一個(gè)水印w′(后同),其數(shù)據(jù)模型為
y′=g-1(y,w′)
(4)
如某基于WORD的水印嵌入算法(此算法對(duì)PDF文件同樣適用),其原理是利用人們對(duì)漢字間只有1個(gè)像素的漢字不敏感,因而將一些作為水印的漢字或標(biāo)點(diǎn)設(shè)置為1個(gè)像素,并夾雜在原文之中??梢愿鶕?jù)數(shù)字水印的編碼規(guī)則將WORD文件中的漢字行間距或字間距做出微調(diào),然后將水印信息隱藏于微調(diào)的差異中;而無(wú)論是什么字體字型,到了記事本中,都將被還原為默認(rèn)大小。這種設(shè)計(jì)上的“異構(gòu)”可以用于水印的破壞,屆時(shí)只要將WORD中的全部?jī)?nèi)容“復(fù)制/粘貼”到記事本中,然后通過(guò)二者的對(duì)比,則可以很容易地找到水印的位置。
2.4 轉(zhuǎn)碼互換法
前面的方式注重的是利用協(xié)議格式的寬泛性調(diào)整水印信息,而不對(duì)數(shù)據(jù)本身進(jìn)行修改;轉(zhuǎn)碼互換法則是通過(guò)對(duì)數(shù)據(jù)進(jìn)行修改的方式去掉水印。其原理就是將原數(shù)據(jù)在多個(gè)允許失真的編碼方式之間進(jìn)行轉(zhuǎn)換,借助于不同編碼方式在適度“失真”的前提下,在對(duì)數(shù)據(jù)修改的同時(shí)破壞水印信息。轉(zhuǎn)碼互換法的妙處在于根本不考慮原有水印嵌入算法,只是用新方法操作,其數(shù)據(jù)模型為
y′=g(y,w′)
(5)
假設(shè)一個(gè)BMP文件已用前面RGB像素微調(diào)的方式嵌入了水印,則如果將該BMP格式先轉(zhuǎn)換為JPG格式,然后再回轉(zhuǎn)BMP格式,則前后兩個(gè)BMP格式會(huì)因JPG轉(zhuǎn)換是失真壓縮而有所不同,借助這一操作,也同時(shí)破壞了其中的水印信息。
2.5 二次水印法
二次水印法,簡(jiǎn)單地講就是利用同一水印嵌入算法,在已加水印的文件上再加一次水印。當(dāng)然,第二次水印可以設(shè)置為隨機(jī)數(shù)或亂碼。轉(zhuǎn)碼互換法可以簡(jiǎn)化為老算法的新參數(shù),其數(shù)據(jù)模型為
y′=f(y,w′)
(6)
例如,有一種基于純文本的英文數(shù)字水印嵌入算法,利用人們?cè)谧x英文時(shí),對(duì)2個(gè)單詞之間的空格數(shù)不敏感的特點(diǎn),適當(dāng)?shù)貙⒉糠謫蝹€(gè)空格調(diào)整為2個(gè)甚至3個(gè)空格,而這些空格數(shù)的組合正是要嵌入的水印信息。對(duì)這種水印嵌入算法的破壞,只是如法炮制,通過(guò)任意調(diào)整已有的空格數(shù)破壞原有水印信息。
二次水印技術(shù)操作簡(jiǎn)單,缺點(diǎn)是需要知道加水印嵌入算法或是有水印嵌入程序,因而應(yīng)用受限。
當(dāng)進(jìn)行性能分析的時(shí)候,水印的嵌入算法和識(shí)別算法是一體的,共同決定其隱藏性能的優(yōu)劣。在水印的擦除算法中,水印的清除和破壞也是一體的,共同決定其破壞性能的優(yōu)劣。
水印嵌入和識(shí)別技術(shù)的魯棒性[3]是指嵌入了水印的文件能否抵抗在數(shù)字作品應(yīng)用過(guò)程中的各種惡意或非惡意的操作,魯棒性的強(qiáng)弱直接決定了水印信息能否恢復(fù)及其恢復(fù)程度。而水印擦除技術(shù)還沒(méi)有魯棒性的定義,只是不妨反其意而用之,定義數(shù)字水印擦除技術(shù)的魯棒性定義為:對(duì)含有水印的文件實(shí)施擦除操作后,使用原有的識(shí)別技術(shù)進(jìn)行識(shí)別,識(shí)別其正確性程度。其魯棒性的強(qiáng)弱決定了擦除算法對(duì)數(shù)字水印完整性的破壞程度。
對(duì)魯棒性的測(cè)試操作可以通過(guò)數(shù)字水印的識(shí)別系統(tǒng)進(jìn)行驗(yàn)證,但在實(shí)際操作中,可以對(duì)多份水印文件或一份文件的多處水印文件進(jìn)行識(shí)別,然后根據(jù)能恢復(fù)識(shí)別和不能恢復(fù)識(shí)別的比例進(jìn)行判斷。各擦除算法的魯棒性如表1所示。
表1 數(shù)字水印擦除技術(shù)的魯棒性對(duì)比
僅從字面上看,數(shù)字水印的擦除技術(shù)是一種與維護(hù)版權(quán)背道而馳的技術(shù),然而事實(shí)上,任何一種技術(shù)的提升都是螺旋式的上升,互促式的發(fā)展。如果將數(shù)字水印的識(shí)別算法和擦除算法從技術(shù)上進(jìn)行對(duì)比,不難發(fā)現(xiàn)二者難度相當(dāng),同是一種新規(guī)則的編碼方式。借助于水印擦除技術(shù),可以實(shí)現(xiàn)對(duì)水印的清除和破壞,并且從另一角度檢驗(yàn)水印識(shí)別算法的魯棒性,借以拋磚引玉,共同促進(jìn)水印技術(shù)的提高和完善。
[1]李勇.用于流媒體版權(quán)保護(hù)的視頻水印技術(shù)[J].電視技術(shù),2012,36(8):41-43.
[2]陽(yáng)溢,柏森,郭雨,等.基于幀離散余弦變換的魯棒視頻水印算法[J].電視技術(shù),2013,37(19):57-60.
[3]丁瑤,于志強(qiáng).一種用于視頻流的強(qiáng)魯棒性數(shù)字水印方案[J].計(jì)算機(jī)仿真,2012(6):128-131.
Research of Erase Technology of Digital Water-print
LI Ruimin
(ShanghaiFigureInformationTechnologyCo.Ltd.,Shanghai201804,China)
Digital water-print embedding and recognition technology is developed by a number of digital watermarking algorithms, however digital water-print erase technology has rarely researched. Erase the technique of digital water-print is to use some algorithms and techniques,for water-print discovery,water-print erase,and water-print destruction in containing or not containing water-print file. This paper presents the reverse engineering method,protocol specification coding method, heterogeneous protocol mutual exclusion method,transcoding exchange method,secondary processing of water-print method and data model from this point of view,meanwhile analysis the robustness of each method.
digital water-print;erase;discovery;recover;destruction
TN919.83
A
10.16280/j.videoe.2015.01.003
2014-05-04
【本文獻(xiàn)信息】李瑞民.數(shù)字水印擦除技術(shù)的研究[J].電視技術(shù),2015,39(1).
李瑞民(1973— ),博士,高級(jí)工程師,主要從事廣電領(lǐng)域內(nèi)的計(jì)算機(jī)安全技術(shù)、網(wǎng)絡(luò)設(shè)備與信號(hào)監(jiān)控等領(lǐng)域的研究與應(yīng)用。
責(zé)任編輯:時(shí) 雯