(燕山大學 信息科學與工程學院 河北 秦皇島 066004)
摘 要:針對開放分布式系統中收集實體的經驗值和度量信任困難的現狀,采用關注分離的原則,將實體的信任處理行為與計算行為、交互行為進行分離,提出了一個面向信任的協同模型。通過模型中的信任角色實時監聽所綁定的計算實體的消息來更新經驗值,進而計算信任度,為系統選擇相對可信的計算實體提供了依據。最后,利用Java消息服務技術和EJB技術給出了該模型的實現框架。
關鍵詞:開放分布式系統; 關注分離; 信任; 協同模型
中圖分類號:TP393文獻標志碼:A
文章編號:1001-3695(2009)05-1739-04
Coordination model for trust
SHEN Limin YANG Mei BAI Lian LI Feng CUI Qian
(College of Information Science Engineering Yanshan University Qinhuangdao Hebei 066004 China)
Abstract:To solve the difficulties of collecting experience and measuring trust of entities in open and distributed systems the paper separated the behavior of dealing with trust problems from computing and communicating behaviors of entities by adopting the principle of separation of concerns and presented a coordination model for trust. Trustroles of the model could compute trust degree of bundled computingentities by monitoring their messages to update their experience in realtime so that the model provided evidence for the system to choose relatively credible computingentities. Finally implemented the infrastructure of the model by using the Java message service technology and the EJB technology.
Key words:open and distributed systems; separation of concerns; trust; coordination model
0 引言
隨著Internet的發展,越來越多的分布式應用系統轉移到具有環境開放、需求開放、邊界開放等多重開放性[1]的環境中來。開放性的環境對系統的開放性和動態性提出了更高的要求,系統根據功能要求、運行環境的變化和用戶的個性化需求,需要頻繁增加或減少實體,以及動態改變實體之間的交互布局,以協同完成更復雜的功能任務。由于開放分布式系統中實體行為的高度自治和不可預測性等特點,系統的安全性成為必須要考慮的問題??梢砸胄湃蝸斫鉀Q系統內部實體之間通信的安全性問題,實體之間的相互信任對實體個體和系統的通信安全與可靠運行均具有重要意義。
信任具有內容相關性,是對事物的某個方面(如完成某項任務的能力)而言的[2],可以采用經驗值作為信任評估的主要依據。它表現為實體完成某類(項)協作活動的成功次數和失敗次數,是可信的客觀值,但隨著實體參與系統協同次數的增加、經驗值等信息的動態變化,收集這些信息較為困難。信任度是信任的定量表示,很多信任模型沒有給出其計算公式,缺乏完整性、合理性和可操作性。本文針對以上兩個問題,采用關注分離的原則,將系統的計算行為、交互行為和信任處理行為進行分離,在ARC模型[3]的基礎上研究面向信任的協同模型,通過模型中的信任角色處理計算實體發送的消息來實時更新信任角色記錄的經驗值等信息,并綜合計算實體之間的直接經驗值和推薦經驗值來計算信任度,為系統選擇可信的計算實體提供了依據,起到輔助系統協同的作用。
1 面向信任的協同模型
該模型將系統抽象為三層,分別對應三類不同的實體,即計算實體(computingentity)、信任角色(trustrole)和協調器(coordinator),如圖1所示。
a)計算實體位于模型的底層,只實現系統的計算行為,也是需要被可信性評估的對象。
b)信任角色位于中間層,描述系統計算行為的抽象,可由多個計算實體去扮演,它實現對底層所綁定的計算實體的協作、交互管理以及經驗值收集、信任度計算和可信性選擇。
c)協調器位于最上層,主要負責系統的動態演化和協同約束策略、綁定策略的制定,完成信任角色之間的協作和交互的管理。
1.1 計算實體
計算實體是一類自治的、獨立運行的活動實體,負責系統的計算行為,封裝了一個執行線程,具有狀態和行為,有兩個概念位置,即消息接收隊列和消息發送隊列。狀態規定了在特定條件下要完成的操作,行為是一系列針對操作消息的處理動作。計算實體是只有send和receive接口的黑箱,通過send和receive原語發送或接收消息,不需要知道消息的接收者和協同者,只根據接收到的消息內容改變自身的狀態和行為,未處理的消息存儲在隊列中,實現了計算實體之間的異步、匿名通信。
計算實體通過消息傳送計算信息來實現系統的協作任務。消息由三部分組成,即消息頭、屬性和消息體[4]。消息頭字段包含許多預定義的字段,消息的發送實體和接收實體都使用該字段中包含的值來標志和發送消息。例如,每個消息的標志用頭字段entityID,即發送消息的計算實體標志來表示;用另一個字段destination的值表示消息發往的目的地,即該計算實體的消息發送隊列地址;其他字段包括時間戳和優先級。消息屬性中,用字段S的值表示發送消息的計算實體對某類請求任務的完成情況;用字段R表示消息的類型是請求類型或是返回類型;用一個字段N表示請求計算實體的個數,N=1,2,3…,如果消息是返回類型則N為0;用另一個字段entityID表示該消息是對哪個計算實體的請求消息的響應,如果消息是返回類型則該字段為空。消息體可以包含不同消息類型的內容,消息類型允許發送者以多種不同的形式發送和接收數據并提供與現有消息傳遞格式的兼容性。
1.2 信任角色
信任角色作為系統計算行為的抽象,擁有計算實體成員管理的行為,主要管理底層計算實體加入和離開系統的資格,并根據協調器的綁定策略動態綁定需要的計算實體。其相關信息存儲在綁定表中,如表1所示。
表1 綁定表
實體標志(ID)行為標志(F)實體地址(A)
表1中,實體標志(ID)表示計算實體的惟一標志;行為標志(F)表示發送消息的行為標志(1或0);實體地址(A)表示計算實體的地址。
信任角色是一種具有狀態的主動實體,能夠產生事件,也能夠監聽協調器和計算實體產生的事件,并根據它們行為的變化來改變自身狀態。信任角色負責底層計算實體的協作和交互的管理,通過block(message m)和delay(m t)原語阻塞或延遲消息的發送和接收,實現對計算實體交互的時間約束;通過reroute(message m)原語轉發消息,實現對計算實體交互的空間約束。從協調器的角度看,信任角色能夠協調扮演該信任角色的計算實體,具有每個計算實體的詳細信息,即計算實體對于信任角色是不透明的;從計算實體的角度看,信任角色是一個主動的協調實體,能夠為計算實體建立交互連接,控制計算實體發送和接收的消息以及通過消息向計算實體強加協同約束行為。
信任角色還具有收集計算實體的經驗值、計算信任度和選擇可信計算實體的信任處理行為,并用信任表(表2)來存儲計算實體A對B能夠完成某類協作活動的直接經驗值、信任度等信息。信任表中記錄了曾經綁定到其中的所有計算實體的信任信息,刪除長期未更新的記錄就是刪除長期未加入系統的計算實體的信息。由于計算實體在不同的時刻可以扮演不同的角色,會被綁定到不同的信任角色上,同一個計算實體的標志可能出現在多個信任表中,但完成的協作活動不同。
表2 信任表
實體標志1(ID)標志位(F)實體標志2(ID)成功次數(Md)失敗次數(Nd)采納系數(C)信任度(T)
表2中,實體標志1(ID)是信任角色綁定過的計算實體的惟一標志;標志位(F)是實體標志1對應的計算實體現在是否綁定在系統中的判斷位,用1或0表示;實體標志2(ID)是向實體標志1對應的計算實體發出協同請求的另一個計算實體的標志;成功次數(Md)、失敗次數(Nd)是實體標志1對應的計算實體成功或失敗完成對應協作活動的直接經驗值;采納系數(C)是實體標志2對應的計算實體對實體標志1對應的計算實體的推薦經驗信息的采納程度;信任度(T)是實體標志2對應的計算實體對實體標志1對應的計算實體完成某類協作活動所持有的信任度T。其中,采納系數作為初始參數來設置,考慮到可操作性和使用效率,將信任劃分為完全信任、部分信任和不信任,對應的采納系數分別為1、0.5 和 0。
1.3 協調器
協調器也是一類具有狀態的主動實體,能夠產生事件,也接收信任角色的事件并改變自身的狀態,主要負責信任角色之間的協作和交互的管理,即由協調器和信任角色共同實現系統中計算實體的交互。協調器對于計算實體是透明的,通過將綁定規則、協同約束規則傳達給信任角色,由信任角色完成對計算實體的綁定和協同。信任角色描述的是一種靜態的計算行為的抽象,然而協調器可以通過綁定策略、協同約束策略的添加、刪除和更新來動態適應環境和用戶需求的變化。
2 信任處理
模型中的信任處理行為由信任角色實現。當計算實體完成某類協作活動時,信任角色通過消息處理及時收集經驗值信息來計算信任度、更新信任角色中的信任表;接收到對計算實體的消息請求后,依據信任度選擇相對可信的計算實體參與系統協同或替換故障實體。
2.1 收集經驗值、計算信任度
信任角色通過實時監聽并接收所綁定的計算實體完成某類協作活動返回類型的消息。首先進行消息處理來收集經驗值:從消息頭中提取字段entityID和destination的值、從消息屬性中提取字段S的值,經驗值信息表示為(ID1,ID2,S)。其中ID1和ID2分別表示完成協作活動和發出協同請求的計算實體的標志;S表示是否成功完成協作活動(1或0)。其次,根據經驗值和信任度計算公式[2,5]計算信任度、更新信任表,具體過程如下:
a)查找匹配計算實體ID1和ID2的記錄,如果查找失敗,則創建一條新記錄,包括實體標志ID1、標志位F=1、實體標志ID2、成功次數0、失敗次數0、采納系數C和信任度T都初始化為0.5。
b)若S=1,則該記錄中成功次數的字段值執行Md++,否則失敗次數的字段值執行Nd++。
c)獲取直接匹配實體標志ID1和ID2的直接經驗值:成功經驗值Md 、失敗經驗值Nd。
d)根據查找算法從信任表中查找符合實體標志為ID2到標志為ID1的推薦路徑,獲取路徑上的計算實體所對應的經驗值:成功經驗值Mdi、失敗經驗值Ndi、采納系數(Ci),并計算推薦經驗值:成功經驗值Mi 、失敗經驗值Ni。相關計算公式說明如下:
定義一條推薦路徑的采納系數為等效采納系數C。其中Ci是推薦路徑上實體對某推薦實體的采納系數,計算公式如下:
C=∏ni=1Ci(1)
考慮到存在多條推薦路徑的最終推薦實體是同一實體的情況,為了消除重復經驗信息,該等效采納系數(為方便描述,記為Ci)采用如下的調和平均計算式:
Ci=1if(j∈[1,…,ni])∧(Ci,j=1)
1-1/∑nij=1 (1/(1-Ci,j))else(2)
其中:i代表最終推薦實體的編號;j代表具有同一個最終推薦實體的推薦路徑編號。
因此,有如下計算實體ID2對實體ID1的推薦經驗值的計算式。其中,m表示最終推薦實體的個數。
Mi=int∑mi=1Ci#8226;Mdi(3)
Ni=int∑mi=1Ci#8226;Ndi(4)
e)根據步驟c)d)分別得到的直接經驗值和推薦經驗值計算其他計算實體(如ID2)對實體ID1的綜合信任值(即成功經驗值M、失敗經驗值N),并寫回信任表。對應的計算公式如下:
M=αMd+Mi(5)
N=αNd+Ni(6)
由于相對于其他來源的信任信息,實體會更傾向于根據自己的直接經驗對目標實體作出的信任評價,系數α(α≥1)可根據計算實體的不同進行初始化設置。
f)基于beta分布的特性,引入懲罰系數ρ(ρ≥1)來計算信任度T,并寫回信任表。其計算公式如下:
T=(M+1)/(M+ρN+2)(7)
式(7)中引入了一個懲罰系數ρ作為懲罰機制來懲罰那些具有惡意欺騙行為的實體,例如那些在開始階段每次都提供誠實的服務以騙取較高的信任度,再以不誠實的服務惡意騙取較高收益回報的惡意行為的實體。
其中,步驟d)中推薦經驗值的計算分為三種情況:單條路徑和多條路徑中最終推薦實體有一個和有多個,分別舉例如圖2(a)~(c)所示。
圖2(a)中,計算實體A對E的推薦經驗值Mi=int(Cc#8226;MdCE)。其中:MdCE表示C對E的直接經驗值,等效采納系數Cc=CA→B#8226;CB→C。圖2(b)中,存在兩條最終推薦實體都是D的推薦路徑:A→B→D,A→C→D,這兩條推薦路徑的等效采納系數分別為CD1=CA→B #8226;CB→D,CD2=CA→C#8226;CC→D,如果兩者有一個為1,則CD=1;否則有CD=1-1/[1/(1-CD1)+1/(1-CD2)]。計算實體A對E的推薦經驗值Mi=int(CD#8226;MdDE)。其中MdDE表示計算實體D對E的直接經驗值。圖2(c)中,實體A對E的推薦路徑共有三條,以實體D和F分別作為最終推薦實體的推薦經驗值的求法分別與圖2(a)(b)中相同,設為MD和MF,那么實體A對E的推薦經驗值為Mi=int(MD+MF)。
2.2 選擇可信的計算實體
當計算實體對應的信任角色監聽并接收到另一計算實體發出的消息請求后的操作如下:a)從消息的消息頭中提取字段entityID的值、從消息屬性中提取字段N的值,獲取的信息表示為(ID2,n)。其中:ID2表示發送消息的計算實體標志;n(n≥1)表示請求計算實體的個數。b)獲取其綁定表中的所有實體標志IDi,假設有M(M≥1)個。c)重新設置信任表(見表2)中的標志位F。先將該信任表中所有的F值清零,再將實體標志1為IDi的所有計算實體對應的F值置為1,表示這些計算實體此時綁定在系統中。d)從F=1所在的所有的記錄中,找出實體標志2為ID2的記錄。e)根據快速排序算法從信任表中選擇信任度較大的m(m≤M)個計算實體。其中m=n+「n/2+1,并從中隨機選取n個參與系統協同,可以有效地避免服務熱點問題的出現,即某一個計算實體一直很忙,而其他符合條件的實體則可能分配不到計算任務而餓死,致使負載不平衡。需要注意的是,以上操作與信任表的更新操作互斥。
3 模型的實現
3.1 實現框架
該協同模型采用Java消息服務技術(JMS)和EJB(enterprise JavaBean)技術[4,6]來實現,實現框架[7~9]由三個部分組成,如圖3所示。
1)JMS客戶端 運行計算實體,是消息的發送者和接收者,創建與JMS服務器的連接和會話,創建消息發送者和接收者對象。
2)JMS服務器 系統中各節點通信的平臺,提供對計算實體消息隊列的管理,能夠動態創建和撤銷一個消息隊列,它的消息監聽器實現對到達的消息的監聽和接收。
3)EJB服務器 EJB組件賴以生存的運行和管理環境,部署基于消息驅動Bean(MDB)和實體Bean開發的信任角色和協調器。其中MDB用來實現信任角色對計算實體發送的消息的監聽;JNDI是一種標準的Java命名系統接口,為開發人員提供了查找和訪問各種命名和目錄服務機制,利用該接口可以定位到JMS服務器的對象上,為信任角色提供消息接收實體的相關身份信息。
3.2 實現方案
3.2.1 計算實體
運行在客戶端的計算實體與JMS服務器連接,通過JMS服務器提供的消息發送和接收隊列與其他實體完成通信。
1)計算實體初始化 利用JMS提供的API服務創建消息發送對象sender(sendQueue)和消息接收對象receiver(receiveQueue)。
2)計算實體發送消息 利用sender對象中的send(message)方法直接向消息發送接口sendQueue發送消息,JMS服務器在接收傳遞的消息時,把時間戳timestamp1寫入消息頭中,并將消息存儲在為該計算實體創建的消息發送隊列中。
3)計算實體監聽、接收消息 經過處理的消息到達目標計算實體的消息接收隊列時,JMS的消息監聽器的messageListener接口提供的onMessage(message m)方法實現對消息到達時的動作,并利用receiver對象的receive(message m)方法從消息接收接口receiveQueue接收消息。
3.2.2 信任角色
信任角色基于EJB類型中的消息驅動Bean(MDB)和實體Bean來開發實現。其中實體Bean是持久化對象,用來實現信任角色存儲信任表、信任度公式等數據;MDB是基于JMS消息的一個可靠的消息監聽器,用來實現信任角色對計算實體發送的消息的監聽和接收。
當計算實體發送消息后,信任角色根據消息類型的不同來收集經驗值信息或選擇可信的計算實體,其過程如下:
a)連接JMS服務器。EJB服務器中實現的信任角色,利用MDB的messageDrivenBean接口提供的ejbCreate()方法查找JMS服務器的連接工廠和隊列,建立與它們的連接并創建MDB實例。
b)監聽消息。MDB是一個可靠的監聽器,實現了messageListener和messageDrivenBean兩個接口。信任角色利用messageListener接口提供的onMessage(massage m)方法監聽和接收消息,當消息事件到達時,EJB服務器自動調用該方法。
c)處理消息、獲取信息。當信任角色接收監聽器傳遞過來的消息后,EJB容器將消息分發給MDB實例進行處理,多個MDB實例可以并發處理消息。首先,判斷消息屬性中的字段R,如果是返回類型的消息,則通過消息處理收集經驗值信息;如果是請求類型的消息,則獲取請求計算實體的個數等信息。同時根據消息的內容和自身狀態變量信息,利用EJB Timer服務的timerService接口提供的createTimer()方法創建一個定時器并施加一個時間約束t,定時器在(timestamp1+t)時刻到達時,利用該服務的timedObject接口調用ejbTimeout()方法。
d)計算信任度。信任角色根據信任表中的經驗值信息計算相關計算實體的信任度。
e)選擇可信的計算實體。信任角色根據信任度大小并結合避免服務熱點問題的思想為系統選擇可信的n個計算實體。
f)轉發消息。信任角色根據需要采用block(message m)或delay(m,tm)原語阻塞或延遲消息轉發,最后通過reroute(message m)方法將消息轉發到目標計算實體的消息接收隊列。而請求類型的消息需要在約束時間t內,即(timestamp1+t)時刻到達之前轉發;如果超時,信任角色以事件形式通知協調器選擇失敗。
g)刪除MDB實例。調用MDB的messageDrivenBean接口提供的ejbRemove()方法刪除MDB實例。
3.2.3 協調器
協調器基于實體Bean來開發實現,實現了EJB的entityBean接口,該接口定義了若干方法。實體Bean是持久化狀態對象,能夠長期存在,可以用來實現協調器的協同策略、綁定策略,這些策略以規則的方式存在并傳達給信任角色,由信任角色完成計算實體的協同行為,策略可以通過定義的添加、刪除、更新和瀏覽方法進行操作。通過publish(event e)方法和eventDeal(event e)方法向信任角色發布事件和處理接收到的事件,若接收到信任角色選擇計算實體失敗的事件后,協調器就改變自身狀態、采取接口定義的方法進行處理。
4 結束語
本文采用關注分離的原則,將分布式系統的計算行為、交互行為和信任處理行為進行分離,提出了一個面向信任的協同模型,解決了收集計算實體的經驗值困難的問題,并給出了具體的信任度計算公式。該模型不但降低了系統的復雜性、提高了復用性、利于計算實體計算功能的實現,而且為開放分布式系統選擇可信的實體參與協同提供了依據,從而提高了系統的可靠性和通信安全性。本文利用Java消息服務技術和EJB技術實現了模型的框架,為系統應用的開發提供了一種參考。
參考文獻:
[1]馬曉星. Internet軟件協同技術研究[D].南京:南京大學計算機軟件研究所 2003:12-61.
[2]徐鋒,呂建,鄭瑋,等.一個軟件服務協同中信任評估模型的設計[J].軟件學報 2003,14(6):1043-1051.
[3]REN Shangping YU Yue CHEN Nianen et al. Actors roles and coordinators: a coordination model for dynamic distributed open systems[C]//Proc of the 8th International Conference on Coordination Models and Languages. Berlin:Springer 2006:247-265.
[4]HEPNER M BURRBIDGE R. Java消息服務API參考指南——J2EE平臺的消息傳遞[M]. 康博,譯.北京:清華大學出版社 2002.
[5]劉玉龍,曹元大.分布網絡環境主觀信任模型研究[J].北京理工大學學報,2005 25(6):504-508.
[6]ROMAN E SRIGANESH R BROSE G. 精通EJB[M]. 羅時飛,譯. 北京:電子工業出版社 2005.
[7]申利民 李峰 高春燕,等.通過協同模型取得分布式系統的適應性[J].小型微型計算機系統 2007,28(11): 1942-1946.
[8]SHEN Limin REN Shangping LI Feng et al. A time and interaction model for open distributed timing computation[C]//Proc of the 7th International Conference on Algorithms and Architecture for Parallel Processing.Berlin:Springer 2007:83-94.
[9]申利民 李峰. 開放分布式計算時限模型的設計與實現[J].計算機工程 2007,33(19): 60-63.