摘 要 移動(dòng)Agent技術(shù)已成為計(jì)算機(jī)網(wǎng)絡(luò)和分布式系統(tǒng)最具活力的發(fā)展方向,但在復(fù)雜的網(wǎng)絡(luò)環(huán)境下,移動(dòng)Agent對(duì)安全性提出了非凡的要求。本文介紹了移動(dòng)Agent所帶來(lái)的安全隱患、討論了java語(yǔ)言的安全機(jī)制,最后給出了用Java安全機(jī)制解決移動(dòng)Agent安全問(wèn)題的方法。雖然Java的安全機(jī)制本身存在一些不完善的地方,但隨著其進(jìn)一步改進(jìn),Java的安全機(jī)制將為移動(dòng)Agent的應(yīng)用提供更有力的保障。
要害詞 移動(dòng)Agent, Java,安全
引言
隨著Internet覆蓋范圍的日益擴(kuò)大,有價(jià)值的信息資源在不斷的增長(zhǎng),對(duì)網(wǎng)絡(luò)的高效性、智能性、主動(dòng)性和靈活性提出了更多的要求,對(duì)于如何捆綁分布異構(gòu)環(huán)境中信息源的問(wèn)題變得越來(lái)越突出。在網(wǎng)絡(luò)分布式系統(tǒng)的實(shí)際應(yīng)用中,一般采用Server/Client結(jié)構(gòu),在這種結(jié)構(gòu)中,運(yùn)行于Server和Client上進(jìn)程間的通信是通過(guò)信息傳送和遠(yuǎn)程過(guò)程調(diào)用(RPC)實(shí)現(xiàn)的,一般是同步實(shí)現(xiàn)的,即Client向服務(wù)器發(fā)出請(qǐng)求后就掛起本地進(jìn)程而等待結(jié)果,遠(yuǎn)地Server按要求執(zhí)行完所要求的數(shù)據(jù)處理后返回結(jié)果,當(dāng)本地進(jìn)程得到結(jié)果后就恢復(fù)運(yùn)行。移動(dòng)agent是這些概念的延伸,它是一個(gè)由Client向Server發(fā)送的一個(gè)程序,包括了代碼、數(shù)據(jù)和執(zhí)行邏輯。移動(dòng)agent不必把結(jié)果返還給客戶機(jī),它可以遷移到其它服務(wù)器,把信息傳回給源客戶機(jī),也可以通過(guò)適當(dāng)安排遷移回源客戶機(jī)。因此,與簡(jiǎn)單的過(guò)程調(diào)用相比,移動(dòng)agent具有更強(qiáng)的自治性。它很好地解決了網(wǎng)絡(luò)通信的瓶頸問(wèn)題,增加了任務(wù)處理的并行程度,增強(qiáng)了系統(tǒng)的靈活性、可擴(kuò)充性及容錯(cuò)能力。因此移動(dòng)agent己經(jīng)逐漸應(yīng)用到各種分布式網(wǎng)絡(luò)中,相信移動(dòng)agent在未來(lái)的軍事信息安全、企業(yè)信息傳輸安全保密方面會(huì)有好的發(fā)展前景。
移動(dòng)Agent技術(shù)應(yīng)用范圍日益廣泛,隨之而來(lái)的系統(tǒng)安全性問(wèn)題也就日益突出。本文對(duì)移動(dòng)Agent系統(tǒng)中的主要安全威脅和Java語(yǔ)言的安全機(jī)制做了細(xì)致的分析,提出了利用java安全機(jī)制解決移動(dòng)Agent安全問(wèn)題的方法。
移動(dòng)agent 的安全問(wèn)題
雖然移動(dòng)Agent技術(shù)具有很多優(yōu)點(diǎn),但是一個(gè)嚴(yán)重的問(wèn)題——安全卻阻礙了它的應(yīng)用。移動(dòng)Agent可以把多臺(tái)分布的計(jì)算機(jī)連接起來(lái),構(gòu)成一個(gè)計(jì)算基礎(chǔ)設(shè)施,在其上可同時(shí)運(yùn)行屬于不同用戶而且是潛在的不可信任用戶的分布式應(yīng)用程序。這些計(jì)算機(jī)分別屬于不同的組織,有各自不同的用途,通過(guò)公共通信設(shè)施進(jìn)行通信。在這樣的環(huán)境下,存在著各種可能的不安全因素以及安全攻擊。例如,未被授權(quán)的用戶可以監(jiān)聽(tīng)網(wǎng)絡(luò)線路,在移動(dòng)Agent 傳輸過(guò)程中竊聽(tīng)甚至修改其代碼或數(shù)據(jù);當(dāng) Agent 運(yùn)行時(shí),可能會(huì)攻擊當(dāng)?shù)氐闹鳈C(jī),故意占用過(guò)多資源,或者利用系統(tǒng)中的漏洞取得特權(quán),進(jìn)而攻擊主機(jī)或其它Agent 等等。歸納為如下幾類:
第一類安全問(wèn)題主要是惡意的或者是有錯(cuò)誤的 Agent 利用主機(jī)上安全設(shè)施的不足或缺陷發(fā)起針對(duì)主機(jī)的攻擊,主要有偽裝、拒絕服務(wù)和未授權(quán)訪問(wèn)。
第二類問(wèn)題是指 Agent 可能會(huì)利用系統(tǒng)的缺陷對(duì)在主機(jī)上運(yùn)行的其它Agent 進(jìn)行攻擊,包括偽裝、未授權(quán)訪問(wèn)、拒絕服務(wù)和抵賴。其實(shí)這個(gè)問(wèn)題可以看成是第一類問(wèn)題的子問(wèn)題,首先,因?yàn)橹鳈C(jī)上的Agent 支持環(huán)境可能就包含一些 Agent,如負(fù)責(zé)通信的Agent,治理 Agent 名字空間的Agent 等,對(duì)這類Agent 的攻擊等于是對(duì)系統(tǒng)進(jìn)行攻擊。其次,可以把主機(jī)上運(yùn)行的Agent 看成是主機(jī)的一部分資源,Agent 對(duì)其它Agent 進(jìn)行攻擊也就是對(duì)主機(jī)的攻擊。再次,從目前已有的安全措施來(lái)看,解決這兩類問(wèn)題所使用的技術(shù)十分類似。
第三類,在移動(dòng) Agent 環(huán)境下,不僅可能會(huì)有惡意的 Agent,而且也會(huì)存在惡意的主機(jī)對(duì) Agent 進(jìn)行破壞。由于 Agent發(fā)送到主機(jī)后要在其上運(yùn)行,它的代碼和數(shù)據(jù)以及運(yùn)行時(shí)刻的通信對(duì)主機(jī)來(lái)說(shuō)都是暴露無(wú)疑的,可以說(shuō)主機(jī)為刀俎,Agent 為魚肉,主機(jī)可以對(duì) Agent 采取任何動(dòng)作,所以保護(hù) Agent 是所有問(wèn)題中最困難的。也正因如此,才吸引了許多人花費(fèi)大量的精力進(jìn)行研究。
第四類,Agent 可以在一個(gè)站點(diǎn)上只消耗少量的資源,其行為也完全符合站點(diǎn)的安全策略,但它卻暗中以隱蔽的方式破壞著網(wǎng)絡(luò)的可用性,進(jìn)而會(huì)使一些主機(jī)癱瘓。如惡意移動(dòng) Agent不斷地復(fù)制自身,產(chǎn)生大最的移動(dòng)Agent,并讓它們?cè)诰W(wǎng)絡(luò)上往返流動(dòng),從而大量染耗系統(tǒng)的通信與計(jì)算資很,并可能最終導(dǎo)致運(yùn)行環(huán)境的癱瘓。對(duì)這類攻擊的防治也比較困難,從單個(gè)主機(jī)著手顯然不能解決問(wèn)題,必須從網(wǎng)絡(luò)整體考慮。當(dāng)網(wǎng)絡(luò)從屬于一個(gè)治理者時(shí),網(wǎng)絡(luò)上的各個(gè)主機(jī)之間比較信任,找到一個(gè)統(tǒng)一的方法相對(duì)來(lái)說(shuō)還輕易一些,否則,在像 Internet 這樣無(wú)中心、無(wú)權(quán)威的網(wǎng)絡(luò)上,困難就會(huì)大得多。
Java語(yǔ)言的安全機(jī)制
移動(dòng)Agent需要在不同的主機(jī)上遷移,這樣異質(zhì)的環(huán)境下,移動(dòng)Agent需要有可移植性,能在不同的主機(jī)上執(zhí)行,因此,像JAVA這樣的語(yǔ)言具有平臺(tái)無(wú)關(guān)性、動(dòng)態(tài)類裝載、多線程和對(duì)象序列化等特點(diǎn),使用相關(guān)的Java安全機(jī)制解決移動(dòng)Agent的安全問(wèn)題便是最佳的選擇。
在Java中能夠安全地運(yùn)行通過(guò)Internet傳遞的各種Applet,正因?yàn)槿绱?,Java不像別的語(yǔ)言和系統(tǒng),在事后才想到要實(shí)現(xiàn)安全性,或者作為一種對(duì)應(yīng)措施,插入一些安全性組件,安全機(jī)制是Java技術(shù)的一個(gè)不可分割的組成部分。
1、Java沙箱 (早期安全機(jī)制)
Java安全模式的重點(diǎn)在于保護(hù)最終用戶不受從網(wǎng)上下載的破壞性程序的干擾。為達(dá)到這個(gè)目的,Java提供了一個(gè)專用的運(yùn)行Java程序的沙箱。 安全模型的要害在于沙箱(sandbox)的概念。其思想是,若在主機(jī)上答應(yīng)駐留一個(gè)程序,就必須為該程序提供一個(gè)“玩?!钡膱?chǎng)所(即運(yùn)行環(huán)境),但是一般情況下,必須保證程序限制在沙箱中,Java程序在它的沙箱內(nèi)可做任何事情,但出此邊界就不能有任何操作。例如,未經(jīng)確認(rèn)的Java Applet的沙箱禁止許多操作,其中包括:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注