盧曉霞,韓堅華
(廣東工業(yè)大學(xué) 計算機學(xué)院,廣東 廣州 510006)
Web服務(wù)憑借其松散耦合、語言與平臺無關(guān)以及開放、標(biāo)準(zhǔn)化等優(yōu)點,已經(jīng)成為企業(yè)跨平臺應(yīng)用集成的首選[1]。但是,Web服務(wù)的安全及信任仍然是制約其發(fā)展的最大阻礙。當(dāng)前,OASIS已經(jīng)發(fā)布了一系列的安全規(guī)范,主要有WS-Security規(guī)范、安全斷言標(biāo)記語言SAML規(guī)范、可擴展的訪問控制高標(biāo)識語言XCAML規(guī)范,而且又提出WS-Trust規(guī)范和WS-Federation規(guī)范提供對信任的支持,通過交換安全令牌在不同安全域通信雙方建立信任[2],但是這主要還是針對Web服務(wù)安全的身份認證,并沒有提供如何進行信任評價和信任決策。
本文針對OASIS發(fā)布的關(guān)于Web服務(wù)安全規(guī)范不能滿足服務(wù)雙方利用信任信息進行信任評估和決策授權(quán)的問題,將信任機制引入身份認證及訪問控制中,提出了一種Web服務(wù)中基于信任的跨域安全認證模型TB-WSCDSA(Trust-Based Cross-Domain Security Authentication of Web Service)。該模型能夠解決服務(wù)提供方與請求方跨域認證的問題。它將PKI數(shù)字證書與XCAML相結(jié)合,通過一個可信的第三方機構(gòu)對不同安全域的服務(wù)雙方進行認證,利用雙方的直接交互經(jīng)驗及各自域內(nèi)其他證人的推薦信任信息,計算信任度,并與自身預(yù)先設(shè)定好的信任標(biāo)準(zhǔn)或信任度閾值進行比較,然后根據(jù)比較結(jié)果進行決策和授權(quán)。決策結(jié)果保存在信任證書中,發(fā)送給服務(wù)請求方和提供方,作為雙方信任并進行通信的依據(jù)。
TB-WSCDSA模型是基于XCAML和PKI數(shù)字證書的。圖1是TB-WSCDSA模型圖。首先,服務(wù)請求方及提供方都從本域內(nèi)的CA認證機構(gòu)獲取自己的數(shù)字證書,這樣才能在交互過程中進行彼此認證。可信的第三方認證機構(gòu)使用PKI的CA認證。這里認定,可信的第三方認證機構(gòu)已經(jīng)與雙方的根CA(信任錨)建立信任關(guān)系[3]。
服務(wù)雙方認證完成后,將各自的數(shù)字證書以及第三方認證結(jié)果發(fā)送到模型中的認證模塊進行驗證。在確認服務(wù)雙方的身份后,模型的XACML的訪問控制模塊通過計算信任度決定是否發(fā)送信任證書給請求方或提供方。最后,請求方使用該信任證書向提供方請求服務(wù),提供方使用該信任證書決定是否提供服務(wù)。
圖1 TB-WSCDSA模型圖
TB-WSCDSA主要由認證、策略管理、信任度計算和決策授權(quán)四部分組成。圖2顯示了TB-WSCDSA的架構(gòu)和流程。
圖2 TB-WSCDSA架構(gòu)和流程圖
身份認證是TB-WSCDSA模型的基礎(chǔ),只有確定了服務(wù)雙方的身份以后,才能夠根據(jù)相關(guān)信任信息進行信任評估和授權(quán)決策。該認證過程是跨安全域的,包括服務(wù)請求方、請求方所在域的根CA機構(gòu)(信任錨)、服務(wù)提供方、提供方所在域的根CA機構(gòu)(信任錨)[3]、已經(jīng)與雙方根CA建立信任關(guān)系的可信的第三方信任機構(gòu)以及TB-WSCDSA。圖3顯示了認證過程。認證過程如下:
(1)服務(wù)請求方及提供方從各自所在安全域的根CA機構(gòu)獲得本域數(shù)字證書。
(2)取得本域數(shù)字證書后,請求方加密發(fā)送數(shù)字證書給提供方,提供方收到后用自己的私鑰解密,并通過本域的根CA發(fā)送到可信第三方機構(gòu)進行認證,提供方同樣將自己的數(shù)字證書發(fā)送給請求方進行認證。
(3)可信的第三方CA機構(gòu)對服務(wù)雙方認證完成后,返回認證結(jié)果。
(4)服務(wù)請求方和提供方從第三方接收到認證結(jié)果后,將對方的數(shù)字證書及第三方認證結(jié)果打包加密發(fā)送到TB-WSCDSA模型的認證模塊;認證模塊驗證服務(wù)雙方提供的證書及結(jié)果,完成認證。
圖3 認證過程示意圖
服務(wù)雙方在完成認證后將結(jié)果發(fā)送到TB-WSCDSA模型的認證模塊,認證模塊通過請求方域及提供方域證人的請求推薦信任、雙方的數(shù)字證書以及第三方認證結(jié)果后,將服務(wù)請求轉(zhuǎn)發(fā)到訪問控制模塊,再對雙方進行信任評估和決策。訪問控制模塊包括策略管理、信任度計算和決策授權(quán)3個部分。
策略是XACML的核心,XACML定義了標(biāo)準(zhǔn)的策略語言模型[1]。在 TB-WSCDSA的策略模型中,<target>標(biāo)簽是該策略集(策略、規(guī)則)的索引,用來查找某個訪問控制請求所適用的策略集或策略規(guī)則;<subject>標(biāo)簽定義了適用的訪問請求主體, 如<subject>any subject</subject>表示適用于任何主體;<resource>標(biāo)簽定義了適用的客體,如某個 Web服務(wù)的 WSDL文件;<action>標(biāo)簽定義了主體請求獲得的行為,如Web服務(wù)的執(zhí)行(execute);<condition>標(biāo)簽是 TB-WSCDSA 中最重要的標(biāo)簽之一,它定義了被授權(quán)所必須滿足的信任條件,其中包括信任度閾值(trust_threshold)和信任度比較函數(shù)(function:trust_comparison)兩個主要部分。在獲得服務(wù)雙方的信任度之后,利用信任度比較函數(shù)來比較該信任度是否滿足信任度閾值(trust_threshold)的要求,相應(yīng)地返回true或 false。
TB-WSCDSA中的信任計算部分由XML解析器、數(shù)據(jù)庫和信任處理機三部分組成。TB-WSCDSA計算直接信任度的信息來自于服務(wù)雙方。首先,服務(wù)雙方初始化各自的信任處理機,得到了信任度的計算方法。信任度計算所必需的數(shù)據(jù)用XML文件發(fā)送到XML解析器中,解析后保存在數(shù)據(jù)庫相應(yīng)的表格之內(nèi)。在計算信任度時候,信任處理機從數(shù)據(jù)庫中讀取相應(yīng)的數(shù)據(jù)進行計算。本文計算的信任度包括雙方直接交互信息(稱為個體緯度)和來自于域中其他證人的信息(稱為社會緯度)。最后將兩者進行綜合[4]。個體緯度的信任度公式如下:
該式利用雙方以往的直接交互結(jié)果計算信任度,是對所有參考事件的信任評價的綜合。其中,φ是用于計算直接信任度的不同事件的類型,不同類型的事件對直接信任度計算的影響是不同的;ODB被定義為所有出現(xiàn)的 結(jié) 果 的 集 合 ;OD被定義為服務(wù)提供方p與服務(wù)請求方r之間發(fā)生的對應(yīng)于事件類型的所有結(jié)果的集合;(φ)被定義為服務(wù)提供方、P與服務(wù)請求方 r之間的對應(yīng)于事件類型 φ 的直接信任度;ρ(t,ti)中的 t是當(dāng)前時間,ti是事件發(fā)生的時間,ρ(t,ti)表示該事件隨著時間的 推 移 對 直 接 信 任 度 計 算 的 衰 減 ,ρ (t,ti)=其中的形式由服務(wù)雙方選擇;表示在事件i中,服務(wù)提供方p對請求方r的信任評價或服務(wù)請求方對提供方的信任評價,Im ρ(oi,φ)=g(-XC(φi)),XC(φ)表示提供方或請求方對事件的預(yù)期收益;表示事件的實際收益,函數(shù)g表示服務(wù)提供方或請求方根據(jù)事件實際收益與預(yù)期收益的差值而做的信任評估,g的具體形式也由服務(wù)雙方選擇。令a(φ)表示事件類型為φ的信任度在總信任度中占的權(quán)重,(φ)=1, 則總的直接信任度為(φ)]。 信任度的取值區(qū)間為[-1,1].
最后, 信任度的計算式為:Tp→r=ε×+(1-ε)×。其中,ε是來自于直接交互經(jīng)驗的個人緯度的信任度的權(quán)重。信任計算的結(jié)構(gòu)如圖4所示。首先,對信任處理機進行初始化,輸入相應(yīng)的計算公式,公式采用XML格式表示。然后,信任度計算所需的數(shù)據(jù),同樣采用XML格式表示,經(jīng)過解析器的解析存入數(shù)據(jù)庫中。最后,信任處理機利用數(shù)據(jù)庫中的數(shù)據(jù)計算信任度并將結(jié)果發(fā)送給策略決策點(PDP)。
圖4 信任計算結(jié)構(gòu)
決策和授權(quán)由PDP完成,就是根據(jù)訪問控制策略和信任度來決定是否給予授權(quán)的過程[5]。其決策的過程如下:
(1)解析服務(wù)雙方的服務(wù)請求,獲?。約ubject><resource><action>和<environment>標(biāo)簽(<environment>標(biāo)簽可能不存在)。
(2)根據(jù)以上4個標(biāo)簽查找<target>與此相匹配的策略文件policy.XML。
(3)如果存在相應(yīng)的策略文件,則進行步驟(4);否則,返回 not-applicable,訪問控制決策失敗。
(4)解析 policy.XML 中 rule的<condition>標(biāo)簽,獲得信任度比較函數(shù) trust_comparison和信任度閾值trust_threshold,請求獲取服務(wù)提供方對該服務(wù)請求方的信任度requestor_trust以及服務(wù)請求方對提供方的信任度provider_trust。
(5)返回服務(wù)雙方的信任度requestor_trust和provider_trust。
(6)根據(jù)<condition>標(biāo)簽中定義的信任度比較函數(shù)trust_comparison,比較服務(wù)雙方的信任度requestor_trust和provider_trust是否大于等于各自的信任度閾值trust_threshold,如果是,則返回 true;否則,返回 false。
(7)驗證返回值是 true還是 false,如果是 true,則返回<effect>標(biāo)簽值 permit;否則,返回 deny。
最后,PDP將決策的結(jié)果發(fā)送給PEP,PEP將決策結(jié)果封裝在信任證書中發(fā)送給服務(wù)請求方和服務(wù)提供方。服務(wù)請求方利用TB-WSCDSA提供的信任證書向服務(wù)提供方請求服務(wù),而服務(wù)提供方利用信任證書授權(quán)請求方使用服務(wù)。
本文提出了一種Web服務(wù)下基于信任的跨域認證模型TB-WSCDSA。該模型的優(yōu)點是能夠和OASIS發(fā)布的諸多Web服務(wù)安全規(guī)范兼容。TB-WSCDSA與認證代理類似,是存在于服務(wù)請求方與服務(wù)提供者之間的中間件系統(tǒng),TB-WSCDSA代替服務(wù)提供方和請求方,完成信任計算和評估工作,而信任計算的算法、信任信息及策略又來自于服務(wù)雙方。因此,計算得到的信任度和授權(quán)決策結(jié)果是服務(wù)雙方可信賴的。服務(wù)雙方只需要驗證各自通信時提供的信任證書,就可以實現(xiàn)基于信任的授權(quán)和訪問控制。認證模塊實現(xiàn)了單點登錄的功能,在認證過程中,認證的客體只要提供一次認證信息,大大簡化了請求服務(wù)和推薦信任信息分享過程中的認證復(fù)雜度。
[1]馬曉寧,馮志勇,徐超.Web服務(wù)中基于信任的訪問控制[J].計算機工程,2010,36(3):10-12.
[2]PAPAZOGLOU M P.Web服務(wù)原理和技術(shù)[M].北京:機械工業(yè)出版社,2009.
[3]俞旭.PKI中幾種信任模型的分析研究[C].江蘇省電力安全論壇論文集,2004:351-356.
[4]SABATER J,SIERRA C.Reputation and social network analysis in multi-agent systems[C].Proceedings of the 1st International Joint Conference on Autonomous Agents and Multi-Agent Systems.Bologna, Italy:[s.n.],2002: 475-482.
[5]馮曉寧,馮志勇,徐超.Web服務(wù)中跨安全域的基于信任的訪問控制模型 [J].計算機應(yīng)用研究,2009,26(12):4751-4753,4767.