喬 蕊, 曹 琰, 王清賢
1(信息工程大學(xué),河南 鄭州 450001)
2(數(shù)學(xué)工程與先進(jìn)計算國家重點(diǎn)實驗室,河南 鄭州 450001)
物聯(lián)網(wǎng)廣泛應(yīng)用于工業(yè)、醫(yī)療、教育、供應(yīng)鏈等眾多領(lǐng)域,在多方授權(quán)實體的參與下,以時間為基本維度產(chǎn)生新的數(shù)據(jù),本文稱為動態(tài)數(shù)據(jù)(dynamic data,簡稱DD),這些數(shù)據(jù)的操作要求安全、可追溯,以便用于各種取證及決策等[1,2].動態(tài)數(shù)據(jù)具有以下特征.
(1) 持續(xù)性.伴隨著時間的推移,在多方實體參與下持續(xù)產(chǎn)生新的動態(tài)數(shù)據(jù);
(2) 時間敏感性.動態(tài)數(shù)據(jù)是對產(chǎn)生時間和應(yīng)用時間敏感的數(shù)據(jù),例如取某段時間內(nèi)產(chǎn)生的動態(tài)數(shù)據(jù)對未來進(jìn)行預(yù)測等;
(3) 多維度.在不同應(yīng)用場景中,動態(tài)數(shù)據(jù)存在除時間維度外的多種維度數(shù)據(jù),如供應(yīng)鏈系統(tǒng)中參與交易的實體地址、交易額等,工業(yè)控制系統(tǒng)中工程文件的操作、權(quán)限的設(shè)置等[3];
(4) 可用性.動態(tài)數(shù)據(jù)應(yīng)具備可用性,支持用戶尤其是企業(yè)用戶的安全管理需求,如分析查看日志信息、了解數(shù)據(jù)使用情況以及展開違法操作調(diào)查等.
可追溯性是確保動態(tài)數(shù)據(jù)完整性和可靠性的重要前提,是物聯(lián)網(wǎng)系統(tǒng)中動態(tài)數(shù)據(jù)可用性的重要體現(xiàn).因此,保證動態(tài)數(shù)據(jù)的可追溯性具有重大意義.
動態(tài)數(shù)據(jù)的可追溯性包括動態(tài)數(shù)據(jù)本身及對動態(tài)數(shù)據(jù)的歷史操作的可追溯,其目的是確保動態(tài)數(shù)據(jù)的完整性和可靠性,即保證在存儲及轉(zhuǎn)移的過程中未發(fā)生篡改或偽造.近年來,網(wǎng)絡(luò)犯罪已經(jīng)從個人行為轉(zhuǎn)變?yōu)橛薪M織的行為,攻擊在數(shù)據(jù)篡改、偽造等方面越來越專業(yè)[4].而現(xiàn)有的數(shù)據(jù)基礎(chǔ)設(shè)施最初設(shè)計為應(yīng)用于合法的數(shù)據(jù)存儲場景,通常采用中心數(shù)據(jù)庫與訪問控制、接入認(rèn)證、信息加密、數(shù)字水印等傳統(tǒng)密碼學(xué)方法結(jié)合的安全手段,將動態(tài)數(shù)據(jù)集中存儲和處理[5-8],或采用以云計算為基礎(chǔ)的數(shù)據(jù)存儲,將各種數(shù)據(jù)資源抽象成資源池[9,10],供用戶使用.上述設(shè)計方案存在安全隱患,例如,高價值數(shù)據(jù)集中存儲極易被攻擊、算法復(fù)雜度高等.因此,防止動態(tài)數(shù)據(jù)被篡改和被偽造成為具有挑戰(zhàn)性的任務(wù).為了提高動態(tài)數(shù)據(jù)存儲的安全性,必須從兩方面對數(shù)據(jù)進(jìn)行保護(hù):一方面驗證動態(tài)數(shù)據(jù)的正確性,避免被篡改、偽造;另一方面,實現(xiàn)對動態(tài)數(shù)據(jù)操作歷史的可追溯,提供數(shù)據(jù)恢復(fù)能力.
本文提出一種動態(tài)數(shù)據(jù)溯源機(jī)制:采用區(qū)塊鏈方式記錄網(wǎng)絡(luò)動態(tài)數(shù)據(jù)流轉(zhuǎn)的全生命周期,對動態(tài)數(shù)據(jù)進(jìn)行記錄、追溯、確權(quán),以從源頭保證該數(shù)字資產(chǎn)以及所代表信息的真實性,減少甚至阻止篡改攻擊的可能性.分析共識終端最大化自身收益的局部行為與保障動態(tài)數(shù)據(jù)存儲安全性和有效性整體目標(biāo)的一致性,提出適用于動態(tài)數(shù)據(jù)存儲的共識機(jī)制,減少算力浪費(fèi).采用密鑰分發(fā)機(jī)制,分層傳遞并驗證各級動態(tài)數(shù)據(jù)存儲平臺信息,相鄰層次間通信采用二次散列迭代的方式,利用公鑰加密正反向不對稱性,增加系統(tǒng)被攻破的難度.
本文的主要工作如下:建立了物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)存儲安全問題的數(shù)學(xué)模型,提出了用于實現(xiàn)操作實體多維授權(quán)與動態(tài)數(shù)據(jù)存儲的雙鏈結(jié)構(gòu);分析群體博弈過程中,單個節(jié)點(diǎn)進(jìn)行決策的誠實行為動機(jī)及特定行業(yè)背景下分布式節(jié)點(diǎn)合作的本質(zhì),提出了一種適用于動態(tài)數(shù)據(jù)存儲的共識機(jī)制,以共識機(jī)制保障動態(tài)數(shù)據(jù)存儲的安全性;提出了一種動態(tài)數(shù)據(jù)溯源信息在物聯(lián)網(wǎng)多方實體間動態(tài)流轉(zhuǎn)的分層溯源機(jī)制,通過公鑰機(jī)制構(gòu)建通信通道,完成動態(tài)數(shù)據(jù)在通信系統(tǒng)中端到端加密安全傳輸,利用加密運(yùn)算正反向不對稱性,有效防止動態(tài)數(shù)據(jù)被篡改、偽造.
本文第 1節(jié)介紹相關(guān)工作.第 2節(jié)抽象出對物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)操作具有通用性的方式和過程,提出動態(tài)數(shù)據(jù)存儲問題模型.第 3節(jié)介紹區(qū)塊鏈相關(guān)概念,分析聯(lián)盟鏈解決物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)儲存的適用性,基于博弈論理論分析物聯(lián)網(wǎng)環(huán)境下各節(jié)點(diǎn)達(dá)成共識的邊界條件,提出基于驗證節(jié)點(diǎn)列表的聯(lián)盟鏈共識算法,進(jìn)一步提出基于上述共識算法的物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)存儲體系結(jié)構(gòu).第 4節(jié)通過理論分析及實驗部署證明本方案對于抵御常見攻擊,實現(xiàn)動態(tài)數(shù)據(jù)操作溯源的有效性.第5節(jié)總結(jié)全文.
在物聯(lián)網(wǎng)飛速發(fā)展的同時,物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)安全面臨嚴(yán)峻的挑戰(zhàn),許多研究人員開展了對中心數(shù)據(jù)庫和云存儲服務(wù)安全性的研究[11-18].文獻(xiàn)[12]審查了29個不同的基于USB對數(shù)據(jù)庫的攻擊,并將它們分為4個主要類別.提出了一種方法來識別每個攻擊的相關(guān)和脆弱的 USB外圍設(shè)備和硬件,但這意味著該方法允許攻擊發(fā)生,存在數(shù)據(jù)庫被破壞的可能性.文獻(xiàn)[13]提出了一種數(shù)據(jù)庫入侵檢測機(jī)制,通過在網(wǎng)站上使用SQL注入,記錄入侵者的所有活動來增強(qiáng)數(shù)據(jù)庫的安全性.管理員可以查看詳細(xì)信息,阻止攻擊者向數(shù)據(jù)庫注入惡意代碼,竊取、銷毀或修改數(shù)據(jù)庫.但單方信任機(jī)制無法控制擁有高級訪問權(quán)限的工作人員對動態(tài)數(shù)據(jù)進(jìn)行惡意篡改或偽造[14].此外,文獻(xiàn)[15]指出,動態(tài)數(shù)據(jù)多由智能處理終端或現(xiàn)場采樣設(shè)備采集、編碼和存儲,這些設(shè)備的處理和存儲性能有限,加之動態(tài)數(shù)據(jù)的持續(xù)性特征導(dǎo)致其隨時間增長的數(shù)據(jù)量較大,因此,復(fù)雜度較高的安全算法不適用解決動態(tài)數(shù)據(jù)的防篡改、防偽造問題.文獻(xiàn)[16]指出:由于云端數(shù)據(jù)允許多授權(quán)用戶訪問,無法對數(shù)據(jù)信息的去向和各級主體的操作歷史提供充分的證據(jù),因此無法滿足某些特殊領(lǐng)域(如工業(yè)控制系統(tǒng)、溯源系統(tǒng)等)對系統(tǒng)動態(tài)數(shù)據(jù)的整個訪問過程進(jìn)行審計的需求,一旦出現(xiàn)問題難以定責(zé).文獻(xiàn)[17]為解決云平臺下不受控制的惡意修改可能破壞共享數(shù)據(jù)的可用性問題,提出了一種公共審計解決方案,可以同時保護(hù)群體成員的身份隱私和身份可追溯性.但在云平臺下,用戶無法與云服務(wù)提供商建立信任,并確保服務(wù)協(xié)議僅使用 Web前端接口[18].為了避免敏感信息被竊取、篡改和偽造,系統(tǒng)需要一個可靠的云平臺服務(wù)提供商.
鑒于傳統(tǒng)數(shù)據(jù)庫和云存儲服務(wù)存在安全隱患,且不可避免,實現(xiàn)動態(tài)數(shù)據(jù)的可追溯性是保障物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)安全應(yīng)用的關(guān)鍵.通過分析近幾年溯源領(lǐng)域的論文,發(fā)現(xiàn)目前許多現(xiàn)代可追溯系統(tǒng)是基于射頻識別(radio frequency identification devices,簡稱 RFID)技術(shù)[19-21].文獻(xiàn)[19]提出了一種電子譜系的食品可追溯系統(tǒng),利用射頻識別技術(shù)跟蹤、定位物品在被無線傳感器網(wǎng)絡(luò)收集儲存和運(yùn)輸過程中的溫度和濕度.但針對傳感器數(shù)據(jù)損壞或丟失的問題,文中僅采用預(yù)測的方式,無法從根本上解決.文獻(xiàn)[20]提出一種基于公鑰加密技術(shù)的高級數(shù)據(jù)保護(hù)方案,該方案能夠?qū)崿F(xiàn)RFID數(shù)據(jù)的可追溯性和鏈性活動.與傳統(tǒng)的RFID安全方案相比,該方案適用于沒有任何加密功能的標(biāo)準(zhǔn) RFID 標(biāo)簽,并且不需要中心數(shù)據(jù)庫.但操作的復(fù)雜度較高,對標(biāo)簽性能要求較高.文獻(xiàn)[21]對RFID標(biāo)簽的加密能力進(jìn)行研究,提出了能夠執(zhí)行加密操作的RFID標(biāo)簽體系結(jié)構(gòu).但是加密功能增加了標(biāo)簽的成本,并且涉及昂貴的身份驗證計算.
根據(jù)物聯(lián)網(wǎng)系統(tǒng)的應(yīng)用特點(diǎn)和要求,需要采取安全措施對系統(tǒng)產(chǎn)生的動態(tài)數(shù)據(jù)進(jìn)行存儲和共享,實現(xiàn)動態(tài)數(shù)據(jù)的可追溯.RFID在溯源系統(tǒng)中應(yīng)用的研究僅適用于對有形資產(chǎn)的追溯,不適用于對物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)的追溯.而云計算等中心化數(shù)據(jù)庫僅僅實現(xiàn)了動態(tài)數(shù)據(jù)的存儲,在抵抗惡意用戶(包括具有高級權(quán)限的內(nèi)部人員)篡改、偽造動態(tài)數(shù)據(jù)方面具有天然的缺陷[22,23].區(qū)塊鏈在不引入第三方中介機(jī)構(gòu)的前提下,可以提供去中心化、不可篡改、安全可靠等特性保證[24].目前,已有研究來創(chuàng)建更具可擴(kuò)展性的區(qū)塊鏈,文獻(xiàn)[25]提出 Bitcoin-NG區(qū)塊鏈協(xié)議,它是拜占庭容錯的,共享相同的信任模型,具有較強(qiáng)的魯棒性.文獻(xiàn)[26]提出的 GHOST規(guī)則解決了提高塊創(chuàng)建速度的問題,這是對比特幣節(jié)點(diǎn)構(gòu)建和重新組織區(qū)塊鏈的一種改進(jìn).文獻(xiàn)[27]提出可以重組鏈,構(gòu)建區(qū)塊的有向非循環(huán)圖,并降低允許交易的授權(quán)規(guī)則.雖然這些模型顯著提高了運(yùn)算速度,但它們可擴(kuò)展性較差,并且需要復(fù)雜的數(shù)據(jù)結(jié)構(gòu)或共識機(jī)制.文獻(xiàn)[28]介紹了一種基于區(qū)塊鏈技術(shù)的去信任物聯(lián)網(wǎng)設(shè)備匿名共享方法,對于解決物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)的溯源問題有一定借鑒.本文通過分析動態(tài)數(shù)據(jù)面向多機(jī)構(gòu)的區(qū)塊鏈應(yīng)用場景,在聯(lián)盟鏈的基礎(chǔ)上,提出一種全新的去中心化基礎(chǔ)架構(gòu)與分布式計算模型,將區(qū)塊的共識及可見性限制在聯(lián)盟鏈內(nèi)部,有效地降低了參與記賬節(jié)點(diǎn)的數(shù)量,實現(xiàn)快速共識驗證,可以很好地解決動態(tài)數(shù)據(jù)的存儲及溯源問題.
定義1.操作實體(operation entity,簡稱OE)是指動態(tài)數(shù)據(jù)D生命周期數(shù)據(jù)流動過程中的所有參與實體,用四元組〈ID,FOE,ROE,D〉表示.
·ID是操作實體的標(biāo)識符,用以對操作實體進(jìn)行唯一標(biāo)識;
定義2.實體OEi的授權(quán)屬性特征值用集合li表示,H:{0,1}*→{0,1}ω,lij∈{0,1}ω,H是理想化的哈希函數(shù),ω為哈希后得到的特征值長度,δ是授權(quán)操作DAG圖中節(jié)點(diǎn)最大入度:
由定義 2,若操作實體的授權(quán)屬性集合li中存在多個元素,表示存在多個父節(jié)點(diǎn)對其授權(quán),SKpj為實體OEi父節(jié)點(diǎn)的私鑰,從集合li中刪除某個元素表示某個父節(jié)點(diǎn)取消授權(quán);反之亦成立.li=ε表示其擁有根權(quán)限,li=?表示該實體授權(quán)為空.
與圖1對應(yīng)的動態(tài)數(shù)據(jù)操作軌跡用多維DAG圖表示,如圖2所示,節(jié)點(diǎn)表示動態(tài)數(shù)據(jù)文件授權(quán),其中,圓形節(jié)點(diǎn)表示對應(yīng)操作實體僅持有一項操作授權(quán),將產(chǎn)生一份動態(tài)數(shù)據(jù)文件;柱狀節(jié)點(diǎn)表示對應(yīng)操作實體持有多項操作授權(quán)即多維授權(quán),將產(chǎn)生多份動態(tài)數(shù)據(jù)文件;有向邊表示動態(tài)數(shù)據(jù)文件在新操作下的演進(jìn)軌跡.
定義3.對于DAG圖中節(jié)點(diǎn)i,入度為δi,若δi≤1,保持節(jié)點(diǎn)不變化;δi>1,節(jié)點(diǎn)為每個入度授權(quán)的集合,其元素個數(shù)|li|=δi,這樣得到的圖稱為多維DAG圖.δi>1時,存在多個父節(jié)點(diǎn)對節(jié)點(diǎn)i的授權(quán),稱為父節(jié)點(diǎn)對節(jié)點(diǎn)i的多維授權(quán).
定義 5.操作實體及其后繼節(jié)點(diǎn)執(zhí)行原子操作產(chǎn)生的動態(tài)數(shù)據(jù)文件的集合,稱為該操作實體的域(domain),域中的動態(tài)數(shù)據(jù)文件稱為該域的對象(object);操作實體的操作授權(quán)范圍覆蓋自身的域;操作實體的域可以包含其后繼操作實體的域,被包含的域稱為子域(sub domain,簡稱 SD);域所包含的子域和對象統(tǒng)稱為該域的成員(member),子域所包含的成員,稱為間接成員.
定義6.操作實體受到攻擊導(dǎo)致其授權(quán)操作的動態(tài)數(shù)據(jù)均不可靠,則該操作實體域中的對象均不可靠,稱為該操作實體的失效覆蓋集(failure coverage set,簡稱FCS).除創(chuàng)始節(jié)點(diǎn)外的各節(jié)點(diǎn)均處于操作實體的多重失效覆蓋集.
實際情況下,操作實體均存在由惡意攻擊導(dǎo)致的數(shù)據(jù)篡改或偽造的可能性,本文對動態(tài)數(shù)據(jù)存儲面臨的安全威脅問題進(jìn)行如下假設(shè).
(1) 每個攻擊者單獨(dú)到來,相互獨(dú)立;
(2) 在時間[0,t]內(nèi),系統(tǒng)受到的攻擊數(shù)量{N(t),t≥0}滿足參數(shù)為λ的泊松分布;
(3) 操作實體第i次受到攻擊的損失為Li,且損失隨時間按負(fù)指數(shù)衰減,損失可累加;
(4) 每次攻擊到達(dá)的時間間隔和造成的破壞相互獨(dú)立.
t=0 時,損失為L;t=ti(ti>0)時,損失為Le-αti.設(shè){Li,i≥1}獨(dú)立同分布,且與{N(t),t≥0}獨(dú)立,那么時間[0,t]內(nèi)不考慮失效覆蓋的損失表示為
條件期望為
記Y1,…,Yn為[0,t]上獨(dú)立同均勻分布的隨機(jī)變量,有:
所以:
即:
因此:
考慮失效覆蓋的情況,用FCS(i)表示節(jié)點(diǎn)i的失效覆蓋范圍,本文優(yōu)化目標(biāo)為
學(xué)術(shù)界對區(qū)塊鏈技術(shù)并沒有統(tǒng)一的定義,但一般認(rèn)為,區(qū)塊鏈?zhǔn)且环N按照時間順序?qū)?shù)據(jù)區(qū)塊以鏈條的方式組合形成的特定數(shù)據(jù)結(jié)構(gòu),并以密碼學(xué)方式保證其不可篡改和不可偽造的去中心化、去信任的分布式共享總賬系統(tǒng)[29].區(qū)塊鏈的提出是計算機(jī)科學(xué)的一個突破,它有望降低個人和組織建立、維護(hù)信任的成本[30],讓沒有信任關(guān)系的人們在無中心化信任機(jī)構(gòu)的情況下合作[31].自2008年Nakamoto發(fā)表奠基性論文[32]以來,經(jīng)過近年的快速發(fā)展,區(qū)塊鏈技術(shù)越來越受到政府、銀行及相關(guān)研究人員的重視.世界經(jīng)濟(jì)論壇(world economic forum,簡稱WEF)于2016年8月發(fā)布了研究報告[33],區(qū)塊鏈成為當(dāng)前技術(shù)研究的熱點(diǎn),包括對區(qū)塊鏈協(xié)議的分析[34-36]、區(qū)塊鏈技術(shù)在某些領(lǐng)域的應(yīng)用等[37-39].
區(qū)塊鏈可以分為3類:公共鏈、聯(lián)盟鏈和私有鏈.公共鏈對外公開,用戶不用注冊就能匿名自由出入網(wǎng)絡(luò),無需授權(quán)即可訪問網(wǎng)絡(luò)和區(qū)塊鏈,如比特網(wǎng)[32]和以太坊[40];聯(lián)盟鏈僅限于聯(lián)盟成員參與,區(qū)塊鏈上的讀寫權(quán)限、參與記賬權(quán)按聯(lián)盟規(guī)則來制訂,如由多家銀行參與的區(qū)塊鏈聯(lián)盟 R3[41]、Linux基金會支持的超級賬本項目[42]都屬于聯(lián)盟鏈架構(gòu);私有鏈僅在私有組織使用,區(qū)塊鏈上的讀寫權(quán)限、參與記賬權(quán)限按私有組織規(guī)則來制訂.
聯(lián)盟鏈可以根據(jù)應(yīng)用場景來決定對公眾的開放程度,其網(wǎng)絡(luò)由成員機(jī)構(gòu)共同維護(hù),節(jié)點(diǎn)通過成員機(jī)構(gòu)的網(wǎng)關(guān)節(jié)點(diǎn)接入,因此適用于物聯(lián)網(wǎng)行業(yè)背景下多成員機(jī)構(gòu)對動態(tài)數(shù)據(jù)的存儲、管理、授權(quán)、監(jiān)控和審計.在實際物聯(lián)網(wǎng)應(yīng)用背景下,用戶、資源、服務(wù)、終端存在泛在接入與授權(quán)操作的特點(diǎn),參與的多方實體存在一定的信任前提和利益約束,實體間數(shù)據(jù)操作共識激勵機(jī)制和分布式賬本記賬權(quán)確定等問題還需要進(jìn)一步研究.
分布式共識是構(gòu)建基于區(qū)塊鏈技術(shù)零信任動態(tài)數(shù)據(jù)溯源機(jī)制必須解決的關(guān)鍵問題,而達(dá)成共識的條件在公開匿名場景下和帶權(quán)限管理的場景下需求差異較大[43,44].例如,比特幣等金融系統(tǒng)在決策權(quán)高度分散的去中心化系統(tǒng)中采用經(jīng)濟(jì)激勵機(jī)制,使各節(jié)點(diǎn)高效地針對區(qū)塊數(shù)據(jù)的有效性達(dá)成共識,該方式面向公有鏈中的任意節(jié)點(diǎn)的自由加入簡單有效.而動態(tài)數(shù)據(jù)常常是與特定工作過程聯(lián)系緊密的行業(yè)內(nèi)部數(shù)據(jù),對動態(tài)數(shù)據(jù)的管理更適合采用聯(lián)盟鏈方式,僅允許核準(zhǔn)的節(jié)點(diǎn)加入,貨幣體系背景下共識激勵顯然不適用于聯(lián)盟鏈方式下對動態(tài)數(shù)據(jù)的管理.在聯(lián)盟鏈方式下,參與多方存在一定的信任前提和利益約束,本節(jié)通過分析該群體博弈過程中單個節(jié)點(diǎn)進(jìn)行決策的誠實行為動機(jī),提出特定行業(yè)背景下分布式節(jié)點(diǎn)合作的本質(zhì)——使各節(jié)點(diǎn)在與環(huán)境的交互與分布式計算過程中獲得最大的累積效用,進(jìn)一步分析動態(tài)數(shù)據(jù)可追溯系統(tǒng)中各節(jié)點(diǎn)達(dá)成共識的邊界條件,優(yōu)化共識算法設(shè)計.
設(shè)動態(tài)數(shù)據(jù)可追溯系統(tǒng)中參與區(qū)塊信息驗證的節(jié)點(diǎn)集合為有限集,對每個參與區(qū)塊信息驗證的節(jié)點(diǎn)i有策略空間及收益函數(shù)Ui,即每個參與節(jié)點(diǎn)i在策略空間Si=(s1,s2,…,sn)下的馮·諾依曼-摩根斯坦效用為U(Si),本文將策略空間Si下節(jié)點(diǎn)預(yù)期效用U(Si)作為評價各動作的價值函數(shù).
每個參與節(jié)點(diǎn)的目標(biāo)是最大化自己的收益,因此為了簡化問題,除節(jié)點(diǎn)i以外的所有其他節(jié)點(diǎn)標(biāo)記為“-i”.通過分析節(jié)點(diǎn)i和-i相互作用并達(dá)成具有約束力協(xié)議的共識過程,得到節(jié)點(diǎn)i和-i收益矩陣見表1.
Table 1 Yield matrix of nodes i and -i表1 節(jié)點(diǎn)i和-i收益矩陣
表1中,C表示某節(jié)點(diǎn)合作(cooperative),B表示背叛(betray),收益函數(shù)表達(dá)式中第1項為對應(yīng)策略下節(jié)點(diǎn)i的收益(分別為PiCC,PiBC,PiCB,PiBB),第2項為對應(yīng)策略下節(jié)點(diǎn)-i的收益(分別為P-iCC,P-iBC,P-iCB,P-iBB).溯源系統(tǒng)各節(jié)點(diǎn)共識模型的構(gòu)建基于以下前提條件.
(1) 對于節(jié)點(diǎn)i,在各種策略組合下的收益滿足:
式(5)表明,在節(jié)點(diǎn)行為不一致的情況下,采取背叛策略的一方可以從犧牲其余節(jié)點(diǎn)的合作行為中得到比所有節(jié)點(diǎn)均合作時更高的收益;在所有節(jié)點(diǎn)均合作,即達(dá)成共識能夠獲得比都背叛更高的收益;一方合作,其余節(jié)點(diǎn)均背叛將會給合作方帶來很大損失,或者說導(dǎo)致最低收益.
(2) 節(jié)點(diǎn)i估計節(jié)點(diǎn)-i背叛的概率為λ,即節(jié)點(diǎn)i對節(jié)點(diǎn)-i的信任度為1-λ.本文采用聯(lián)盟鏈核準(zhǔn)加入的方式,節(jié)點(diǎn)由相關(guān)溯源系統(tǒng)監(jiān)管機(jī)構(gòu)、社會團(tuán)體及志愿者構(gòu)成,在參與溯源信息驗證的n個節(jié)點(diǎn)中,誠實節(jié)點(diǎn)占多數(shù)(比例相當(dāng)大),節(jié)點(diǎn)-i發(fā)生背叛是指除節(jié)點(diǎn)i以外的其余節(jié)點(diǎn)產(chǎn)生錯誤共識的情況.由上述分析可知,這種可能性非常小,即λ→0+.
(3) 根據(jù)條件(2),節(jié)點(diǎn)-i發(fā)生背叛的可能性很小,在其采取合作的前提下,若節(jié)點(diǎn)i采取合作將獲得收益PiCC;若節(jié)點(diǎn)i基于投機(jī)主義采取不合作策略,其將獲得表1中短期最大自身收益PiBC,但這將導(dǎo)致系統(tǒng)在時間[t,t+Δt]內(nèi)識別出節(jié)點(diǎn)i的背叛,并對其進(jìn)行懲罰,懲罰代價函數(shù)P(Si)用節(jié)點(diǎn)信譽(yù)ARi表示,將在本文第3.3節(jié)詳細(xì)描述.因此,節(jié)點(diǎn)i發(fā)生背叛的總體收益為
根據(jù)上面的條件進(jìn)一步分析得出如下結(jié)論:節(jié)點(diǎn)i采取合作或背叛策略取決于當(dāng)前時刻t節(jié)點(diǎn)i與節(jié)點(diǎn)-i合作所帶來的收益期望值E[U(Si)]與節(jié)點(diǎn)i背叛所帶來的收益期望值E[UBC(Si)]的比較,分兩種情況:
其中,若公式(7)成立,節(jié)點(diǎn)i采取合作策略;若公式(8)成立,節(jié)點(diǎn)i將采取背叛策略.
令θ(0<θ<1)為節(jié)點(diǎn)i的折扣因子,用來調(diào)節(jié)當(dāng)前收益對長期收益的影響.λ為節(jié)點(diǎn)i估計節(jié)點(diǎn)-i在一輪驗證過程中采取非合作策略的概率,節(jié)點(diǎn)i采取合作策略時收益的期望值可表示為
由公式(9)得:
推導(dǎo)過程與上文類似,節(jié)點(diǎn)i采取背叛策略時收益的期望值可表示為
由公式(7)、公式(10)、公式(11)得節(jié)點(diǎn)i采取合作策略的條件為
由公式(12)得:
公式(13)即為動態(tài)數(shù)據(jù)可追溯系統(tǒng)中各節(jié)點(diǎn)達(dá)成共識的邊界條件.上式中,θ是節(jié)點(diǎn)i長期收益的折扣因子.θ越大,表明相較當(dāng)前收益,長期收益對節(jié)點(diǎn)i的影響越大;θ越小,表明長期收益對節(jié)點(diǎn)i的影響越小.在給定節(jié)點(diǎn)行為收益的前提下,不等式左邊的值取決于系數(shù)α1=1/(1-λ)和α2=λ/(1-λ)2,只有當(dāng)不等式右邊折扣因子θ超過一定值時,公式(13)才成立.假設(shè)θ為常數(shù),選擇非合作策略將導(dǎo)致公式(13)左邊的值變大;反之亦成立.因此,為了使節(jié)點(diǎn)選擇合作行為,必須降低不等式左邊的值,即降低系數(shù)α1=1/(1-λ)和α2=λ/(1-λ)2.得出如下結(jié)論.
(1) 節(jié)點(diǎn)間相互信任是進(jìn)行合作的必要非充分條件.公式(13)中,若λ→1-,即節(jié)點(diǎn)間幾乎不存在信任,不等式左邊的取值F(λ)→+∞,節(jié)點(diǎn)間不可能產(chǎn)生合作,因此,節(jié)點(diǎn)間相互信任是進(jìn)行合作的必要條件;若λ=0,不等式左邊的值F(λ)=(PiBC-PiCC)/(PiBC-PiBB),?θ∈(0,1),公式(13)為非重言式的可滿足式,因此,節(jié)點(diǎn)間信任不是產(chǎn)生合作的充分條件;
(2) 在本文第3.3節(jié)提出的共識算法中,機(jī)構(gòu)優(yōu)先選擇估計節(jié)點(diǎn)-i背叛概率λ較低的節(jié)點(diǎn)i作為驗證節(jié)點(diǎn)列表(verification nodes list,簡稱VNL)中的節(jié)點(diǎn).隨著λ的減少,節(jié)點(diǎn)i對節(jié)點(diǎn)-i的信任度將增大,公式(13)中系數(shù)α1和α2將減少,進(jìn)而不等式左邊的值F(λ)下降,節(jié)點(diǎn)i選擇合作策略的可能性增大.
通過研究使得共識終端最大化自身收益的局部行為與保障動態(tài)數(shù)據(jù)存儲安全性和有效性整體目標(biāo)的關(guān)系得出:當(dāng)所有終端都持有待提交驗證的區(qū)塊,為了讓自己的收益最大,任何一方都不會(或者無法)改變自己對其他區(qū)塊的驗證結(jié)果.
根據(jù)本文第 3.2節(jié)達(dá)成共識的邊界條件,提出基于信譽(yù)的共識激勵機(jī)制:通過授權(quán)一部分信任節(jié)點(diǎn)組成一個驗證節(jié)點(diǎn)列表VNL,TVNL={T1,T2,…,Tn},?Ti∈TVNL,初始狀態(tài)下,節(jié)點(diǎn)信譽(yù)ARi=1,每個節(jié)點(diǎn)通過為其他節(jié)點(diǎn)服務(wù)保持信譽(yù),每輪共識選取最佳區(qū)塊打包驗證節(jié)點(diǎn)的同時,以系數(shù)γ降低最壞區(qū)塊打包驗證節(jié)點(diǎn)的信譽(yù),即ARi=γARi(0<γ<1).為了阻止自私行為并鼓勵節(jié)點(diǎn)保持其信譽(yù),當(dāng)VNL列表中驗證節(jié)點(diǎn)信譽(yù)低于某一閾值w時,將該節(jié)點(diǎn)移出VNL列表,當(dāng)超過1/3驗證節(jié)點(diǎn)被移出,則必須由授權(quán)機(jī)構(gòu)重新授權(quán)組成新的VNL列表.假設(shè)信譽(yù)閾值是全局的,即所有節(jié)點(diǎn)使用相同的值,關(guān)于特殊情況下某些節(jié)點(diǎn)定義局部閾值方面的問題,還有待進(jìn)一步研究.
每個參與驗證的節(jié)點(diǎn)會獲取在共識開始之前未被記錄的所有有效操作,并且以候選集的形式公開他們.然后,每個參與驗證的節(jié)點(diǎn)合并VNL中所有其他驗證節(jié)點(diǎn)的候選集合,并對所有操作的真實性進(jìn)行比對投票.對動態(tài)數(shù)據(jù)的有效操作分為兩種情況:一是新數(shù)據(jù)的發(fā)布;二是動態(tài)數(shù)據(jù)在不同實體間的流轉(zhuǎn).上述兩種操作都必須由通過機(jī)構(gòu)授權(quán)的節(jié)點(diǎn)來實現(xiàn),且均看做一次交易:新數(shù)據(jù)的發(fā)布可以沒有輸入,但必須有輸出,擁有與輸出地址公鑰對應(yīng)私鑰的節(jié)點(diǎn)即為可對該地址數(shù)據(jù)進(jìn)行有效操作的授權(quán)節(jié)點(diǎn);動態(tài)數(shù)據(jù)在不同實體間的流轉(zhuǎn)既要有輸入,又要有輸出,其輸入需要通過上一筆輸出地址所對應(yīng)的私鑰進(jìn)行簽名,驗證當(dāng)前節(jié)點(diǎn)是否為授權(quán)節(jié)點(diǎn).通過行業(yè)頂層管理機(jī)構(gòu)預(yù)先頒發(fā)根CA證書(certificate authority),構(gòu)建基于根CA及中間層CA到最底層實體CA的完整的證書信任鏈來實現(xiàn)上述信任基礎(chǔ).系統(tǒng)中全節(jié)點(diǎn)服務(wù)器負(fù)責(zé)維護(hù)VNL列表,驗證節(jié)點(diǎn)在達(dá)成共識時只考慮VNL中成員的驗證結(jié)果完成區(qū)塊生成,這種共識算法在保證安全性的同時,大幅提高了系統(tǒng)達(dá)成共識的效率.同時,由于驗證節(jié)點(diǎn)是機(jī)構(gòu)授權(quán)的節(jié)點(diǎn),一旦其中出現(xiàn)背叛節(jié)點(diǎn)便于系統(tǒng)核實身份并追究責(zé)任.
區(qū)塊共識過程的數(shù)學(xué)形式描述如下.
在動態(tài)數(shù)據(jù)存儲系統(tǒng)中,TVNL={T1,T2,…,Tn}為系統(tǒng)中驗證節(jié)點(diǎn)集合.驗證節(jié)點(diǎn)Ti獲取的待驗證有效操作候選集記為χ(Ti),合并后的待驗證候選集為
某終端Ti∈TVNL提交的打包區(qū)塊Bnewi={tx1,…,txm},txj∈χ(TVNL),獲得其他終端驗證組合及其收益用集合Gi={ηi1,…,ηin:ui}表示.由某個終端Ti進(jìn)行打包的區(qū)塊Bnewi組成的各終端驗證組合(ηi1,…,ηin)中,任意參與驗證方Tk對Ti提交區(qū)塊Bnewi的驗證結(jié)果表示為ηik,且滿足:
根據(jù)物聯(lián)網(wǎng)系統(tǒng)的規(guī)模及對吞吐率的要求,為共識過程設(shè)置合適的等時間間隔輪,用r表示.在一輪時間內(nèi),達(dá)成共識的步驟為:
步驟1.VNL列表驗證節(jié)點(diǎn)數(shù)大于2n/3,則執(zhí)行步驟2;否則,等待授權(quán)機(jī)構(gòu)授權(quán)新列表;
步驟2. 本輪時間未結(jié)束,對于最早出現(xiàn)的Ti∈TVNL,且使ui(ηi1,…,ηij,…,ηin)=n,則選取Ti打包區(qū)塊為本輪最佳區(qū)塊,即選取最早通過驗證節(jié)點(diǎn)列表終端驗證的區(qū)塊,轉(zhuǎn)步驟5;否則,執(zhí)行步驟3;
步驟 3. 本輪時間結(jié)束,?Ti,?Tj∈TVNL,使得n>ui(ηi1,…,ηij,…,ηin)>uj(ηj1,…,ηji,…,ηjn),則選取Ti打包區(qū)塊為本輪最佳區(qū)塊,即選取經(jīng)驗證節(jié)點(diǎn)列表終端驗證獲得最大收益的區(qū)塊,轉(zhuǎn)步驟 5;否則,執(zhí)行步驟4;
步驟 4. 本輪時間結(jié)束,?Ti,Tj,?Tk∈TVNL,若n>ui(ηi1,…,ηij,…,ηin)=uj(ηj1,…,ηji,…,ηjn)>uk(Sk1,…,Skj,…,Skn),則從Ti,Tj中選取最早達(dá)到ui當(dāng)前值的驗證節(jié)點(diǎn)打包區(qū)塊為最佳區(qū)塊,即選取最早經(jīng)驗證節(jié)點(diǎn)列表終端驗證獲得最大收益的區(qū)塊;
步驟 5. 本輪時間結(jié)束,?Ti,?Tj∈TVNL(j≠i),若ui(ηi1,…,ηij,…,ηin) 動態(tài)數(shù)據(jù)操作與存儲體系采用靜態(tài)多維授權(quán)關(guān)系鏈和動態(tài)數(shù)據(jù)存儲鏈雙聯(lián)盟鏈模式,實現(xiàn)數(shù)據(jù)操作授權(quán)關(guān)系和動態(tài)數(shù)據(jù)本身的防篡改.對應(yīng)的所有權(quán)的轉(zhuǎn)移過程可看做文獻(xiàn)[45]描述的所有權(quán)轉(zhuǎn)移. 依據(jù)本文第2節(jié)提出的操作實體間授權(quán)方式將各實體對動態(tài)數(shù)據(jù)的授權(quán)及操作類型作為交易發(fā)布到授權(quán)關(guān)系聯(lián)盟鏈網(wǎng)絡(luò)上,不同的應(yīng)用場景下可以選擇以明文或密文方式發(fā)送.根據(jù)整個行業(yè)物聯(lián)網(wǎng)操作實體間的合作關(guān)系,操作授權(quán)往往只需限定在較小的子系統(tǒng)內(nèi),涉及的操作實體節(jié)點(diǎn)數(shù)目較少;此外,由于物聯(lián)網(wǎng)系統(tǒng)具有可靠性高和生存期長的特點(diǎn),操作實體間授權(quán)關(guān)系相對穩(wěn)定,變更較少.鑒于上述調(diào)研現(xiàn)狀,本文采取靜態(tài)方式為各子系統(tǒng)生成實體授權(quán)關(guān)系,由定義 2描述的方法創(chuàng)建實體間多維授權(quán)鏈,并作為一筆交易發(fā)布到授權(quán)關(guān)系聯(lián)盟鏈網(wǎng)絡(luò)上.各操作實體數(shù)據(jù)交付過程如圖3所示,若存儲一個實體節(jié)點(diǎn)的編碼需nc位,存儲用于溯源路徑鏈接的實體節(jié)點(diǎn)特征值需ω位,實體間授權(quán)邊的總數(shù)為E,實體總數(shù)為N,每筆交易的數(shù)據(jù)量上限為E·ω+N·nc.當(dāng)發(fā)生操作實體間授權(quán)關(guān)系變更時,需將授權(quán)鏈作為新的交易在網(wǎng)絡(luò)上重新發(fā)布并記入?yún)^(qū)塊,以便授權(quán)追溯. 由密鑰分發(fā)機(jī)構(gòu)為實例系統(tǒng)中各操作實體IDi生成密鑰對(PKi,SKi),用于操作實體對動態(tài)數(shù)據(jù)的授權(quán)驗證.授權(quán)節(jié)點(diǎn)申請發(fā)布新的動態(tài)數(shù)據(jù)或?qū)δ硞€動態(tài)數(shù)據(jù)進(jìn)行操作時需包含自己的實體證書,經(jīng)過驗證并獲得共識的動態(tài)數(shù)據(jù)及相關(guān)信息(包括發(fā)布方及接收方的地址,動態(tài)數(shù)據(jù)文件的哈希值等)形成發(fā)布摘要信息存儲到動態(tài)數(shù)據(jù)聯(lián)盟鏈網(wǎng)絡(luò)上.每一輪共識結(jié)束后,驗證節(jié)點(diǎn)會將滿足條件的所有交易進(jìn)行分組哈希運(yùn)算,將哈希值存儲于Merkle樹狀數(shù)據(jù)結(jié)構(gòu)中,方便實現(xiàn)區(qū)塊的快速歸納和完整性校驗.再利用區(qū)塊鏈中的區(qū)塊生成機(jī)制生成數(shù)據(jù)區(qū)塊.區(qū)塊之間利用區(qū)塊頭的哈希指針連接形成鏈狀數(shù)據(jù)結(jié)構(gòu).接收方收到動態(tài)數(shù)據(jù)后,在本地計算其哈希值并采用Merkle樹支持的簡化支付驗證協(xié)議與區(qū)塊鏈上的對應(yīng)數(shù)據(jù)進(jìn)行比較,如果不一致,說明文件遭到篡改并向監(jiān)控中心報警.下面分析圖3中操作實體對動態(tài)數(shù)據(jù)的授權(quán)操作過程. 對于任意操作實體OEi,可用IDi唯一標(biāo)識,為敘述方便,后面也用IDi表示操作實體,簡稱實體.假設(shè)操作實體IDi,IDi+1需要進(jìn)行的操作Xt為:IDi采用加密方式發(fā)送數(shù)據(jù)STi,IDi+1接收數(shù)據(jù)并對其完整性進(jìn)行驗證.若對完整的動態(tài)數(shù)據(jù)進(jìn)行簽名將導(dǎo)致兩方面的缺陷:一方面,存儲完整消息對應(yīng)的數(shù)字簽名往往需要大量的空間;另一方面,采用非對稱加密技術(shù)對完整消息進(jìn)行加密計算開銷較大,處理速度較慢.因此,本文在實例系統(tǒng)中相鄰層次實體間通信時,采用二次散列迭代的方式,將發(fā)送方公鑰及消息STi同時作為哈希函數(shù)的輸入,得到可作為特征值的哈希運(yùn)算消息認(rèn)證碼.用發(fā)送方的私鑰對消息認(rèn)證碼進(jìn)行簽名,由于數(shù)據(jù)量較少,可保證此運(yùn)算過程較快.動態(tài)數(shù)據(jù)在授權(quán)實體間流轉(zhuǎn)的步驟為: 步驟1. 判斷(IDi,Xt)∈FOEi,若為True,證明其為授權(quán)節(jié)點(diǎn),執(zhí)行步驟2;否則,報錯未授權(quán); 步驟2. 計算STi和PKi的哈希值Hi,減少實體IDi簽名信息量; 步驟3. 用實體IDi的私鑰SKi對Hi進(jìn)行簽名,得到Mi; 步驟4. 實體IDi用實體IDi+1的公鑰對Mi,STi進(jìn)行加密并發(fā)送; 采用與比特幣系統(tǒng)類似的方法,將操作實體對動態(tài)數(shù)據(jù)的一次處理過程看做一筆交易,操作實例系統(tǒng)的區(qū)塊形成過程可描述為:各個操作實體的帳戶名為其公鑰的哈希值,使用自己的私鑰對驗證過的信息進(jìn)行簽名.新交易TX創(chuàng)建過程由文獻(xiàn)[45]定義,TX通過P2P網(wǎng)絡(luò)進(jìn)行廣播,區(qū)塊鏈中各節(jié)點(diǎn)都不斷地監(jiān)聽網(wǎng)絡(luò)并收集尚未進(jìn)入塊鏈的交易TX的列表,生成待驗證區(qū)塊,各節(jié)點(diǎn)對接收到的區(qū)塊進(jìn)行驗證,判斷區(qū)塊中是否存在無效交易,即沒有正確簽名或重復(fù)交易.將驗證結(jié)果再次通過P2P網(wǎng)絡(luò)進(jìn)行廣播,并按照本文第3.3節(jié)提出的共識機(jī)制選出本輪獲得共識的區(qū)塊作為新生區(qū)塊,通過與前一區(qū)塊頭部鏈接寫入賬本.此時,新賬本為系統(tǒng)中最長區(qū)塊鏈,獲得記賬權(quán)的節(jié)點(diǎn)將新創(chuàng)建的區(qū)塊鏈向全網(wǎng)廣播,其他節(jié)點(diǎn)收到后,將其與本地區(qū)塊鏈進(jìn)行比較:若長度大于本地區(qū)塊鏈,則將本地區(qū)塊鏈更新. 假設(shè)創(chuàng)世區(qū)塊存在且新生區(qū)塊B非空,區(qū)塊有效性驗證算法見算法1. 算法1.區(qū)塊有效性驗證算法. 輸入:區(qū)塊鏈C,新生成區(qū)塊B; 輸出:若創(chuàng)世區(qū)塊不存在或新區(qū)塊B不存在,返回錯誤提示Error;若新區(qū)塊B合法,返回加入新區(qū)塊后的區(qū)塊鏈C;若B非法,返回B. 其中,函數(shù)v(x)收容當(dāng)前交易并將其打包成區(qū)塊B,若創(chuàng)世區(qū)塊不存在(C=False)或新區(qū)塊B不存在(B=ε),返回錯誤提示Error;若B非空且存在創(chuàng)世區(qū)塊,則依據(jù)五元組?Num,Type,Code,Len,S?定義的方法對區(qū)塊B中交易進(jìn)行驗證,在區(qū)塊鏈誠實節(jié)點(diǎn)為多數(shù)的前提下,若區(qū)塊B中所有交易TX均通過驗證且獲得本輪共識,則將B作為新生區(qū)塊鏈接到區(qū)塊鏈C的末尾,返回新生成的當(dāng)前最長區(qū)塊鏈C;否則,將B標(biāo)記為False并返回. 本文提出動態(tài)數(shù)據(jù)授權(quán)操作機(jī)制和基于信任節(jié)點(diǎn)列表的區(qū)塊鏈共識算法,通過機(jī)構(gòu)授權(quán)決定記賬節(jié)點(diǎn),提供不可篡改且能夠在任何時間點(diǎn)恢復(fù)的數(shù)據(jù)庫服務(wù),是一種高效的共識機(jī)制.下面對其性能進(jìn)行分析. 假設(shè)操作實體總數(shù)為N,其每個實體編碼占用nc個比特,根據(jù)定義2,得到各實體的操作授權(quán)集合 {li}i∈{0,1}≤ω,對來自誠實或惡意用戶的操作請求均需在多維DAG圖中至少回溯查詢q次才能獲得確認(rèn),用τ表示從當(dāng)前提出操作請求的實體向根實體回溯路徑上的節(jié)點(diǎn)集合,即: 例如,某用戶提供自己的授權(quán)類型l申請對圖1中v7進(jìn)行操作(為了簡化問題,操作的類型暫不討論),存在多條回溯路徑:τ={v7,v6,v3,v2,v1},q=5;或τ={v7,v6,v2,v1},q=4;或τ={v7,v4,v2,v1},q=4.由此可見,回溯路徑τ不唯一,下面證明其具備性質(zhì)1. 性質(zhì) 1.理想化哈希函數(shù)表示為H:{0,1}*→{0,1}ω,ω為哈希后得到的特征值長度,操作實體至少在多維DAG 圖中查詢q次才能獲得確認(rèn)(q≤N),攻擊者將動態(tài)數(shù)據(jù)操作權(quán)限l偽造成l′,并獲得攻擊成功,即l≠l′,H(l,ID)=H(l′,ID)的概率上限為q2/2ω+1. 證明:第i次查詢輸出時,前i?1次查詢輸出相同的概率至多為(i?1)/2ω,因此,q次查詢輸出均相同的概率為 在多維DAG圖中,由公式(18)計算τ,并回溯至τ中根節(jié)點(diǎn)r(即該節(jié)點(diǎn)無父節(jié)點(diǎn)),按照定義2重新計算授權(quán)路徑上各實體授權(quán)特征值li′,與聯(lián)盟鏈上經(jīng)過VNL驗證的實體授權(quán)特征值的保存值li進(jìn)行比較,若滿足: 則該請求合法;否則,拒絕請求.公式(19)中,qi表示為滿足安全系數(shù),實體OEi設(shè)定的查詢次數(shù),qi′表示實際執(zhí)行的查詢系數(shù).若某中間層實體撤銷對其子節(jié)點(diǎn)的授權(quán)會造成qi′ 由性質(zhì) 1,參考比特網(wǎng),給定取值ω=256,q=6時,攻擊者篡改動態(tài)數(shù)據(jù)操作權(quán)限并獲取成功的概率非常小,理論上存在,但實際很難做到.圖4對不同物聯(lián)網(wǎng)規(guī)模下本文方案的系統(tǒng)可靠性進(jìn)行分析. 當(dāng)物聯(lián)網(wǎng)子系統(tǒng)規(guī)模較小,操作實體授權(quán)鏈深度較小,回溯查詢的次數(shù)q在較小范圍內(nèi)變動(如取值4,8,16),授權(quán)特征值位數(shù)|ω|=16b時,攻擊者成功篡改授權(quán)關(guān)系的概率P趨近0,如圖4(a)所示;當(dāng)物聯(lián)網(wǎng)規(guī)模較大,需要更多的比特位對授權(quán)特征值ω進(jìn)行編碼,當(dāng)|ω|=64b,物聯(lián)網(wǎng)規(guī)模N=106時,攻擊者成功篡改授權(quán)關(guān)系的概率P<10-6,如圖4(b)所示. 鑒于比特幣網(wǎng)絡(luò)中經(jīng)常出現(xiàn)雙重輸出攻擊、重放攻擊和隱藏攻擊,下面對本文提出的方案在上述3種常見攻擊類型下的性能進(jìn)行分析. (1) 雙重輸出攻擊 雙重輸出攻擊是指操作實體隱藏對其他操作實體授權(quán)的動態(tài)數(shù)據(jù)文件及授權(quán)關(guān)系.與比特幣類似,可以通過創(chuàng)建兩個不同的交易分支來分割自己的區(qū)塊鏈.本文提出的動態(tài)數(shù)據(jù)溯源架構(gòu)對雙重輸出攻擊具有防御能力,違規(guī)者會被發(fā)現(xiàn)并失去他人的信任. 圖5說明了本方案對這種攻擊的防御機(jī)制,描述了溯源架構(gòu)中某操作實體執(zhí)行雙重輸出攻擊的過程(注:符號C本段局部定義為操作實體). 在這種情況下,操作實體A希望隱藏虛線塊,即:對操作實體C授權(quán)的動態(tài)數(shù)據(jù)文件及授權(quán)關(guān)系,只傳播關(guān)于他對操作實體D授權(quán)的動態(tài)數(shù)據(jù)文件及授權(quán)關(guān)系.雖然這種攻擊看起來似乎成功,但是當(dāng)操作實體C除A以外的授權(quán)實體,比如B,查看操作實體C的歷史記錄時,會發(fā)現(xiàn)在C鏈的驗證期間A隱藏了一筆對C授權(quán)的交易.這與B關(guān)于操作實體A所涉及的交易的知識相矛盾.這樣,操作實體A創(chuàng)建的兩個區(qū)塊形成了一個欺詐證據(jù),并被其他節(jié)點(diǎn)在網(wǎng)絡(luò)中進(jìn)行廣播.其他操作實體可以使用上述方法以較小計算量來驗證雙重輸出攻擊行為,將其列入黑名單或拒絕服務(wù). (2) 重放攻擊 重放攻擊試圖重復(fù)使用由某個操作實體創(chuàng)建的動態(tài)數(shù)據(jù)文件及授權(quán)關(guān)系簽名重放已經(jīng)發(fā)生的交易.惡意操作實體將指針重用到另一操作實體的先前塊.圖6說明了本方案對重放攻擊的抵御機(jī)制.操作實體A使用兩次相同的事務(wù)增長其塊鏈,這種攻擊背后的動機(jī)是:惡意操作實體隱藏動態(tài)數(shù)據(jù)的時間屬性,達(dá)到對物聯(lián)網(wǎng)控制系統(tǒng)的某種破壞.這種攻擊相對容易發(fā)現(xiàn):當(dāng)由另一個操作實體驗證操作實體A的事務(wù)鏈正確性時,將檢測出有兩個塊具有相同的輸出指針.惡意操作實體在重放攻擊期間創(chuàng)建的塊組成欺詐證據(jù),網(wǎng)絡(luò)中的任何操作實體都可以通過觀察塊的輸出指針來驗證欺詐. (3) 隱藏攻擊 一旦操作實體對動態(tài)數(shù)據(jù)進(jìn)行操作,就會在網(wǎng)絡(luò)中創(chuàng)建記錄.一個操作實體可能只想公開對其聲譽(yù)有正面影響的操作或授權(quán),同時隱藏對其聲譽(yù)有負(fù)面影響的操作或授權(quán).本文提出的溯源鏈架構(gòu)能夠抵御這種攻擊:由于每條記錄都包含一個序列號,網(wǎng)絡(luò)中的任何人都可以請求其他人的特定記錄,如果某操作實體無法提供自身的歷史記錄,則在該實體所要求的記錄被提供并被驗證之前,其他實體可以選擇不與這個操作實體發(fā)生交易.值得注意的是,操作實體不能防止其授權(quán)對象授權(quán)給其他操作實體. 本文進(jìn)行了一項公開實驗,對物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)溯源機(jī)制性能進(jìn)行評估,從互聯(lián)網(wǎng)招募的1210名志愿者參加了為期一個月的開放式研究.這些志愿者在Ubuntu 16.04下安裝并使用了ChainSQL平臺.該平臺是在瑞波幣的基礎(chǔ)上改進(jìn)的,是我們和眾享比特公司長期合作進(jìn)行的基于區(qū)塊鏈的物聯(lián)網(wǎng)應(yīng)用安全研究的一部分.修改配置文件,使用不同的配置文件啟動應(yīng)用程序,得到普通節(jié)點(diǎn)和驗證節(jié)點(diǎn).隨機(jī)生成初始化測試數(shù)據(jù)集合,不同輪次的測評實施需基于相同的測試數(shù)據(jù)以確保測試結(jié)果的有效性.測試數(shù)據(jù)作為新交易相繼提交到ChainSQL測試網(wǎng)絡(luò),采用多組交易并發(fā)激勵的方式,以測試較高并發(fā)交易場景下系統(tǒng)的性能. 圖7給出了操作實體總數(shù)N,驗證節(jié)點(diǎn)列表中節(jié)點(diǎn)數(shù)目為VNL,ω=256,nc=16,達(dá)成共識的每輪時間r取不同值時ChainSQL平臺溯源數(shù)據(jù)增長情況. 圖 7(a)中取N=500,VNL=100,r=5s時,數(shù)據(jù)量高于r=10s,但其數(shù)據(jù)量的增幅不到r=10s時數(shù)據(jù)量的兩倍,說明相比r=5s的情況,r=10s時部分輪次在本文第3.3節(jié)提出的共識機(jī)制的步驟2完成;同理,r=1s與r=5s,r=10s時相比數(shù)據(jù)量有顯著增加,但增幅低于相應(yīng)的時間倍值. 圖7(b)中取N=1000,VNL=100,相比圖7(a),操作實體數(shù)目多了1倍,但r取3種不同值時數(shù)據(jù)量同比均有所下降,r=5s和r=10s時下降程度較r=1s時大.這說明隨著系統(tǒng)規(guī)模的增大,達(dá)成共識的速度減慢,且在共識機(jī)制步驟2完成的輪次受影響較大,在共識機(jī)制步驟3和步驟4完成的輪次受影響較小. 圖7(d)中取N=1000,VNL=200,相比圖7(b),機(jī)構(gòu)授權(quán)的驗證列表節(jié)點(diǎn)數(shù)目多了1倍,r取3種不同值時達(dá)成共識的速度均有所減慢,因此數(shù)據(jù)量同比均有所下降;相比圖7(c),操作實體數(shù)目多了1倍,數(shù)據(jù)量增長同比變化差異不大,這說明機(jī)構(gòu)授權(quán)的驗證列表節(jié)點(diǎn)數(shù)目增多將導(dǎo)致共識時間增加,使得大部分輪次均在共識機(jī)制步驟3或步驟4完成,此時,系統(tǒng)溯源鏈中數(shù)據(jù)量的增幅對操作實體數(shù)目的增多呈現(xiàn)一定程度的魯棒性. 圖8顯示了N=1000,VNL=100,r取不同值時,在聯(lián)想T480S和Y450A-TSI(W)型號移動終端上,3000s時間區(qū)間內(nèi),系統(tǒng)吞吐量隨時間的變化情況.從總體上看,r取值越小,系統(tǒng)吞吐量越大.r=1s時,在性能較高的移動設(shè)備聯(lián)想T480S上,3000s內(nèi)吞吐量均值為182tps;在性能較低的移動設(shè)備Y450A-TSI(W)上,3000s內(nèi)吞吐量均值為115tps.通過觀察圖8(a)和圖8(b)在不同性能的移動設(shè)備上同一時間區(qū)間和網(wǎng)絡(luò)環(huán)境下的吞吐量數(shù)據(jù)對比,可以看出系統(tǒng)吞吐量受硬件性能的影響.結(jié)果表明:即使在性能較差的移動終端上,也可以實現(xiàn)對大量輕型交易的創(chuàng)建和處理,這些測試數(shù)據(jù)為我們進(jìn)一步開發(fā)嵌入式系統(tǒng)ChainSQL接口提供了參考.假定不論r取何值,均在每輪時間用完后形成共識并產(chǎn)生新區(qū)塊,顯然,r=5s和r=10s時,在3000s時間內(nèi)產(chǎn)生新區(qū)塊的數(shù)目將分別是r=1s時的1/5和1/10.圖8(a)和圖8(b)的數(shù)據(jù)表明:r=5s和r=10s時,對應(yīng)的吞吐量均值均大于r=1s時相應(yīng)的倍值.這是因為r=1s時,各節(jié)點(diǎn)將接收到并存儲在本地的交易廣播出去,大部分在接近或等于r時形成共識;r=5s和r=10s時,會有一部分節(jié)點(diǎn)提交的區(qū)塊在該輪時間尚未用完就獲得共識.通過分析圖 8測試數(shù)據(jù)發(fā)現(xiàn),幾種情況下系統(tǒng)吞吐量的變化存在共同點(diǎn):測試初始階段,吞吐量較大;隨著測試時間增加,吞吐量變小.對于這一現(xiàn)象的合理解釋是:測試初始階段,節(jié)點(diǎn)本地存儲器為空,生成的新交易區(qū)塊獲得共識后,在ChainSQL數(shù)據(jù)庫中快速插入;隨著數(shù)據(jù)庫的增長,每次插入新的區(qū)塊都需要查詢和同步數(shù)據(jù)庫來獲取最新聯(lián)盟鏈區(qū)塊的信息,插入開銷有所增加,系統(tǒng)吞吐量隨著數(shù)據(jù)庫大小的增加而減少. 通過為期一個月的由志愿者參與的實驗,證明了本文提出的溯源機(jī)制的實際適用性和成熟度水平.結(jié)果表明:本文提出的物聯(lián)網(wǎng)動態(tài)數(shù)據(jù)溯源機(jī)制在沒有任何中心數(shù)據(jù)庫的情況下,能夠在網(wǎng)絡(luò)上以共識方式保證各操作實體數(shù)據(jù)的完整性和可靠性;且隨著系統(tǒng)中機(jī)構(gòu)授權(quán)的驗證列表節(jié)點(diǎn)數(shù)目和操作實體數(shù)目增多,系統(tǒng)達(dá)成共識的速度對這兩項參數(shù)呈現(xiàn)魯棒性,而主要受預(yù)先設(shè)置的每輪時間影響. 本文針對動態(tài)數(shù)據(jù)安全問題,設(shè)計了動態(tài)數(shù)據(jù)安全問題模型,分析達(dá)成共識的邊界條件,提出了聯(lián)盟鏈方式下基于節(jié)點(diǎn)信譽(yù)的共識激勵機(jī)制和基于驗證節(jié)點(diǎn)列表的共識算法,實現(xiàn)了對動態(tài)數(shù)據(jù)授權(quán)操作和安全管理.分析了該機(jī)制下授權(quán)機(jī)制的可靠性及系統(tǒng)抵抗雙重輸出攻擊、重放攻擊及隱藏攻擊的能力等安全性能,通過在ChainSQL平臺下的公開實驗,分析了系統(tǒng)規(guī)模、驗證節(jié)點(diǎn)列表規(guī)模、每輪時間與實際達(dá)成共識的速度、系統(tǒng)吞吐量的關(guān)系,得出隨著系統(tǒng)中機(jī)構(gòu)授權(quán)的操作實體數(shù)目和驗證節(jié)點(diǎn)列表節(jié)點(diǎn)數(shù)目增多,系統(tǒng)達(dá)成共識的速度對這兩項參數(shù)呈現(xiàn)魯棒性,而主要受預(yù)先設(shè)置的每輪時間影響的結(jié)論,證明了核準(zhǔn)加入方式下該方案能夠有效防御攻擊者對動態(tài)數(shù)據(jù)的篡改、偽造等潛在安全威脅,在保證動態(tài)數(shù)據(jù)安全存儲的同時,提高了系統(tǒng)達(dá)成共識的效率.目前的研究已經(jīng)取得了階段性的成果,但仍存在一定的局限性:首先,本文所討論的節(jié)點(diǎn)信譽(yù)閾值是全局的,所有節(jié)點(diǎn)被賦予相同的初始閾值,關(guān)于特殊情況下某些節(jié)點(diǎn)定義局部閾值方面的問題,還有待進(jìn)一步研究;其次,目前,改進(jìn)后共識機(jī)制的部署和調(diào)用都需要專業(yè)區(qū)塊鏈研發(fā)人員進(jìn)行,在易用性和對應(yīng)用的支持上還需要進(jìn)一步驗證. 結(jié)合物聯(lián)網(wǎng)行業(yè)應(yīng)用需求和安全技術(shù)發(fā)展熱點(diǎn),課題組擬進(jìn)一步開展以下幾方面的研究工作. (1) 智能合約形式化證明與部署.與傳統(tǒng)授權(quán)協(xié)議相比,如基于角色的訪問管理協(xié)議OAuth 2.0,OpenID等,智能合約能夠為物聯(lián)網(wǎng)設(shè)備提供基于單方或多方身份驗證和業(yè)務(wù)邏輯的高效授權(quán)訪問規(guī)則.但智能合約一經(jīng)部署就不能修改,其漏洞將給物聯(lián)網(wǎng)系統(tǒng)應(yīng)用帶來巨大損失.因此,部署智能合約前必須對其正確性進(jìn)行完備的形式化證明; (2) 輕量級安全通信協(xié)議.常見的物聯(lián)網(wǎng)通信協(xié)議 MQTT,CoAP,RPL,6LoWPAN等,無法提供通信安全性.此類協(xié)議必須嵌入在其他安全協(xié)議中,如DTLS,TLS,IPSec等,以提供安全通信.然而,DTLS,TLS,IPSec甚至輕量級TinyTLS協(xié)議對計算和存儲資源的性能要求都超出物聯(lián)網(wǎng)設(shè)備的承受能力,因此,迫切需要開發(fā)適用于物聯(lián)網(wǎng)設(shè)備的輕量級安全協(xié)議,用以保障鏈下動態(tài)數(shù)據(jù)安全.3.4 動態(tài)數(shù)據(jù)操作與存儲
4 分析及實驗
4.1 可靠性分析
4.2 安全性分析
4.3 部署和實驗
5 總 結(jié)