[發明專利]一種保護JAVA程序自身安全的方法在審
| 申請號: | 201410447116.X | 申請日: | 2014-09-04 |
| 公開(公告)號: | CN104200137A | 公開(公告)日: | 2014-12-10 |
| 發明(設計)人: | 何志平 | 申請(專利權)人: | 成都衛士通信息產業股份有限公司 |
| 主分類號: | G06F21/14 | 分類號: | G06F21/14 |
| 代理公司: | 成都九鼎天元知識產權代理有限公司 51214 | 代理人: | 詹永斌 |
| 地址: | 610041 四*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 保護 java 程序 自身 安全 方法 | ||
技術領域
本發明屬于密碼與信息安全技術領域,主要涉及一種保護JAVA程序自身安全的方法。
背景技術
JAVA?源代碼編譯后生成的是一種極易被反編譯的字節碼,而且反編譯后的代碼和源代碼幾乎沒有差別。因此一些重要的信息就有可能被非法獲取,甚至于篡改JAVA程序也變得非常簡單。因此保護JAVA程序自身的安全性就變得重要和必要。
以下為本發明所涉及的專業技術術語解釋。
JAVA:是一種跨平臺的面向對象解釋型程序設計語言,是由Sun?MicroSystems公司于1995年5月推出的Java程序設計語言和Java平臺(即JavaSE,?JavaEE,?JavaME)的總稱。
JAVA字節碼:由JAVA源代碼經過JAVA編譯工具編譯而成,它只能在JAVA虛擬機中運行。與C/C++以及匯編語言等語言編譯后的本地目標代碼不同,?Java字節碼中仍然保留了許多語義信息,如方法名稱、變量名稱、調用關系等。?這種字節碼極易被反編譯,而且反編譯后的代碼和源代碼幾乎沒有差別。
CLASS文件:存放JAVA字節碼的文件。
JVM:JAVA虛擬機,專門用于解釋和運行JAVA的字節碼。
JNI:指的是Java本地接口(Java?Native?Interface)。它是JDK的一部分,用于為Java提供本地代碼接口。JNI使得運行在JAVA虛擬機上的Java代碼能夠調用使用其它語言編寫的應用程序和庫。
JVMTI:Java虛擬機工具接口(JVM?Tool?Interface)是?Java?虛擬機所提供的本地編程接口,是?JVMPI(Java?Virtual?Machine?Profiler?Interface)和?JVMDI(Java?Virtual?Machine?Debug?Interface)的更新版本。利用的JVMTI客戶端可以監視JVM狀態及控制JVM執行過程。用戶可以通過JVM的agentLib參數向JVM注冊JVMTI客戶端。
散列算法:指一類單向密碼算法,即這類算法一個從明文件到密文件的不可逆的映射。只有加密過程,沒有解密過程,同時哈希算法可以將任意長度的輸入經過變換以后得到固定長度的輸出。哈希算法的這種單向特征和輸出數據長度因定的特征使得它可以生成消息或數據塊的“指紋”。因此在數據密碼協議、數字簽名、完整性認證等領域有著廣泛的應用。
SM2:非對稱密碼算法的一種,是由我國國家密碼管理局編制,并于2010年12月發布的商用算法。它比RSA算法更安全、運算速度也更快,在我國商用密碼體系中被用來替換RSA算法。
SM3:散列算法的一種,是由我國國家密碼管理局編制,并于在2010年12月發布的商用算法。用于密碼應用中的數字簽名和驗證、消息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需求。
SM4:對稱分組加密算法的一種,由我國國家密碼管理局編制,并于2012年3月發布的商用算法。該算法的分組長度為128比特,密鑰長度為128比特。加密算法與密鑰擴展算法都采用32輪非線性迭代結構。解密算法與加密算法的結構相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆順。
發明內容
為解決上述問題,本發明提供了一種保護JAVA程序自身安全的方法包含如下步驟:
步驟1:將JAVA源程序編譯為結構化CLASS文件;
步驟2:對結構化CLASS文件進行簽名和加密。將JAVA標準的結構化CLASS文件轉換為密文CLASS文件;
步驟3:?對密文CLASS文件進行解密得到結構化CLASS文件;
步驟4:對結構化CLASS文件進行簽名驗證,簽名通過驗證時JAVA字節碼被送到JVM中運行。
進一步的,所述步驟1具體為:用SM2算法和SM3算法對JAVA程序的字節碼文件進行簽名,將簽名值和CLASS文件按照固定格式合并到一個文件中,得到結構化CLASS文件。
進一步的,所述步驟2采用SM4算法對CLASS文件進行加密。
進一步的,所述步驟3采用SM4算法對密文CLASS進行解密得到結構化CLASS文件。
進一步的,所述步驟4具體為:從結構化CLASS文件中取出簽名值和JAVA字節碼進行簽名驗證,只有簽名通過驗證時JAVA字節碼才會被送到JVM中運行。
進一步的,步驟4中,沒有通過簽名驗證的結構化CLASS文件被禁止在JVM中運行并記錄程序已被篡改的告警日志信息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于成都衛士通信息產業股份有限公司;,未經成都衛士通信息產業股份有限公司;許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410447116.X/2.html,轉載請聲明來源鉆瓜專利網。





