李瑞民
(上海風格信息技術股份有限公司,上海 201804)
數字水印擦除技術的研究
李瑞民
(上海風格信息技術股份有限公司,上海 201804)
數字水印的嵌入和識別技術已有大量研究,然而數字水印的擦除算法卻鮮有研究。數字水印的擦除技術是利用一定的算法和技術,對含有或未含水印的文件進行水印發現、水印清除和水印破壞的操作。從上述角度提出了逆向工程法、協議規范編碼法、異構協議互斥法、轉碼互換法、二次水印法等五種方法和數據模型,并對每種方法的魯棒性進行了分析。
數字水印;水印擦除;水印發現;水印清除;水印破壞
數字信息的制作者為了保護自己的版權,會在不影響原有載體使用價值的前提下,將一些標識信息通過一定的技術嵌入數字載體當中[1],所嵌入的標識被稱為數字水印(Digital Water-print)。目前與數字水印相關的技術主要有:數字水印的“嵌入”(Embed)技術和“識別”(Read)技術,其中的嵌入主要是通過算法將特定的數字信息加入到某一類載體中,這類算法絕大多數都是基于算法保密的;而識別則是通過算法識別某一載體中是否含有該水印或直接讀出水印的內容,其算法有些是保密的(便于自己識別),有些則是公開的(便于第三方進行識別)。結合二者,可以判斷一個載體是否合法,或判斷載體是否被篡改。
然而在一些特殊情況下,除了能判斷一個文件中是否有水印之外,還需要一定的技術將其中的水印擦除掉。如水印版權已過期,但嵌有水印的文件仍然存在,而此時水印的設計單位已不再提供技術支持以及對數字水印擦除技術純粹的科學研究;再如水印的魯棒性測試。這就催生出另一個分支,即數字水印的擦除技術,目前還沒有這方面的專項研究。
所謂水印“擦除”(Erase)就是采用通用的數據水印常識修改載體,使原有的水印識別技術無法確認文件是否含有該水印。由概念進行分析,所修改的載體可以確定含有某水印,也可以不含某水印;水印識別技術從擦除后的載體中,可以是識別不出水印,也可以是識別為非預定的信息,如亂碼或無關的信息。
通常情況下,數字水印的截體可以是文件格式區域(如圖片文件的文件頭)、文件內容區域(如圖片本身)、通信中數據包(如TCP/IP數據包的包頭和內容中)、音視頻數據流(如音視頻壓縮數據區)等各種場合。考慮到將數字水印的載體視為文件時,既不影響對技術的理解,也方便說明和驗證,所以后文在說明數字水印的擦除技術時,都以文件中嵌入水印進行闡述。
數字水印嵌入的原理很簡單,其所有的算法都無一例外的要找一個協議、一個算法、一種文件數據格式(以下統稱為“協議”)中存在不敏感性的地方,在允許的偏差閾值內進行重新編碼,而編碼的從而將水印信息嵌入其中;數字的水印識別技術則是利用既定的算法,對這些不敏感的地方進行檢測,以驗證其中是否嵌入水印,或讀出水印內容。
根據數據格式不敏感的位置,可以將數字水印技術分為其于格式的水印和基于內容的水印兩大類。例如,很多格式文件由文件頭和數據區組成,或者所有TCP/IP通信的數據包由包頭和數據區組成,前者是將水印嵌入到文件頭或包頭中,后者是將數據嵌入到數據區中。二者的本質相同,但在具體應用中,則差異巨大。
基于格式的水印主要是利用格式中協議的寬泛性和二義性,在嵌入時將要隱藏的消息作為參數進行格式的生成,最終實現水印的嵌入。例如有些基于腳本和明文的源碼,協議本身的規定具有寬泛性。例如在HTML語法中,規定HTML標簽關鍵字不區分大小寫,這時可以通過將標簽關鍵字的中,每一個字母的大小寫按一定的編碼規則進行調整,這個編碼規則正是要嵌入的水印信息。
基于內容的水印,常常應用在諸如圖像、音視頻領域[2]等數據允許“失真”的環境中,如計算機中的像素顏色采用RGB模式表示,3個表示顏色的值如果有少量變化,人的視覺很難覺察得到,為此可以先將每個值都調整無法區分的下限,然后根據水印內容作向上浮動,以不到上限為浮動的范圍,則整幅圖會在無法覺察的情況下,悄悄地嵌入水印信息。
對于嵌入水印的文件,假設所使用的嵌入算法為函數f,另一個同類型的嵌入算法為函數g,未嵌入水印前的內容為x,嵌入的水印內容為y,水印本身為w,并約定w=0表示使用協議的默認值,則水印嵌入和識別的數學模型為
y=f(x,w)或y=g(x,w)
(1)
式中:y和g為已知;x為未知;f和w則視具體消除算法而定。
要實現水印的擦除,通常根據要達到的目的可以分為水印清除技術和水印破壞技術。
水印清除技術是通過協議發現存在水印,然后清除掉水印,使水印的文件恢復到無水印的狀態。這可以分為逆向工程法和協議規范編碼法2種技術。可見,要實現水印的清除,無疑要對水印的算法和原理進行詳細了解。
水印破壞技術則是在不確定對方是否使用水印,或不知道對方采用的哪種水印技術的情況下,在不影響原有文件使用的前提下,直接加入干擾因素,從而導致對方的水印識別技術失效,從而達到破壞的作用。相比于水印的清除技術,水印的破壞技術更多,常用的水印破壞技術有異構協議互斥法、轉碼互換和二次水印法等3種技術。
2.1 逆向工程法
清除水印最有效的方法是逆向工程法。顧名思義,就是采用與正向工程相反的流程,或相反的思維方式,分析或檢測出水印嵌入算法的原理、步驟,然后按照與嵌入相反的步驟將數據恢復為嵌入前的狀態。通過逆向,可以獲得水印內容w和函數f的反函數f-1,則逆向工程的數據模型為
y′=f(f-1(y,w),0)
(2)
例如,在ICMP協議中,詳細規定了該協議所支持的所有網絡狀態信息數據包的包頭,但作為TCP/IP應用時,卻對其中數據包的內容部分不作要求。為此,在實現ping程序的時候,Windows操作系統填寫的內容固定為32個字節的字符串“abcdefghijklmnopqrstuvwabcdefghi”;而基于UNIX的多數操作系統,如Linux及其變種、蘋果(Mactonish),以及近幾年風靡全國手機市場的安卓(Android)操作系統則都固定為0x08~0x37這48個字節。既然沒有規定,用戶如果將其改為水印信息也無可厚非。當然,對于這種水印的清除,只要根據協議恢復為系統默認值即可。
逆向工程法針對性強,非常有效,但是費時費力,可操作性差。在實際應用中,水印嵌入算法很難獲得,甚至連加水印的可執行程序都難獲得到,有的只是加了水印后的文件,所以只是在理論上可行。
2.2 協議規范編碼法
既然水印算法多是基于協議的寬泛性而設計的,那么利用一個嚴格的編碼器重新對文件重新編碼,則可以在不知哪里有水印有前提下,對格式進行整體“規范化”,其效果間接地將水印進行了清除。協議規范編碼法中,水印內容w無從得知,但嵌入函數f是知道的,故其數據模型為
y′=f(y,0)
(3)
如JPG圖片格式分為JPG文件頭和圖像數據區,在JPG的文件頭中,有2個字段明確指定圖像的寬度和高度,結合每個像素所點的字節數就可以算出圖像數據區的總長度。幾乎所有的JPG圖片顯示程序都不對圖像數據區之后是否有數據,以及數據的格式和意義進行檢查,這就給數字水印的嵌入帶來了可能。如果人為地在圖像數據區的后面再附加一些信息,則這些信息可以安全地嵌入到JPG文件中,如命令行“copy/b a.jpg+b.txt c.jpg”即可將b.txt文件的內容(就是要嵌入的水印信息)附加在a.jpg文件圖像數據區之后,并且生成新的c.jpg文件。要清除這樣的水印,只要在JPG圖像編碼器(如Windows自帶的“畫圖”程序)打開c.jpg文件,然后通過“另存為”的方式保存為d.jpg文件,則重新編碼的d.jpg文件就消除掉了所附加的水印信息b.txt。
規范編碼本身并不需要準確地知道水印的嵌入算法,只要通過重新編碼(如上文的“另存為”操作)則可以方便地清除水印,由于方式只依賴于編碼器,具有一定的通用性,因而具有實戰效果。
2.3 異構協議互斥法
即使是相似的應用,由于不同的算法對同一方面的關注程度不同,會出現一方認為是重要機制,而另一方則完全忽視。利用這一異構算法的差異,可以通過簡單的方法破壞已有的數字水印。如同為文字編輯軟件,WORD和“記事本”功能迥異,前者關注的是“所見即所得”的格式效果,后者則只關注文字內容,毫無格式可言,利用這一差異,可以做到對格式類水印的破壞。異構協議互斥法完全是利用了兩套方法之間的互斥關系進行破壞,假設另有一個水印w′(后同),其數據模型為
y′=g-1(y,w′)
(4)
如某基于WORD的水印嵌入算法(此算法對PDF文件同樣適用),其原理是利用人們對漢字間只有1個像素的漢字不敏感,因而將一些作為水印的漢字或標點設置為1個像素,并夾雜在原文之中。可以根據數字水印的編碼規則將WORD文件中的漢字行間距或字間距做出微調,然后將水印信息隱藏于微調的差異中;而無論是什么字體字型,到了記事本中,都將被還原為默認大小。這種設計上的“異構”可以用于水印的破壞,屆時只要將WORD中的全部內容“復制/粘貼”到記事本中,然后通過二者的對比,則可以很容易地找到水印的位置。
2.4 轉碼互換法
前面的方式注重的是利用協議格式的寬泛性調整水印信息,而不對數據本身進行修改;轉碼互換法則是通過對數據進行修改的方式去掉水印。其原理就是將原數據在多個允許失真的編碼方式之間進行轉換,借助于不同編碼方式在適度“失真”的前提下,在對數據修改的同時破壞水印信息。轉碼互換法的妙處在于根本不考慮原有水印嵌入算法,只是用新方法操作,其數據模型為
y′=g(y,w′)
(5)
假設一個BMP文件已用前面RGB像素微調的方式嵌入了水印,則如果將該BMP格式先轉換為JPG格式,然后再回轉BMP格式,則前后兩個BMP格式會因JPG轉換是失真壓縮而有所不同,借助這一操作,也同時破壞了其中的水印信息。
2.5 二次水印法
二次水印法,簡單地講就是利用同一水印嵌入算法,在已加水印的文件上再加一次水印。當然,第二次水印可以設置為隨機數或亂碼。轉碼互換法可以簡化為老算法的新參數,其數據模型為
y′=f(y,w′)
(6)
例如,有一種基于純文本的英文數字水印嵌入算法,利用人們在讀英文時,對2個單詞之間的空格數不敏感的特點,適當地將部分單個空格調整為2個甚至3個空格,而這些空格數的組合正是要嵌入的水印信息。對這種水印嵌入算法的破壞,只是如法炮制,通過任意調整已有的空格數破壞原有水印信息。
二次水印技術操作簡單,缺點是需要知道加水印嵌入算法或是有水印嵌入程序,因而應用受限。
當進行性能分析的時候,水印的嵌入算法和識別算法是一體的,共同決定其隱藏性能的優劣。在水印的擦除算法中,水印的清除和破壞也是一體的,共同決定其破壞性能的優劣。
水印嵌入和識別技術的魯棒性[3]是指嵌入了水印的文件能否抵抗在數字作品應用過程中的各種惡意或非惡意的操作,魯棒性的強弱直接決定了水印信息能否恢復及其恢復程度。而水印擦除技術還沒有魯棒性的定義,只是不妨反其意而用之,定義數字水印擦除技術的魯棒性定義為:對含有水印的文件實施擦除操作后,使用原有的識別技術進行識別,識別其正確性程度。其魯棒性的強弱決定了擦除算法對數字水印完整性的破壞程度。
對魯棒性的測試操作可以通過數字水印的識別系統進行驗證,但在實際操作中,可以對多份水印文件或一份文件的多處水印文件進行識別,然后根據能恢復識別和不能恢復識別的比例進行判斷。各擦除算法的魯棒性如表1所示。

表1 數字水印擦除技術的魯棒性對比
僅從字面上看,數字水印的擦除技術是一種與維護版權背道而馳的技術,然而事實上,任何一種技術的提升都是螺旋式的上升,互促式的發展。如果將數字水印的識別算法和擦除算法從技術上進行對比,不難發現二者難度相當,同是一種新規則的編碼方式。借助于水印擦除技術,可以實現對水印的清除和破壞,并且從另一角度檢驗水印識別算法的魯棒性,借以拋磚引玉,共同促進水印技術的提高和完善。
[1]李勇.用于流媒體版權保護的視頻水印技術[J].電視技術,2012,36(8):41-43.
[2]陽溢,柏森,郭雨,等.基于幀離散余弦變換的魯棒視頻水印算法[J].電視技術,2013,37(19):57-60.
[3]丁瑤,于志強.一種用于視頻流的強魯棒性數字水印方案[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
【本文獻信息】李瑞民.數字水印擦除技術的研究[J].電視技術,2015,39(1).
李瑞民(1973— ),博士,高級工程師,主要從事廣電領域內的計算機安全技術、網絡設備與信號監控等領域的研究與應用。
責任編輯:時 雯