楊墨,王麗娜,
(1. 武漢大學 計算機學院,湖北 武漢 430072;2. 武漢大學 空天信息安全與可信計算教育部重點實驗室,湖北 武漢 430072)
隨著 Internet的應用,系統表現為由多個軟件服務組成的動態協作網絡,開始呈現出一種柔性可演化、連續反應式、多目標適應的新形態。軟件實體以基本(原子)服務的形式存在,并通過協同機制進行跨網絡的互連、互通、協作和聯盟,進而構成更復雜的組合服務[1,2]。在服務交互協同中,請求服務的主體(以下簡稱請求者)和提供服務的主體(以下簡稱提供者)[3]之間并不存在確定的信任關系。因此,如何確保應用系統的可靠性成為一個需要解決的問題。
另一方面,網絡中大量存在功能相同或相似而平臺和實現相異的服務。換而言之,冗余和多樣性是現有服務的固有屬性[4,5]。據此,學者們提出了各種容錯的算法,試圖利用冗余避免單個服務錯誤導致的整個系統的失效和故障[6,7]。
FAWS提供了 Web平臺失效檢測及日志等容錯機制,采用主副服務的方法實現用戶透明的服務訪問機制,但沒有機制保證服務的可用性[8]。
Transparent Fault-Tolerant Web Service修改操作系統及服務器內核建立客戶透明的服務訪問機制,但該方法需要修改操作系統,通用性較差[9]。
FTWeb服務容錯平臺通過擴展基本的Web服務運行環境實現容錯。但它沒有針對服務可用性的特點組合服務,失效檢測通過超時機制實現[10]。
FT-SOAP通過擴展WSDL,引入服務組,采用被動復制模式實現容錯功能。但沒有考慮到服務實現的自治性,失效檢測也是通過超時機制實現[11]。
服務網絡是一個動態變化、相互聯系卻又難以精確預測的復雜信息環境[12]。以上的研究很少考慮到網絡的動態特點,失效檢測機制簡單,沒有根據領域特點對容錯實施動態調節。
本文針對以上特點,提出一種基于信任容錯的服務可靠性增強方法,利用選舉協議(voting protocol)[13]設計服務失效檢測,提出了服務信任輪詢檢測機制;建立信任機制度量提供者的可靠性;依據提供者的領域特點和請求者的可靠性需求設計信任感知的容錯服務個數計算方法和冗余服務選擇算法;實驗驗證本文的方法比單純使用信任或容錯更能抵御網絡中存在的3類惡意攻擊[14]。
本文的組織結構為:第2節簡要描述基于信任容錯的服務可靠性增強框架。第3節設計了服務失效檢測機制。第4節闡述了容錯服務選擇算法。第5節做出了實驗設計和結果分析。最后是結束語。
圖1是基于信任容錯的服務可靠性增強框架。其包含4個角色(提供者、請求者、服務選擇模塊和信任管理模塊)和2個主要流程(容錯服務選擇流程——附加輪詢和獨立輪詢流程)。

圖1 基于信任的容錯服務可靠性增強框架
服務選擇流程如下。
step1 當請求者需要使用某種服務時,詢問容錯服務選擇模塊RSSM,給出其功能需求f和希望達到的可靠性指標(置信度λ)。
step2 RSSM根據f查找到相應的領域,綜合考慮置信度λ和領域信任狀況推選出適量的提供者和待測者,將列表返回給請求者。
step3 請求者連接各提供者,獲取服務。
step4 在服務交互進行時或完成后,請求者根據選舉協議獲得服務的最終結果,并檢測各個提供者的可靠性。
step5 請求者將檢測結果作為反饋發還給信任管理模塊TMM。
step6 信任管理模塊更新提供者的信任信息。
請求者需要在請求階段付出一部分虛擬貨幣,并在反饋時獲得略多的虛擬貨幣。具體虛擬貨幣的實現機制在本文中不做過多描述。
本方法構架了輪詢機制以實現服務可靠性信息的更新,分為附加輪詢和獨立輪詢。附加輪詢整合到容錯服務獲取過程中,而獨立輪詢為信任模型主動發起的一次服務請求,用于刷新提供者的信任狀態。輪詢的具體算法見第3節。
本文的方法具有以下功能特點。
顧及所有領域和提供者。通過輪詢機制能保證冷僻和低信任的提供者可靠性信息的新鮮性。
面向領域,用戶偏好敏感的信任機制。當請求者對某一特定領域的查詢增加時,該領域下所有提供者的可靠性信息的準確度也會相應的提高。
面向領域,需求驅動的選擇算法。不同于已往的容錯算法在設計階段固定容錯個數的策略,本方法在服務選擇時,綜合考慮請求者的非功能需求和領域當前的信任狀態,能夠較為準確的計算出完成當前服務任務所需容錯服務的個數。
在Web環境中,請求者的非功能屬性,一般包括系統的性能、可靠性、可維護性、可擴充性和對技術和對業務的適應性等。其中,提供者的可靠性最為重要。
可靠性:指在給定的時間內以及規定的環境條件下,系統能完成所要求功能的概率。
而不可靠主要是由錯誤引起的。服務主要包含2個類型的錯誤:1) 顯式的錯誤,并引發異常信息,解決方式為延時發送請求或者更改可替代的提供者;2) 隱式的錯誤,提供者返回錯誤的數據,不會立刻引發程序異常信息,但會導致程序產生不可預期的行為和結果。
基于選舉協議的服務檢測用于發現提供者的隱式錯誤。請求者從多個提供者處獲取結果,只要它獲得的正確結果足夠多,則仍可以發現有效的服務結果。基于選舉協議的檢測算法如下。
step1 請求者和同一領域中的若干個提供者交互。
step2 請求者在一段時間t內獲得的提供者有效返回數據集為D。 D = { d1, d2,… ,dl},l∈ N+,l≤rn其中rn為容錯提供者個數。當滿足超過 r n / 2的返回數據值相同或相似時請求者可以獲得正確的服務任務結果 r e sult。ε為允許最大誤差。

step3 逐一比較最終結果result和各提供者的結果value,按照相識程度記為不同程度的正確。
step4 請求者將標記值作為反饋返回給信任管理模塊。
本文使用信任度表示提供者的可靠性。而系統中實體的信任屬性具有易失性,長時間不進行檢測,其值可能不準確。
本文借鑒內存的輪詢思路,提出了一套基于輪詢機制的服務失效檢測機制,并將實體信任的檢測過程和對其的使用過程分離開來。假設在一個周期內,實體的信任程度不會有很大程度的改變。對信任程度高的實體的申請相當于CPU對內存的訪問,訪問過程可以作為刷新過程。而信任度低和長期得不到訪問信任度的不確定性高的節點,類似于內存電容漏電導致的數據消失,需要輪詢過程更新其信任狀況。
本文設定3種信任狀態,在服務和檢測中分配2種不同的職能。
未知狀態:處于未知狀態的提供者(未知者)的信任度不確定或很低,因此需要對其進行檢測。未知者只具有待測者職能。
可信狀態:處于可信狀態的提供者(可信者)必須長期保持很高的信任度。可信者只具有檢測者職能。
混合狀態:信任度大于未知者小于可信者的提供者處于混合狀態(混合者)。混合者同時具有待測者和檢測者職能。
檢測者:檢測者在輪詢檢測中提供服務,結果用于產生服務任務最終結果和檢測待測者。
待測者:待測者在輪詢檢測中提供服務,但是其結果并不被用于產生服務任務最終結果,而是作為評判其信任狀態的依據。
附加輪詢算法如下。
step1 服務選擇模塊將stn個信任情況最久未更新的待測者加入檢測列表返回給請求者。stn為附加輪詢待測者個數,其值根據領域的特點和請求頻率按下面公式得到:

其中,T imei表示領域i中,提供者允許未被使用的最長時間。F reqi表示領域i的查詢頻率。hn和tn為領域中混合者和未知者個數。MaxStn為每次服務選擇允許的最大輪詢提供者個數
step2 請求者和所有提供者交互。利用基于選舉協議的服務檢測或得評測結果,并反饋給信任管理模塊TMM。
step3 信任模型使用檢測結果更新待測者信任度。
對于長時間沒有任何請求的冷僻的領域,信任管理模塊需要發起一次獨立輪詢。算法如下。
step1 信任管理模塊保持一個計數器。當TimeD(領域允許未使用的最長時間)內沒有任何對該領域的查詢時,由TMM發出一個獨立的輪詢發起信號給服務選擇模塊,要求產生一個置信度為領域缺省值的服務選擇過程。TimeD由以下公式獲得

step2 服務選擇模塊用虛擬貨幣招募請求者進行一次服務交互過程,待測者個數為MaxStn。
step3 請求者和所有提供者交互。利用基于選舉協議的服務檢測或得評測結果,并反饋給信任管理模塊TMM。
step4 信任模型使用檢測結果更新待測者信任度。
服務檢測機制用于發現和排除網絡中的惡意提供者。
網絡實體分為2類:善意實體和惡意實體。善意實體大部分時間能提供正確的服務結果。惡意實體提供虛假或惡意的服務,并且設法詆毀正常實體。本文假設客戶的反饋大部分是正確的,討論提供者的惡意行為。
獨立惡意攻擊:此類惡意提供者彼此沒有聯系,在與請求者的交互中提供虛假的結果或在結果中插入惡意代碼。發生故障而提供錯誤結果的提供者具有以上的特點,同樣視為惡意提供者。
復雜策略攻擊:此類惡意提供者知曉一部分系統的信任機制信息,施展一套復雜的策略偽裝為善意提供者:交替提供正確服務和施展惡意攻擊,通過控制兩者的比例使得自身的信任度在請求者可以接受的范圍內波動,從而繼續產生惡意行為。
協同惡意攻擊:此類惡意攻擊者可以看做獨立惡意攻擊者間形成了協同作弊的團體,通過策略上的合作,試圖極力夸大同一團體中的同伙,并試圖詆毀其他提供者。
以上3類惡意攻擊具有代表性。事實上,惡意提供者可以實施同時實施以上多種惡意行為。
現有的容錯算法一般在系統設計中設定容錯服務個數為一個固定值。信任感知的容錯服務選擇算法針對動態變化的Web網絡環境,考慮領域當前的信任狀態,能夠計算出保證請求者非功能需求的最小的容錯數量和容錯提供者列表。
可靠性置信度λ(簡稱置信度)是請求者對服務任務能達到的可靠性的量化值的期望。
置信度的等級同服務領域相關。表1為服務可靠性和置信度等級的對應關系。容錯服務選擇模塊中保持了一個服務類型和置信度取值的對應列表。表2為各個服務置信度的缺省設定,如果請求者沒有提出置信度要求,則在容錯個數計算時使用缺省值。而缺省值會隨著請求者的置信度請求而動態改變。

表1 服務可靠性和置信度等級的對應關系

表2 服務置信度缺省值
為了在選舉協議中請求者能獲得正確的服務任務結果并能對檢測各個提供者的正確性,提供者的服務結果必須有一半以上為正確。即


這個取值需要大于等于此次服務選擇請求的置信度,并且rn應該設置得盡可能的小。因此rn的取值應該滿足下面的公式:

以往的容錯方法對服務的選取具有盲目性。而信任感知的容錯服務選擇方法根據領域的信任特點,優先從可信者中選取提供者。在可信者數目不足的情況下,仍然可以通過使用混合者達請求者的置信度要求。已下是信任感知容錯服務選擇算法。
step1 嘗試在可信者中選擇提供者。由于rn數量不會太大,使用窮舉法獲得容錯數rn,使其滿足式(1)。

step2 如果容錯數小于可信者個數rnan≤,即可信者足夠滿足用戶非功能需求。則隨機選取rn個可信者加入選擇列表,轉到step 5。
step3 可信者不夠,需要降低標準,容忍一部分錯誤,同時使用可信者和混合者提供服務。使用窮舉法獲得所需混合者數量shn,使其滿足式(2)其中,an和hn分別為可信者和混合者的個數。iPHt為信任度第i高的混合者。式(2)和式(1)的原理類似,這里就不做具體推導。

step4 將全部可信者和信任度最高的shn個混合者加入選擇列表。
step5 將選擇列表返回給請求者。
本節測試3種方法對惡意攻擊的抵抗能力。第1種方法是基于Beta信任模型的方法,閾值設定為0.5。并假設該能夠使用某種其他機制能立即無誤的獲知服務結果的正確性。第2種方法是容錯方法。第3種方法是基于信任容錯的方法。實驗檢測指標為給定置信度的容錯數和服務成功率。
實驗1 原子實驗。
實驗1為原子實驗,仿真一個領域的200個提供者的運行過程。實驗設定如表3所示。

表3 獨立惡意攻擊原子實驗的參數設置
圖2~圖4表明的是經過3 000次服務請求后,3種方法的結果。其中橫坐標是提供者序號,1~100號為惡意提供者。縱坐標表示的是各提供者的正確率、信任度和負載。
圖 2為容錯方法對于獨立惡意攻擊的抵御情況。為了和基于信任容錯的可靠性增強方法比較,在實驗中容錯數設為 6。大部分提供者的負載在80~110隨機分布。由于沒有機制辨認惡意提供者,提供者服務的準確率和負載沒有任何相關性,服務可靠性沒有得到很好的保障。

圖2 容錯方法負載和正確率的關系

圖3 基于信任的方法負載和成功率同正確率的關系
從圖3中可以看到,基于信任的方法可以較好檢測出惡意提供者。幾乎所有的惡意提供者信任度為0,而剩余的大部分不到閾值0.5;而大部分善意提供者被認定為可信。大部分惡意提供者的負載大于8;而善意提供者的負載在10~35之間。基于信任的方法可以在一定程度上識別善意和惡意提供者。其缺點為惡意提供者也有很高的負載,這意味著該方法對惡意攻擊抵御較差。
圖4是使用基于信任感知容錯的方法,提供者的信任度和負載同正確服務比率具有相同的趨勢。幾乎所有惡意提供者的信任度都為 0,其負載幾乎為0;而善意提供者的信任度一般高于閾值0.3,并且負載比較大。其中負載的最高值是 300。而理論上如果所有善意提供者的具有相同的訪問量,其負載為180,兩者差距不大。

圖4 基于信任容錯的方法負載和成功率同正確率的關系
實驗2 惡意節點率對容錯數以及成功率的影響。
本組實驗中,惡意提供者的比率為[0,90%],每增加10%進行100次原子實驗,計算平均的容錯數和服務任務成功率。
表4顯示的是容錯方法和基于信任容錯的方法所需的容錯數。前者是由理論計算獲得。當惡意提供者比率增加時基于信任容錯的方法的平均容錯數增速平緩,說明其對于善意和惡意的環境有平穩的性能。而容錯方法在無惡意提供者的環境中都需要5個提供者。而且其容錯數增速很快,當領域有超過30%的惡意提供者時,已不具有實現性。

表4 容錯數和惡意提供者比率的關系
圖5顯示的是使用3種方法的提供者比率和成功率的關系。當惡意提供者比率增長時,容錯和基于信任的方法成功率下降的幅度較大,即該方法不能有效地防御獨立惡意攻擊。基于信任容錯的方法在所有情況下都能達到高于0.96的成功率。

圖5 惡意攻擊提供者比率和成功率的關系
通過實驗 2,可以看到基于信任容錯的方法在錯誤容忍和環境的適應方面都比基于信任的和容錯方法要好。
實驗3 置信度對容錯數及成功率的影響。
本組實驗研究特定的惡意提供者比率下,基于信任容錯方法的容錯數、置信度和成功率的關系。本組實驗中,惡意提供者比率設置為0.7、0.8和0.9。而置信度為[0.9,0.99],每增加0.01,運行100次原子實驗,并計算容錯數和成功率的平均值。
從圖6看到,隨著置信度的增加,容錯數緩慢增加到大約 8.3,說明該方法能夠根據請求者需求動態調配資源,并且開銷在系統能夠接受的范圍之內。從圖7可以看到,在3種惡意提供者比率下,超過96%的任務達到了置信度要求。

圖6 容錯數和置信度的關系

圖7 成功率和置信度的關系
本組實驗比較3種方法對于復雜策略攻擊的抵抗能力。惡意提供者行為策略設定為交替提供CN次正確服務和MN次惡意服務。惡意提供者比率為[0,90%],每10%運行100次原子實驗。分別測試3種策略:(C N, M N) =(2, 1), (1, 1), (1, 2)。完成后計算平均成功率。
從圖8中可以看到,不論是善意還是惡意的環境,基于信任容錯的方法都有很好的抵抗能力。相對而言,容錯方法適用于惡意提供者較少的環境,而基于信任的方法適用于惡意提供者較多和惡意提供者產生惡意服務較多的環境。
在本組實驗測試了3種方法對合謀攻擊的抵抗能力。實驗中采取對而謀者最有利的設定:即所有的惡意提供者都屬于一個合謀的集團。惡意提供者比率為[0.4,0.5]。惡意提供者比率每增加 0.01運行120次原子實驗后,計算平均成功率。
從圖9可以看到,隨著惡意節點率的增加,其他2種方法的成功率緩慢的下降。其原因是基于信任的方法沒有考慮到提供者之間的聯系,所以不受合謀攻擊的影響。而基于信任容錯的方法在惡意節點率在0.4~0.46都具有高于0.85的成功率。
表5為單次實驗的服務成功率的部分數據。
可以看到,成功率的取值處于2個極端——大于0.96或接近于0.02。當惡意提供者比率增大時,取0.02的次數也在緩慢增大。其原因是當惡意節點較少時,系統在初始階段取善意節點的概率較大,而選舉協議中的多數獲勝原則可以將惡意提供在清除出可以狀態,所以成功率很大。當惡意節點增加時,共謀的惡意節點可能會處于可用或混合狀態,同樣由于選舉協議的多數獲勝原則,惡意提供者可以提升共謀者的信任度,并貶低善意提供者的信任度,從而使得共謀惡意提供者占據信任度較高的位置。由于算法的自驅動機制,使得之后的服務提供模塊會更可能選擇惡意的提供者,造成成功率很低。

圖8 復雜策略攻擊下成功率和惡意提供者比率的關系

圖9 合謀攻擊下成功率對比

表5 單次實驗的成功率
從實驗可以看到,在較善意的環境中,基于信任容錯的方法對共謀攻擊的抵抗能力最好。
本文提出了一種基于信任容錯的服務可靠性增強方法,利用選舉協議設計服務失效輪詢檢測機制;建立信任機制度量提供者的可靠性;依據提供者的領域特點和請求者的可靠性需求設計信任感知的容錯服務冗余數計算方法和冗余服務選擇算法,具有面向領域,用戶偏好敏感的特點。實驗驗證本方法比容錯和基于信任的方法更能抵御獨立節點攻擊、復雜策略攻擊和合謀攻擊。
在今后的工作中,將試圖提升高置信度下服務的成功率,并且考慮來自請求者的攻擊以及完善和設計虛擬貨幣機制保障有效的反饋。
[1] 懷進鵬.對未來網絡化軟件技術的幾點認識[R].中國計算機大會CNCC07特邀報告, 2007.HUAI J P. Understandings about Future Networked Software Techniques[R]. China National Computer Conference 2007, 2007.
[2] 王遠, 呂建, 徐鋒等. 一種適用于網構軟件的信任度量與演化模型[J]. 軟件學報,2006,17(4)∶ 682-690.WANG Y, LV J, XU F, et al. A trust measurement and evolution model for internetware[J]. Journal of Software, 2006, 17(4)∶ 682-690.
[3] ANATOLIY G, VYACHESLAV K, ALEXANDER R, et al. Using inherent service redundancy and diversity to ensure Web services dependability[A]. Workshop on Methods, Models and Tools for Fault Tolerance[C]. 2007. 324-341.
[4] CHANDRA S, CHEN P M, WHITHER G. Recovery from application faults? a fault study using open-source software[A]. International Conference on Dependable Systems and Networks[C]. New York,USA, 2000. 97-106.
[5] GORBENKO A, KHARCHENKO V, POPOV P, et al. Dependable composite Web services with components upgraded online[A]. International Conference on Dependable Systems and Networks[C].2004.92-121.
[6] DESWARTE Y, KANOUN K, LAPRIE J. Diversity against accidental and deliberate faults computer security[A]. Computer Security, Dependability and Assurance∶ from Needs to Solutions[C]. 1998. 171- 181.
[7] 劉玲霞,武兆雪,錢淵等. Web服務容錯技術研究[J]. 計算機科學,2009,36(1)∶24-28.LIU L X, WU Z X, QIAN Y, et al. Fault-tolerant Web services[J].Computer Science, 2009, 36(1)∶24-28.
[8] JAYASINGHE D. FAWS - a client transparent fault tolerance system for SOAP-based Web services[EB/OL]. http∶//www-128.ibm.com/developerworks/webservices/library/ws-faws/,2005.
[9] AGHDAIE N, TAMIR Y. Implementation and evaluation of transparent fault-tolerant Web service with kernel-level support[A]. The IEEE International Conference on Computer Communications and Networks[C]. Miami ,Florida , 2002. 63-68.
[10] SANTOS G T, LUNG L C, MONTEZ C. FTWeb∶ a fault tolerant infrastructure for Web services[A]. The 2005 Ninth IEEE International EDOC Enterprise Computing Conference ( EDOC’05)[C]. Enscheda,the Netherlands, 2005.95-105.
[11] DERON L, FANG C L, CHEN C, et al. Fault-tolerant web service[A].The 10th Asia-Pacific Software Engineering Conference[C]. Taipei,Taiwan, China, 2003. 310-319.
[12] SUNGKEUN P, LING L, CALTON P, et al. Resilient trust management for Web service integration[A]. IEEE International Conference on Web Services[C]. Atlanta, USA, 2005. 11-15.
[13] XIN Y Z, YI N C, XIAO Y B. On testing and evaluating service-oriented software[J]. Computer Volume, 2008, 41(8)∶ 40-46.
[14] ZAKI M, ATHMAN B. Reputation bootstrapping for trust establishment among Web services[J]. IEEE Internet Computing, 2009, 13(1)∶ 40-47.