倉業金
(江蘇省宿遷經貿高等職業技術學校,江蘇沭陽 223600)
在當前Java軟件全面推廣環境下,讓軟件開發思路和方式發生一定變化,加快軟件開發步伐,同時憑借自身可移植性,在軟件產品開發設計中全面普及和推廣。隨著Java軟件的快速發展,讓人們的生活方式和工作模式產生改變,給人們生活和工作提供便利條件。并且,Java軟件技術的快速發展,有效增強國家綜合競爭實力,有利于國家更好發展。但是因為Java軟件自身具備開放性特點,給Java軟件知識產權保護提出一定考驗。通過對Java軟件技術的分析與探究,找到Java軟件技術中存在的問題,通過優化Java軟件技術,改善當前Java軟件知識產權保護狀況,以維護軟件開發公司及相關人員自身利益。
Java語言是Sun公司研發的一種全新編程語言,展現出簡單、跨平臺等編程語言特點。在這些特點下,Java語言吸引了許多公司的注意。當開發人員對Java語言開發設計過程中,他們會讓Java語言在不同設備和平臺中運行,除了一些高新技術人員之外,Java被廣泛應用的主要原因在于開發模式比較完善,開發大量資源。在Java語言作用下,轉變以往軟件開發模式,給軟件開發行業運營發展提供新的方向[1]。結合目前情況,Java軟件在各個行業中得到了廣泛應用,有利于推動信息技術的改革發展。
Java語言可以在平臺上獨立運行,這是一種面向對象的操作。用戶可以結合實際情況和要求設計和操作動態圖片。Java語言具備穩定性特征,配備了多線程、內置驗證器和其他設備,以避免受到病毒的攻擊。由于Java具備諸多優勢,當它用于互聯網中軟件研發時,得到了用戶認可與支持。Java語言的優點為操作簡單、面向對象多、自動存儲、分布式計算、運行更加安全等。
在Java編譯期間,變量和方法等符號的應用不會轉變成數字引用,程序執行期間的內存狀態也不會被精準界定。相反,這些符號的參考信息保存在類文件中,解釋器在運行中實現內存布局,之后通過查找表確定變量或方法的地址。Java源代碼和C/C++源代碼比較有著明顯差異,其無法編譯成二進制機器代碼,編譯Java源代碼會自動形成中間字節碼,是一種獨立于平臺的源代碼表示。字節碼可以在加載后進行解釋或編譯,容易造成高級編程語言和底層機器代碼之間的兩步轉換。在這種模式下,通過反編譯Java字節碼獲得的源代碼更加合理。在字節碼攜帶源文件中,能夠獲得所需的各種信息,即便注釋可能已經丟失,但是各種變量和邏輯參數基本保存,因為字節碼并非最底層的機械語言,所以代碼格式和源代碼之間存在相似性[2]。
Java類文件并非二進制文件,屬于一個具備格式化的中間代碼,在這種情況下,給反編譯的Java類文件形成提供有利條件。對于反編譯的代碼展現出較強的應用價值,可以展現出編寫者設計方向。基于此,軟件開發公司和設計人員需要把更多時間和精力放在編寫源代碼上,無暇顧及編碼的安全保護,容易受到不法人員和病毒的攻擊,使得軟件被泄露。所以,在使用Java類文件時,保密性不強,Java軟件的知識產權保護方面伴隨一些風險。
Java本地化指的是把Java應用程序編譯成本地應用程序,讓反編譯難度不斷提高,實現對Java軟件的安全保護。在具體追蹤過程中,需要認真編制Java源代碼,之后在Java編譯器的作用下,把Java源代碼進行編譯處理,形成Java類文件,之后在本地編譯器下把Java類文件主動編譯成二進制適合本機使用的程序。本地化技術雖然可以實現對Java類文件的安全保護,可以實現和傳統C/C++開發軟件一樣的安全保護,但是其不能對一些比較復雜的軟件進行安全保護,如B/S結構應用軟件。并且,在Java本地化處理過程中,要求精準判斷和定位本機編譯形成的Java應用程序,操作難度大。雖然當前其發展相對不完善,但是在Java領域中應用廣泛,通過理論和實踐探究,針對部分應用軟件和環境,本地化技術是一個比較優秀的應用方式[3]。
分布式體系結構作為當前軟件設計開發中比較常見的一種體系結構,一般會把軟件劃分為兩個結構,一個是服務器端,另一個是客戶端,重點在于功能模板與業務流程均設計在服務器端,給客戶端提供相應的服務,便于客戶端及時獲得所需的信息,接收服務申請,便于和服務器端信息交流,這種體系結構的應用,可以促進系統可移植性及操作性的提升,有效地節約軟件開發設計成本。在遠程接口訪問技術的作用下,實現對Java類文件的安全保護,以提高軟件運行安全性,但是這種方式在實際應用中存在一些局限性,伴隨一系列風險。在使用遠程接口訪問技術中,實際上是把保護的重點由之前重要Java類文件轉變成應用服務器,這種體系結構可以幫助相關部門構建一套專業的安全管理體系,實現對端口的安全保護。由于使用的服務器被不法人員攻擊,則其他部署在服務器的服務模板和類文件將會被攻擊者獲取,引發的后果將是難以想象的。遠程維護控制系統見圖1。

圖1 遠程維護控制系統
軟件數字水印作為諸多數字水印中的一部分,其目的是對計算機的代碼進行安全保護,其中包含了機器代碼以及源代碼,能夠有效避免或減少非法復制和非法篡改的風險。因為計算機代碼是不可以出現任何錯誤的,所以,一些通過在允許錯誤范圍內對計算機程序進行調整來嵌入水印的傳統方法將不適合應用在當前計算機軟件中。軟件數字水印技術在應用方面也會存在一些問題,如需要加入其他代碼,認真編寫函數及其調用,防止被一些專業能力強的反編譯人員破解,消除水印。此外,靜態軟件數字水印算法不具備較強的穩定性,而動態軟件數字水印算法則展現出良好的穩定性,但是其只能對某個應用程序進行安全保護,則無法實現對某個部分特定代碼的安全保護。并且,動態軟件數字水印檢測方式容易受到部分應用因素的限制,當前水印算法在提供版權證明上可能會存在一些不足,所以需要找到一些能夠提供比較穩定版權保護的軟件數字水印算法,這也是當前相關部門重點關注的內容。數字水印框架見圖2。

圖2 數字水印框架
代碼混淆是一種成熟且應用廣泛的軟件保護技術,在代碼混淆技術的作用下,可以實現對類文件代碼語義、程序流程以及邏輯結構進行重組,不會讓反編譯難度提高。通過反編譯器,能夠反編譯模糊的類文件,并且獲取代碼。然而,這種情況下獲得的代碼為模糊代碼,其可讀性將無法保證,從代碼中很難找到源代碼的編寫思路和重要計算方式,實現對軟件的安全保護。模糊處理安全性比較高,能夠保留應用程序。然而,在部分情況下,混淆程序執行的轉換可能會給程序正常運行帶來一定影響,例如,動態類加載、反射、序列化和違反命名約定等問題。雖然這些問題發生率比較低,一旦出現,將會給程序正常運行產生影響[4]。此外,在使用混淆技術過程中,讓維護應用程序和故障排除難度不斷加大,甚至無法獲得理想的工作效果。Java異常事件處理作為一個隔離存在缺陷代碼的處理方式,通過查詢和跟蹤,找到代碼問題產生的原因和具體位置,混淆程序能夠嚴禁這種狀況出現,讓調試變得更加困難,開發人員只能看到模糊處理的類名稱,不能看到真實的類名稱和編號。
通過調查發現,Java類文件在結構方面和其他語言比較,有著明顯差異,不法人員可以通過反編譯方式獲得Java軟件源代碼,給Java軟件技術安全埋下隱患。近幾年,Java軟件開發企業和人員通過各種方式實現對Java類文件的安全保護。對于Java來說,展現出的跨平臺特點是根據獨有編譯方式發展而來,Java源代碼通過編譯以后,形成一個虛擬化的Java類文件,并非面對處理器的二進制文件。類文件作為特有格式的中間代碼,其將源代碼中大多數信息進行保存,給反編譯Java類文件提供數據參考。而反編譯的代碼具備較強的使用價值,能夠真實展現出開發者的設計思路。所以,Java軟件在知識產權保護方面伴隨一定風險性,可能會讓不法人員通過各種方式獲取。
因為Java被盜概率比較高,近幾年,大部分Java軟件開發企業及相關部門加強對Java類文件以及虛擬機的研發設計,同時也進一步探討各種方式實現對Java類文件的安全保護。例如,本地化技術、代碼隔離技術、代碼混淆技術等,這些技術在某種程度上可以實現對Java軟件的安全保護,到那時其在不同程度上也會出現出各種問題。因為當前的Java軟件保護方式存在一些問題,筆者從Java虛擬機類加載機制角度入手,根據現代密碼學的加密體制、密鑰分存和信息隱藏等相關知識,研發了一種全新的Java軟件保護方式,也就是類文件加密保護,這種保護技術在操作上更加簡單,具體操作思路有以下幾點:
第一,通過加密碼方式實現對Java類文件安全保護。在采用密碼方式以后,能夠促進抵抗反翻譯能力的提升,加密碼系統的核心問題就是采用哪種方式來對密鑰進行管理,在本次探究中,主要是把密鑰分存技術和信息隱蔽技術進行結合,實現對密鑰的安全保護。
第二,Java軟件開發人員在初步設計過程中,應重點分析Java軟件運行環境問題,所以在使用Java軟件過程中,要求用戶結合Java軟件運行要求,安裝類加載器,用戶通過使用C lassloader實現對Java軟件的特定操作。例如,在互聯網技術的作用下,獲得類文件,并對類文件來源進行考察和驗收[5]。
第三,這種保護方式應提供密鑰和解密計算方式,但是系統無法對這些算法加密處理,反之可能會形成一個惡性循環,但是具體算法應得到用戶的保護。所以,開發設計人員需要使用C++語言來對算法加密處理,編譯成本地的動態鏈接庫文件,從而具備反編譯的抵抗能力,能夠和其他文件相互結合,實現對Java軟件的安全保護。這種Java軟件保護方式不斷具備較強的安全性,同時也能通用,可以在單機應用軟件中發揮實際價值,并在網絡應用軟件中應用。和其他保護方式比較,這種保護方式在一定范疇內實現對Java軟件跨平臺保護,把這種類文件加密保護方式研發成一種加密技術,應用更加便利,展現出較強的效率性。
通過對Java體系和Java類文件的調查分析,開發人員需要從多角度入手,分析諸多和Java軟件相關的保護方式,這些方式在某種程度上可以實現對Java類文件的安全保護,但是也伴隨一些風險問題和漏洞。在軟件保護中,保護重點內容在于Java軟件創新和計算方法,這些方式出現在類文件中,只有確保這些內容不會受到不法人員的攻擊和盜取,能夠確保Java軟件運行安全。加密類文件的安全保護采用的密碼學是通過對數學算法的分析,將密碼轉換成不利于理解的文字,或者將原本無法理解的文字轉變成人們能夠理解的文字。通過使用密碼學技術將Java類文件中重要信息進行加密保護,將信息安全傳遞,只有掌握密鑰的用戶才能獲得文件中信息。
總而言之,從目前情況來說,相關部門已經研發出諸多關于Java軟件安全保護的方式和對策,在某種程度上實現了Java軟件的保護,但是這些方式在應用中存在一些缺陷和不足。Java軟件的知識產權保護問題可能會受到一些考驗,大部分軟件開發企業和人員投入大量資金與資源,依然會出現軟件被入侵的狀況,一些重要算法和設計思路被盜取。基于此,加強Java軟件保護方法探究非常迫切。