摘 要:JAVA程序的應(yīng)用給人們的生活和工作帶來了極大便利,同時JAVA應(yīng)用程序的安全性也成為了備受關(guān)注的話題。鑒于此,本文基于JAVA應(yīng)用程序的相關(guān)安全模型,對其安全性進(jìn)行具體分析,以期為促進(jìn)JAVA應(yīng)用程序的安全運(yùn)行提供一定的指導(dǎo)意義。
關(guān)鍵詞:JAVA;應(yīng)用程序;安全設(shè)計(jì)
中圖分類號:TP393
JAVA是一種可以通過撰寫跨平臺應(yīng)用軟件的方式,進(jìn)而更好地面向大眾的一種程序設(shè)計(jì)語語言。自面世以來,JAVA應(yīng)用程序得到了廣泛地發(fā)展和應(yīng)用。新時期,全球云計(jì)算和互聯(lián)網(wǎng)產(chǎn)業(yè)正在快速發(fā)展,JAVA應(yīng)用程序則更加擁有顯著的優(yōu)勢和廣闊的發(fā)展前景。然而,JAVA應(yīng)用程序的安全性問題也在逐漸地產(chǎn)生。網(wǎng)絡(luò)應(yīng)用程序的安全性問題不僅和其所涉及的內(nèi)容具有密切的關(guān)系,而且還離不開相關(guān)的安全管理。如何更加有效地保護(hù)好具有重要價值的數(shù)據(jù)和信息已經(jīng)成為計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用必須考慮和解決的一項(xiàng)重大課題。
1 JAVA應(yīng)用程序的安全性
JAVA的迅猛發(fā)展以及被大眾接受和認(rèn)可離不開互聯(lián)網(wǎng)的廣泛應(yīng)用?;ヂ?lián)網(wǎng)環(huán)境下的信息具有共享性的特點(diǎn),因而能夠方便用戶根據(jù)自身的需求準(zhǔn)確地獲得和處理相關(guān)的信息。JAVA體系結(jié)構(gòu)的建設(shè)為互聯(lián)網(wǎng)的運(yùn)行提供了安全機(jī)制,從而有效地減少具有破壞性程序的介入而造成數(shù)據(jù)的丟失。目前,JAVA應(yīng)用程序在許多的領(lǐng)域中得到具體應(yīng)用。例如在線電子商務(wù)軟件、在線金融機(jī)構(gòu)以及其他相關(guān)的關(guān)鍵性應(yīng)用程序的部件中,JAVA應(yīng)用程序都發(fā)揮著重要作用。
JAVA應(yīng)用程序解決安全性問題的重點(diǎn)在于JAVA中的編譯器所輸出的是一種字節(jié)碼(Byte code)[1]。與可執(zhí)行的代碼相比,字節(jié)碼是一種高度優(yōu)化的指令集,它專門為JAVA運(yùn)行系統(tǒng)而設(shè)計(jì)。實(shí)際上,JAVA在運(yùn)行的過程中系統(tǒng)被成為JAVA虛擬機(jī),在標(biāo)準(zhǔn)的形式下,JAVA虛擬機(jī)相當(dāng)于一個帶有字節(jié)碼的解釋器。它的主要功能在于能夠有效地防止已知的安全和威脅。同時,JAVA虛擬機(jī)還提供了配套的安全架構(gòu)模型、訪問控制機(jī)制和安全擴(kuò)張等。
一般而言,當(dāng)windows操作系統(tǒng)內(nèi)部運(yùn)用JAVA技術(shù)時,并不會影響底層系統(tǒng)的安全特性。假設(shè)所有的應(yīng)用程序都采用JAVA技術(shù)進(jìn)行編程,那么windows操作系統(tǒng)中存在的許多安全性問題都能夠迎刃而解。信息數(shù)據(jù)的安全性是互聯(lián)網(wǎng)應(yīng)用領(lǐng)域中必須引起重視的問題。JAVA應(yīng)用程序通過其自身的語言安全性、安全管理器的建立以及提供的安全API等為信息的安全提供了良好的保障。
2 JAVA應(yīng)用程序的安全體系結(jié)構(gòu)分析
目前,JAVA2應(yīng)用程序的出現(xiàn),使得JAVA應(yīng)用程序的安全體系結(jié)構(gòu)發(fā)生了徹底的變化。尤其是對于計(jì)算機(jī)終端用戶而言,JAVA2不僅僅可以有效地保護(hù)用戶的文件和私人數(shù)據(jù)免于惡意的程序或者病毒的破壞,而且還能夠準(zhǔn)確地鑒別出代碼提供者的相關(guān)信息。JAVA2安全體系結(jié)構(gòu)中的標(biāo)準(zhǔn)組件主要包括兩個部分(如下圖1所示)。
圖1 JAVA應(yīng)用程序的安全體系結(jié)構(gòu)的標(biāo)準(zhǔn)組件示意圖
從圖1中可以發(fā)現(xiàn),JAVA應(yīng)用程序的安全體系結(jié)構(gòu)主要包括安全體系結(jié)構(gòu)核心和加密體系結(jié)構(gòu)核心兩個部分。其中,認(rèn)證和授權(quán)服務(wù)、安全套接擴(kuò)展以及加密擴(kuò)展均為安全擴(kuò)展服務(wù)。
2.1 加密體系結(jié)構(gòu)
加密體系結(jié)構(gòu)(JCA)主要是為JAVA應(yīng)用平臺提供一些執(zhí)行主要加密服務(wù)的基礎(chǔ)設(shè)施[2]。例如:數(shù)字簽名在JAVA應(yīng)用平臺上的實(shí)現(xiàn)方式主要有兩種,最為常用的是RSA。RSA主要運(yùn)用于非對稱的加密,用私鑰進(jìn)行簽名,用公鑰進(jìn)行驗(yàn)證。其中用私鑰進(jìn)行簽名的代碼可以設(shè)置為:
Signature signature=Signature.get Instance(\"SHA1WithRSA\");
Signature.in it Sign(pvk);
String to be signed=\"I want to be signed\";
signature.update(to be signed.get Bytes());
byte [] signed bytes=signature.sign();
用用公鑰進(jìn)行驗(yàn)證的代碼可以設(shè)置為:
signature=Signature.get Instance(\"SHA1WithRSA\");
Signature.in it Verify(pbk);
signature.update(to be signed.get Bytes());
signature.verify(signed bytes);
因此,用戶使用RSA進(jìn)行驗(yàn)證能夠在很大程度上提高驗(yàn)證的速度。另一種數(shù)字簽名方式是DSA,相對于RSA而言,DSA只能執(zhí)行簽名的操作,而不能對重要的數(shù)據(jù)信息進(jìn)行加密。數(shù)字簽名的實(shí)現(xiàn)主要分為三個階段:
第一階段:系統(tǒng)自動生成密鑰對,用戶需要將公鑰發(fā)送給S;
第二階段:用戶在進(jìn)行身份驗(yàn)證的過程中,S會根據(jù)用戶的需求發(fā)送一段信息,反饋給客戶機(jī),用戶在客戶機(jī)上簽名后,會直接返回給服務(wù)器;
第三階段:服務(wù)器會對所接受到的信息進(jìn)行鑒別,利用已經(jīng)生成的代碼進(jìn)行驗(yàn)證,也就是對用戶的身份進(jìn)行確認(rèn)。
此外,加密體系結(jié)構(gòu)中還包括信息摘要、信息認(rèn)證碼生成器等。雖然加密體系結(jié)構(gòu)是JAVA系統(tǒng)的一個組成部分,但是其受面向服務(wù)的特性所影響,因而又是獨(dú)立的。加密體系結(jié)構(gòu)所建立的依據(jù)分別是實(shí)現(xiàn)的獨(dú)立性和互操作性;算法的獨(dú)立性和可擴(kuò)展性。
2.2 安全訪問控制分析
JAVA應(yīng)用程序的安全模型中提供了訪問控制功能,該功能具有微調(diào)和可配置的特點(diǎn)。訪問權(quán)限的對象涵蓋了所有訪問資源的權(quán)限。用戶可以根據(jù)自身的需求,利用權(quán)限的設(shè)置提供或者拒絕權(quán)限的目標(biāo)資源。因此,用戶可以根據(jù)相關(guān)的指令對目標(biāo)資源進(jìn)行各項(xiàng)操作。同時,權(quán)限還可以針對基礎(chǔ)權(quán)限的類型衍生出各種子類型,并且系統(tǒng)會對子類型進(jìn)行歸類。
JAVA所運(yùn)行的環(huán)境安全性主要由系統(tǒng)的安全策略來執(zhí)行。作為一個具有典型意義的訪問控制矩陣,其主要是可以根據(jù)系統(tǒng)資源的類型,根據(jù)特定的環(huán)境特點(diǎn),采用正確的方式進(jìn)行訪問。安全訪問控制中的安全策略主要是從現(xiàn)有運(yùn)行的代碼所呈現(xiàn)出的一系列特征到代碼本身所表現(xiàn)的一種許可權(quán)限之間建立的一一對應(yīng)的關(guān)系。
在JAVA的安全保護(hù)體系結(jié)構(gòu)中常用的保護(hù)域可以分為兩種,即應(yīng)用保護(hù)域和系統(tǒng)保護(hù)域。其中應(yīng)用保護(hù)域主要是用于對各種組件和應(yīng)用程序中的重點(diǎn)部分進(jìn)行訪問性控制,從而保障數(shù)據(jù)資料的安全性。相反,系統(tǒng)保護(hù)域主要是對平臺上的系統(tǒng)文件以及其他網(wǎng)絡(luò)系統(tǒng)資源進(jìn)行設(shè)限,對用戶的訪問進(jìn)行控制。當(dāng)JAVA程序運(yùn)行在多個平臺上時,系統(tǒng)會將安全建立在應(yīng)用級上,相對于建立在操作系統(tǒng)上的系統(tǒng)級安全,此種方法具有更高的安全性。因此,JAVA程序在應(yīng)用級別上,擁有多種技術(shù),能夠使整個系統(tǒng)免于遭受攻擊和破壞。尤其是當(dāng)相關(guān)的應(yīng)用程序在基本安全措施的保護(hù)之后,整個系統(tǒng)的防御功能就會大大增強(qiáng),可以阻止黑客或者病毒的侵襲。
3 結(jié)束語
綜上所述,JAVA應(yīng)用程序的安全性是一項(xiàng)十分復(fù)雜的問題。因此,JAVA應(yīng)用程序如何通過一項(xiàng)安全的措施來保障穩(wěn)定的運(yùn)行仍需要進(jìn)行不斷地嘗試和探索。通過積極地借鑒國內(nèi)外相關(guān)的成功經(jīng)驗(yàn),構(gòu)建一個安全可靠的運(yùn)行平臺,JAVA應(yīng)用程序才能夠更好地服務(wù)于大眾。
參考文獻(xiàn):
[1]鄧酩,肖立權(quán).基于Web Services的J2EE和.NET架構(gòu)比較[J].桂林航天工業(yè)高等??茖W(xué)校學(xué)報(bào),2012(03):56-57.
[2]張昱,劉玉宇.一種Java字節(jié)碼優(yōu)化框架[J].計(jì)算機(jī)工程,2012(02):69-71.
[3]牛婷芝.一種Java源代碼安全分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2011.
作者簡介:田智(1974-),男,研究生,講師,研究方向:計(jì)算機(jī)軟件、網(wǎng)絡(luò)、物聯(lián)網(wǎng)、信息管理。
作者單位:內(nèi)蒙古商貿(mào)職業(yè)學(xué)院信息技術(shù)系,呼和浩特 010070