趙 駿,戴 歡,2+,唐 毅,2,索梓翔,孫 立
(1.蘇州科技大學(xué) 電子與信息工程學(xué)院,江蘇 蘇州 215009;2.蘇州和數(shù)區(qū)塊鏈應(yīng)用研究院有限公司,江蘇 蘇州 215000)
近年來,隨著物聯(lián)網(wǎng)等新興技術(shù)不斷興起,助推了智慧城市的發(fā)展[1]。智慧城市包括了數(shù)以萬計的感知設(shè)備、大量的網(wǎng)絡(luò)基礎(chǔ)設(shè)施以及智能信息處理和控制系統(tǒng)[2]。中心化網(wǎng)絡(luò)結(jié)構(gòu)的智慧城市信息系統(tǒng)存在著安全性低、隱私泄露和擴(kuò)展性能差等問題。
區(qū)塊鏈的去中心化、防篡改和可溯源等優(yōu)點對解決當(dāng)前物聯(lián)網(wǎng)數(shù)據(jù)存儲和共享的安全問題提供了解決方案[3-5],但區(qū)塊鏈與物聯(lián)網(wǎng)的結(jié)合尚存在一些技術(shù)問題,比如存儲膨脹[6,7]、性能低和設(shè)備資源受限等問題。
本文設(shè)計了一種基于雙賬本的物聯(lián)網(wǎng)數(shù)據(jù)存儲與共享模型,通過邊緣服務(wù)器對感知數(shù)據(jù)進(jìn)行預(yù)處理,將計算任務(wù)分配到邊緣,利用新型分布式賬本技術(shù)IOTA Tangle網(wǎng)絡(luò)[8]的零值交易和掩碼認(rèn)證傳輸分布式存儲大量底層的感知數(shù)據(jù),利用區(qū)塊鏈賬本技術(shù)存儲預(yù)處理后的物聯(lián)網(wǎng)數(shù)據(jù)報告和數(shù)據(jù)摘要,結(jié)合改進(jìn)的DPoS共識算法[9],有效解決節(jié)點投票不積極和惡意賄賂問題,提高了系統(tǒng)共享數(shù)據(jù)的安全性。
近年來,國內(nèi)外的研究人員已經(jīng)將區(qū)塊鏈技術(shù)運用于物聯(lián)網(wǎng)數(shù)據(jù)的存儲與共享,并取得了顯著的成效。文獻(xiàn)[10]構(gòu)造了基于區(qū)塊鏈技術(shù)的去中心化物聯(lián)網(wǎng)數(shù)據(jù)共享和存儲架構(gòu),設(shè)計了存儲證明的共識算法,并提出了基于Gossip協(xié)議的分層傳播方案,大幅降低了區(qū)塊傳播時延。文獻(xiàn)[11]設(shè)計了基于區(qū)塊鏈的物聯(lián)網(wǎng)隱私數(shù)據(jù)共享框架,提出了數(shù)據(jù)壓縮機(jī)制和一個混合訪問控制機(jī)制,提高了區(qū)塊鏈上產(chǎn)品數(shù)據(jù)存儲的效率和安全保護(hù)方面的可行性。文獻(xiàn)[12]設(shè)計了基于閃電網(wǎng)絡(luò)的5G物聯(lián)網(wǎng)數(shù)據(jù)共享的鏈下交易機(jī)制,可以顯著增加交易吞吐量、減少交易時延。文獻(xiàn)[13]構(gòu)建了一個基于有向無環(huán)圖(directed acyclic graph,DAG)結(jié)構(gòu)的區(qū)塊鏈系統(tǒng)應(yīng)用于工業(yè)物聯(lián)網(wǎng),設(shè)計了基于信譽(yù)的工作量證明共識機(jī)制,保證了系統(tǒng)的安全性和交易的效率。文獻(xiàn)[14]提出了一個基于區(qū)塊鏈的森林火災(zāi)監(jiān)視系統(tǒng),加入了邊緣計算和邊緣無人機(jī),設(shè)計了一種全新架構(gòu)BESDDFFS以提高森林火災(zāi)監(jiān)視數(shù)據(jù)存儲與交付的安全性。文獻(xiàn)[15]提出了一種基于區(qū)塊鏈的森林野火數(shù)據(jù)傳輸框架BSSFFS,設(shè)計并實現(xiàn)了一個高效且節(jié)能的信心證明共識算法,能夠很好應(yīng)對資源受限的物聯(lián)網(wǎng)設(shè)備。文獻(xiàn)[16]提出了一種基于有向無環(huán)圖結(jié)構(gòu)的IOTA分布式賬本技術(shù),其本身的數(shù)據(jù)防篡改、零值交易、資源需求低和高度可擴(kuò)展等優(yōu)點,能夠很好適配資源受限的物聯(lián)網(wǎng)設(shè)備。隨著2021年下半年IOTA 2.0開發(fā)網(wǎng)以及可編程智能合約Beta版的發(fā)布,IOTA刪除了協(xié)調(diào)器,實現(xiàn)了一種高效的調(diào)度算法,確保了交易的公平性和短的延遲。
本文采用IOTA分布式賬本+區(qū)塊鏈賬本(Blockchain,BC)的雙賬本結(jié)構(gòu),提出了物聯(lián)網(wǎng)數(shù)據(jù)存儲與共享模型(Internet of things data storage and sharing model,IOTDS),優(yōu)化了物聯(lián)網(wǎng)數(shù)據(jù)的存儲結(jié)構(gòu),使得監(jiān)測系統(tǒng)間的數(shù)據(jù)存儲與共享安全得到保證,模型整體架構(gòu)如圖1所示,該模型包含感知層、網(wǎng)絡(luò)層、數(shù)據(jù)層和用戶層:
圖1 整體架構(gòu)
(1)感知層:該層由多類型底層物聯(lián)網(wǎng)感知設(shè)備組成,例如溫濕度傳感器、煙霧傳感器、電流互感器和傾角傳感器等。每個物聯(lián)網(wǎng)感知設(shè)備在初始化時會生成一個賬戶,即一對公鑰/私鑰,第l類物聯(lián)網(wǎng)感知設(shè)備的第j個設(shè)備生成的公私鑰定義為
(1)
(2)
(2)網(wǎng)絡(luò)層:該層由眾多區(qū)域化的邊緣服務(wù)器和基站組成。一方面,作為IOTA賬本全節(jié)點的邊緣服務(wù)器負(fù)責(zé)接收來自輕節(jié)點的底層物聯(lián)網(wǎng)感知設(shè)備的原始數(shù)據(jù)以進(jìn)一步將其連接到Tangle網(wǎng)絡(luò);另一方面,邊緣服務(wù)器解密數(shù)據(jù)后就對其進(jìn)行處理分析并定期生成總結(jié)報告,總結(jié)報告里會記錄一些輕度異常的數(shù)據(jù),說明哪些地方可能會發(fā)生意外情況需要留意或者去核實一下,如遇到緊急情況就會立即生成緊急報告,然后將得到的分析報告與相關(guān)的數(shù)據(jù)摘要通過Internet發(fā)送至相鄰的其它邊緣服務(wù)器,以同步到BC鏈,解密過程定義為
(3)
(3)數(shù)據(jù)層:該層包括了IOTA賬本和區(qū)塊鏈賬本。IOTA賬本為原始數(shù)據(jù)存儲賬本,其Tangle網(wǎng)絡(luò)中包含著所有物聯(lián)網(wǎng)數(shù)據(jù)摘要組成的全部零值交易,由各個物聯(lián)網(wǎng)感知設(shè)備主動生成并上傳。BC的區(qū)塊中包含著所有物聯(lián)網(wǎng)數(shù)據(jù)分析處理后生成的數(shù)據(jù)報告和相關(guān)的數(shù)據(jù)摘要。
(4)用戶層:具有設(shè)備管理權(quán)限,能夠獲取BC中的物聯(lián)網(wǎng)數(shù)據(jù)報告和數(shù)據(jù)摘要。系統(tǒng)管理員的公鑰PKM被硬編碼到邊緣服務(wù)器的軟件中,這意味著只有系統(tǒng)管理員有權(quán)發(fā)布設(shè)備的授權(quán)列表。系統(tǒng)管理員可以通過啟動一個記錄已授權(quán)物聯(lián)網(wǎng)感知設(shè)備公鑰PK的交易來管理底層物聯(lián)網(wǎng)感知設(shè)備(add/delete)。這筆交易被定義為
(4)
如圖2所示,IOTDS數(shù)據(jù)流圖底層物聯(lián)網(wǎng)感知設(shè)備對目標(biāo)狀態(tài)進(jìn)行監(jiān)測,并通過無線通信(NB-IOT/5G)向邊緣服務(wù)器發(fā)送相關(guān)加密監(jiān)測數(shù)據(jù),邊緣服務(wù)器接收物聯(lián)網(wǎng)感知設(shè)備的原始數(shù)據(jù)解密后對其進(jìn)行處理分析并定期生成總結(jié)報告,同時將原始數(shù)據(jù)進(jìn)一步連接到Tangle網(wǎng)絡(luò)。這些分析報告與相關(guān)的數(shù)據(jù)摘要將會通過Internet發(fā)送至相鄰的其它邊緣服務(wù)器,經(jīng)過一輪共識后同步到區(qū)塊鏈,系統(tǒng)管理員可隨時獲取區(qū)塊鏈中的物聯(lián)網(wǎng)數(shù)據(jù)報告和數(shù)據(jù)摘要。IOTA與BC通過原始數(shù)據(jù)哈希值錨定鏈接,在發(fā)生或者有可能發(fā)生突發(fā)情況的時候,管理員可以根據(jù)數(shù)據(jù)摘要快速定位到發(fā)生或有可能發(fā)生突發(fā)情況的具體位置,如果有查看原始數(shù)據(jù)的需要,則可以通過原始數(shù)據(jù)的Hasho索引到IOTA中的原始數(shù)據(jù)。為了應(yīng)對智慧城市大量的物聯(lián)網(wǎng)傳感器的數(shù)據(jù)安全存儲與訪問,減輕區(qū)塊鏈打包壓力,IOTDS模型底層采用基于DAG的IOTA分布式賬本,利用其零值交易、掩碼認(rèn)證傳輸、不可篡改性和更快的交易速度等優(yōu)點,保證了物聯(lián)網(wǎng)數(shù)據(jù)存儲的吞吐量以及完整性和可溯性。IOTDS模型的上層由于沒有大容量數(shù)據(jù)存儲的要求,所以采用了區(qū)塊鏈賬本,BC鏈中節(jié)點通過智能合約對物聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行分析,將分析后的報告以及物聯(lián)網(wǎng)數(shù)據(jù)摘要等信息存儲在區(qū)塊上,結(jié)果公開可供系統(tǒng)管理員查看,使得物聯(lián)網(wǎng)數(shù)據(jù)不可篡改、可溯源、多方可驗證和可信共享。
圖2 IOTDS數(shù)據(jù)流
海量、實時和高并發(fā)是物聯(lián)網(wǎng)數(shù)據(jù)的特點,傳統(tǒng)的PoW、PoS等共識算法能夠滿足現(xiàn)有公有鏈的需求,但其吞吐量太低,遠(yuǎn)不能滿足實際物聯(lián)網(wǎng)應(yīng)用的需求。作為當(dāng)前主流共識算法之一的DPoS共識算法,摒棄了傳統(tǒng)區(qū)塊鏈通過挖礦生產(chǎn)區(qū)塊的方式,采用選舉部分特殊節(jié)點代理網(wǎng)絡(luò)中其余節(jié)點的方式,降低了對帶寬的需求,將出塊時間從10分鐘減至數(shù)秒,實現(xiàn)區(qū)塊生成效率的成倍增加,使得交易確認(rèn)速度加快。但傳統(tǒng)DPoS算法在共識過程中容易出現(xiàn)以下風(fēng)險:一是由于競選記賬節(jié)點會消耗大量時間和算力,從而使得部分普通節(jié)點不愿積極參與到投票的過程;二是由于網(wǎng)絡(luò)中的任何一個持幣節(jié)點都能參加記賬節(jié)點的選舉和投票流程,并且每個節(jié)點選票的權(quán)重都與自己的持幣量成正相關(guān),所以可能會存在惡意節(jié)點賄賂權(quán)重較大的節(jié)點給自己投票的潛在安全隱患。而且一旦惡意節(jié)點當(dāng)選記賬節(jié)點,為了自己的利益而沒有能力去生產(chǎn)新的區(qū)塊,則可能會造成整個區(qū)塊鏈系統(tǒng)的生產(chǎn)力降低,從而損害其它節(jié)點的權(quán)益。本文提出了一種基于聲譽(yù)的DPoS共識算法,加入了聲譽(yù)積分機(jī)制和新的獎勵機(jī)制選舉記賬節(jié)點,能夠有效解決點投票不積極和惡意節(jié)點賄賂,提高系統(tǒng)共享數(shù)據(jù)的安全性。
IOTDS采用分布式的網(wǎng)絡(luò)結(jié)構(gòu),各節(jié)點之間采用P2P的連接方式,避免了單一節(jié)點的故障引起整個網(wǎng)絡(luò)的癱瘓或者數(shù)據(jù)安全問題。
節(jié)點按功能分為4類:見證人節(jié)點、候選人節(jié)點、普通節(jié)點和惡意節(jié)點。
(1)見證人節(jié)點:區(qū)塊鏈的記賬節(jié)點,負(fù)責(zé)區(qū)塊的驗證及其打包,由每輪投票的普通節(jié)點中的總得票數(shù)的前10%擔(dān)任,進(jìn)入打包隊列,見證人節(jié)點每輪結(jié)束都要變更,確保那些不穩(wěn)定或者做壞事的節(jié)點及時地被剔除。
(2)候選人節(jié)點:由普通節(jié)點選出來的備選記賬節(jié)點,按總得票數(shù)從高到低進(jìn)入候選隊列,見證人節(jié)點負(fù)責(zé)打包區(qū)塊,而候選人節(jié)點負(fù)責(zé)對見證人節(jié)點生成的區(qū)塊進(jìn)行驗證及替換不合格的見證人節(jié)點。候選人節(jié)點的總得票數(shù)從高到低為10%~15%。
(3)普通節(jié)點:系統(tǒng)中占比最大的節(jié)點,它們具有選舉權(quán)和被選舉權(quán)。它們的總得票數(shù)位于從高到低為15%~90%。
(4)惡意節(jié)點:指那些未正常參與交易或者打包區(qū)塊的節(jié)點,包括定義交易格式或內(nèi)容不合格,執(zhí)行交易失敗,未按規(guī)定出塊,短期內(nèi)大量請求智能合約等行為。它們的總得票數(shù)位于最后的10%。
在本文提出的共識算法中,采用了聲譽(yù)積分(reputation credit,RC)的概念,聲譽(yù)積分模型是一種平衡共識效率和安全性的解決方案,它根據(jù)節(jié)點的聲譽(yù)積分來評價節(jié)點的好壞。聲譽(yù)積分越高則代表它在之前的交易或者打包過程中表現(xiàn)越好,該節(jié)點值得信任,聲譽(yù)積分低則代表該節(jié)點有可能為惡意節(jié)點。本文提出了節(jié)點聲譽(yù)積分計算公式
(5)
(6)
式中:Tranp為該節(jié)點參與合法上鏈交易的數(shù)量;Packp為該節(jié)點作為見證人節(jié)點按時打包區(qū)塊并上鏈的次數(shù);SuccVp為該節(jié)點作為普通節(jié)點投票給成功按時出塊且上鏈的見證人節(jié)點的次數(shù);Voteb為該節(jié)點成功投票給惡意節(jié)點的次數(shù);ξ1、ξ2、ξ3和ξ4為權(quán)重系數(shù),可以根據(jù)需求自由調(diào)整。如果節(jié)點表現(xiàn)出正常的行為,那么它的聲譽(yù)積分將會增加。
(7)
式中:Badnoden為該節(jié)點作為惡意節(jié)點的次數(shù);Packn為該節(jié)點作為見證人節(jié)點未按時打包區(qū)塊并上鏈的次數(shù);FailVn為該節(jié)點作為普通節(jié)點投票給未按時成功出塊且上鏈的見證人節(jié)點的次數(shù);δ1、δ2和δ3為權(quán)重系數(shù),可以根據(jù)需求自由調(diào)整。當(dāng)節(jié)點表現(xiàn)出異常行為時會扣除一定的聲譽(yù)積分,特別地在作為見證人節(jié)點時發(fā)生故障時不僅會扣除聲譽(yù)積分還會踢出打包隊列,由下一位候選人節(jié)點頂替。
聲譽(yù)積分在增長到一定程度后,需要輕微重置以平衡和其它節(jié)點的關(guān)系。設(shè)α為閾值,β為RC最大值,一旦節(jié)點自身RC達(dá)到最大值,它的RC將會被重置為閾值α,這將有利于系統(tǒng)的良性循環(huán),保證了其它節(jié)點的選舉積極性。RC值不足0,則記為0。
在傳統(tǒng)的DPoS共識機(jī)制中,見證人節(jié)點來自于普通節(jié)點,見證人節(jié)點的選舉是通過計算該節(jié)點的得票數(shù)來確定的。本文對傳統(tǒng)的DPoS共識機(jī)制進(jìn)行了改良,每個節(jié)點都有基于打包隊列節(jié)點數(shù)量的贊成票、反對票和棄權(quán)票,它們可以向值得信賴的節(jié)點投贊成票(positive vote,PV),向不信任的節(jié)點投反對票(negative vote,NV),向不確定的節(jié)點投棄權(quán)票(abstention vote,AV)以避免惡意節(jié)點進(jìn)入打包隊列。
節(jié)點總得票數(shù)(total votes,TV)
(8)
取Tv值最高的前10%進(jìn)入打包隊列,成為見證人節(jié)點,對區(qū)塊進(jìn)行打包;取Tv值前10%~15%為候選節(jié)點,僅參與驗證區(qū)塊和替換不合格的見證人節(jié)點。Tv值低于-50,將Tv值計為-50。
在傳統(tǒng)的DPoS共識機(jī)制中會對那些正確打包區(qū)塊并上鏈的見證人節(jié)點和成功投票給這些見證人節(jié)點的其它節(jié)點給予一些獎勵reward(Re)。這些獎勵能夠提高整個網(wǎng)絡(luò)中的節(jié)點的投票積極性。成功打包區(qū)塊的見證人節(jié)點則會獲得和它們聲譽(yù)值高低相關(guān)的獎勵。
節(jié)點獲得獎勵Re為
(9)
節(jié)點成功投票和當(dāng)選見證人節(jié)點能夠成功打包區(qū)塊并上鏈的獎勵機(jī)制與聲譽(yù)積分的獎懲機(jī)制理論上能夠有效提高節(jié)點的投票積極性以及遏制惡意節(jié)點賄賂。
本文對提出的基于聲譽(yù)的DPoS共識算法進(jìn)行了仿真實驗,實驗?zāi)M了100個節(jié)點進(jìn)行200輪的投票,并從不同的實驗指標(biāo)對其結(jié)果進(jìn)行重點分析。系統(tǒng)設(shè)定網(wǎng)絡(luò)中存在惡意節(jié)點的占比為10%,α=160,β=200,μ=80。
本文實驗環(huán)境及配置見表1。
表1 實驗環(huán)境及配置
圖3 節(jié)點的Tv值變化趨勢
本文通過進(jìn)行200輪的投票實驗,比較了不同類型的節(jié)點的總得票數(shù)Tv的變化趨勢,如圖4所示。
通過多輪投票的對比分析,見證人節(jié)點和候選人節(jié)點的總得票數(shù)從一開始就有著顯著的領(lǐng)先優(yōu)勢并長期保持,這表明它們自身擁有著穩(wěn)定的表現(xiàn),因此其它的節(jié)點更愿意投贊成票給它們以期望能獲得更多的獎勵和聲譽(yù)積分;普通節(jié)點由于正常參與交易并且正確投票給表現(xiàn)較好的節(jié)點,所以它們的總得票數(shù)會出現(xiàn)平緩上升的趨勢;而惡意節(jié)點一開始總得票數(shù)與普通節(jié)點差不多,但是后續(xù)因為自身表現(xiàn)不穩(wěn)定,未正常參與交易或者打包區(qū)塊等原因,其它節(jié)點會傾向于投反對票給它們以期望得到更多的獎勵,這樣就會導(dǎo)致惡意節(jié)點的總得票數(shù)急劇下跌至最低值附近。通過這樣一種獎懲措施,能夠讓那些表現(xiàn)穩(wěn)定且聲譽(yù)積分高的節(jié)點總得票數(shù)不斷增加,繼而當(dāng)選后續(xù)的見證人節(jié)點;而那些未正常參與交易或者打包區(qū)塊的節(jié)點會因為得到過多的反對票進(jìn)而導(dǎo)致總得票數(shù)不斷下跌,特別地在作為見證人節(jié)點發(fā)生故障時不僅會扣除聲譽(yù)積分還會踢出打包隊列,由下一位候選人節(jié)點頂替,這樣即使那些惡意節(jié)點通過賄賂權(quán)重較大的節(jié)點給自己投票從而進(jìn)入打包隊列,也能夠被及時的剔除,有效地遏制了惡意節(jié)點賄賂,提高了系統(tǒng)的安全性。
本文比較了不同類型節(jié)點在100次交易中的RC值變化趨勢。從結(jié)果來看,各類型節(jié)點的RC值趨勢符合預(yù)期。其中,見證人節(jié)點由于表現(xiàn)良好,參與的幾乎都是成功的交易,它的RC值會持續(xù)穩(wěn)定升高,在達(dá)到實驗所設(shè)置的最大值200后,會重置為閾值160,然后繼續(xù)重復(fù)增長,如圖5(a)所示;候選人節(jié)點參與的失敗交易會比見證人節(jié)點稍多點,整體趨勢上漲較快,如圖5(b)所示;普通節(jié)點由于參與的多是成功的交易,它們的RC值總體趨勢也是緩慢增長,如圖5(c)所示;而惡意節(jié)點由于參與的多是失敗的交易,它的RC值則會不斷下跌,如圖5(d)所示。
圖5 不同類型的節(jié)點RC值變化趨勢
本文從共識機(jī)制、存儲與安全性和效率等方面將IOTDS與其它相關(guān)模型進(jìn)行對比,見表2。IOTA賬本+區(qū)塊鏈賬本的雙賬本架構(gòu)相對于其它解決方案能夠減輕存儲資源壓力,相較于傳統(tǒng)數(shù)據(jù)庫方案則更加安全,結(jié)合提出的改進(jìn)的DPoS共識機(jī)制能提高系統(tǒng)的工作效率,更好地實現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)的安全存儲與共享。
表2 IOTDS與其它解決方案對比
隨著區(qū)塊鏈技術(shù)的不斷發(fā)展,區(qū)塊鏈與智慧城市的結(jié)合將會越來越多。物聯(lián)網(wǎng)數(shù)據(jù)的隱私安全與數(shù)據(jù)共享等問題已經(jīng)得到越來越多的關(guān)注。本文提出了一種基于雙賬本的物聯(lián)網(wǎng)數(shù)據(jù)存儲與共享模型,將IOTA賬本與區(qū)塊鏈賬本的進(jìn)行結(jié)合,利用新型分布式賬本技術(shù)IOTA Tangle網(wǎng)絡(luò)分布式存儲大量底層的感知數(shù)據(jù),利用區(qū)塊鏈賬本技術(shù)存儲預(yù)處理后的物聯(lián)網(wǎng)數(shù)據(jù)報告和數(shù)據(jù)摘要,結(jié)合改進(jìn)的DPoS共識算法,有效解決節(jié)點投票不積極和惡意賄賂問題,提高了系統(tǒng)共享數(shù)據(jù)的安全性。在下一步的工作中,我們將針對物聯(lián)網(wǎng)數(shù)據(jù)的細(xì)粒度訪問控制和檢索方法進(jìn)行進(jìn)一步研究。