薛 彪,石 瓊,師智斌,段 輝
(中北大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山西 太原 030051)
隨著物聯(lián)網(wǎng)(IoT)在全球各個(gè)領(lǐng)域的普及,智能設(shè)備數(shù)量迅速增長(zhǎng),國(guó)際數(shù)據(jù)公司(IDC)估計(jì),到2025年,全球?qū)⒂屑s416億臺(tái)物聯(lián)網(wǎng)設(shè)備[1]。然而,這些設(shè)備提供的計(jì)算能力、電池電量、存儲(chǔ)空間等很有限,從而限制了用戶體驗(yàn)。在這種情況下,云計(jì)算作為一種有利的解決方案,可以在基礎(chǔ)設(shè)施、軟件和其他平臺(tái)方面向最終用戶提供服務(wù)[2]。云計(jì)算利用全球集中的數(shù)據(jù)中心進(jìn)行數(shù)據(jù)處理和存儲(chǔ)。但是,由于云數(shù)據(jù)中心和用戶設(shè)備之間的物理距離較大,響應(yīng)時(shí)間增加,使它不適用于對(duì)延遲敏感的應(yīng)用程序,例如醫(yī)療保健和銀行業(yè)務(wù)。為了解決這個(gè)問(wèn)題,2012年,CISCO首次正式提出霧計(jì)算的概念[3],賦予其新的含義。霧計(jì)算作為云計(jì)算概念的一種延伸,其在云和終端設(shè)備之間引入中間霧層部署運(yùn)算、存儲(chǔ)等設(shè)備。在典型的三層物聯(lián)網(wǎng)架構(gòu)中,霧層位于云層和用戶設(shè)備層之間,充當(dāng)云和用戶之間的中介,將需要在本地處理的信息整理并在霧層中處理,而將其他信息發(fā)送到云中。這種分布式的計(jì)算場(chǎng)景支持用戶的移動(dòng)性、位置感知和低延遲需求[4]。
霧計(jì)算并不是云計(jì)算的替代品,而是將網(wǎng)絡(luò)計(jì)算從網(wǎng)絡(luò)中心擴(kuò)展到了網(wǎng)絡(luò)邊緣,通過(guò)這些本地化的設(shè)備不僅可以自己向用戶直接提供服務(wù),還可以利用云層更為強(qiáng)大的計(jì)算和存儲(chǔ)能力協(xié)同進(jìn)行服務(wù)[5]。在實(shí)時(shí)分析方面,霧計(jì)算具有很好的魯棒性,隨著它的出現(xiàn),數(shù)據(jù)處理發(fā)生在數(shù)據(jù)發(fā)起者附近,縮短了請(qǐng)求和響應(yīng)周期。然而,隨著互聯(lián)網(wǎng)設(shè)備的大量使用和物聯(lián)網(wǎng)的廣泛應(yīng)用,盡管霧計(jì)算有很多好處,但它也面臨著一些關(guān)鍵的安全挑戰(zhàn)。例如:1)霧計(jì)算架構(gòu)的分散性和復(fù)雜性,使其面臨著許多安全風(fēng)險(xiǎn)和威脅,包括惡意攻擊、數(shù)據(jù)泄露等; 2)由于區(qū)域受限,底層節(jié)點(diǎn)無(wú)法選擇最優(yōu)的霧節(jié)點(diǎn)進(jìn)行任務(wù)處理。通過(guò)文獻(xiàn)調(diào)查發(fā)現(xiàn)霧計(jì)算安全領(lǐng)域的工作很少,主要采用身份認(rèn)證技術(shù),而且這些方案仍然采用依賴交易第三方的架構(gòu),而該架構(gòu)容易遭受單點(diǎn)故障。另一方面,現(xiàn)有霧計(jì)算沒有考慮底層節(jié)點(diǎn)對(duì)霧節(jié)點(diǎn)的最優(yōu)選擇問(wèn)題。
針對(duì)這些挑戰(zhàn)和問(wèn)題,本研究提出一種改進(jìn)PBFT算法[6]的信任模型,用于計(jì)算霧節(jié)點(diǎn)的信任值,并通過(guò)信任值大小對(duì)節(jié)點(diǎn)信任狀態(tài)[7]進(jìn)行分類,在一致性協(xié)議和視圖更換協(xié)議中加入對(duì)該狀態(tài)的記錄,從而使協(xié)議在達(dá)成數(shù)據(jù)一致性的同時(shí)能夠識(shí)別節(jié)點(diǎn)信任狀態(tài),并在選舉主節(jié)點(diǎn)時(shí)考慮該狀態(tài)。同時(shí),本研究利用節(jié)點(diǎn)信任值、節(jié)點(diǎn)負(fù)載率和底層節(jié)點(diǎn)與霧節(jié)點(diǎn)之間的距離三個(gè)指標(biāo)進(jìn)行加權(quán)歸一化,以選出最優(yōu)的霧節(jié)點(diǎn)來(lái)提高整個(gè)網(wǎng)絡(luò)的通信效率和安全性。實(shí)驗(yàn)表明,該方法為霧計(jì)算提供了更加可靠和高效的網(wǎng)絡(luò)架構(gòu),為共識(shí)算法與霧計(jì)算的結(jié)合應(yīng)用提供了科學(xué)依據(jù)。
針對(duì)霧計(jì)算現(xiàn)有的各種安全問(wèn)題,已經(jīng)有研究者進(jìn)行了相關(guān)研究。Ivan,Baker等[8-9]提供了對(duì)霧計(jì)算的全面概述,并系統(tǒng)地回顧了霧計(jì)算的安全和隱私挑戰(zhàn),對(duì)現(xiàn)有的安全和隱私解決方案進(jìn)行了評(píng)估和比較,包括身份驗(yàn)證、訪問(wèn)控制、數(shù)據(jù)完整性和隱私保護(hù)等方面,還討論了未來(lái)的發(fā)展方向。Wazid等[10]提出了一種適用于霧計(jì)算服務(wù)的用戶身份驗(yàn)證方案,該方案基于Hash函數(shù)和對(duì)稱加密算法,旨在提供高安全性、低延遲和高效性能,并能夠有效防止中間人攻擊、重放攻擊等安全問(wèn)題。Min等[11]提出了一種基于屬性和置換加密的混合方案,用于在霧計(jì)算環(huán)境中實(shí)現(xiàn)細(xì)粒度搜索和訪問(wèn)授權(quán),旨在提供高效的搜索和授權(quán)服務(wù),同時(shí)保護(hù)用戶數(shù)據(jù)的隱私和安全。這些研究雖然減少了對(duì)第三方的依賴,但仍需要第三方機(jī)構(gòu)來(lái)發(fā)放和驗(yàn)證數(shù)字證書,并且沒有對(duì)霧計(jì)算中的節(jié)點(diǎn)信任狀態(tài)進(jìn)行分類,不能有效解決惡意節(jié)點(diǎn)作惡的問(wèn)題。
區(qū)塊鏈的本質(zhì)是一種分布式賬本數(shù)據(jù)庫(kù),它具備去中心化、防篡改、透明可溯的特性[12-13]。共識(shí)算法[14]作為區(qū)塊鏈的一大核心技術(shù),就是在區(qū)塊鏈網(wǎng)絡(luò)中通過(guò)算法手段讓所有參與者對(duì)某個(gè)確定的結(jié)果達(dá)成一致的一套規(guī)則。典型的共識(shí)算法根據(jù)容錯(cuò)類型分為拜占庭容錯(cuò)共識(shí)算法和非拜占庭容錯(cuò)共識(shí)算法兩種。拜占庭問(wèn)題是指系統(tǒng)中存在惡意節(jié)點(diǎn)故意向誠(chéng)實(shí)節(jié)點(diǎn)發(fā)送錯(cuò)誤信息,干擾誠(chéng)實(shí)節(jié)點(diǎn)的判斷,阻礙系統(tǒng)的正常運(yùn)行。PBFT算法是解決拜占庭問(wèn)題中應(yīng)用最廣泛的共識(shí)算法之一[15-16],該算法基于狀態(tài)機(jī)復(fù)制原理,主要針對(duì)系統(tǒng)中惡意節(jié)點(diǎn)向其他節(jié)點(diǎn)發(fā)送錯(cuò)誤信息,擾亂系統(tǒng)正常運(yùn)行的問(wèn)題,在保證系統(tǒng)安全性和可靠性的前提下提供了(n-1)/3的容錯(cuò)性,即如果系統(tǒng)內(nèi)有n臺(tái)機(jī)子,那么系統(tǒng)最多能容忍1/3的節(jié)點(diǎn)失效。目前,已有一些研究者圍繞PBFT算法在霧層的應(yīng)用展開研究,探討了PBFT算法應(yīng)用在霧計(jì)算領(lǐng)域中的安全性等方面的問(wèn)題,并提出了解決方案。Desire等[17]提出了一種基于橢圓曲線密碼(ECC)數(shù)字簽名的公開許可區(qū)塊鏈安全機(jī)制,該機(jī)制支持分布式賬本數(shù)據(jù)庫(kù)(服務(wù)器),在物聯(lián)網(wǎng)霧層提供不可篡改的安全解決方案、交易透明并防止患者記錄被篡改,緩解了霧計(jì)算架構(gòu)的延遲、安全性集中化和可擴(kuò)展性問(wèn)題。但是,其沒有開發(fā)出具體的系統(tǒng),所提機(jī)制的去中心化能力和性能還有待提高。Wang等[18]提出了一種基于PBFT共識(shí)算法的隱私保護(hù)分布式密鑰管理方案。該方案利用區(qū)塊鏈技術(shù)實(shí)現(xiàn)了密鑰管理的分布式存儲(chǔ)和訪問(wèn),并利用PBFT共識(shí)算法確保了密鑰管理的可靠性和安全性,但需要部署區(qū)塊鏈網(wǎng)絡(luò),增加了系統(tǒng)的復(fù)雜性和成本。Kong等[19]提出了一種基于授權(quán)區(qū)塊鏈的高效、隱私保護(hù)且可驗(yàn)證的車載霧感知數(shù)據(jù)收集與共享方案。該方案在數(shù)據(jù)收集階段,結(jié)合同態(tài)2-DNF(析取范式)密碼體制和基于身份的簽密方案,同時(shí)利用授權(quán)的區(qū)塊鏈來(lái)維護(hù)導(dǎo)出傳感數(shù)據(jù)的不可篡改記錄,提高了計(jì)算和通信效率。但是,所提出的方案主要基于密碼體制和身份驗(yàn)證,在霧計(jì)算場(chǎng)景下的去中心化效果不佳。
本研究在去中心化思想的啟發(fā)下,使用改進(jìn)PBFT算法在霧層建立信任模型,計(jì)算霧節(jié)點(diǎn)的信任值,并根據(jù)信任值大小對(duì)霧節(jié)點(diǎn)進(jìn)行分類,將惡意節(jié)點(diǎn)移出共識(shí)群組,從而提高整個(gè)網(wǎng)絡(luò)的安全性,同時(shí)通過(guò)選擇最優(yōu)霧節(jié)點(diǎn)提高網(wǎng)絡(luò)的通信效率。
本模型采用了霧計(jì)算的三層網(wǎng)絡(luò)架構(gòu),如圖1 所示。
圖1 霧計(jì)算網(wǎng)絡(luò)架構(gòu)圖
圖1 中,底層是由傳感器等設(shè)備組成的終端層,底層節(jié)點(diǎn)收集監(jiān)控?cái)?shù)據(jù),將部分計(jì)算任務(wù)或數(shù)據(jù)交給霧層處理,從而減輕底層節(jié)點(diǎn)的負(fù)擔(dān)和提高計(jì)算效率; 中間層是由霧節(jié)點(diǎn)和霧服務(wù)器組成的霧層,由霧節(jié)點(diǎn)提供本地存儲(chǔ)和計(jì)算能力,根據(jù)不同的應(yīng)用需求對(duì)數(shù)據(jù)進(jìn)行安全和通信管理等操作,可以減少數(shù)據(jù)傳輸延遲; 頂層則是云端服務(wù)器組成的云計(jì)算層,通常用于提供額外的計(jì)算和存儲(chǔ)資源,以滿足霧層無(wú)法處理的更大規(guī)模和復(fù)雜的任務(wù),同時(shí)為霧層提供虛擬機(jī)管理、網(wǎng)絡(luò)連接等方面的服務(wù)與支持。在這種分層架構(gòu)下,霧節(jié)點(diǎn)可以作為PBFT算法中的共識(shí)節(jié)點(diǎn),用于進(jìn)行共識(shí)過(guò)程,保證霧計(jì)算的安全性和可信度,從而為底層節(jié)點(diǎn)提供更好的服務(wù)。同時(shí),霧節(jié)點(diǎn)可以通過(guò)霧層與云層進(jìn)行通信,實(shí)現(xiàn)更復(fù)雜的計(jì)算任務(wù)。
改進(jìn)PBFT算法將節(jié)點(diǎn)分為三類:主節(jié)點(diǎn)、副本節(jié)點(diǎn)和備份節(jié)點(diǎn)。其中,主節(jié)點(diǎn)是PBFT協(xié)議的重要組成部分,其主要功能是為底層節(jié)點(diǎn)的任務(wù)請(qǐng)求分配霧節(jié)點(diǎn),確保所有請(qǐng)求都得到了處理; 副本節(jié)點(diǎn)是PBFT協(xié)議的核心部分,其主要功能是接收主節(jié)點(diǎn)的提議,按照主節(jié)點(diǎn)的提議順序執(zhí)行相應(yīng)的操作,同時(shí)會(huì)對(duì)底層節(jié)點(diǎn)的任務(wù)請(qǐng)求進(jìn)行處理,將結(jié)果返回到底層節(jié)點(diǎn); 備份節(jié)點(diǎn)則是在某一時(shí)刻,某個(gè)副本節(jié)點(diǎn)出現(xiàn)故障或離線時(shí),去替代該節(jié)點(diǎn)繼續(xù)參與PBFT協(xié)議的節(jié)點(diǎn)。
本模型的設(shè)計(jì)基于PBFT算法,加入了信任值更新和節(jié)點(diǎn)信任狀態(tài)的分類。其基本思路是:通過(guò)選舉一個(gè)主節(jié)點(diǎn)來(lái)管理整個(gè)系統(tǒng)的消息通信和狀態(tài)同步,其他節(jié)點(diǎn)按照一定的協(xié)議和流程與主節(jié)點(diǎn)進(jìn)行交互,進(jìn)行狀態(tài)更新和消息認(rèn)證,最終達(dá)成共識(shí)。核心思想是:當(dāng)大多數(shù)節(jié)點(diǎn)都達(dá)成共識(shí)時(shí),就可以認(rèn)為共識(shí)已經(jīng)達(dá)成,即使有一些節(jié)點(diǎn)是惡意的,也不會(huì)影響整個(gè)系統(tǒng)的正確性。主要工作流程如圖2 所示。
圖2 改進(jìn)PBFT算法的主要工作流程
2.2.1 一致性協(xié)議
本模型在PBFT算法原有一致性協(xié)議的基礎(chǔ)上進(jìn)行設(shè)計(jì),使協(xié)議能夠?qū)?jié)點(diǎn)信任狀態(tài)進(jìn)行分類,主要有以下三個(gè)階段。
1) Pre-prepare階段:主節(jié)點(diǎn)收到底層節(jié)點(diǎn)請(qǐng)求消息后,為消息分配數(shù)字n。根據(jù)當(dāng)前視圖號(hào)v,消息號(hào)n,生成一條預(yù)準(zhǔn)備消息〈〈PRE-PREPARE,v,n,d〉,m〉,并將預(yù)準(zhǔn)備消息廣播給副本節(jié)點(diǎn),進(jìn)入Prepare階段。
2) Prepare階段:副本節(jié)點(diǎn)收到預(yù)準(zhǔn)備消息后進(jìn)行驗(yàn)證。將節(jié)點(diǎn)自身編號(hào)i、視圖編號(hào)v、消息摘要d、消息編號(hào)n進(jìn)行打包生成準(zhǔn)備消息,并廣播給全網(wǎng),接受其他副本節(jié)點(diǎn)發(fā)送的準(zhǔn)備消息,驗(yàn)證準(zhǔn)備消息。當(dāng)節(jié)點(diǎn)接收到一致的2f+1(其中,f代表作惡節(jié)點(diǎn)數(shù))條準(zhǔn)備消息時(shí),進(jìn)入Commit階段。記錄節(jié)點(diǎn)行為。
3) Commit階段:節(jié)點(diǎn)進(jìn)入Commit階段后,向其余副本節(jié)點(diǎn)廣播確認(rèn)消息〈COMMIT,v,n,D(m),i〉,其中,D(m)為節(jié)點(diǎn)的簽名集。當(dāng)節(jié)點(diǎn)收到2f+1條確認(rèn)消息并驗(yàn)證通過(guò)后,執(zhí)行底層節(jié)點(diǎn)請(qǐng)求。記錄節(jié)點(diǎn)行為,并更新其信任值和信任狀態(tài)。
2.2.2 視圖更換協(xié)議
當(dāng)主節(jié)點(diǎn)出現(xiàn)故障或者惡意行為時(shí),觸發(fā)視圖更換協(xié)議,將視圖編號(hào)v變更為v+1,重新選舉新的主節(jié)點(diǎn),本模型在誠(chéng)實(shí)節(jié)點(diǎn)中進(jìn)行選舉,主要有以下兩個(gè)階段。
1) 視圖更換請(qǐng)求階段:當(dāng)任一副本節(jié)點(diǎn)檢測(cè)到主節(jié)點(diǎn)篡改信息或者多次不傳播信息時(shí),會(huì)向其他節(jié)點(diǎn)發(fā)送視圖更換請(qǐng)求,隨機(jī)從信任狀態(tài)為誠(chéng)實(shí)的節(jié)點(diǎn)中選一個(gè)節(jié)點(diǎn)作為主節(jié)點(diǎn),進(jìn)入視圖v+1。每個(gè)節(jié)點(diǎn)會(huì)將收到的視圖更換請(qǐng)求轉(zhuǎn)發(fā)給其他節(jié)點(diǎn),直到所有節(jié)點(diǎn)都收到了請(qǐng)求。
2) 視圖更換確認(rèn)階段:當(dāng)節(jié)點(diǎn)收到2f+1條視圖更換請(qǐng)求后,會(huì)向其他節(jié)點(diǎn)發(fā)送視圖更換確認(rèn)消息。每個(gè)節(jié)點(diǎn)會(huì)收到其他節(jié)點(diǎn)的確認(rèn)消息,當(dāng)收到2f+1條確認(rèn)消息后,將確認(rèn)視圖更換消息發(fā)送給新主節(jié)點(diǎn),進(jìn)入新的視圖。新主節(jié)點(diǎn)確認(rèn)系統(tǒng)狀態(tài)后執(zhí)行數(shù)據(jù)一致性協(xié)議。
該信任模型評(píng)估霧節(jié)點(diǎn)的行為并計(jì)算其信任值,根據(jù)信任值大小將其分為不同的信任狀態(tài),從而授予不同的權(quán)限。
2.3.1 節(jié)點(diǎn)分類
節(jié)點(diǎn)行為及信任狀態(tài)分類如表1 所示。
表1 節(jié)點(diǎn)行為及信任狀態(tài)分類表
從表1 中可以看出,節(jié)點(diǎn)的行為會(huì)對(duì)其信任值產(chǎn)生不同的影響,信任值的范圍在0~1之間,由Ci表示,用于反映節(jié)點(diǎn)狀態(tài)。初始信任值為Cinit,默認(rèn)為0.5。此處設(shè)置Cinit為0.5是為了在后續(xù)計(jì)算各節(jié)點(diǎn)的Ci時(shí),使Ci一直滿足(0≤Ci≤1)的條件,若Cinit過(guò)小,則各節(jié)點(diǎn)的Ci差距過(guò)小,不利于實(shí)驗(yàn)觀察; 若Cinit過(guò)大,會(huì)導(dǎo)致難以滿足(0≤Ci≤1)的條件,同樣不利于實(shí)驗(yàn)分析。根據(jù)Ci大小將節(jié)點(diǎn)分為誠(chéng)實(shí)節(jié)點(diǎn)、故障節(jié)點(diǎn)和惡意節(jié)點(diǎn)。誠(chéng)實(shí)節(jié)點(diǎn)會(huì)積極驗(yàn)證和傳遞信息,惡意節(jié)點(diǎn)會(huì)篡改信息或連續(xù)多次不傳播信息等。
如表2 所示,主節(jié)點(diǎn)由誠(chéng)實(shí)節(jié)點(diǎn)擔(dān)任,誠(chéng)實(shí)節(jié)點(diǎn)和故障節(jié)點(diǎn)均可作為副本節(jié)點(diǎn),惡意節(jié)點(diǎn)作為備份節(jié)點(diǎn),當(dāng)惡意節(jié)點(diǎn)的信任值大于共識(shí)群組中某備份節(jié)點(diǎn)的信任值時(shí),會(huì)作為故障節(jié)點(diǎn)參與共識(shí)。
表2 節(jié)點(diǎn)信任狀態(tài)及作用表
投票權(quán)表示節(jié)點(diǎn)對(duì)于信息確認(rèn)的程度,不同節(jié)點(diǎn)的投票權(quán)不同。故障節(jié)點(diǎn)的投票權(quán)為1,惡意節(jié)點(diǎn)沒有投票權(quán),誠(chéng)實(shí)節(jié)點(diǎn)的投票權(quán)最高,由Vhonest表示,計(jì)算公式為
(1)
式中:Nbad是故障節(jié)點(diǎn)數(shù)量;Nhonest是誠(chéng)實(shí)節(jié)點(diǎn)數(shù)量。
圖3 展示了信任評(píng)估的總體架構(gòu)。首先,各個(gè)霧節(jié)點(diǎn)組成共識(shí)網(wǎng)絡(luò),設(shè)置初始信任值,由主節(jié)點(diǎn)審核每個(gè)副本節(jié)點(diǎn)資格,所有節(jié)點(diǎn)互相廣播和驗(yàn)證信息,在節(jié)點(diǎn)內(nèi)建立其他節(jié)點(diǎn)的信息存檔,通過(guò)通信中的節(jié)點(diǎn)行為,更新其信任值,確定節(jié)點(diǎn)的信任狀態(tài),當(dāng)某一副本節(jié)點(diǎn)發(fā)現(xiàn)網(wǎng)絡(luò)中一節(jié)點(diǎn)的信任值小于某個(gè)備份節(jié)點(diǎn)的信任值時(shí),該節(jié)點(diǎn)會(huì)向主節(jié)點(diǎn)發(fā)起共識(shí),由主節(jié)點(diǎn)廣播消息,所有副本節(jié)點(diǎn)收到主節(jié)點(diǎn)的消息后,互相廣播驗(yàn)證消息,發(fā)起投票。若投票數(shù)超過(guò)節(jié)點(diǎn)數(shù)目的2/3,則將該節(jié)點(diǎn)視為惡意節(jié)點(diǎn),由主節(jié)點(diǎn)將其踢出網(wǎng)絡(luò),并初始化該備份節(jié)點(diǎn),將節(jié)點(diǎn)加入網(wǎng)絡(luò),保證共識(shí)網(wǎng)絡(luò)中總節(jié)點(diǎn)數(shù)目不變。
圖3 信任評(píng)估總體架構(gòu)
2.3.2 信任值影響因素
定義 1節(jié)點(diǎn)歷史影響度。節(jié)點(diǎn)歷史影響度是指節(jié)點(diǎn)過(guò)去的行為對(duì)其當(dāng)前信任值的貢獻(xiàn)程度,節(jié)點(diǎn)的共識(shí)時(shí)間間隔越短,歷史影響度更高,反之則影響度較低。計(jì)算公式為
(2)
式中:Δt為當(dāng)前與上次共識(shí)時(shí)間之間的時(shí)間間隔;ε為調(diào)整歷史信任值影響程度的參數(shù)。當(dāng)Δt越小時(shí),ω(Δt)的值越大,歷史信任值對(duì)當(dāng)前信任值的影響越大,反之亦然。
定義 2節(jié)點(diǎn)事件影響因子。節(jié)點(diǎn)事件影響因子是表示事件重要程度的因素,計(jì)算公式為
(3)
式中:m為交易重要性的相關(guān)參數(shù);M0用來(lái)設(shè)定交易重要性參數(shù)的閾值。當(dāng)m的值越大時(shí),E(m)越大,事件的重要程度越高。
定義 3節(jié)點(diǎn)歷史行為因子。節(jié)點(diǎn)歷史行為因子指節(jié)點(diǎn)過(guò)去的共識(shí)行為對(duì)信任值的影響程度。計(jì)算公式為
(4)
式中:n表示節(jié)點(diǎn)i共識(shí)的次數(shù);Tij用來(lái)評(píng)價(jià)節(jié)點(diǎn)i是否成功參與第j輪共識(shí)。計(jì)算公式為
(5)
定義 4節(jié)點(diǎn)歷史活躍度因子。節(jié)點(diǎn)歷史活躍度因子是指一定時(shí)間內(nèi)節(jié)點(diǎn)參與共識(shí)的頻度。計(jì)算公式為
(6)
式中:N為一定時(shí)間內(nèi)整個(gè)網(wǎng)絡(luò)進(jìn)行的共識(shí)過(guò)程的次數(shù)的總和;Ni為該段時(shí)間內(nèi)節(jié)點(diǎn)i進(jìn)行共識(shí)過(guò)程的次數(shù)。節(jié)點(diǎn)i的參與程度越高,Ai越大,對(duì)信任值評(píng)估的積極影響也越大。
定義 5節(jié)點(diǎn)行為評(píng)價(jià)因子。節(jié)點(diǎn)評(píng)價(jià)因子是根據(jù)節(jié)點(diǎn)參與共識(shí)的表現(xiàn)給予評(píng)估的數(shù)值,表示節(jié)點(diǎn)的共識(shí)表現(xiàn)質(zhì)量。計(jì)算公式為
(7)
式中:G為參與共識(shí)的節(jié)點(diǎn)總數(shù)量;g為贊成信息的節(jié)點(diǎn)數(shù)量;ti為節(jié)點(diǎn)i完成本次共識(shí)所花費(fèi)的時(shí)間;σ(σ∈Z)為調(diào)節(jié)因子。節(jié)點(diǎn)完成共識(shí)的時(shí)間越短,贊成信息的節(jié)點(diǎn)數(shù)量越多,節(jié)點(diǎn)的行為評(píng)價(jià)因子就越高,反之越低。
2.3.3 信任值計(jì)算
信任值Ci是對(duì)節(jié)點(diǎn)i在共識(shí)過(guò)程中信任得分的評(píng)估。節(jié)點(diǎn)i的信任值評(píng)估模型為
Ci=α*Bi+β*Ai+γ*Li+
(1-α-β-γ)*Cinit,
(8)
式中:α,β,γ分別是三者的權(quán)重值,通過(guò)對(duì)這些指標(biāo)賦予不同的權(quán)重來(lái)計(jì)算節(jié)點(diǎn)的信任值。式(8)整合了式(2)~式(7)中的因素,準(zhǔn)確反映了節(jié)點(diǎn)的情況。
算法 1信任值計(jì)算算法
輸入:Δt,m,n,g,t,Ni,N,G
輸出:Ci
1.Ai=e(Ni/N)//節(jié)點(diǎn)歷史活躍度因子
3.for(j=0;j 4.if(m 5.elseE=1 6.if(成功參與共識(shí))T=1 7.elseT=0 8.W=e(-Δt/r) 9.if(n≠0)Bi=[p*(W*E*T)/n]+(1-p)*C0+Bi 10.elseBi=0}//節(jié)點(diǎn)歷史行為因子 11.Ci=a*Bi+b*Ai+c*Li//節(jié)點(diǎn)信任值 2.3.4 信任值更新 在每次共識(shí)完成后,需要及時(shí)根據(jù)節(jié)點(diǎn)的表現(xiàn)更新節(jié)點(diǎn)的信任值,以客觀反映節(jié)點(diǎn)的變化情況,并用信任值大小確定出其信任狀態(tài)。設(shè)節(jié)點(diǎn)的歷史共識(shí)信任值為Pij,節(jié)點(diǎn)的本次共識(shí)信任值為Rij,公式為 (9) 式中:Cij為節(jié)點(diǎn)i參與第j輪共識(shí)后的信任值。若節(jié)點(diǎn)本次共識(shí)的信任值高于歷史信任值,信任值將增大,反之則降低。μ為調(diào)節(jié)因子,公式為 (10) 式中:當(dāng)Rij與Pij差距過(guò)大時(shí),較小的信任值占更大的比重。f(x)是雙曲正切函數(shù),表達(dá)式為 f(x)=tanhx。 (11) 算法 2信任值更新 輸入:Rij,Pij 輸出:Cij 1.if(節(jié)點(diǎn)有惡意行為){Cij=0 } 2.else{ 3.if(Pij=Rij)u=1 4.elseu=0.5+0.5tanh(k*(Pij/Rij-1))}//信任值更新調(diào)節(jié)因子 5.Cij=u*Rij+(1-u)*Pij//信任值更新 6.廣播Cij 在底層節(jié)點(diǎn)發(fā)送請(qǐng)求給霧層網(wǎng)絡(luò)后,主節(jié)點(diǎn)會(huì)根據(jù)任務(wù)需求通過(guò)節(jié)點(diǎn)信任值、通信距離和節(jié)點(diǎn)負(fù)載率三個(gè)指標(biāo)為底層節(jié)點(diǎn)選取最優(yōu)霧節(jié)點(diǎn)處理任務(wù),并返回任務(wù)結(jié)果,主要流程如圖4 所示。假設(shè)每個(gè)數(shù)據(jù)包請(qǐng)求的大小一樣,其中,通信距離S指底層節(jié)點(diǎn)與霧節(jié)點(diǎn)之間的距離,利用網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息,通過(guò)計(jì)算底層節(jié)點(diǎn)與霧節(jié)點(diǎn)之間的歐氏距離來(lái)估算,節(jié)點(diǎn)負(fù)載率RL指的是一定時(shí)間內(nèi)正在使用和等待使用節(jié)點(diǎn)的任務(wù)數(shù)占節(jié)點(diǎn)可處理任務(wù)總數(shù)的比重。公式為 圖4 選取霧節(jié)點(diǎn)主要工作流程 (12) (13) 式中:(x1,y1,z1)和(x2,y2,z2)分別為拓?fù)浣Y(jié)構(gòu)中底層節(jié)點(diǎn)與霧節(jié)點(diǎn)的位置信息;HW為一定時(shí)間內(nèi)霧節(jié)點(diǎn)中排隊(duì)和正在處理的任務(wù)數(shù);HA為該霧節(jié)點(diǎn)可以處理的總?cè)蝿?wù)數(shù)。 霧節(jié)點(diǎn)的綜合評(píng)價(jià)值VC由節(jié)點(diǎn)信任值、節(jié)點(diǎn)負(fù)載率和通信距離三個(gè)指標(biāo)加權(quán)計(jì)算得到,公式為 VC=θ*Ci+μ*S+φ*RL, (14) 式中:θ,μ,φ分別為三個(gè)指標(biāo)的權(quán)重值。 本模型中霧節(jié)點(diǎn)的選擇機(jī)制如圖5 所示,其主要步驟為:1) 指標(biāo)確定:確定評(píng)估底層節(jié)點(diǎn)與霧節(jié)點(diǎn)之間關(guān)系的指標(biāo); 2) 權(quán)重分配:通過(guò)層次分析法為每個(gè)指標(biāo)分配一個(gè)權(quán)重; 3) 數(shù)據(jù)采集:主節(jié)點(diǎn)收集底層節(jié)點(diǎn)和霧節(jié)點(diǎn)的實(shí)時(shí)數(shù)據(jù); 4) 指標(biāo)歸一化:對(duì)不同指標(biāo)的數(shù)據(jù)進(jìn)行歸一化處理,將它們轉(zhuǎn)換為相同的尺度,以便后續(xù)計(jì)算; 5) 加權(quán)計(jì)算:利用層次分析法得到權(quán)重值,加權(quán)計(jì)算每個(gè)霧節(jié)點(diǎn)的綜合評(píng)分; 6) 最優(yōu)霧節(jié)點(diǎn)選擇:選取綜合評(píng)分最高的霧節(jié)點(diǎn)作為底層節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)。 圖5 選擇機(jī)制 圖6 展示了利用層次分析法對(duì)三個(gè)指標(biāo)進(jìn)行權(quán)重分配的結(jié)果,主要步驟為:1) 建立層次結(jié)構(gòu)模型; 2) 確定標(biāo)度并構(gòu)造判斷矩陣; 3) 計(jì)算特征向量; 4) 一致性檢驗(yàn)分析; 5) 一致性檢驗(yàn)通過(guò),確定每個(gè)指標(biāo)的權(quán)重。 圖6 各個(gè)指標(biāo)的權(quán)重值 為評(píng)估模型的有效性,本研究進(jìn)行了仿真對(duì)比實(shí)驗(yàn),環(huán)境配置為Ubuntu18.04.6LTS 64位操作系統(tǒng),Intel(R)Core(TM)i7-10750H CPU@2.60 GHz處理器以及8 GB的內(nèi)存。在不考慮網(wǎng)絡(luò)擁塞的情況下,假設(shè)當(dāng)前網(wǎng)絡(luò)中共有20個(gè)霧節(jié)點(diǎn)加入共識(shí)群組。 在網(wǎng)絡(luò)中存在相同惡意節(jié)點(diǎn)和故障節(jié)點(diǎn)的情況下設(shè)置不同的ε值,觀測(cè)信任值的增幅情況,結(jié)果如圖7 所示。 圖7 不同ε值下信任值的增幅對(duì)比 由圖7 可以看出,當(dāng)節(jié)點(diǎn)歷史影響度中的ε值增大時(shí),節(jié)點(diǎn)歷史行為因子的增幅會(huì)減小,在其他條件不變的情況下,節(jié)點(diǎn)的信任值增幅會(huì)減小; 由于信任值增幅過(guò)大會(huì)使信任值直接達(dá)到最大值,過(guò)小則信任值變化緩慢,都不利于實(shí)驗(yàn)的敏感性分析,故選擇ε=5,此時(shí)信任值的增幅程度最佳。 圖8 展示了不同信任狀態(tài)的節(jié)點(diǎn)信任值變化的情況。隨著共識(shí)輪次的增加,本模型中誠(chéng)實(shí)節(jié)點(diǎn)的信任值基本在不斷增加; 故障節(jié)點(diǎn)的信任值雖不斷波動(dòng),但總體上保持平衡; 惡意節(jié)點(diǎn)的信任值則總體上不斷減小。當(dāng)惡意節(jié)點(diǎn)的信任值低于某備份節(jié)點(diǎn)的信任值時(shí),該節(jié)點(diǎn)將會(huì)被其取代,因此共識(shí)群組內(nèi)惡意節(jié)點(diǎn)的數(shù)目會(huì)減少。 圖8 不同狀態(tài)的節(jié)點(diǎn)信任值變化情況 圖9 展示了共識(shí)群組內(nèi)惡意節(jié)點(diǎn)的占比變化。隨著共識(shí)輪次的增加,PBFT算法中的惡意節(jié)點(diǎn)數(shù)目不變,改進(jìn)PBFT算法中的惡意節(jié)點(diǎn)由于信任值的降低,會(huì)被移出共識(shí),總體上保持降低的趨勢(shì)。圖中出現(xiàn)共識(shí)輪次增加而惡意節(jié)點(diǎn)占比保持不變的情況是由于惡意節(jié)點(diǎn)僅做出故障行為或其信任值仍大于備份節(jié)點(diǎn)。 圖9 共識(shí)組中惡意節(jié)點(diǎn)占比情況 圖10 展示了在通信距離不變的情況下,節(jié)點(diǎn)負(fù)載率與信任值對(duì)選擇最優(yōu)霧節(jié)點(diǎn)的影響。從圖10 中可以看出:PBFT算法只會(huì)選擇信任值最高的霧節(jié)點(diǎn); 改進(jìn)PBFT算法在共識(shí)開始時(shí)信任值較高的霧節(jié)點(diǎn)被選擇的概率較大,處理的任務(wù)請(qǐng)求較多,隨著共識(shí)輪次的增加,其負(fù)載率不斷升高,主節(jié)點(diǎn)對(duì)其選擇的概率會(huì)不斷降低。 圖10 節(jié)點(diǎn)負(fù)載率與信任值對(duì)選擇霧節(jié)點(diǎn)的影響 圖11 展示了霧節(jié)點(diǎn)負(fù)載率相同并且底層節(jié)點(diǎn)可移動(dòng)的情況下,通信距離與信任值對(duì)選擇最優(yōu)霧節(jié)點(diǎn)的影響。從圖中可以看出,PBFT算法由于僅考慮節(jié)點(diǎn)信任值的原因,只選擇了信任值最高的霧節(jié)點(diǎn); 而改進(jìn)PBFT算法則會(huì)在考慮節(jié)點(diǎn)信任值的基礎(chǔ)上,考慮底層節(jié)點(diǎn)與信任值最高的霧節(jié)點(diǎn)之間的通信距離,并且伴隨著兩者通信距離的不斷增加,改進(jìn)PBFT算法選擇信任值最高的霧節(jié)點(diǎn)的概率會(huì)降低,反之則會(huì)升高。 圖11 距離與信任值對(duì)選擇霧節(jié)點(diǎn)的影響 實(shí)驗(yàn)結(jié)果表明,改進(jìn)PBFT算法會(huì)考慮通信距離、負(fù)載率和節(jié)點(diǎn)信任值三個(gè)指標(biāo),避免了由于霧節(jié)點(diǎn)負(fù)載率高或者底層節(jié)點(diǎn)與霧節(jié)點(diǎn)通信距離遠(yuǎn)造成的時(shí)延過(guò)高的情況,提高了通信效率。 圖12 和圖13 分別展示了PBFT算法、RAFT算法和改進(jìn)PBFT算法的吞吐率和時(shí)延的比較情況。由圖12 和圖13 可以看出,隨著共識(shí)輪次的增加,改進(jìn)PBFT算法相比于RAFT算法和PBFT算法,吞吐率更高,時(shí)延更低。這是由于改進(jìn)PBFT算法在共識(shí)過(guò)程中會(huì)降低惡意節(jié)點(diǎn)的信任值,限制惡意節(jié)點(diǎn)參與共識(shí),提高了安全性; 同時(shí),霧節(jié)點(diǎn)的選擇上考慮了負(fù)載率和通信距離,有效降低了信息傳播時(shí)延和霧節(jié)點(diǎn)處理任務(wù)所需花費(fèi)的時(shí)間,避免了網(wǎng)絡(luò)擁塞,提高了整體性能。 圖12 系統(tǒng)吞吐率的變化 圖13 系統(tǒng)平均處理時(shí)延的變化 本文所提出的方法引入PBFT共識(shí)機(jī)制弱化了霧節(jié)點(diǎn)依賴第三方信任機(jī)構(gòu)的節(jié)點(diǎn)安全問(wèn)題,并在底層節(jié)點(diǎn)選擇最優(yōu)霧節(jié)點(diǎn)時(shí)提供了新的思路。利用20個(gè)霧節(jié)點(diǎn)建立共識(shí)群組,仿真結(jié)果證明,本文方法的安全性和吞吐率更高,有效降低了霧計(jì)算網(wǎng)絡(luò)中底層節(jié)點(diǎn)任務(wù)請(qǐng)求的處理時(shí)間,具有實(shí)際應(yīng)用價(jià)值。后續(xù)可開展如下研究:1) 考慮節(jié)點(diǎn)的動(dòng)態(tài)加入、退出與能耗的問(wèn)題,進(jìn)一步提高系統(tǒng)的性能; 2) 增加模型中的節(jié)點(diǎn)數(shù)目,將本模型應(yīng)用于實(shí)際場(chǎng)景。2.4 最優(yōu)霧節(jié)點(diǎn)的選取
3 實(shí)驗(yàn)結(jié)果與分析
3.1 通信安全性分析
3.2 通信效率分析
3.3 性能分析
4 結(jié) 論