樊宇
摘 要 本文通過深入分析二維矢量動畫的文件結(jié)構(gòu),提出一種能夠保護(hù)二維SWF矢量動畫作品版權(quán)的數(shù)字水印方案,并引入了第三方注冊的思想,經(jīng)實驗數(shù)據(jù)證明,該方案基本可以抵抗常規(guī)攻擊,水印信號的嵌入在視覺上也不影視矢量動畫的播放效果。
關(guān)鍵詞 矢量動畫;數(shù)字水印;第三方注冊
中圖分類號J2 文獻(xiàn)標(biāo)識碼 A 文章編號 1674-6708(2015)138-0069-01
1 二維矢量動畫基礎(chǔ)
矢量動畫構(gòu)思巧妙、形式靈活、手法多樣等特點被廣泛應(yīng)用于各領(lǐng)域,目前較為常見的矢量動畫多為SWF動畫,矢量動畫的廣泛應(yīng)用使得版權(quán)保護(hù)問題顯得尤為重要。
2 矢量動畫文件特點
SWF矢量文件從縱向角度進(jìn)行解析,分為文件頭和頭部之后的一系列Body標(biāo)簽組成。SWF文件從橫向分析將文件分為描述型標(biāo)簽、控制型標(biāo)簽和字典三個對象。
描述型標(biāo)簽用以定義矢量動畫中所需的不同對象,如形狀、文本等,且后定義的內(nèi)容可以引用前面所定義內(nèi)容的相關(guān)屬性,每一個描述標(biāo)簽都為對象定義一個ID號,ID在同一個文件中都是唯一的。播放器將每個對象的ID號存儲在字典中。描述型標(biāo)簽只負(fù)責(zé)定義對象,但不能控制對象的顯示和播放順序。
控制型標(biāo)簽控制與動畫播放相關(guān)的設(shè)置,控制型標(biāo)簽可以把字典中已經(jīng)定義好的內(nèi)容調(diào)入到播放列表中等待顯示或控制渲染與播放。
字典就像一個庫,用于存儲描述標(biāo)簽定義的內(nèi)容及其多對應(yīng)ID,允許描述標(biāo)簽讀取字典中已有的內(nèi)容后重新定義更為復(fù)雜的對象,也允許控制標(biāo)簽從中提取引用相關(guān)對象及其對應(yīng)的ID。
3 矢量動畫水印方案設(shè)想
通過深入分析SWF文件的內(nèi)部結(jié)構(gòu)和工作原理發(fā)現(xiàn),SWF矢量動畫文件存在有以下幾個特點。
1)SWF動畫文件除了文件頭和結(jié)束標(biāo)簽兩個標(biāo)簽分別固定在文件結(jié)構(gòu)頭和尾之外,其他絕大多數(shù)標(biāo)簽的位置不影響SWF矢量動畫的播放效果。
2)只有當(dāng)播放器讀取到“顯示幀”標(biāo)簽時,播放列表中的內(nèi)容才能渲染輸出,因此,播放器顯示的每一個幀的效果,都是當(dāng)前幀中“顯示幀”標(biāo)簽之前的所有標(biāo)簽內(nèi)容的疊加,而凡是出現(xiàn)在“顯示幀”標(biāo)簽之后的內(nèi)容將不能輸出到播放器中。
綜上分析可知,我們可以把水印信息分組隨機添加到幀內(nèi)“顯示幀”標(biāo)簽之后,這即可注明版權(quán)所有,同時不影響SWF矢量動畫的播放效果。
4 矢量動畫數(shù)字水印算法實現(xiàn)
4.1 水印的嵌入
設(shè)置水印文件,通過密鑰K對水印信息進(jìn)行分組處理,通過MD5算法計算密鑰K的128為信息摘要,得到16位字節(jié)的M序列,再通過計算得出每個字節(jié)的權(quán)值,然后再對水印信息進(jìn)行分組。將兩組數(shù)據(jù)通過圖1的方式把水印分組信息嵌入到動畫的標(biāo)簽分組中,標(biāo)簽分組的“顯示幀”標(biāo)簽后插入了新的水印分組信息,此信息不影響文件的播放但是會影響標(biāo)簽的長度。
為了對SWF文件可能受到的攻擊進(jìn)行明確定位,我們可以通過計算SWF文件標(biāo)簽的信息量,因為標(biāo)簽的順序同樣不影響動畫的播放效果,我們將通過標(biāo)簽的信息量進(jìn)行排序,當(dāng)fSWF矢量動畫文件被攻擊時,標(biāo)簽信息會發(fā)生變化,那么標(biāo)簽排序必然會有改變,以此可以準(zhǔn)確定位被破壞或修改的標(biāo)簽對象。
為了進(jìn)一步明確版權(quán)信息,可以在第三方注冊,出現(xiàn)糾紛時版權(quán)所有人提供密鑰即可由第三方準(zhǔn)確判斷原始信息遭受到的攻擊。
SWF矢量動畫數(shù)字水印的嵌入過程如圖1所示。
圖1 水印的嵌入
4.2 水印的提取
數(shù)字水印的提取過程是嵌入水印的一個可逆的過程,根據(jù)嵌入的數(shù)字水印信息的總長度和密鑰K的MD5得出水印信息的分組,然后找出SWF文件標(biāo)簽的分組信息,然后找出所有的水印分組信息,最終提取出水印文件。在水印提取過程中由第三方提供水印嵌入數(shù)據(jù)和文件的標(biāo)簽排序情況快速驗證水印信息的準(zhǔn)確性。
5 實驗結(jié)果分析
針對SWF矢量動畫數(shù)字水印的攻擊可能有以下幾種情況。
5.1 修改標(biāo)簽內(nèi)容
初級盜版攻擊可能會修改SWF矢量動畫標(biāo)簽的內(nèi)容,此類攻擊多半是盜版者為了獲取文件,對文件內(nèi)的標(biāo)簽做了大量修改,這樣會破壞原有的水印信息,但我們通過密鑰K和第三方的配合可以快速準(zhǔn)確的確認(rèn)版權(quán)水印信息,從而進(jìn)行維權(quán)行為。
5.2 更改標(biāo)簽的順序
盜版者可能采取更改標(biāo)簽順序的方式進(jìn)行攻擊,更改標(biāo)簽順序可能會對水印信息的提取造成一定的影響,但嵌入水印時,我們已經(jīng)通過計算SWF文件標(biāo)簽的信息量并進(jìn)行了排序存儲于第三方,假如盜版者更改了標(biāo)簽順序,但標(biāo)簽的信息并沒有改變,水印信息的完整性沒有破壞,所以從視覺效果上對水印信息的影響不大。通過第三方提供的水印信息分組與標(biāo)簽分組的嵌入關(guān)系可以再準(zhǔn)確提取出水印信息。
5.3 插入、刪除標(biāo)簽
插入和刪除標(biāo)簽的攻擊對SWF矢量動畫會有一定的影響,可能會使部分帶有水印信息的標(biāo)簽對象被刪除,但是,插入和刪除標(biāo)簽的操作對SWF矢量動畫視覺播放效果影響也很大,此類操作對于隨機選擇的標(biāo)簽分組添加水印的算法來講微乎其微,對數(shù)字水印的提取不會產(chǎn)生太大影響。
6 結(jié)論
本文詳細(xì)介紹SWF矢量動畫數(shù)字水印的嵌入與提取方案。為了確保方案的實用性,本文重點提出了一個第三方注冊的概念,我們將提取的水印分組信息到第三方進(jìn)行注冊,提高了方案的可行性。
參考文獻(xiàn)
[1]熊富琴.多媒體數(shù)字水印技術(shù)綜述[J].科技信息,2010.
[2]王麗俠.數(shù)字水印技術(shù)的研究[J].計算機安全,2010.
[3]鄧華,司瑾,王光宇.基于Flash動畫的數(shù)字水印設(shè)計方法[J].電腦編程技巧與維護(hù),2011.