呂光金
(上海財經(jīng)大學(xué)浙江學(xué)院,浙江 金華 321015)
Flash動畫的加密方法
呂光金
(上海財經(jīng)大學(xué)浙江學(xué)院,浙江 金華 321015)
隨著Flash動畫商業(yè)價值的不斷提升,各種加密和解密軟件也應(yīng)運而生,如何有效地保護動畫作品是一個值得探討的問題。首先對Flash文件進行了解析,然后闡述了幾種保護Flash動畫的加密方法,并對幾款相關(guān)的加密軟件進行了測試比較,得出用加殼打包類軟件進行加密比較安全。
Flash動畫;知識產(chǎn)權(quán)保護;加密;特征提取
Flash是Micromedia公司開發(fā)的一款動畫制作軟件。許多愛好者運用Flash制作出優(yōu)秀的動畫作品,并上傳至閃客帝國、TOM-Flash動畫頻道等專業(yè)網(wǎng)站進行學(xué)習(xí)與交流,極大地推動了Flash等多媒體技術(shù)以及動畫的傳播與發(fā)展[1]。隨著Flash作品的商業(yè)價值的劇增,各種加密和解密軟件也應(yīng)運而生,個別用戶非法運用解密軟件嚴(yán)重損害了用戶的知識產(chǎn)權(quán)。如運用碩思閃客精靈軟件,將SWF文件反編譯成FLA文件提取各個元素。為了防止作品未經(jīng)許可被盜用或惡意修改,有必要對SWF作品加密方法進行研究。
關(guān)于動畫加密,國內(nèi)外一些學(xué)者和公司進行了相應(yīng)的研究,如Micromedia公司在Flash軟件中自帶了防止導(dǎo)入功能?;鄯逍旁纯萍加邢薰狙邪l(fā)的網(wǎng)刃平臺支持對SWF文件和FLA文件的加密。文獻[2]對Flash動畫的內(nèi)容特征提取進行了深入的研究,并用VC++軟件開發(fā)了一個提取平臺。文獻[4]提出了基于Flash動畫的信息隱藏算法。文獻[5]對SWF文件的版權(quán)保護設(shè)計了一個加密器,在一定程度上防止了反編譯軟件的攻擊。文獻[6]對基于AES的Flash加密方式進行了研究。文獻[7]對運用AES-CCM模式進行數(shù)據(jù)加密進行了研究。目前為止,雖然理論研究較多,但是實踐很少,對現(xiàn)有的軟件介紹幾乎沒有,因此,本文先對SWF文件進行解析,然后對現(xiàn)有的SWF加密軟件和方法進行探討與實踐。
Flash能把文本、圖形、圖像、動畫、聲音、視頻以及交互方式等融合為一個整體[1],制作成基于“流技術(shù)”的動畫。 Flash動畫的文件格式主要有兩種,即源文件格式(*.FLA文件)和播放文件格式(*.SWF文件),源文件可以通過Flash動畫制作軟件修改和編輯,播放文件需要通過其他專業(yè)軟件反編譯后才能修改,本文所指文件為SWF格式文件。
SWF文件與XML文件的內(nèi)部結(jié)構(gòu)相似[2],采用二進制標(biāo)簽對動畫文件中的各個對象、效果以及交互方式進行定義。SWF文件由三部分組成:文件頭(Header)、文件主體(Body,由多個Tag組成)、文件結(jié)束標(biāo)簽(End Tag),其結(jié)構(gòu)如圖1所示。
圖1 SWF文件存儲結(jié)構(gòu)
文件頭定義了SWF動畫的基本信息,如文件的版本、文件大小、是否壓縮、幀頻、影格大小、總的幀數(shù)等[3]。SWF中的標(biāo)簽又可以分為定義型標(biāo)簽和控制型標(biāo)簽兩種。標(biāo)簽的組織順序可以任意排列,但必須遵循先定義后引用、先定義后控制的規(guī)則,聲音流標(biāo)簽必須按順序播放,結(jié)束標(biāo)簽只能有一個,而且必須是最后一個。部分加密軟件是通過修改SWF的文件頭,從而導(dǎo)致SWF解析器在對SWF文件解析時出錯來達到加密目的。
傳統(tǒng)的數(shù)字版權(quán)保護主要有以下幾種:(1)通過在產(chǎn)品中內(nèi)置注冊體系的軟件保護方式。(2)在外面加一個加密外殼,從而保證程序不被別人盜用或改寫。(3)通過硬件方式對軟件產(chǎn)品進行保護,主要采用USB卡、加密狗等。前兩種一般統(tǒng)稱為軟保護。第(3)種為硬件加密方法,一般認為硬件加密最安全,但是必須用光盤分發(fā),不能通過互聯(lián)網(wǎng)大范圍傳播,在SWF動畫加密中一般不采用。
2.1 運用Flash自帶的防止導(dǎo)入功能
Flash作品的保護或加密,最原始的辦法就是防止導(dǎo)入。即防止將SWF導(dǎo)入到Flash軟件中提取各種特征元素。比如,當(dāng)把一份優(yōu)秀的SWF動畫發(fā)布到網(wǎng)上后,經(jīng)過一段時間,會發(fā)現(xiàn)動畫中的各種元素(Flash中稱為元件)出現(xiàn)在了別人的動畫中。為了防止導(dǎo)入Flash動畫提取元素,可以通過Flash軟件本身的“防止導(dǎo)入”功能實現(xiàn)簡單的加密。具體方法是,在Flash “文件”菜單下,選擇“發(fā)布設(shè)置”命令,然后選擇“Flash” 選項卡,選取“防止導(dǎo)入”,在下面的密碼區(qū)輸入“防止導(dǎo)入”的密碼進行發(fā)布。該密碼只有在源文件中可以看到。
2.2 運用ActionScript編程
在Flash軟件中,可以運用ActionScript編寫代碼控制動畫的播放以及與用戶實現(xiàn)交互,也可以通過編寫代碼對動畫進行加密。ActionScript是一種程序設(shè)計語言,它的語法結(jié)構(gòu)與JavaScript的語法結(jié)構(gòu)基本相似,在播放時,由Flash Player中的ActionScrip虛擬機來解釋并執(zhí)行[8]。Flash的最新版本是FlashCS6,腳本語言為ActionScript3.0,簡稱AS3。在用Flash制作動畫時,可以運用AS3腳本語言在程序代碼中設(shè)置口令、時間鎖、地址限制、屏蔽右鍵和限制下載等功能。
2.2.1 設(shè)置口令或時間限制
例如,下面的代碼實現(xiàn)了根據(jù)口令或在限定時間內(nèi)播放動畫的功能。
stop();
Daylimit=new Date(2016,1,1);
todayDate=new Date();
_root.onEnterFrame =function(){
if(Key.isDown(13)){
if(a=="password")||(todayDate { fscommand("fullscreen","true");gotoAndPlay(2);} else fscommand("quit","true");}} 圖2 Flash讀取XML文件過程 這種代碼編寫方法通俗易懂,安全性也較低。可以進一步改進,將密碼與時間存儲在獨立存放的XML文件中,然后通過讀取XML文件內(nèi)容生成密碼和比對時間,但是程序編寫要復(fù)雜得多。Flash讀取XML文件的內(nèi)容需要有路徑的定義、URL的請求和加載過程,與讀取外部圖片或聲音的方法類似但調(diào)用的類不同。讀取XML的過程如圖2所示。 2.2.2 運用LoadMovie()命令 在把Flash作品發(fā)布成SWF文件之前,可以將源文件分割成多個子文件,然后把各個.fla子文件分別發(fā)布成播放文件(如“child1.swf”、“child2.swf”等),并放在不同的路徑下,以相互嵌套的方式調(diào)用,可以起到保護作品的作用。因為當(dāng)該作品被其他用戶下載時,用戶只能下載它的主文件,而其他子文件不能被下載。運用LoadMovie()函數(shù)調(diào)用Flash子文件的方法為:LoadMovie(“某路徑下的子文件childx.swf”,“mySWF”)。其中的路徑可以是相對路徑或絕對路徑,x必須為具體數(shù)字,如child1.swf。 2.3 運用Flash專業(yè)加密軟件 運用專業(yè)軟件對Flash作品進行加密更安全,但是一般都需要付費,如 GeneralEncryptor 、Swfkit、DoSWF等。這些軟件對SWF加密主要使用了動態(tài)內(nèi)存修改技術(shù)(DMM)、ActionScript 混淆技術(shù)、加殼打包技術(shù)、綁定硬件(CPU、網(wǎng)卡、硬盤)技術(shù)等。 2.3.1 動態(tài)內(nèi)存修改技術(shù) 動態(tài)內(nèi)存修改技術(shù)類加密軟件有DoSWF、Flashincrypt和SWFEncrypt等,它們都是SWF文件加密工具,能防止SWF文件被反編譯成源文件,通常使用動態(tài)內(nèi)存修改技術(shù)和腳本混淆技術(shù)進行保護。DoSWF軟件采用一些工具做代碼混淆,降低了程序的可讀性,即使被破解了,也很難看懂,這種方法其實可以稱之為加密代碼。但是加密后的文件會明顯變大,為了避免加密后文件過大的問題,可以在加密前先將FLA源文件分解并生成多個SWF文件,然后再進行逐個加密。 2.3.2 加殼打包技術(shù) Swfkit是一款優(yōu)秀的加殼打包軟件,它不僅能創(chuàng)建 Flash播放程序或屏幕保護程序,而且能為它們建立安裝程序。用該軟件打包的EXE文件不容易被還原,因為它打包的格式不同于Flash軟件中打包的EXE,而且調(diào)用IE中的Flash控件進行播放,因此,F(xiàn)lashtool、Exe2swf等軟件無法將其反編譯;利用碩思閃客精靈、ImperatorFLA、閃客精靈之錘等破解軟件也不能提取作品中的元素。常用的加殼打包類加密軟件還有網(wǎng)刃數(shù)字版權(quán)保護平臺、FlashJestor、Swfkit、Iceprojector、Swishstudio等。 2.3.3 硬件綁定模式 GeneralEncryptor不僅支持SWF文件加密,而且也支持FLA文件加密。用戶可以選擇不同的硬件綁定模式對用戶機器進行綁定,如選定CPU、主板、Flash硬盤、網(wǎng)卡等設(shè)備進行“一機一碼”方式的授權(quán);它還支持水印效果、播放次數(shù)限制、有效期設(shè)置。常用的硬件綁定類加密軟件還有FlashEncryptor、EasySWF、SWFprojection等。 為了驗證SWF加密軟件的功能,制作了一個Flash動畫,并選用了幾種常用加密和解密軟件的試用版進行了相關(guān)實驗,結(jié)果如表1所示。 表1 SWF文件加密與解密比較 通過實驗發(fā)現(xiàn),(1)Exe2swf解密軟件功能較強,能將Flash播放器生成的EXE文件解密成SWF文件,并通過解析SWF文件讀取文件頭,顯示文件的基本信息,包括:文件版本、文件大小、是否壓縮、影格大小、影格比例、總幀數(shù)。(2)SWFEncrypt、DoSWF等軟件的加密功能一般,加密后生成的SWF文件明顯變大,而且能被碩思閃客精靈解密并提取元素;(3)加殼打包類軟件的加密功能比較強大,不能被Exe2swf解密,只是加密后生成的EXE文件明顯變大。由此可知,從安全角度考慮,加密時建議選取加殼打包的方法。 本文針對Flash動畫的加密方法進行了探討與實踐。雖然市場上出現(xiàn)了各種各樣的SWF加密軟件,但是仍無法抵制一些著名的專業(yè)解密軟件和破解方法。因此,只有不斷增強全民的知識產(chǎn)權(quán)保護意識,倡導(dǎo)購買或使用經(jīng)過授權(quán)的作品或軟件,才能將盜版現(xiàn)象降低到最低限度。 [1] 詹青龍,吳學(xué)會,宗哲玲. Flash二維動畫設(shè)計與制作[M]. 北京:清華大學(xué)出版社,2010. [2] 徐振國,孟祥增.Flash動畫的內(nèi)容特征提取研究[J].電化教育研究,2015(6):55-60. [3] 倪應(yīng)華,金炳堯.SWF矢量動解析框架設(shè)計[J].計算機系統(tǒng)應(yīng)用,2010(3):202-205. [4] 張曉彥,張曉明.基于Flash動畫的信息隱藏算法[J].計算機工程,2010(1):181-183. [5] 王繼州,袁雪霞.一種SWF文件保護簡單實現(xiàn)方案[J].數(shù)字技術(shù)與應(yīng)用,2012(8):169-171. [6] 鄒蕾. 基于AES的Flash加密實現(xiàn)[J].電腦編程技巧與維護,2014(22):115-116. [7] 仇國慶,包俊杰,曹冬梅,等. 基于AES算法的ZigBee網(wǎng)絡(luò)加密方法研究[J].電子技術(shù)應(yīng)用,2014,40(4):56-58. [8] 陳銀鳳. Flash中利用Action Script3.0實現(xiàn)圖像的扭曲效果[J].微型機與應(yīng)用,2012,31(16):35-37. Encryption methods of Flash animation Lv Guangjin (Shanghai University of Finance & Economics Zhejiang College, Jinhua 321015, China) With the growing of commercial value of Flash animation, various encryption and decryption softwares arise at the historic moment. How to effectively protect the animation works is a question worth discussing. This paper firsly analyzes the Flash files and then expounds several kinds of encryption methods for protecting Flash animation, and meanwhile conducts the test on several related encryption software, drawing a conclusion that using packaged software to encrypt the Flash files is relatively safe. Flash animations; intellectual property protection; encryption; feature extraction TP37 A 1674-7720(2016)05-0052-03 呂光金. Flash動畫的加密方法[J].微型機與應(yīng)用,2016,35(5):52-54. 2015-11-03) 呂光金(1972- ),通信作者,男,碩士,副教授,主要研究方向:計算機應(yīng)用、多媒體。E-mail:jhlgj@163.com。3 幾種加密軟件的比較
4 結(jié)束語