倉業(yè)金
(江蘇省宿遷經(jīng)貿(mào)高等職業(yè)技術學校,江蘇沭陽 223600)
在當前Java軟件全面推廣環(huán)境下,讓軟件開發(fā)思路和方式發(fā)生一定變化,加快軟件開發(fā)步伐,同時憑借自身可移植性,在軟件產(chǎn)品開發(fā)設計中全面普及和推廣。隨著Java軟件的快速發(fā)展,讓人們的生活方式和工作模式產(chǎn)生改變,給人們生活和工作提供便利條件。并且,Java軟件技術的快速發(fā)展,有效增強國家綜合競爭實力,有利于國家更好發(fā)展。但是因為Java軟件自身具備開放性特點,給Java軟件知識產(chǎn)權保護提出一定考驗。通過對Java軟件技術的分析與探究,找到Java軟件技術中存在的問題,通過優(yōu)化Java軟件技術,改善當前Java軟件知識產(chǎn)權保護狀況,以維護軟件開發(fā)公司及相關人員自身利益。
Java語言是Sun公司研發(fā)的一種全新編程語言,展現(xiàn)出簡單、跨平臺等編程語言特點。在這些特點下,Java語言吸引了許多公司的注意。當開發(fā)人員對Java語言開發(fā)設計過程中,他們會讓Java語言在不同設備和平臺中運行,除了一些高新技術人員之外,Java被廣泛應用的主要原因在于開發(fā)模式比較完善,開發(fā)大量資源。在Java語言作用下,轉(zhuǎn)變以往軟件開發(fā)模式,給軟件開發(fā)行業(yè)運營發(fā)展提供新的方向[1]。結合目前情況,Java軟件在各個行業(yè)中得到了廣泛應用,有利于推動信息技術的改革發(fā)展。
Java語言可以在平臺上獨立運行,這是一種面向?qū)ο蟮牟僮?。用戶可以結合實際情況和要求設計和操作動態(tài)圖片。Java語言具備穩(wěn)定性特征,配備了多線程、內(nèi)置驗證器和其他設備,以避免受到病毒的攻擊。由于Java具備諸多優(yōu)勢,當它用于互聯(lián)網(wǎng)中軟件研發(fā)時,得到了用戶認可與支持。Java語言的優(yōu)點為操作簡單、面向?qū)ο蠖唷⒆詣哟鎯?、分布式計算、運行更加安全等。
在Java編譯期間,變量和方法等符號的應用不會轉(zhuǎn)變成數(shù)字引用,程序執(zhí)行期間的內(nèi)存狀態(tài)也不會被精準界定。相反,這些符號的參考信息保存在類文件中,解釋器在運行中實現(xiàn)內(nèi)存布局,之后通過查找表確定變量或方法的地址。Java源代碼和C/C++源代碼比較有著明顯差異,其無法編譯成二進制機器代碼,編譯Java源代碼會自動形成中間字節(jié)碼,是一種獨立于平臺的源代碼表示。字節(jié)碼可以在加載后進行解釋或編譯,容易造成高級編程語言和底層機器代碼之間的兩步轉(zhuǎn)換。在這種模式下,通過反編譯Java字節(jié)碼獲得的源代碼更加合理。在字節(jié)碼攜帶源文件中,能夠獲得所需的各種信息,即便注釋可能已經(jīng)丟失,但是各種變量和邏輯參數(shù)基本保存,因為字節(jié)碼并非最底層的機械語言,所以代碼格式和源代碼之間存在相似性[2]。
Java類文件并非二進制文件,屬于一個具備格式化的中間代碼,在這種情況下,給反編譯的Java類文件形成提供有利條件。對于反編譯的代碼展現(xiàn)出較強的應用價值,可以展現(xiàn)出編寫者設計方向。基于此,軟件開發(fā)公司和設計人員需要把更多時間和精力放在編寫源代碼上,無暇顧及編碼的安全保護,容易受到不法人員和病毒的攻擊,使得軟件被泄露。所以,在使用Java類文件時,保密性不強,Java軟件的知識產(chǎn)權保護方面伴隨一些風險。
Java本地化指的是把Java應用程序編譯成本地應用程序,讓反編譯難度不斷提高,實現(xiàn)對Java軟件的安全保護。在具體追蹤過程中,需要認真編制Java源代碼,之后在Java編譯器的作用下,把Java源代碼進行編譯處理,形成Java類文件,之后在本地編譯器下把Java類文件主動編譯成二進制適合本機使用的程序。本地化技術雖然可以實現(xiàn)對Java類文件的安全保護,可以實現(xiàn)和傳統(tǒng)C/C++開發(fā)軟件一樣的安全保護,但是其不能對一些比較復雜的軟件進行安全保護,如B/S結構應用軟件。并且,在Java本地化處理過程中,要求精準判斷和定位本機編譯形成的Java應用程序,操作難度大。雖然當前其發(fā)展相對不完善,但是在Java領域中應用廣泛,通過理論和實踐探究,針對部分應用軟件和環(huán)境,本地化技術是一個比較優(yōu)秀的應用方式[3]。
分布式體系結構作為當前軟件設計開發(fā)中比較常見的一種體系結構,一般會把軟件劃分為兩個結構,一個是服務器端,另一個是客戶端,重點在于功能模板與業(yè)務流程均設計在服務器端,給客戶端提供相應的服務,便于客戶端及時獲得所需的信息,接收服務申請,便于和服務器端信息交流,這種體系結構的應用,可以促進系統(tǒng)可移植性及操作性的提升,有效地節(jié)約軟件開發(fā)設計成本。在遠程接口訪問技術的作用下,實現(xiàn)對Java類文件的安全保護,以提高軟件運行安全性,但是這種方式在實際應用中存在一些局限性,伴隨一系列風險。在使用遠程接口訪問技術中,實際上是把保護的重點由之前重要Java類文件轉(zhuǎn)變成應用服務器,這種體系結構可以幫助相關部門構建一套專業(yè)的安全管理體系,實現(xiàn)對端口的安全保護。由于使用的服務器被不法人員攻擊,則其他部署在服務器的服務模板和類文件將會被攻擊者獲取,引發(fā)的后果將是難以想象的。遠程維護控制系統(tǒng)見圖1。
圖1 遠程維護控制系統(tǒng)
軟件數(shù)字水印作為諸多數(shù)字水印中的一部分,其目的是對計算機的代碼進行安全保護,其中包含了機器代碼以及源代碼,能夠有效避免或減少非法復制和非法篡改的風險。因為計算機代碼是不可以出現(xiàn)任何錯誤的,所以,一些通過在允許錯誤范圍內(nèi)對計算機程序進行調(diào)整來嵌入水印的傳統(tǒng)方法將不適合應用在當前計算機軟件中。軟件數(shù)字水印技術在應用方面也會存在一些問題,如需要加入其他代碼,認真編寫函數(shù)及其調(diào)用,防止被一些專業(yè)能力強的反編譯人員破解,消除水印。此外,靜態(tài)軟件數(shù)字水印算法不具備較強的穩(wěn)定性,而動態(tài)軟件數(shù)字水印算法則展現(xiàn)出良好的穩(wěn)定性,但是其只能對某個應用程序進行安全保護,則無法實現(xiàn)對某個部分特定代碼的安全保護。并且,動態(tài)軟件數(shù)字水印檢測方式容易受到部分應用因素的限制,當前水印算法在提供版權證明上可能會存在一些不足,所以需要找到一些能夠提供比較穩(wěn)定版權保護的軟件數(shù)字水印算法,這也是當前相關部門重點關注的內(nèi)容。數(shù)字水印框架見圖2。
圖2 數(shù)字水印框架
代碼混淆是一種成熟且應用廣泛的軟件保護技術,在代碼混淆技術的作用下,可以實現(xiàn)對類文件代碼語義、程序流程以及邏輯結構進行重組,不會讓反編譯難度提高。通過反編譯器,能夠反編譯模糊的類文件,并且獲取代碼。然而,這種情況下獲得的代碼為模糊代碼,其可讀性將無法保證,從代碼中很難找到源代碼的編寫思路和重要計算方式,實現(xiàn)對軟件的安全保護。模糊處理安全性比較高,能夠保留應用程序。然而,在部分情況下,混淆程序執(zhí)行的轉(zhuǎn)換可能會給程序正常運行帶來一定影響,例如,動態(tài)類加載、反射、序列化和違反命名約定等問題。雖然這些問題發(fā)生率比較低,一旦出現(xiàn),將會給程序正常運行產(chǎn)生影響[4]。此外,在使用混淆技術過程中,讓維護應用程序和故障排除難度不斷加大,甚至無法獲得理想的工作效果。Java異常事件處理作為一個隔離存在缺陷代碼的處理方式,通過查詢和跟蹤,找到代碼問題產(chǎn)生的原因和具體位置,混淆程序能夠嚴禁這種狀況出現(xiàn),讓調(diào)試變得更加困難,開發(fā)人員只能看到模糊處理的類名稱,不能看到真實的類名稱和編號。
通過調(diào)查發(fā)現(xiàn),Java類文件在結構方面和其他語言比較,有著明顯差異,不法人員可以通過反編譯方式獲得Java軟件源代碼,給Java軟件技術安全埋下隱患。近幾年,Java軟件開發(fā)企業(yè)和人員通過各種方式實現(xiàn)對Java類文件的安全保護。對于Java來說,展現(xiàn)出的跨平臺特點是根據(jù)獨有編譯方式發(fā)展而來,Java源代碼通過編譯以后,形成一個虛擬化的Java類文件,并非面對處理器的二進制文件。類文件作為特有格式的中間代碼,其將源代碼中大多數(shù)信息進行保存,給反編譯Java類文件提供數(shù)據(jù)參考。而反編譯的代碼具備較強的使用價值,能夠真實展現(xiàn)出開發(fā)者的設計思路。所以,Java軟件在知識產(chǎn)權保護方面伴隨一定風險性,可能會讓不法人員通過各種方式獲取。
因為Java被盜概率比較高,近幾年,大部分Java軟件開發(fā)企業(yè)及相關部門加強對Java類文件以及虛擬機的研發(fā)設計,同時也進一步探討各種方式實現(xiàn)對Java類文件的安全保護。例如,本地化技術、代碼隔離技術、代碼混淆技術等,這些技術在某種程度上可以實現(xiàn)對Java軟件的安全保護,到那時其在不同程度上也會出現(xiàn)出各種問題。因為當前的Java軟件保護方式存在一些問題,筆者從Java虛擬機類加載機制角度入手,根據(jù)現(xiàn)代密碼學的加密體制、密鑰分存和信息隱藏等相關知識,研發(fā)了一種全新的Java軟件保護方式,也就是類文件加密保護,這種保護技術在操作上更加簡單,具體操作思路有以下幾點:
第一,通過加密碼方式實現(xiàn)對Java類文件安全保護。在采用密碼方式以后,能夠促進抵抗反翻譯能力的提升,加密碼系統(tǒng)的核心問題就是采用哪種方式來對密鑰進行管理,在本次探究中,主要是把密鑰分存技術和信息隱蔽技術進行結合,實現(xiàn)對密鑰的安全保護。
第二,Java軟件開發(fā)人員在初步設計過程中,應重點分析Java軟件運行環(huán)境問題,所以在使用Java軟件過程中,要求用戶結合Java軟件運行要求,安裝類加載器,用戶通過使用C lassloader實現(xiàn)對Java軟件的特定操作。例如,在互聯(lián)網(wǎng)技術的作用下,獲得類文件,并對類文件來源進行考察和驗收[5]。
第三,這種保護方式應提供密鑰和解密計算方式,但是系統(tǒng)無法對這些算法加密處理,反之可能會形成一個惡性循環(huán),但是具體算法應得到用戶的保護。所以,開發(fā)設計人員需要使用C++語言來對算法加密處理,編譯成本地的動態(tài)鏈接庫文件,從而具備反編譯的抵抗能力,能夠和其他文件相互結合,實現(xiàn)對Java軟件的安全保護。這種Java軟件保護方式不斷具備較強的安全性,同時也能通用,可以在單機應用軟件中發(fā)揮實際價值,并在網(wǎng)絡應用軟件中應用。和其他保護方式比較,這種保護方式在一定范疇內(nèi)實現(xiàn)對Java軟件跨平臺保護,把這種類文件加密保護方式研發(fā)成一種加密技術,應用更加便利,展現(xiàn)出較強的效率性。
通過對Java體系和Java類文件的調(diào)查分析,開發(fā)人員需要從多角度入手,分析諸多和Java軟件相關的保護方式,這些方式在某種程度上可以實現(xiàn)對Java類文件的安全保護,但是也伴隨一些風險問題和漏洞。在軟件保護中,保護重點內(nèi)容在于Java軟件創(chuàng)新和計算方法,這些方式出現(xiàn)在類文件中,只有確保這些內(nèi)容不會受到不法人員的攻擊和盜取,能夠確保Java軟件運行安全。加密類文件的安全保護采用的密碼學是通過對數(shù)學算法的分析,將密碼轉(zhuǎn)換成不利于理解的文字,或者將原本無法理解的文字轉(zhuǎn)變成人們能夠理解的文字。通過使用密碼學技術將Java類文件中重要信息進行加密保護,將信息安全傳遞,只有掌握密鑰的用戶才能獲得文件中信息。
總而言之,從目前情況來說,相關部門已經(jīng)研發(fā)出諸多關于Java軟件安全保護的方式和對策,在某種程度上實現(xiàn)了Java軟件的保護,但是這些方式在應用中存在一些缺陷和不足。Java軟件的知識產(chǎn)權保護問題可能會受到一些考驗,大部分軟件開發(fā)企業(yè)和人員投入大量資金與資源,依然會出現(xiàn)軟件被入侵的狀況,一些重要算法和設計思路被盜取?;诖?,加強Java軟件保護方法探究非常迫切。