摘要:在分析了一種實用信任模型的特點和不足的基礎上,提出了一種改進的信任模型WeightRep。分析和仿真表明,改進模型比原模型具有更好的安全性和可用性。
關鍵詞:信任;信任模型;對等網絡;文件共享
中圖分類號:TP393文獻標志碼:A
文章編號:1001—3695(2007)03—0268—03
近年來,對等網絡(Peer-to-PeerNetwork,P2P)在文件共享方面的應用越來越廣泛,然而由于惡意偽造文件泛濫、眾多的搭便車者只下載而不共享文件,以及不負責任的用戶隨意中止文件的上載服務等現象,嚴重影響了P2P文件共享系統整體的可用性。解決這些問題的一種有效途徑是建立信任機制。通過信任機制的建立,用戶獲得了目標節點的歷史經驗,據此選擇更安全的資源服務對象,也有了參與共享文件的動力。然而P2P應用環境的復雜及網絡的不可控性、無中心化管理、用戶的多重角色及自主性與匿名性等都使得信任機制在P2P系統中難以建立。
目前,國內外的學者陸續提出了對信任進行量化的模型,主要有YaoWang等人提出的貝葉斯網絡、Guha等人提出的基于權重的合成、BinYu等人提出的證據理論等[2]。由于信任關系中推薦信任的不確定性,很多模型對信任度的研究都借鑒了人工智能中的不確定推理的方法,這些模型因為其中的參數依賴于專家經驗,均不易于實現。在2004年第4屆IEEE/美國計算機學會上,SELUCKAA等人[1]提出了一種基于聲譽的信任模型(SELCUK模型),主要用來解決惡意信息的傳播問題。SELCUK模型基于權重合成,相對于其他P2P文件共享信任模型,SELUCK模型原理簡單,具有很好的工程可行性,適用于非中心化的P2P文件共享網絡中(如Gnutella),因而引起了國內外學者的關注。
針對SELUCK模型的特點與不足,在保留該模型優勢的基礎上克服其不足,本文提出了一種改進后的新信任模型WeightRep(Weight與Reputation的縮寫,說明新模型是基于權重和名聲的),并通過仿真實驗證明了新模型的有效性。
1SELUCK模型優缺點簡析
SELUCK模型適用于非中心化的P2P文件共享系統中,通過詢問有限的節點來獲取某個節點的信任度,能較好地滿足文件共享系統對信任的要求;利用信任向量(TrustVector)和可信向量(CredibilityVector)將信任度(TrustRating)與可信度(CredibilityRating)分開考慮,以解決信任度高的節點不一定可信的問題,并將與節點歷史交易中的不良行為作為優先否定的條件來選擇文件下載,可以避免節點先積累高信譽度再屢次犯錯的問題;另外,還具有比較好的均衡負載機制和防DoS攻擊,詳見文獻[1]。
但是,SELUCK模型也存在一些不足之處,如不能防止變換身份行騙者,不能防止搭便車者以及信任向量更新概念模糊等問題。
2WeightRep模型的思想
針對SELUCK模型的不足之處,本節在保留SELUCK模型優勢的基礎上,提出改進模型WeightRep。
2.1增加IP地址過濾器功能,防止變換身份行騙者
在P2P這樣一個龐大的文件共享網絡,已發現有大量的惡意用戶和監測機構,為了自己的特殊目的,在檢測著用戶使用的文件共享系統上下載內容,同時,也有一些惡意的黑客在不停地掃描整個網絡,惡意搗亂攻擊。IP地址過濾器用來對一些惡意的IP地址進行過濾,避免從其上下載虛假和惡意文件,也可以防止被監控和攻擊。
現在的文件共享系統就有使用IP地址過濾功能的,如eMule,在“選項→安全→IP過濾”中可以實現。當然用戶自己也可以增刪過濾器里面的地址,以阻止網絡上其他惡意節點,從而能比較有效地防止不停變換身份行騙者。惡意節點不停使用的IP地址總是有限的,所以IP地址過濾功能能較好地起作用。
2.2修改SELUCK模型,限制搭便車者
現在已經有很多種建議來限制搭便車者,如KaZaA是引入基于積分的激勵機制,積分是按節點的貢獻(提供給其他用戶下載過的文件數或字節數)來評分的,貢獻大則評分高,貢獻小則評分低,下載文件時按積分排隊,高的排在前面,可以優先下載。eDonkey除了按積分排隊下載外,還強制將下載的文件用于共享。這兩種機制都取得了比較好的效果。
因P2P文件共享網絡本身就是基于平等、自由的原則建立起來的,最好的方法還是利用激勵機制,鼓勵大家參與共享。那么在WeightRep模型中如何建立基于積分的激勵機制呢?那就是充分利用信任向量的優勢,對重要位數m重新定義,以及將信任度的計算進行相應的改動就能建立基于積分的激勵機制。具體思想描述如下:
(1)m為記錄本節點從其他某一節點下載文件的次數。
(2)信任度的計算分兩種情況:
①m小于等于向量長度d(d一般取八位)時,信任度=(前m位信任向量所對應的二進制值)/2m。
②m大于向量長度d時,信任度=(d位信任向量所對應的二進制值)/2d。
(3)節點的本地數據庫內容的信任記錄如表1所示。
表1WeightRep模型的本地數據庫
在WeightRep模型里,m的值既是下載次數又是積分值,當有很多節點需要從本節點下載文件時,則按m值的大小而不是先后順序排隊。這種排隊的機制將會激發節點共享文件的興趣,從而減少搭便車現象。
2.3引入服務質量,明確信任向量的更新
從服務質量上明確信任向量中“0”或“1”的修改。這種服務質量涉及到下載的網速、文件的下載結果、節點的在線情況等指標。有些指標可以由系統本身評價出好和不好,如下載速度若平均每秒小于2KB,為防止再次從該節點下載,則評價為不好;若下載中途因對方節點關掉共享而終止,則認為不好。而文件的下載結果則包括文件的完整性、是否含有病毒、代碼、內容是否完全不相符等,這需要由用戶判斷,將這幾條列出供用戶選擇,而不是簡單地用滿意或不滿意讓用戶選擇。對于下載的網速、文件的下載結果、節點的在線情況,只要有一條為“不好”,則認為這次下載不好,同時信任向量左插“0”;反之則認為是“好”的下載,同時信任向量左插“1”。每次下載,不管成功與否,都需要修改信任向量,除非是用戶自己取消下載。
3WeightRep模型的工作流程
根據上述WeightRep模型思想,下面介紹模型的實現步驟:
第一步初始化,令變量i,j,p=1。設定信任查詢消息的閾值θT和可信查詢消息的閾值θC。
第二步節點發出文件查詢,并將響應的節點分組。將響應節點按文件的哈希值分組,內容相同的文件為一個版本。由用戶挑選n個感興趣的文件版本(n=1,2,…)。
第三步計算第i個文件版本(i=1,2,…,n)的一組響應節點的平均信任度ti和平均不信任度dti。此步分成以下六個子步聚:
(1)根據本地數據庫計算響應節點的信任度。查找本地數據庫,找出響應節點的信任向量,計算信任度和不信任度。計算公式舉例下:
(2)判斷第i個文件版本中已知信任度的節點數是否滿足系統需求。將已知信任度的節點數Known(G)與系統設定的閾值θT比較,若Known(G)≥θT,則轉向(6)。
(3)發出信任查詢。向P2P網絡發出θT-Known(G)個節點的信任查詢,并將這些節點重新編號,依次為1,2,…,θT-Known(G)。當然,由于本地數據庫中的有關記錄是節點的原標志,因此,為了不影響下面信任度和可信度的計算,還要設定節點的編號與原標志的對應關系。針對節點j(j=1,2,…,θT-Known(G))的信任查詢反饋只需不大于閾值θC個(以防止洪泛攻擊)。
(4)計算查詢節點j的信任度tj。在(3)中,會有k(k≤θC)個節點反饋信任查詢,對反饋節點也進行重新編號,依次為1,2,…,k,也設定好編號與原標志的對應關系。設節點p反饋節點j的信任度為tp,不信任度為dtp(p=1,2,…,k),則計算節點j的信任度分為
第五步選擇下載版本與下載文件。將n個文件版本按不信任度降序和信任度升序排列。選擇排在第一位的文件版本,并隨機地從該文件版本對應的一組節點中的一個或幾個節點下載文件。當然為了保證安全,選擇在IP地址過濾器外的那些節點下載。當被選擇下載的節點(設為x)有多個節點需要下載同一文件時,則采用排隊機制,x查找本地數據庫中的交易次數m,按m降序將需要下載的節點排隊,m值高的節點優先下載。
第六步更新信任和可信向量。根據下載的服務質量,判斷此次下載成功與否,成功則信任向量左插“1”,同時對參與該文件版本有關節點的信任查詢提供了反饋的有關節點的可信向量左插“1”;否則信任和可信向量均左插“0”。
4仿真實驗及結果分析
為了證明改進模型的有效性,進行了仿真實驗,將兩種模型進行對比。考慮到評價指標的客觀性,主要就惡意文件的下載比例進行了比較。
仿真實驗的場景是用Java開發的一個仿真文件共享網絡,類似于Gnutella的分布式路由結構。不失一般性,將仿真參數設置為
圖1的橫坐標是下載次數,縱坐標是惡意文件的下載比率。可以看出,改進模型WeightRep對阻止惡意文件下載、隔離惡意節點的作用比SELUCK模型更有效。
5結束語
本文提出了一種改進模型WeightRep,并詳細介紹了WeightRep模型的設計思想與實現步驟。通過分析和仿真說明,該模型較原型具有更好的安全性和可用性。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。