[摘要] 同傳統的協作式工作平臺或工作系統相比,電子商務實驗室對安全性具有更高的要求。本文著重介紹了軟件Agent技術,討論了在電子商務實驗室中對各個實驗平臺利用軟件Agent技術來提高系統安全性的問題。
[關鍵詞]Agent 電子商務實驗室 安全設計
電子商務實驗室旨在建立一個Internet環境下的電子商務模擬環境,實現情景教學。若想成功地部署電子商務實驗室,必須解決三個關鍵問題:高可用性、伸縮性和安全性。而安全性是其中最重要的環節,因此本文主要對電子商務實驗室的安全性進行闡述。
一、電子商務實驗室的安全需求
本課題所設計的系統有七個實驗平臺組成,它們分別是:一般教學、B2C、C2C、B2B、物流實驗平臺,以及電子銀行和CA認證平臺。每個平臺相對獨立又有一定關聯,如B2C業務流程的完成需要結合CA認證、電子銀行和物流管理等,因此不同平臺安全需求也是多方面的。如何保證實驗室系統交易的安全性、對個人信息提供機密性保障、認證交易雙方的合法身份、如何保證數據的完整性和交易的不可否認性等,是實驗室所需解決的核心問題。
二、電子商務實驗室安全解決方案
當前,電子商務系統設計的架構大多采用B/S結構。B/S環境中各種安全功能都由服務器集中實現,因此服務器容易成為系統的安全瓶頸。服務器一旦被人入侵或出現問題,將對整個系統的安全造成嚴重的威脅。且不同子系統具有不同的安全需求,由服務器統一協調和處理它們之間的安全策略將大大加重服務器的負擔。
當前的大多數電子商務系統都采用了結合硬件防火墻、軟件防火墻和防病毒軟件等。這些措施只提供了被動的、有限的安全防范能力,并不能滿足多模塊、多子系統的電子商務實驗室的要求。并且這種解決方案缺少主動性和自我維護能力。
利用軟件Agent的智能處理能力來解決各模塊間的安全通信是一個很好的選擇,軟件Agent是一種計算機程序,具有反應性、自治性和目標性等特點,能夠獨立地跟環境進行交互或代表用戶完成給定的目標。它不僅能對各模塊的通信狀況進行高度監控,而且各Agent能多層面的獨立實現,各Agent之間也能相互協調、統一調度。
三、基于軟件Agent的電子商務實驗室安全設計
本人主持研究河北大學教改青年基金項目——基于LINUX的電子商務實驗室(項目編號為:0575),此實驗室服務器連接校園網,校園網又和互聯網相連,因此服務器較容易成為被攻擊或入侵的對象,所以本系統利用Agent技術來提高實驗室的安全性。Agent可對用戶的請示進行過濾,減少用戶直接訪問實驗室服務器所帶來的安全風險,同時可更方便地實現一些動態的安全策略。
1.基于軟件Agent的安全設計模型
本實驗室的Agent體系設計是分層次、分等級的結構,層次或等級根據系統的功能來劃分,如圖1所示。
圖1 Agent的安全等級結構
每個平臺由一個安全監控Agent負責管理本平臺的安全,如有問題通知報警Agent,報警Agent會及時反饋給Agent安全管理中心的Agent進行相應處理,比如:退出登陸重新驗證身份等。身份認證Agent負責對訪問用戶進行身份驗證;授權Agent根據對已經通過身份認證Agent的用戶進行授權,不同類型的登陸用戶授權策略不同,實驗的角色不同,授權的策略也不同,比如,B2C實驗中,一位剛剛初始化的Customer(學生登錄身份),授權內容中將包括B2C的買方界面,并且授權Agent指示電子銀行模塊自動給實驗者初始資產一萬元作為實驗的資本,當然還有其他一些授權;跟蹤Agent將全程跟蹤用戶的操作并詳細記錄到日志文件。
2.軟件Agent的安全解決方案
移動Agent需要在不同的主機上遷移,實驗室服務器是LINUX環境,而客戶端往往是學生比較熟悉的windows操作環境,所以這里選擇跨平臺的J2EE開發本系統。J2EE不僅提供了一套安全機制,而且移動Agent中的許多功能在Java中有直接的對應實現。移動Agent狀態的移動可以用Java對象的串行化表示;Agent代碼的移動用字節碼傳遞和加載;Agent運行上下文可用方法的控制流表示等等,具體的方案有以下幾點:
(1)利用Java的字節碼驗證器保證Agent的正確性。字節碼驗證器可以檢測Agent的程序代碼是否被破壞,然后采取相應的措施。
(2)利用Java的類裝載器、命名空間和線程組來實現動態Agent的隔離。可以把從不同來源載入的類隔離到不同的命名空間中,一個Agent不可能用它自己的類冒名頂替另一Agent的類,這樣可以防止破壞性代碼訪問正常的代碼,從而保證了Agent之間的安全。另外,每當一個新Agent到達后,就為其建立一個線程組。任何執行該Agent的線程其組號是相同的。那么,只要為這個線程組分配權限,即為該Agent分配了權限,就實現了Agent與主機的隔離。
(3)采用數字簽名和加密算法實現Agent的傳輸與驗證。系統對外來的Agent的身份進行數字簽名驗證,確定其是否為可信Agent。同時還可以利用Java加密擴展機制和Java安全套接字擴展機制結合來實現將Agent代碼數據進行壓縮后加密處理,經過壓縮不僅降低了網絡流量,而且也大大增加了破譯該數據的難度。
3.軟件Agent的實現
本系統的軟件Agent的實現平臺采用Aglet。Aglet為開放源碼項目,用戶不用考慮侵權問題。Aglet完全由Java編寫,具有很高的移植性。Aglet包含了一個運行移動Agent的服務器和一套類庫,基于它開發者可以進一步開發各種Agent的應用。Aglet的系統架構主要分為四個階段,如圖2所示。
圖2 Aglet系統架構
當一個正在執行的Aglet將自己送到遠程端口時,會對Aglet Runtime層發出請求,然后把Aglet的狀態與程序代碼序列化(serialized )成字節數組(byte array),若是請求成功,系統會將Aglet的執行動作結束,然后將序列化數組傳送至ATCI(Agent Transport and Communication Interface)層處理。
Agent安全管理中心統一管理各個安全Agent的基本行為:如產生(Create)、復制(Clone)Agents ,或分派(Dispatch)Agents 到遠端工作站、召回(Retract)遠端的Agents,或暫停(Deactive)、喚醒(Active)Agents,以及移除(Dispose)Agents等,如圖3所示,不管是何種Agent均繼承Aglet類,可以通過覆蓋父類的方法來實現自己的“特殊要求”。
圖3 Agent的對象模型
各監控Agent由管理中心分派到各個實驗平臺進行監控,等客戶端做完實驗后正常退出,然后移除Agent監控對象,如果出現安全問題,傳遞消息給報警Agent對象,再交由Agent管理中心負責進一步處理。
參考文獻:
[1]Jian Li,Guo-yin Zhang Gu, A Workflow System Based Architecture for Network Attack Resistant System,GCC2003, LNCS3032, pp.980~983,2004
[2]Roberto A. Flores, Robert C. Kremer: Modeling Agent Conversations for Action. Computational Intelligence, Special Issue on Agent Communication Languages, Blackwell Publishers, Vol.18, No.2, May, 2002: 32~85
[3]邊海鋒劉祖照等:移動Agent及其在電子商務中的應用[J].計算機應用與軟件.2005,22(9):118~120