精品国产一区二区三区国产区,亚洲精品国产高清一线久久,国产精品一卡2卡三卡4卡,无码免费中文字幕视频

在線客服

服務(wù)熱線

聯(lián)系我們:

029-82249456

關(guān)注微信

返回頂部

全國服務(wù)熱線

029-82249456

您的位置:首頁 > 解決方案 > 克服Java代碼篡改、逆向工程和盜竊漏洞

克服Java代碼篡改、逆向工程和盜竊漏洞

如今,越來越多的開發(fā)人員選擇Java平臺作為首選的開源開發(fā)環(huán)境,通過這種平臺可以直接使用可公開獲得的.class文件格式和簡單的指令集。使用開放源碼方法有許多優(yōu)點,但這樣編寫的代碼對于窺探是完全透明的。對于已開發(fā)軟件中經(jīng)過多年時間和投資形成的公司知識產(chǎn)權(quán)(IP),其屏障因此變得公開了。

Java開放源碼風(fēng)險和弱點 

  • JVM是免費的 - 黑客可以使用商業(yè)反匯編程序查看代碼,弄清JVM的工作方式 - 代碼變得完全透明 

  • Java .class是可公開獲取的 - 黑客可使用簡單的可用工具處理、修改或轉(zhuǎn)換.class文件

  • 更少的本機代碼指令 - 黑客現(xiàn)在使用更少的指令(200而不是400),可以更快地分析代碼以進行逆向工程

  • 更好控制 - 黑客不需要深入到特定的硬件級別,可以更容易地查看和分析數(shù)據(jù)

執(zhí)行摘要

由于具有平臺獨立性,Java環(huán)境越來越受到開發(fā)人員的歡迎。然而,Java的開源代碼、可公開獲取的.class文件格式和簡單的指令集使其暴露于窺探和敵對分析之下。隨著各機構(gòu)將它們的商業(yè)應(yīng)用程序轉(zhuǎn)向Java技術(shù),其關(guān)鍵知識產(chǎn)權(quán)變得易于遭受逆向工程、篡改和盜竊。目前,源代碼和字節(jié)碼級別的.class文件加密和混淆是開發(fā)人員用于阻止逆向工程的兩個主要措施,但漏洞仍然存在。

本內(nèi)容探討了Java代碼漏洞的性質(zhì),現(xiàn)有解決方案的局限性,以及結(jié)合混淆與加密的Java代碼全面封裝如何成為保護關(guān)鍵算法和其它知識產(chǎn)權(quán)的理想解決方案。

Java應(yīng)用程序正變得越來越普遍

如今,全世界的IT公司都在一定程度上接受了Java?,F(xiàn)在有無數(shù)的產(chǎn)品使用Java編寫并用于Java平臺,而不是Windows或UNIX平臺。與其它編程語言相比,Java最重要的優(yōu)點是平臺獨立性 - 這意味著它幾乎可以在任何體系結(jié)構(gòu)和操作系統(tǒng)上運行。Java并不將應(yīng)用程序綁定到特定的硬件體系結(jié)構(gòu)(如Intel或PowerPC),而是對所有體系結(jié)構(gòu)都使用單一的代碼庫。軟件開發(fā)人員先以使用預(yù)定義Java API軟件包的Java語言編寫程序, 然后使用Java編譯器來編譯這些程序。其成果是可在Java虛擬機(JVM)上執(zhí)行的已編譯字節(jié)碼,Java虛擬機是用于執(zhí)行Java程序的軟件環(huán)境(如Java Runtime Environment)。用戶僅在擁有JVM時才能運行Java程序;但許多平臺都有JVM,這使得Java成為一種高度可移植語言。

Java極易遭受逆向工程

雖然能夠“編寫一次,隨處運行”(Write Once, Run Anywhere)是一個巨大的優(yōu)勢,但這種環(huán)境的架構(gòu)方式使其遠比本機應(yīng)用程序更容易被黑客進行逆向工程。這意味著開發(fā)人員面臨著失去知識產(chǎn)權(quán)的非常真實的危險?;趹?yīng)用程序的虛擬機比本機應(yīng)用程序更容易逆向工程的原因有很多:

JVM是開源的

Sun已經(jīng)免費提供JVM的源代碼。這使得黑客只需查看代碼即可弄清虛擬機的工作方式。

Java .class文件格式是可公開獲取的

如前所述,Java源代碼被編譯成字節(jié)碼,而字節(jié)碼存儲在Java .class文件中。Java .class文件格式的規(guī)范是可公開獲取的,因此有技術(shù)背景的任何人都能容易地編寫可以處理、修改或轉(zhuǎn)換.class文件的工具。

JVM是軟件,而不是硬件

與需要理解特定處理器的專家使用的標(biāo)準(zhǔn)編程語言不同,JVM是一個應(yīng)用程序,它如同微處理器一樣運作,并使用操作系統(tǒng)和計算機硬件提供的內(nèi)置功能。由于黑客不必深入到硬件級別,因此更容易取得對JVM的完全控制。

因此,例如在使用標(biāo)準(zhǔn)本機系統(tǒng)開發(fā)語言進行調(diào)試時,暫停處理器極為困難,需要具備處理器、調(diào)試功能及可用環(huán)調(diào)試器的專家知識。但是,由于JVM運行環(huán)境的源代碼是可公開獲取的,因此開發(fā)人員可以輕松地建立自己的虛擬機來完全控制虛擬處理器的各個方面。這樣可以容易地分析運行環(huán)境中運行的每個應(yīng)用程序。

Java的指令比本機代碼少

然而,JVM代碼易于進行反向工程的另一個原因是它具有比本地應(yīng)用程序更少的指令。這是出于性能考慮。JVM的使用在應(yīng)用程序和本機處理器之間增加了一個軟件層,這會對性能產(chǎn)生負面影響。雖然現(xiàn)代處理器不斷提高的執(zhí)行速度最終將緩解這一問題,但這一問題仍然很明顯。虛擬機開發(fā)人員提高執(zhí)行速度的一種方法是使用比本機處理器匯編程序更小的字節(jié)碼指令集。本機應(yīng)用程序可能包含多達400條指令,而Java應(yīng)用程序通常使用不超過200條的指令。更少的指令意味著黑客可以更快地分析代碼以進行逆向工程。

這些特性使得虛擬機遠比其它類型的應(yīng)用程序更容易遭受逆向工程攻擊。

第三方反匯編程序增加了漏洞

不僅是JVM本身容易遭受逆向工程攻擊,商業(yè)和免費的Java字節(jié)碼反匯編程序也越來越多,從而進一步簡化了代碼逆向工程的過程。

IDA和Eclipse字節(jié)碼插件是眾多Java字節(jié)碼反匯編程序中的兩種。作為商業(yè)產(chǎn)品,IDA是一種普遍的反匯編程序,可用于許多不同的處理器,包括80x86和MIPS。Eclipse字節(jié)碼插件是免費軟件。它能夠反編譯Java .class文件的字節(jié)碼并以適當(dāng)?shù)捻樞蝻@示所有操作碼指令。

盡管這些產(chǎn)品不大可能從字節(jié)碼完美地恢復(fù)原始代碼,但它們恢復(fù)的源代碼將等同于原始代碼,并且比字節(jié)碼更具可讀性。一旦恢復(fù)了源代碼,攻擊者可以容易地刪除部分代碼并將其非法地用于競爭對手的應(yīng)用程序中,或在.class文件中定位打補丁。

為什么板載措施不足以防止逆向工程

大多數(shù)虛擬機都包含一些使逆向工程復(fù)雜化的功能。Java允許用戶在JAR存檔中提供的每個類上設(shè)置一個數(shù)字證書,以確保原始文件沒有被更改。雖然這樣做并無害處,但該功能相當(dāng)容易清除,并且僅針對靜態(tài)補丁方法提供保護,而靜態(tài)補丁只是攻擊場景中的一小部分。而且,這種方法并不能針對運行時應(yīng)用于內(nèi)存的補丁提供保護。

Java還通過虛擬機執(zhí)行字節(jié)碼驗證器,該驗證器在執(zhí)行通過的字節(jié)碼之前對其進行自動分析。這可以防止執(zhí)行“奇怪”的代碼,也使字節(jié)碼注入變得更加困難。

然而,盡管這些措施給攻擊者造成了困難,但對于充分保護知識產(chǎn)權(quán)還遠遠不夠。

防止逆向工程攻擊

開發(fā)人員通常用以防止.class文件靜態(tài)分析和字節(jié)碼反匯編的一種方法是封裝,這種方法通過應(yīng)用加密/解密完整文件來防止對類文件的分析。通過封裝,開發(fā)人員將受保護文件的原始加載器更換為處理加密/解密的自定義加載器。加密使用將.class文件從標(biāo)準(zhǔn)Java .class格式更改為僅“密鑰”所有者可讀格式的算法來防止對這些文件的分析。然而,.class文件的字節(jié)碼在一個內(nèi)存位置中仍保持可讀,在系統(tǒng)加載器嘗試加載該類之前的時刻,通常可從該位置訪問字節(jié)碼。如果黑客能夠找到那個內(nèi)存位置,就可以訪問原始狀態(tài)的該類。

防止黑客攻擊該內(nèi)存位置需要第二種技術(shù),稱為混淆?;煜僧a(chǎn)生一個更加復(fù)雜、難于理解并且與原始代碼具有相同行為方式的代碼版本。下面是一個簡單的80x86匯編程序代碼段,取自Windows二進制代碼。

Sentinel:一種更簡便的封裝方式

SENTINEL LDK Envelope是一個自動文件包裝器,通過文件加密和本機代碼混淆提供針對軟件逆向工程的強有力保護。這確保了嵌入軟件中的算法、商業(yè)秘密和專業(yè)知識對于黑客是安全的。SENTINEL LDK通過將Java應(yīng)用程序重新關(guān)聯(lián)到硬件平臺,提供了高度安全的知識產(chǎn)權(quán)保護。這迫使攻擊者在破解受保護的Java應(yīng)用程序時不僅需要對Java應(yīng)用程序進行逆向工程,還需要對本機代碼進行逆向工程。因此,攻擊者必須更加富有經(jīng)驗才能破解已封裝的Java代碼。

SENTINEL LDK為受保護應(yīng)用程序與保護密鑰之間的通信提供安全通道,從而消除了中間人攻擊。Java Envelope使用這種能力來防止黑客通過截取通信訪問保護密鑰發(fā)回的數(shù)據(jù)。

由于SENTINEL LDK是按請求在運行時解密文件,而不是一次將所有.class文件加載到虛擬機,因此可以防止黑客重建整個應(yīng)用程序。

Sentinel Envelope 特性和優(yōu)點

  • 文件自動包裝器 - 通過文件加密和本機代碼混淆提供強有力的保護來防止軟件逆向工程

  • 將應(yīng)用程序重新關(guān)聯(lián)到硬件 - 應(yīng)用程序通過保護密鑰與與硬件緊密結(jié)合

  • 安全通信通道 - SENTINEL HASP為受保護應(yīng)用程序與保護密鑰之間的通信提供安全通道,從而消除了中間人攻擊。Java Envelope使用這種能力來防止黑客通過截取通信訪問保護密鑰發(fā)回的數(shù)據(jù)。

  • 運行時解密 - 由于SENTINEL HASP是按請求在運行時解密文件,而不是一次將所有.class文件加載到虛擬機,因此可以防止黑客重建整個應(yīng)用程序。

結(jié)論

雖然JVM為開發(fā)人員提供了編寫一次應(yīng)用程序即可在幾乎任何平臺上運行的能力,但這種體系結(jié)構(gòu)具有使黑客易于對源代碼進行逆向工程、篡改或盜竊的重大缺陷。眾多的商業(yè)反匯編程序進一步簡化了這一過程。而且雖然Java確實提供了一些安全措施,但包括的這些能力都不足以阻止攻擊者。加密和混淆等技術(shù)通常用于減緩攻擊,但仍然留有漏洞。封裝將加密與本機代碼混淆相結(jié)合來提供目前最強的保護,可以保護知識產(chǎn)權(quán)。通過使用SENTINEL HASP解決方案,您可以獲得封裝的諸多好處,而不必花費時間和精力來開發(fā)新的解決方案。

Sentinel軟件貨幣化解決方案

SafeNet在為全世界的軟件和技術(shù)供應(yīng)商提供創(chuàng)新和可靠的軟件許可、授權(quán)和管理解決方案方面擁有25年的行業(yè)經(jīng)驗。我們的Sentinel?軟件貨幣化解決方案系列易于集成和使用,具有創(chuàng)新性并注重功能,對于任何規(guī)模、技術(shù)要求或組織結(jié)構(gòu)的任何機構(gòu),都能滿足其獨特的許可證啟用、執(zhí)行和管理要求。客戶只有使用SafeNet的產(chǎn)品才能夠應(yīng)對所有的反盜版、知識產(chǎn)權(quán)保護、許可證啟用和許可證管理挑戰(zhàn),同時提高公司盈利能力、改進內(nèi)部運營、維持競爭優(yōu)勢并鞏固與客戶及最終用戶的關(guān)系。SafeNet在適應(yīng)新的需求和引入新技術(shù)以應(yīng)對不斷變化的市場環(huán)境方面具有豐富的成功經(jīng)驗,我們在全球的25,000多家客戶已經(jīng)認識到選擇Sentinel就意味著選擇了在現(xiàn)在和未來自由開展業(yè)務(wù)的主動權(quán)。

  

  查看更多>>