程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java語言安全機制在移動Agent中的應用

Java語言安全機制在移動Agent中的應用

編輯:關於JAVA

隨著Internet覆蓋范圍的日益擴大,有價值的信息資源在不斷的增長,對網絡的高效性、智能性、主動性和靈活性提出了更多的要求,對於如何捆綁分布異構環境中信息源的問題變得越來越突出。在網絡分布式系統的實際應用中,一般采用Server/Client結構,在這種結構中,運行於Server和Client上進程間的通信是通過信息傳送和遠程過程調用(RPC)實現的,一般是同步實現的,即Client向服務器發出請求後就掛起本地進程而等待結果,遠地Server按要求執行完所要求的數據處理後返回結果,當本地進程得到結果後就恢復運行。移動agent是這些概念的延伸,它是一個由Client向Server發送的一個程序,包括了代碼、數據和執行邏輯。移動agent不必把結果返還給客戶機,它可以遷移到其它服務器,把信息傳回給源客戶機,也可以通過適當安排遷移回源客戶機。因此,與簡單的過程調用相比,移動agent具有更強的自治性。它很好地解決了網絡通信的瓶頸問題,增加了任務處理的並行程度,增強了系統的靈活性、可擴充性及容錯能力。因此移動agent己經逐漸應用到各種分布式網絡中,相信移動agent在未來的軍事信息安全、企業信息傳輸安全保密方面會有好的發展前景。

移動Agent技術應用范圍日益廣泛,隨之而來的系統安全性問題也就日益突出。本文對移動Agent系統中的主要安全威脅和Java語言的安全機制做了細致的分析,提出了利用java安全機制解決移動Agent安全問題的方法。

移動agent 的安全問題

雖然移動Agent技術具有很多優點,但是一個嚴峻的問題——安全卻阻礙了它的應用。移動Agent可以把多台分布的計算機連接起來,構成一個計算基礎設施,在其上可同時運行屬於不同用戶而且是潛在的不可信任用戶的分布式應用程序。這些計算機分別屬於不同的組織,有各自不同的用途,通過公共通信設施進行通信。在這樣的環境下,存在著各種可能的不安全因素以及安全攻擊。例如,未被授權的用戶可以監聽網絡線路,在移動Agent 傳輸過程中竊聽甚至修改其代碼或數據;當 Agent 運行時,可能會攻擊當地的主機,故意占用過多資源,或者利用系統中的漏洞取得特權,進而攻擊主機或其它Agent 等等。歸納為如下幾類:

第一類安全問題主要是惡意的或者是有錯誤的 Agent 利用主機上安全設施的不足或缺陷發起針對主機的攻擊,主要有偽裝、拒絕服務和未授權訪問。

第二類問題是指 Agent 可能會利用系統的缺陷對在主機上運行的其它Agent 進行攻擊,包括偽裝、未授權訪問、拒絕服務和抵賴。其實這個問題可以看成是第一類問題的子問題,首先,因為主機上的Agent 支持環境可能就包含一些 Agent,如負責通信的Agent,管理 Agent 名字空間的Agent 等,對這類Agent 的攻擊等於是對系統進行攻擊。其次,可以把主機上運行的Agent 看成是主機的一部分資源,Agent 對其它Agent 進行攻擊也就是對主機的攻擊。再次,從目前已有的安全措施來看,解決這兩類問題所使用的技術十分類似。

第三類,在移動 Agent 環境下,不僅可能會有惡意的 Agent,而且也會存在惡意的主機對 Agent 進行破壞。由於 Agent發送到主機後要在其上運行,它的代碼和數據以及運行時刻的通信對主機來說都是暴露無疑的,可以說主機為刀俎,Agent 為魚肉,主機可以對 Agent 采取任何動作,所以保護 Agent 是所有問題中最困難的。也正因如此,才吸引了許多人花費大量的精力進行研究。

第四類,Agent 可以在一個站點上只消耗少量的資源,其行為也完全符合站點的安全策略,但它卻暗中以隱蔽的方式破壞著網絡的可用性,進而會使一些主機癱瘓。如惡意移動 Agent不斷地復制自身,產生大最的移動Agent,並讓它們在網絡上來回流動,從而大量染耗系統的通信與計算資很,並可能最終導致運行環境的癱瘓。對這類攻擊的防治也比較困難,從單個主機著手顯然不能解決問題,必須從網絡整體考慮。當網絡從屬於一個管理者時,網絡上的各個主機之間比較信任,找到一個統一的方法相對來說還容易一些,否則,在像 Internet 這樣無中心、無權威的網絡上,困難就會大得多。

Java語言的安全機制

移動Agent需要在不同的主機上遷移,這樣異質的環境下,移動Agent需要有可移植性,能在不同的主機上執行,因此,像JAVA這樣的語言具有平台無關性、動態類裝載、多線程和對象序列化等特點,使用相關的Java安全機制解決移動Agent的安全問題便是最佳的選擇。

在Java中能夠安全地運行通過Internet傳遞的各種Applet,正因為如此,Java不像別的語言和系統,在事後才想到要實現安全性,或者作為一種對應措施,插入一些安全性組件,安全機制是Java技術的一個不可分割的組成部分。

1、Java沙箱 (早期安全機制)

Java安全模式的重點在於保護最終用戶不受從網上下載的破壞性程序的干擾。為達到這個目的,Java提供了一個專用的運行Java程序的沙箱。 安全模型的關鍵在於沙箱(sandbox)的概念。其思想是,若在主機上允許駐留一個程序,就必須為該程序提供一個“玩耍”的場所(即運行環境),但是一般情況下,必須保證程序限制在沙箱中,Java程序在它的沙箱內可做任何事情,但出此邊界就不能有任何操作。例如,未經確認的Java Applet的沙箱禁止許多操作,其中包括:

禁止對本地磁盤的讀寫;

除了下載此Applet的主機外不能與任何別的主機連接;

禁止建立一個新的進程;

禁止載入一個直接調用本地方法的新的動態庫。

通過限定下載代碼的可執行操作的范圍,在經過字節編碼檢驗器、類加載器和安全管理器檢查使得Java程序高效而安全。Java安全模式可使用戶免受破壞性程序的威脅。

2、Java2所引入的新的安全機制

隨著Java程序的復雜化、實用化,必須要脫離沙箱運行。核心 Java 2 平台提供了 Java 安全的基本功能:

·可配置的安全策略可以防止Java程序非法讀取文件,或非法建立與其它主機的網絡連接,或在未經允許的情況下訪問打印機等等。此策略建立在Java的存取控制機制上,相應的存取控制器則依賴於Java的類裝載器、安全管理器和語言保護等安全機制。

·要判定程序所讀取的數據是否被修改過,可以簡單地利用生成消息摘要的方式來實現,但這種方式安全性並不很高。

·如果對完整性要求很高,那麼可以生成數字簽名(digital signature)來檢測程序所讀取的數據是否被修改過(或者在發送數據時,使接收數據的一方可以檢測數據在傳輸過程中是否被修改過)。

·密鑰管理系統可以管理數字簽名時用到的密鑰。

Java2引進了一種改進的新型安全結構,主要組件包括:訪問權限、安全策略、保護域、訪問控制檢查器、對象級的安全等。

Java提供了三種標准Java擴展包:JCE(Java Cryptography Extension,Java加密擴展包)、JSSE(Java Secure Sockets Extension,Java 安全套接字擴展包)和JAAS(Java Authentication and Authorization Service,Java 鑒別與授權服務)。它們所提供的技術都為Java的安全性助了一臂之力。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved