999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于混合密碼算法的Java類文件保護技術

2016-01-07 12:46:36林漢玲王曉峰陳曉彬深圳大學數學與計算科學學院廣東深圳518060
桂林理工大學學報 2015年1期
關鍵詞:安全

林漢玲,王曉峰,陳曉彬,胡 翔(深圳大學數學與計算科學學院,廣東深圳 518060)

?

一種基于混合密碼算法的Java類文件保護技術

林漢玲,王曉峰,陳曉彬,胡翔
(深圳大學數學與計算科學學院,廣東深圳518060)

摘要:傳統的Java類文件保護方法存在被軟件工具和反編譯保護算法及利用其他接口進行破譯等問題。通過在Java程序的運行環境——虛擬機中最底層Zip算法的開放源代碼嵌入AES密碼算法和RSA密碼算法,提出一種安全性較高的基于混合密碼算法的Java類文件保護方法。實驗結果顯示:該方法具有與AES 和RSA一樣的安全性,解決了傳統保護方法的問題,比傳統的方法有更安全的保護作用。

關鍵詞:Java程序;反編譯;安全; AES算法; RSA算法

Java是面向網絡的語言,憑借其許多優秀的特性,Java已經成為了網絡應用程序的主流開發工具。但編譯后的Java類文件能被很輕松地重構生成Java源文件,這與最初Java字節碼的設計目的有緊密的聯系。這樣,幾乎所有基于Java語言的算法或程序等都可以輕而易舉地被竊取,如何保護Java類文件已經成為Java領域的一個研究熱點。近年來,許多公司和Java開發人員對Java類文件和虛擬機進行了深入的分析,并在此基礎上采取各種方法來保護Java類文件。目前,針對Java類文件的保護技術,如重載類文件加載器( ClassLoader)技術、代碼混淆技術[1]在一定程度上都起到了保護的作用,但都有各自的局限性[2-4]:代碼混淆技術是在保持軟件功能的同時改變源代碼的外觀和結構[1,4],增加反編譯的難度,本身并不能提供絕對的保護[2,5]; Java語言重寫類加載器通過在ClassLoader中加入密碼技術保護源代碼,但由于ClassLoader本身是用Java語言編寫的,因此仍存在反編譯問題及通過底層接口調用進行破譯問題[6-8]。文獻[9]中針對傳統保護方法的局限性提出了一種修改Zip壓縮算法底層代碼的保護方法,但該方法只是給出了簡單的異或加密操作,安全性僅依賴加密算法。

1 Java程序的運行機制

Java應用程序的運行包括編寫、編譯、運行3個步驟:首先,在Java開發環境中輸入程序代碼,形成后綴名為. java的Java源文件。然后,Java編譯器將Java源文件翻譯為Java虛擬機( JVM)可執行代碼——后綴名為. class的字節碼文件。這一編譯過程不同于C/C + +的編譯。Java編譯器不對變量和方法的引用編譯為數值引用,也不確定程序執行過程中的內存布局,而是將這些符號引用信息以字節碼格式進行保存。最后,在運行class文件時,由JVM中“類裝載器”( class loader)將class字節碼文件按逐個字節進行加載、翻譯成機器代碼、執行并顯示結果。最終運行JVM字節碼的工作是由解釋器( Java命令)來完成的[10](圖1)。

JVM是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。JVM屏蔽了與具體操作系統平臺相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行,這樣就實現了Java程序的可移植性。JVM在執行字節碼時,實際上最終還是把字節碼解釋成具體平臺上的機器指令并執行。

圖1 Java程序的運行機制Fig. 61Running mechanism of Java program

2 防止Java類文件反編譯技術的現狀及局限性

目前,Java類文件的保護技術主要有重載類文件加載器( ClassLoader)技術、代碼混淆技術。這些技術在一定程度上都起到了保護的作用,但是各自都存在局限性。

2. 1重載類文件加載器( ClassLoader)技術

Java程序是通過調用類文件加載器( Class-Loader對象)來裝入類文件至解釋器運行。因此利用該機制可以重載ClassLoader對象——嵌入解密算法,這樣就可以通過相應的加密方式保存原始字節碼,防止被反編譯器反編譯。同時,在運行時利用重載的ClassLoader對象進行解密后再轉換成Class對象運行。文獻[4]在指出該保護方法漏洞的同時也提出了一種改進方法,即使用JNI( Java本地調用)接口解決ClassLoader加密技術的內在問題,但仍存在漏洞[7]:由于ClassLoader對象本身有3個層次,因此在更底層的ClassLoader對象接口可能被其他應用程序接口( API)對象進行調用獲取到原始字節碼,從而反編譯出Java類文件。

2. 2代碼混淆技術

混淆技術是目前比較成熟并且應用比較多的一種Java源代碼保護技術。該保護方法通過使用混淆器工具對Java程序的變量名、表達式、類名等進行文字替換達到混淆打亂作用,從而在一定程度上可防止反編譯。但文獻[4]指出該方法能被探測和糾正,并通過調整相應的反編譯策略仍可將這些Java程序進行反編譯[5]。

文獻[9]中針對傳統保護方法的局限性提出了一種修改Zip壓縮算法底層代碼的保護方法,但該方法只是給出了簡單的異或加密操作,安全性僅依賴加密算法,因此并不能有效地保護Java源程序代碼。

3 基于AES密碼算法的字節碼流算法( AES-AFB)

根據AES算法的特點及實際的應用情況,筆者設計出一種全新的AES工作模式,稱為地址反饋模式(簡稱AFB)。

AES是美國聯邦政府采用的商業及政府數據加密標準。AES是一個迭代的、對稱密鑰分組的密碼,算法的明文分組長度固定為128 bit,密鑰長度則可以是128、192或256 bit。在安全性方面,128位AES的加密強度是56位DES加密強度的1 021倍多。假設可以制造一部可以在1 s內破解DES密碼的機器,那么使用這臺機器破解一個128位AES密碼需要上百億萬年的時間[11]。

由于AES的加密及解密數據塊的長度為128 bit,而Java程序的運行機制中,先把Jar文件加載至緩沖,然后從緩沖中隨機讀取數據塊進行解釋,并按字節加載解釋成機器碼,最后執行該機器碼。因此,為了便于Java程序的字節運行機制,筆者設計出了一個全新的AES工作模式( AFB),將加密算法AES改造成一個8 bit ( 1個字節)的密鑰流產生器。這樣,加密數據塊的長度是1字節,從而不改變Java程序的加載機制。AES-AFB加密算法如圖2所示。

AES-AFB加密時,加密算法的輸入是128 bit移位寄存器,其初值為某個初始向量IV。IV左移8 bit,并以第1塊明文數據塊P1所在地址最低8 bit填充IV的最右8 bit,通過AES加密算法后,輸出最左8 bit與該數據塊P1進行異或,產生第1塊明文相應的密文數據塊C1,同時將移位寄存器的內容左移8 bit并將下一塊的數據塊地址低8 bit傳入移位寄存器最右邊8 bit。這一過程繼續到明文的所有單元都被加密為止。

解密算法仍然是圖2中的算法,只是將異或的明文數據塊的輸入換成密文數據塊即可。

圖2 AES-AFB加密算法Fig. 62AES-AFB encryption algorithms

4 基于AES-AFB和RSA混合密碼算法的Java類文件保護技術

由于AES-AFB算法是對稱密碼算法,適合用于加密較大的數據量,而RSA是非對稱密碼算法,速度方面相對于對稱密碼算法而言效率低,適合用于加密較小的數據。因此,本文結合兩者的優勢提出了一種混合方法:使用AES-AFB算法加解密Java類文件(數據量較大),使用RSA算法加解密AES-AFB算法的密鑰(數據量較小)。防止編譯后的Java源代碼被反編譯的具體方法:修改JVM中Zip壓縮算法來解決Java源代碼保護問題。編譯后的JVM可執行文件( class文件)不直接本地化或網絡,而是先打包成Jar文件,再通過上一節的AES-AFB加密算法對Jar文件進行加密,同時使用RSA算法對AES-AFB算法中使用的密鑰進行保護。這樣就可以通過在JVM中的Zip壓縮算法嵌入相應的解密算法,在Jar文件進行解壓之前對加密后的Jar文件進行解密恢復源class文件,使得Java程序能按原始的運行機制進行運行(圖3)。

算法過程:在Java類文件壓縮成Jar包后,使用基于AES-AFB加密算法進行加密;運行程序時,在Jar包被解壓之前進行相應解密。關鍵的加解密代碼如下:

圖3 加密后的Jar文件運行示意圖Fig. 63Diagram of Java class file running after introducing cryptography

( 1)修改JVM中zip-util. c文件部分程序代碼,嵌入相應的解密算法,主要代碼框架如下:

( 2)基于AES-AFB算法的加密器,主要代碼如下:

5 性能分析

5. 1安全性分析

本文提出的保護方法中,Java類文件被加密保存,因此目前各種反編譯的工具都不能工作,解決了混淆器的內在技術問題。此外,從解密的過程可以看出,整個過程只有當程序被運行時才進行解密,解密過程都是在內存中進行,很難獲得Java源代碼。由于該方法修改的是JVM最底層的C語言代碼,因此不存在更低層的、可以被利用于破解的接口,解決了重載ClassLoader加密技術的內在問題。同時,該算法的安全性相當于AES算法的安全性,其安全性不依賴算法本身,而是取決于密鑰,即算法是可公開的。

5. 2實驗結果分析

使用普通PC機進行了實驗,所有測試均在Windows XP操作系統、Intel Core CPU 4400 2. 0 GHz、1 G內存的環境中完成。實驗結果顯示,加密程序的運行時間主要取決于AES算法的運行時間(表1)。

表1 實驗結果Table 1 Experimental results

雖然加入密碼算法后,在一定程度上增加了Java程序的運行時間,但并不影響Java程序真正的運行時間,因為在運行一個Java程序之前,即啟動JVM時就已經將這些Jar文件加載至內存并進入了解密等待運行的狀態。同時,在實際應用中,一個Jar文件包不會很大,例如在測試該保護技術時,曾提供給一家開發OA系統的中小型企業使用,該OA系統中真正需要保護的Jar文件包的大小僅為1. 7 M。

6 結束語

AFB模式實際上是將分組密碼算法AES作為序列密碼的密鑰產生器,因為分組密碼的輸出是輸入的相當復雜的函數,一般認為輸出是具有良好的隨機特性的。同時,由于AFB加密模式的安全性是依賴于算法,不依賴模式,即密碼模式不會損壞算法的安全性,因此,該方法的安全性相當于AES密碼算法的安全性,而AES算法的安全性取決于密鑰,算法可公開。本文提出的方法中密鑰通過RSA算法保護。當然,可以通過使用安全性更高的非對稱密碼算法(比如ECC算法)來替換RSA算法,或者在Java程序運行時以注冊碼的形式動態提供密鑰,從而使密鑰的保護更加安全。企業或個人可以直接采用該技術保護Java源代碼,妥善保護好密鑰,就可有效避免代碼被竊取,保護自己的知識產權。

參考文獻:

[1]Anckaert B,Madou M,Sutter B,et al.Program obfuscation: A quantitative approach[C]/ /Proc.of QoP'07.Alexandria: ACM Press,2007: 15-20.

[2]Buzatu F.Methods for obfuscating Java programs[J].Journal of Mobile,Embedded and Distributed Systems,2012,4 ( 1) : 25-30.

[3]Wang R.JAVA byte code file encryption research[J].Future Computer,Communication,Control and Automation,2012,119: 629-633.

[4]Cimato S,De Santis A,Petrillo U F.Overcoming the obfuscation of Java programs by identifier renaming[J].Journal of Systems and Software,2005,78 ( 1) : 60-72.

[5]Miecznikowski J,Hendren L.Decompiling Java bytecode: Problems,traps and pitfalls[J].Compiler Construction,Lecture Notes in Computer Science,2002,2304: 111-127.

[6]鮑福良,徐潔,方志剛.改進的Java類文件保護方法[J].計算機工程,2009,35 ( 1) : 93-94.

[7]彭東海.基于DES算法加密的Java源代碼保護[J].硅谷,2010 ( 11) : 60,80.

[8]王翔,劉劼.Java反編譯技術和代碼安全[J].現代電子技術,2004 ( 10) : 22-23,26.

[9]林漢玲,方穎玨,王曉峰.密碼技術在Java類文件保護技術中的新應用[J].現代電子技術,2013,36 ( 3) : 102 -103.

[10]Partida A,Andina D.Applied cryptography in Java[C]/ / Security Technology,Proceedings.IEEE 33rd Annual 1999 International Carnahan Conference on,1999: 345-348.

[11]陳黎震.AES密碼算法的性能研究與實現[J].現代計算機:專業版,2012 ( 25) : 15-20.

Application of protecting Java class files based on hybrid cryptosystem

LIN Han-ling,WANG Xiao-feng,CHEN Xiao-bin,HU Xiang
( College of Mathematics&Computational Science,Shenzhen University,Shenzhen 518060,China)

Abstract:Based on traditional protecting Java class files,such as software tools,decompiling protection algorithm and API,a safer Java class file protection method is proposed by imbedding AES and RSA encryption algorithm into the code of Zip algorithms of Java virtual machine open-source,with the same security of AES and RSA.Our new technique solves the limitations of the traditional protection method.The experiment shows that the method is better and safer in protecting Java programs than traditional approaches.

Key words:Java program; decompilation; security; AES; RSA

作者簡介:林漢玲( 1978—),女,碩士,實驗師,應用數學專業,5571412@ qq. com。

基金項目:國家自然科學基金項目( 11126069) ;國家大學生創新訓練計劃項目( 0000221101)

收稿日期:2014-07-22

doi:10. 3969/j.issn. 1674-9057. 2015. 01. 033

文章編號:1674-9057( 2015) 01-0202-05

文獻標志碼:A

中圖分類號:TP311

引文格式:林漢玲,王曉峰,陳曉彬,等.一種基于混合密碼算法的Java類文件保護技術[J].桂林理工大學學報,2015,35 ( 1) : 202-206.

猜你喜歡
安全
智能家居安全分析
熱電公司發電機勵磁系統改造
科技視界(2016年21期)2016-10-17 20:00:16
淺談計算機硬件實驗室管理
科技視界(2016年20期)2016-09-29 11:59:36
中國民航HUD的應用和發展淺析
科技視界(2016年20期)2016-09-29 10:54:27
主站蜘蛛池模板: 青草视频免费在线观看| 亚洲侵犯无码网址在线观看| 免费不卡在线观看av| 国产在线无码一区二区三区| 九色综合伊人久久富二代| 亚欧成人无码AV在线播放| 亚洲第一页在线观看| 97超碰精品成人国产| 久久 午夜福利 张柏芝| 91在线一9|永久视频在线| 高潮毛片免费观看| 91精品情国产情侣高潮对白蜜| 潮喷在线无码白浆| 97在线视频免费观看| 国产精品开放后亚洲| 国产成人91精品免费网址在线| 在线va视频| 免费99精品国产自在现线| 中文字幕有乳无码| 亚洲欧美日韩视频一区| 欧美成人国产| a毛片在线播放| 亚洲欧美日韩中文字幕在线| 欧美亚洲一区二区三区在线| 亚洲最大情网站在线观看| 色老头综合网| 91精品国产无线乱码在线| 欧美亚洲一区二区三区导航| 欧美视频在线播放观看免费福利资源| 一本一本大道香蕉久在线播放| 成人午夜免费观看| 欧美激情伊人| 久久免费精品琪琪| 一本大道视频精品人妻 | 奇米影视狠狠精品7777| 高清欧美性猛交XXXX黑人猛交| 日韩av无码精品专区| 不卡午夜视频| 狠狠色狠狠色综合久久第一次| 成人在线观看一区| 九月婷婷亚洲综合在线| 强奷白丝美女在线观看 | 国产亚洲成AⅤ人片在线观看| 无码国产伊人| 91精品国产一区自在线拍| 这里只有精品在线| 天堂中文在线资源| 欧美亚洲综合免费精品高清在线观看 | 亚洲狠狠婷婷综合久久久久| 国产高颜值露脸在线观看| 日韩久久精品无码aV| 亚洲日韩久久综合中文字幕| 久久精品只有这里有| 中文字幕人成人乱码亚洲电影| 亚洲a级毛片| 尤物特级无码毛片免费| 国产精品刺激对白在线| 欧美激情视频一区二区三区免费| 日韩成人在线网站| 亚洲大学生视频在线播放| 国产女人18水真多毛片18精品| 国产在线观看一区精品| 全免费a级毛片免费看不卡| 无码专区在线观看| 欧美性猛交一区二区三区| 亚洲国产中文精品va在线播放| 爆操波多野结衣| 婷婷中文在线| 欧美A级V片在线观看| 亚洲综合在线最大成人| 中文字幕在线日韩91| 欧美成人第一页| 亚洲欧美综合在线观看| 国产成人成人一区二区| 97精品国产高清久久久久蜜芽| 日韩福利在线视频| 欧美成人精品在线| 国产精品无码AV片在线观看播放| 国产精品白浆无码流出在线看| 中文字幕自拍偷拍| 亚洲一级无毛片无码在线免费视频 | 国产视频a|