張垿豪 馮文龍 黃夢醒 劉 偉
(海南大學信息與通信工程學院 海南 海口 570228)
傳統的分布式信任評估模型都是通過收集節點歷史行為的評價信息并采用數學方法,對該節點未來行為進行預測。此類模型默認評價信息無論好壞,其內容都是客觀的,從而對其采用數學方法預測信任大致走向。然而實際情況下,惡意節點會出現惡意評價的行為,如果對惡意評價通過數學方法預測,可能發生誤判的情況。除此之外,分布式網絡中的不同節點對評價信息的認可度不同,缺少一個統一并且可信的評價信息來源。區塊鏈作為分布式存儲技術,其發展得到了學術界的廣泛關注。
區塊鏈這一概念是Nakamoto[1]在論文《比特幣:一種點對點電子現金系統》(Bitcoin:A peer-to-peer electronic cash system)中首次提出的,文章中詳細介紹了區塊鏈中的諸多技術,例如:分布式技術、密碼學原理、智能合約共識算法等,并將這些技術運用到新型貨幣比特幣中,隨后運行并證明了文章中提出的比特幣系統是可行的,同時也標志著區塊鏈1.0時代誕生。當區塊鏈技術在比特幣中取得了巨大成功后,Buterin[2]在比特幣基礎上提出了以太坊(Ethereum)概念,這意味著區塊鏈2.0時代來臨。文章中不僅定義了以太幣,還提供了圖靈完備的編程語言,并將編寫的智能合約應用于以太坊當中,當合約滿足條件時,可以強制實施條約內容,為分布式非信任網絡下實現交易奠定基礎。隨著區塊鏈技術的不斷發展,區塊鏈也進入了3.0時代,人們不僅僅將區塊鏈技術應用于金融行業,開始更多地將其應用于車聯網[3]、電子商務[4]、能源交易[5]等各個領域。
為了解決傳統分布式信任評估模型中存在的問題,許多學者將區塊鏈技術與信任評估模型相結合,從而幫助節點在進行交互前,雙方依據可靠的評價信息了解彼此,此外還可以幫助識別一些惡意節點,提高信任評估模型的準確度,從而提高交互的可信度以及成功率。本文首先介紹了現有的基于區塊鏈典型的信任評估模型,對模型進行了分析比較并總結了各個模型的優缺點,最后對區塊鏈中信任評估模型的可研究點進行了探討。
信任是一個抽象、復雜的概念,它在不同領域有著不同的含義。本文綜合文獻[6-15]并在此基礎上給出信任、直接信任、間接信任的描述性定義,分別對應定義1、定義2、定義3。
定義1一般而言,信任就是通過信任者的主觀感覺即直接信任以及外部環境又稱間接信任相信被信任者是誠實、值得信賴的。
定義2信任者自身與被信任者發生交互后對被信任者的信任。
定義3信任者參考其他實體對被信任者的意見所產生的信任。
在定義1中,信任者和被信任者是一個籠統概念,可以代表用戶、組織、服務等;信任者的主觀感覺是指自己對被信任者的印象;外部環境包括其他信任者與被信任者完成交互時的評價或者信任者自己可信賴的朋友向自己推薦,例如:Alice看到好多陌生人對這個服務的評價很高,于是也比較相信這個被信任者;Alice的好朋友Bob向她推薦了這個服務,所以Alice也相信這個被信任者。
圖1反映了直接信任與間接信任的關系。Alice與Bob是相互直接信任的,Bob與Tom也是相互直接信任的,這時,Bob向Alice推薦他信任的朋友Tom,則Alice在信任Bob的基礎上就間接信任了Tom。
雖然在不同領域中信任概念是有所區別的,但是性質卻是相近的。總結整理相關文獻后,發現信任具有如下的性質:
1) 非對稱性。信任關系不具有對稱性。例如A信任B,但是B不一定信任A;即使雙方相互信任,對彼此的信任程度可能不相同。
2) 主觀性。不同評價者對相同的被評價者的評價會有所不同,這是因為每個評價者參考的標準不同所導致的。
3) 動態性。評價者與被評價者之間的信任關系是根據交互的次數、時間等因素的變化而不斷變化的,它并不是一成不變的。例如,在某個時間內A信任B,但隨著時間的推移,A對B的信任會衰減。
4) 有限傳遞性。信任可以在某種條件下傳遞。例如,實體A信任實體B,而實體B信任實體C,實體B向實體A推薦該實體C,則實體A是可以信任實體C的,只是實體A以及實體B對實體C的信任來源以及信任度不相同。
5) 可計算性。信任可以根據一些特征量化,通過一些數學方法計算出數值,通過數值直接比較信任的大小,具體實現是由不同的信任模型以及數學方法決定的。
6) 不確定性。信任發生在交互之前,對被信任者的行為有預測作用,是一種不確定性的行為甚至有風險。
7) 自反性。任何時間任何情況下,所有實體都信任自己。
在分布式網絡中,由于信任的實體是分散的,沒有統一的中央節點進行管理,各個節點之間的信任關系需要通過信任評估的方法實現。
信任評估是在雙方交互前采用合適的數學方法對信任信息進行量化,從而得到相應的信任值,以信任值的大小表示節點的可信程度。不同的信任評估模型對信任信息的量化、度量方法有所不同。隨著網絡技術的不斷發展,信任問題已經成為分布式網絡中的核心問題,綜合文獻后發現有關信任評估的相關技術在理論和實踐方面存在很多問題,具體體現在:
1) 現有的信任模型評估方法大多基于粗粒度,考慮的因素較少,對信任信息評估得不完全或者不細致,導致得到的評價準確率較低。
2) 對惡意節點的抵抗能力不強,缺乏有效的策略和方法去準確識別惡意節點以及惡意行為,同時對于誠實節點缺少合理的獎賞策略。
3) 現有的信任模型實現代價大,因為信任評估需要參考之前所有的評價并且還要實時更新評價,所以需要花費較多的計算與存儲資源。
4) 用戶參與信任評價時會留下與自己真實身份相關的信息,惡意用戶通過一些技術手段輕而易舉地獲得用戶信息,這樣會造成真實信息的泄露,產生隱私安全問題,現有的信任評估模型沒有考慮到這種情況。
5) 由于對信任的量化以及對信任關系的衡量缺少統一的標準,導致現有的信任模型缺乏客觀性,參考價值較低。
區塊鏈是由分布式存儲技術、密碼學、共識算法、智能合約這四種核心技術組成。分布式存儲技術是一種數據存儲技術,每個節點都能記錄數據;密碼學是一種特殊的加密解密算法,可以用于身份驗證也可以用于維護數據的完整性;共識算法則是一種協調節點進行數據維護的算法;智能合約類似合同,將規則用代碼的形式表示,當條件滿足立即觸發并強制性執行。它們都能夠為分布式網絡中的信任評估模型提供支撐,解決分布式網絡中存在的信任問題。本節將選取從不同方面結合區塊鏈技術的典型信任評估模型進行評述與介紹。
中本聰在文獻[1]提到,區塊體記錄所有經過驗證的交易且它們是通過 Merkle樹的哈希過程生成唯一的Merkle根并記入區塊頭,這些交易記錄可溯源且不可篡改。許多學者發現將信任相關信息儲存在區塊里,就解決了信任信息內容不可靠的問題,為此提出了從區塊存儲結構以及內容方面結合信任評估的模型[16-21]。文獻[17]基于Merkle樹結構,提出使用存在與不存在證明來判斷存儲在區塊中的交易信息是否合理,并將交易信息分為三類,依據分類直接計算信任得分。文獻[18]在車聯網環境下提出將其他車輛對某個車輛發出的信息進行信任評級,并將結果發送給RSU,RSU統計收到的信任評級并計算某個車輛的信任偏移量,最后將結果存入區塊體中,從而保證信任評價客觀公正且可以實時更新。文獻[19]與文獻[18]不同之處在于它提出將信任評級存入區塊,其他車輛基于存儲的評級對信息發送者進行評估,該評估保留了評價者的主觀意愿。文獻[20]在無線傳感器網絡中,提出對信標節點從行為、數據、反饋三個方面進行信任評估,將得到的信任值存儲于區塊,便于實時監測信任值變化。文獻[21]在醫療領域提出通過區塊中的信任值過濾虛假信息,隨后將加密的個人健康記錄的哈希值存儲在區塊鏈上,減小本地存儲壓力。相關索引存儲在智能合約當中,在調用時可以有效驗證健康記錄的完整性以及正確性。此類模型旨在保證評價信息內容的完整并且沒有被篡改,從而能夠提供可靠的評價數據。例如ChainTrust模型[16],該模型使用Merkle Patricia樹和二叉Merkle樹對評價數據存儲,提高評價數據來源的可靠性和安全性。同時又對現有的信任評估模型進行改進,根據評價的先后順序定義了評價序列圖,然后根據評價序列圖計算被評估節點的直接信任以及間接信任,并依據間接信任的可信度計算其權重,最后得到綜合信任值。
2.1.1ChainTrust模型的建立
在進行綜合評價時,ChainTrust模型提出了將評價數據存儲在區塊中,在區塊頭中使用State Root模塊記錄Merkle Patricia樹的根,在區塊體中使用Merkle Patricia樹和二叉Merkle樹結構。Merkle Patricia樹包括擴展節點、分支節點和葉子節點。擴展節點分為Prefix以及Hash字段,Hash字段存放分支節點的哈希值。分支節點又分為葉子節點以及擴展節點,葉子節點分為Key和哈希鏈表。哈希鏈表存放與某個特定節點有關的評價數據的Hash值,擴展節點和分支節點都是以鍵值對的形式將特定節點對應起來,所以按順序將根、擴展節點、分支節點、葉子節點組合起來可以得到特定的Key以及與其有關的評價數據的Hash值。Tx Root是二叉樹的根,底層存儲評價數據的相關摘要,相鄰的兩個摘要進行Hash運算得到父節點的Hash值,經過反復運算得到根Hash值,該模塊保證評價數據不被篡改。Nonce與PrevBlockHash與比特幣系統[1]中的區塊功能一致。具體的結構如圖2所示。

圖2 區塊的存儲結構
當進行評價時,從區塊中取出相關評價信息,將其組成評價序列。評價序列指的是將節點收到的評價按照先后順序生成有序的集合。評價序列如圖3所示,其中兩個節點之間的單向箭頭表示節點之間發生過交互并且做出過評價,單向箭頭的權重就代表評價序列。例如從節點a指向節點b的箭頭,權重Lab表示a對b發起的評價所組成的評價序列。同時,與節點a有過交互并且產生評價的節點都有一個指向節點a的單向箭頭。

圖3 評價序列
在ChainTrust模型中,如果節點b想要得到節點a的信任值,首先節點b先獲取所有關于節點a的評價信息,并且評價信息中的被評價者是節點a,評價者則是所有與節點a發生過交互的節點,每個評價者對應不同的評價序列,節點b分別計算每一個評價序列,得到每個與節點a發生過交互的節點對a的直接信任度,將其進行加權計算間接信任度,最后得到節點b對節點a的綜合信任度。
具體而言,節點b對節點a的直接信任度DTba,參考因素為節點b對節點a的滿意率Aba,由式(1)表示。
DTba=Aba
(1)
間接信任度ITba是除評估主體之外的其他節點對被評估節點的直接信任度的加權之和,由式(2)表示。
(2)

最后進行加權和得到b對a的綜合信任度Rba,由式(3)表示。
Rba=max{(1-μ)DTba+μITba,δ}
(3)
式中:μ為間接信任度的權重。當μ=0時,評估主體僅信任自身經驗;當μ=1時,評估主體僅信任他人的經驗。考慮到冷啟動問題,模型規定δ是節點的初始綜合信任度。
為了將模型精確化,文獻[16]分別從參與評價的節點廣泛程度以及評價節點對被評估節點直接信任度的離散程度考慮了權重μ的取值,并提出式(4)。
μ=α·β
(4)
式中:α是廣泛度系數,α∈[0,1),用來量化評價來源的廣泛度,具體表達式見式(5);β是離散系數,用來量化評價節點對被評價節點信任度的離散情況,用式(6)表示。σ是評價節點對被評價節點信任度集合的標準差,用式(7)表示。
(5)
式中:n表示參與評價的節點數。
(6)
(7)
2.1.2模型的算法思想
假設節點b運用該模型對節點a進行綜合信任評估,該模型的算法思想是:
1) 從區塊中找到評價數據。
(1) 從Merkle Patricia樹找到節點a對應的葉子節點并獲取相關評價數據的Hash。
(2) 通過Hash值找到評價數據。
(3) 將評價數據按照評價者分為不同評價序列。
2) 交互前計算節點a的信任值。
(1) 計算直接信任值。
(2) 計算間接信任值。
(3) 計算間接信任值的權重。
(4) 最后得到綜合信任值。
3) 交互完成后,將新的評價信息存儲到區塊,信任值則在下次交易發起時更新。
2.1.3模型的優缺點
該模型的優點是:
1) 通過對區塊鏈存儲結構的改進,可以快速找到節點完整的關于信任評價的數據,并且確保評價信息不被篡改。
2) 考慮了評價節點來源的廣泛性以及其直接信任度的離散性,使得權重的設置更加客觀,計算所得的綜合信任度更加具有參考意義。
該模型的缺點是:
1) 模型默認進入網絡的節點均為可信節點,沒有考慮節點的身份信息,只考慮到節點的惡意行為。
2) 模型缺乏一種獎懲機制來約束節點的行為。
3) 對信任的評估仍然停留在粗粒度,沒有具體細化考慮其他因素。
2.1.4應用場景分析
該模型主要適用于一些數據查詢類的服務,對于本地存儲能力有限的節點也可以使用該模型,如在醫療領域[21],根據區塊中存儲的信任值,過濾虛假數據信息,然后通過個人健康記錄的哈希值找到相關摘要,再通過索引找到完整記錄,既保證了信息的完整可靠性又減輕了本地存儲個人健康存儲的壓力。同時該模型也偏重于交易之前對交易方進行評估,即通過存儲在區塊中的評價信息判斷交易方的可信程度。如在車聯網領域[18-19],通過區塊中存儲的評價信息對車輛發送的信息進行評估,判斷信息是否真實,從而排除車輛存在作惡行為。
在分布式網絡中,所有節點都可以加入該網絡并參與交互,雖然解決了信息孤島的問題,但由于參與交互的節點身份不明,很容易遭到惡意節點的攻擊或者交互完成后給出惡意評價,為此不少學者從身份認證方面結合信任評估的模型[17,22-25]。文獻[17]基于公鑰基礎設施的認證協議,提出使用公鑰作為通信中的假名,而沒有任何關于真實身份信息,從而保證有條件的匿名,隨后收集匿名評價信息進行綜合信任評估。文獻[23]在車聯網環境下提出匿名聚合車輛公告協議,首先車輛信息由可信權威機構登記,隨后機構向車輛頒發密鑰以及化名地址,然后車輛廣播消息公告并通過收集聚合其他車輛簽名證明自己廣播消息的可信度。文獻[24]在制造服務環境下,客戶與制造商通過P2P網絡的協議連接并進行身份認證,隨后創建區塊鏈賬戶,生成公私鑰對并通過數字簽名進行信息認證,根據提供商的信譽度與交易反饋來綜合評估服務信任度。文獻[25]在物聯網環境下提出了一種基于身份的密鑰協議實現有效并且安全的無證書通信,并使用令牌獎勵模型來鼓勵發布高質量的數據。此類模型主要利用密碼學原理對加入網絡的節點進行身份認證,從而確保加入網絡的節點以及節點之間交互時的協商信息是可信且不被泄露的。例如PCB模型[22],該模型提出將節點身份認證、時間敏感函數等因素作為信任評價指標來保證評價的客觀性和可靠性。對參與網絡中的節點進行身份認證確保其合法性以及唯一性,利用時間戳技術考慮消息的時效性,同時考慮到分布式網絡的特性,引入時間敏感函數對節點的信任進行動態評價,如當節點在一段時間內無所作為時,該節點的信任值將會下降。除此之外,該模型將信任值存儲到區塊體中,確保信任信息不被篡改,從而提高評價信息的客觀真實性。最后采用激勵機制和懲罰機制來鼓勵合法行為和打擊惡意行為。
2.2.1PCB模型的建立
進入網絡中的節點首先進行身份驗證,它的過程主要是:假設A、B兩個節點互相進行身份以及消息認證,先利用NTRU-KE算法[26]產生共享密鑰KAB并廣播給網絡中所有節點。具體算法參考文獻[26],驗證內容由式(8)和式(9)表示。
A→B:(idA,MACA,Time1,fKAB(rs1))
(8)
B→A:(idB,MACB,Time2,fKAB(rs2))
(9)
式中:f是用密鑰KAB對隨機數rs1加密的加密函數;Time1是時間戳;MACA是哈希函數H(rs1,idA,idB,TimeA)。假設A發送消息給B,B先根據時間戳來判斷其信息是否有效,若有效則使用時間戳解密f并得到r′s1,然后計算H(r′s1,idA,idB,TimeA)來判斷rs1是否與r′s1相等,相等則說明B信任A,同時B生成隨機數rs2(rs1≠rs2),并發送驗證內容給A。同樣過程驗證B的身份。這樣就確認雙方的身份信息,彼此獲得了身份信任。

(10)
修正后的間接信任評價由式(11)表示。
(11)
最后依據 Dempster 組合規則,將修正的間接信任與直接信任合成綜合信任滿足式(12)。
(12)

由于P2P網絡特性,節點可隨意加入或離開網絡,因此信任要依交互次數和交易狀態而定,即信任需動態更新,PCB模型則引入了時間衰減因素即時間敏感函數,實現節點信任的動態反饋并且使得節點信任度更合理、計算復雜度降低。其基本思想為:將時間軸劃分成均等、長度為t0的時間段,我們將節點a在經典模型[26]中綜合信任記為 Trust(a) ,規定每隔t0衰減一次,tin、tend為節點進入、離開網絡的時間[23]。那么結合時間敏感函數的節點信任度評價函數如式(13)所示。
sensitive(Trust(a))=
(13)

為了約束節點的行為并且保證信任信息真實性和可靠性,該模型還提出將最后計算出的綜合信任值存儲到區塊中并根據信任值進行獎罰。區塊存儲結構見表1。區塊頭中除了有上一區塊的哈希、當前區塊的版本號、生成當前區塊的時間戳和Merkle樹的根哈希外,還將個人資產寫入區塊頭,區塊體主要包括交易數量、交易明細、信任指數。節點每次參與評價或者發布交易信息時都會從個人資產中抽取小部分作為抵押金,后續將根據節點的行為進行獎勵或扣除,相對應地對其信任指數進行增加與減少,這種與信任相關的獎懲機制可以較好約束節點的行為。最后為了能使整個產生區塊的過程快速高效,該模型采用雙鏈結構即主鏈和副鏈,其中主鏈主要負責交互信息, 副鏈主要負責信任信息,兩者互不干擾同時又由交易過程相互聯系。

表1 區塊鏈存儲結構表
2.2.2模型的算法思想
假設節點A運用該模型對節點B進行信任評價,具體的算法思想是:
1) 身份認證。
(1) 生成共享密鑰KAB并廣播。
(2)A與B互相驗證身份信息并檢查信息的時間戳。
(3) 通過驗證則進行信任評估,反之則終止。
2) 信任評估。
(1) 交互前,計算A對B的直接信任值。
(2) 計算A對B的間接信任值。
(3) 計算A對B的綜合信任值。
(4) 交互完成后,根據評價信息引入時間敏感函數,直接更新對節點B的信任值。
3) 信任存儲。
(1) 將交易信息和節點的信任值存儲到區塊體。
(2) 根據交易的情況,將個人資產更新后存入區塊頭。
2.2.3模型的優缺點
該模型的優點是:
(1) 在身份認證過程中使用改進的加密算法,使得密鑰的生成速度加快,節點的行為難以預測,從而降低惡意節點攻擊成功的概率。
(2) 時間戳與時間敏感函數的引入,使得交互雙方發送信息更具有時效性并且更加安全的同時,也保證了評價信息能夠動態更新,信任評價有一定的參考意義。
(3) 提出獎懲激勵機制,提高節點的積極性和主動性,規范節點的行為。
該模型的缺點是:
雖然考慮了身份信任以及時間因素對信任值的影響,但是對直接信任度以及間接信任度的評估參考因素仍然比較少,評估結果不太準確。
2.2.4應用場景分析
該模型主要應用于一些對參與網絡的節點有一定條件限制的許可鏈環境中,例如聯盟鏈以及私鏈。如在車聯網領域[23],只有經過相關證書機構認證并且經過信任計算的車輛才能有資格發送道路信息,沒有經過身份驗證的車輛只能夠接收信息,不參與信息驗證與傳遞。同時,該模型也偏重于交易過程中,雙方進行交易協商時的身份驗證,來確認交易雙方沒有改變并且沒有出現故障,從而來確定是可信的。例如在制造服務領域[24],首先根據信任評估模型確認候選的制造服務商,隨后用戶與服務商之間通過公私鑰對以及簽名互相確認雙方身份,進而協商服務。
在分布式網絡中,對于評價信息沒有一個統一的標準,導致各個節點對評價信息的認可度都不相同,為此許多學者認為區塊鏈中的共識機制可以解決這個問題,于是提出了將共識算法與信任評估結合的模型[23,28-29]。文獻[23]提出一種基于工作量證明與實用拜占庭故障容忍算法的混合共識算法,RSU通過工作量證明獲得產生區塊的權利,并根據信任信息計算獲得信任值并打包成信任塊進行廣播,全網通過實用拜占庭算法進行共識,通過后將信任塊接入區塊鏈。文獻[27]在工業物聯網的環境下提出基于聲譽的激勵共識協議,聲譽越高的節點獲得記賬權的概率越大,該協議中的獎懲機制可以鼓勵所有節點以良好的方式參與網絡協作,從而營造可信的交互環境并降低共識的難度。文獻[28]在車聯網環境中提出利用每輛車的聲譽價值,將資源共享與共識過程結合在一起,每個區塊都會將記錄的所有交易信息的聲譽值按照一定規則進行求和,與工作量證明機制類似,只有總聲譽價值高的區塊才能入鏈。此類模型主要利用共識機制對評價的內容進行驗證,只有大部分節點都認同的評價信息才能被記錄,保證了全網有一個統一參考標準。如MTBAD(Multi-dimensional Trust Based Anomaly Detection model)[29]模型,該模型不僅通過共識機制來確保信任評級可信,而且改進了共識算法即通過信任值的大小來確定記賬權,激勵節點規范自己行為,提高自己的信任值。此外,該模型從信譽(Reputation)、QoS(Quality of Service)、社交關系(Social Relationship)等多個維度對被評估者的信任進行評估,同時為了使模型更加靈活,對信任值進行模糊化處理得到信任評級可以更快發現節點的異常行為。
2.3.1MTBAD模型的建立
在交互前,評價節點根據信譽、QoS、社交關系三個維度的信任信息對被評估者進行信任評價。假設交互前節點a對節點b的總體信任評價記為Tab(k),計算式如(14)所示。
(14)

(15)

假設節點a與節點b之前沒有發生過交互,那么各個維度的信任值更新的具體公式如下:
(16)

(17)
式中:β∈[0,1]。
然后將得到的信任值進行模糊計算處理,根據具體的需求設定規則,本模型用If-Then語句表示,規則舉例見表2。并將信任分為三個級別,分別用“High”“Medium”“Low”表示信任評級的語義值。通過語義的變化來監測節點的惡意行為并采取一定的措施,當信任等級為“Low”時,被評價節點將被放入黑名單并禁止一切行為。

表2 模糊計算處理的規則舉例
為了保證得到的信任評估結果客觀并且實時更新各個節點的賬本,該模型提出一種基于信任的共識機制PoT(Proof of Trust)。它是以信任值為基礎,只有區塊內信任值最高的節點才擁有記賬權并獲得一定的信任獎勵,因此該機制也激勵節點提高自己的信任值。PoT共識過程主要包括以下步驟:首先,在雙方交互完成后,評價者對被評價者進行信任評估,并將評估結果廣播至全網,收到廣播信息的節點會將該消息記錄在自己的存儲庫中,當達到一定的數量后會停止接收信息并根據收到的評估結果進行信任排序,只有排序第一的節點才有資格將這些評價打包成區塊并使用自己的私鑰簽名廣播至全網。隨后其他節點先使用記賬節點的公鑰對該區塊信息進行驗證并核實區塊中的每條評價信息,所有驗證都通過后,才能將該區塊記錄到區塊鏈當中,隨后進行下一輪計算,此時將對記賬者進行一定的信任獎勵。
2.3.2模型的算法思想
假設節點a運用該模型對節點b進行信任評估,具體的算法思想是:
1) 交互前計算節點b的信任值。
(1) 判斷節點a與節點b是否發生過交互;若發生過則執行步驟(2),反之執行步驟(3)。
(2) 發生過交互,計算節點a對節點b的歷史信任與發生交互時產生的直接信任值。
(3) 沒有發生過交互,計算節點a對節點b的歷史信任并計算其他與節點b發生過交互的節點對節點b的推薦信任值。
2) 監視異常行為。
(1) 交互過程中會另外將信任值進行模糊處理得到信任評級。
(2) 通過信任評級的變化檢測節點異常行為。
(3) 當信任評級為“Low”時,停止該節點的一切行為。
3) 生成區塊。
(1) 交互完成后,將信任評價廣播。
(2) 節點收集評價信息并進行信任排序。
(3) 只有信任值最高的節點將評價信息打包成區塊。
(4) 將區塊廣播至全網,全網進行驗證。
(5) 驗證通過后,生成區塊并記入區塊鏈。
2.3.3模型的優缺點
該模型的優點是:
(1) 對信任評價因素進行了細粒度研究,從不同維度切入,具有較大的參考意義。
(2) 采用了PoT共識機制,簡化共識過程,也避免了雙花問題的出現,同時有效地抵制了簡單的攻擊問題,諸如51%攻擊等,同時還可以激勵節點努力提高自己的信任值,減少惡意行為的出現。
該模型的缺點是:
(1) 該模型需要較大的計算資源,對于條件有限的設備無法使用。同時該模型也無法抵御惡意節點的抱團攻擊,當惡意節點較多且達成共識后,難以區分惡意節點。
(2) 使用PoT時,沒有考慮到區塊分叉的問題,會導致惡意節點利用分叉篡改評價數據。
2.3.4應用場景分析
該模型主要應用于發生具體交易的服務,如數據交易或者比特幣交易,它們都存在一個完整的數據信息交互或商品購買過程。同時該模型更加偏重于交易后交易信息入鏈的過程,即通過計算打包成的區塊中所包含的交易的信任度之和或者直接計算打包區塊的節點的信任度,從而確定誰具有產生區塊的權利。只有經過信任評估后入鏈的信息是可信且不能篡改的。例如在車聯網中進行的信息交互[23,28],可以提前將經過信任評估的前方道路真實信息上鏈,其他車輛從上鏈信息中獲取道路信息,從而提高車輛行駛效率。
區塊鏈技術由于其公開透明、防篡改、可溯源等特性,使其成為近年關注的熱點。本文主要總結了基于區塊鏈技術[30]改進的一些信任評估模型,分別從三個不同方面選取一個典型模型分析并描述了模型的優缺點以及算法思想。同時對比發現這三種模型分別是從區塊鏈中的分布式存儲、身份認證、共識機制三個方面改進并與信任評估模型結合(見表3),為分布式網絡中節點進行可信的交互提供了安全可靠的方案。

表3 典型模型與區塊鏈中核心技術的結合情況
目前,基于區塊鏈技術的信任評估模型均從區塊存儲、身份認證、共識機制三個方面進行結合,如基于區塊存儲的信任模型是從存儲內容或存儲結構改進,用信任值、哈希摘要、評價信息存儲代替原有區塊的交易存儲或者改進區塊原本的Merkle樹結構[16],可以更加方便快捷地查詢到評價信息;基于身份認證的信任模型首先對加入網絡的節點進行身份驗證從而獲得相關證書然后對交易雙方的交易信息進行核實評估[24],從而確保交易雙方是可信的;基于共識機制的信任模型則是通過對參與共識的節點的信任度進行評估[27]或者通過對候選區塊中打包的交易進行信任評估[28],從而經過共識確定區塊的產生權。由于智能合約本身是一段滿足條件就能自動執行的代碼,對智能合約的研究更多是研究其實現的功能并且代碼自身就是可信的,所以沒有將智能合約與信任評估模型結合的實例。同時需要說明的是對于同一個場景,可以采用上述不同的模型,只是結合區塊鏈技術的角度不同,需要根據具體問題來分析并且模型可以結合使用。然而,基于區塊鏈技術的信任評估模型研究現狀,該方向仍然有許多問題需要研究與探索:
(1) 基于區塊鏈技術的信任評估模型中存在隱私泄露問題。雖然在區塊鏈技術中節點之間的交互可以通過CA機構頒布的證書使用匿名信息進行交互,但是CA機構頒布的證書會與節點的真實信息有所關聯,惡意節點很容易通過證書找到相關聯的用戶隱私信息,如何有效地協調隱私保護與交互信息公開透明仍是研究的重點。
(2) 信任評估模型自身仍然停留在粗粒度評價。大多數的信任評估仍然只是考慮評價節點自身的評價,沒有考慮到被評價者自身的因素,如自身的環境等。尤其是在區塊鏈這樣的分布式網絡中,所處的地理位置不同就可能導致從同一節點接收到的信息也不同,所產生的評價不同,從而導致信任評估不準確。因此需要建立完備的多維度信任評估模型來評判一個節點的可信度。
(3) 仍需提高區塊鏈與信任評估模型結合度。傳統的分布式網絡中信任評估面臨的問題主要有:對評價信息來源以及對評價節點的身份都有較大的不確定性,而區塊鏈由于其公開透明和不可篡改的特性,將評價信息存入區塊保證其來源的客觀真實;采用公私鑰對以及數字簽名等密碼學技術對交互雙方進行身份驗證,保證交互的可靠性;同時采用基于信任的共識機制可以激發節點積極主動性去發布可靠的信任評價。可見將區塊鏈技術與信任評估模型結合,可以提高模型的可信度。此外,還可以結合區塊鏈中的其他技術如智能合約等來設計信任評估模型,如可以將信任評估方法寫入智能合約即編寫一個信任評估合約,從而對交易自動實現信任評估;也可以將多個技術結合,如將身份認證與區塊存儲技術與信任評估模型結合[23],設計更加完備的信任模型。