鄒煜
摘 要
Java雖然能夠跨平臺使用具有較好的靈活性,并具有獨立的編譯方式,但是其源代碼編譯后,并沒有生成二進制的文件,而是一種面向虛擬機的文件,我們稱之為Java類文件,屬于一種具有格式的中間代碼,容易被黑客進行反編譯Java,為其提供了可能性。反編譯得到的代碼和源代碼差別不大,提高Java類文件的保護勢在必行。
【關鍵詞】Java類文件 文件加密 RSA ASE
1 引言
Java的開發資源豐富并且具有較為成熟的開發模式,因此,Java語言是目前較為主流的軟件設計和開發語言。目前,Java語言已經廣泛應用在嵌入式應用,企業管理,信息管理等領域中。Java字節碼的文件中,對方法和變量的信息進行了全部的保留,通常這些符號攜帶者很多種語義信息。Java語言的這種特殊性質,讓他很容易被黑客攻擊,遭到代碼的盜取,最終讓知識產權受到侵害,所以,Java類文件加密技術的研發非常必要。
2 Java
2.1 簡單性
Java是一種面向對象的語言形式,通過所提供的基本的方法完成軟件的設計任務,因此,只要程序員能夠理解基本的概念,就可以對軟件進行開發。在Java語言中,并不需要考慮算法的重新加載以及多重繼承的問題,通過垃圾的自動回收功能,能夠簡化軟件程序開發人員對內存的管理工作。
2.2 面向對象的
在Java語言的程序設計中,主要針對的是對象和接口的設計,用簡單的累計值和動態的連接模型完成設計。使用繼承的機制,父類的信息和方法可以繼承過來,很好地達到了代碼復用的效果。
2.3 安全性
網絡病毒的盛行,因此,Java語言中,需要考慮其安全性。在Java語言中,并沒有指針的設計,所以對內存的訪問通過對象實例的變量來完成,可以減少指針操作構成中產生的錯誤。
2.4 跨平臺性
Java的最大優點就是無需考慮平臺的特征,可以移植到不同的機器上完成軟件誰,讓程序員擺脫平臺開發工具的限制,實現了一次編寫,處處可用的目的。
3 Java類文件
3.1 Java類文件結構
Java class文件的結構主要針對的是一個類或者是接口的描述,其中包括了對Java程序設計應用到的所有的類和接口的信息,是Java虛擬機能夠直接加載的文件。所以在程序設計中類文件非常重要,只有正確的對類文件進行使用,才能夠完成程序的開發和設計。
3.2 Java反編譯
在Java中使用的反編譯器是javap對類文件完成反編譯工作。但是反編譯的結果不是想要的源代碼,包括局部變量和匯編代碼兩部分。此外,其他的反編譯工具Mocha,WinDis在反編譯中能夠給出和源代碼基于一樣的代碼。Java類文件并不是一個二進制的文件,是一種具有格式的中間的代碼,因此,會增加反編譯的可能性。這種安全問題,主要還是來自于Java本身的一些特點。
(1)Java的跨平臺特征,使得Java虛擬機的指令集要比匯編的指令集簡單,為了適應各種平臺的需求,實現通用性,降低了反匯編的復雜性,產生安全隱患。
(2)在Java編譯器中,要將類編譯成為一個單獨的類文件,因此,這也從某種程度上簡化了反編譯的過程。
(3)java類文件中,保存了很多原有的方法和變量的名稱,因此,通過對名稱和變量方法的訪問,讓反編譯變得更容易。
4 Java類文件保護技術
4.1 編輯本地執行文件
這種類文件保護在指定的計算機環境上,編譯成可運行的程序。因此,編譯后得到的文件是二進制的可執行文件。相對于在Java虛擬機中對類文件進行加載和執行,這種本地編譯的方式具有節約空間,并且程序執行速度快等優點。這種本地編譯的方式的全晨讀和本地執行程序的安全程度相似。
4.2 數字水印技術
數字水印技術根據著作權人的基本信息,按照某種特定的方式植入信息,在出現版權糾紛的時候,會通過設定的算法提取數字水印,驗證版權的歸屬,保護著作人的合法權益,避免產生盜版的問題。目前,數字水印技術已經應用在圖像,視頻和聲音的多媒體中。水印的存在,要在不損壞原來數據的前提下進行,并且在軟件中應用數字水印是目前主流的一種發展趨勢,能夠保護計算機代碼的安全性。
但是這種數字水印技術也不是不能攻破的,在Java類文件中為了防止反編譯現象的出現,在編譯代碼的時候要對其進行優化設計,否則很容易被反編譯程序員看出,將原來的數字水印擦掉,后者偽造水印。
4.3 代碼混淆技術
在反編譯器出現以后,代碼混淆技術和理論也相應的得到了發展。目前較為常見的混淆代碼器包括了:JODE,Jsrink等。此外,Sun公司也退出了自己的混淆器JADE。但是,代碼混淆技術也存在一定的局限性。因為代碼混淆器不能對程序的關鍵詞,和字符等進行混淆,因此,即便是通過混淆,也還是能夠得到程序的框架信息,通過輸出的字符和引用的類信息可以確定對那些輸出的函數進行定義,并且可知道程序中所調用的本地函數信息等。
5 發展趨勢
可知這幾種保護方式不能絕對的確保java類文件的安全性,只要黑客有足夠的耐心,就會將這些java類文件進行反編譯。傳統的Java類文件加密方式有RSA、AES等,但其對加密長度是有限制的,在一些較為復雜和長數據加密過程中會存在異常的現象,因此,本文提出了一種分塊Java類文件的RSA加密算法,可有效地對長數據進行加解密操作,節約加解密時間,提高算法的效率,是未來Java類文件加密技術發展的主要趨勢。
6 結論
Java類文件的保護關系到整個應用程序的安全性,因此,非常重要。本文主要論述了目前主流的Java類文件的保護方式,并對其優缺點進行論述。在此基礎上,給出未來Java類文件保護技術發展的主要趨勢是基于混淆RSA加密技術,并針對現存加密長度有限的問題,采取分段加密的方式,提高加解密的安全性,實現Java類文件的保護。
參考文獻
[1]林漢玲,方穎玨,王曉峰.密碼技術在Java類文件保護技術中的新應用[J].現代電子技術,2013,36(03):102-103.
[2]林漢玲,王曉峰,陳曉彬,等.一種基于混合密碼算法的Java類文件保護技術[J].桂林理工大學學報,2015,35(01):202-206.