喬 蕊, 曹 琰, 王清賢
1(信息工程大學,河南 鄭州 450001)
2(數學工程與先進計算國家重點實驗室,河南 鄭州 450001)
物聯網廣泛應用于工業、醫療、教育、供應鏈等眾多領域,在多方授權實體的參與下,以時間為基本維度產生新的數據,本文稱為動態數據(dynamic data,簡稱DD),這些數據的操作要求安全、可追溯,以便用于各種取證及決策等[1,2].動態數據具有以下特征.
(1) 持續性.伴隨著時間的推移,在多方實體參與下持續產生新的動態數據;
(2) 時間敏感性.動態數據是對產生時間和應用時間敏感的數據,例如取某段時間內產生的動態數據對未來進行預測等;
(3) 多維度.在不同應用場景中,動態數據存在除時間維度外的多種維度數據,如供應鏈系統中參與交易的實體地址、交易額等,工業控制系統中工程文件的操作、權限的設置等[3];
(4) 可用性.動態數據應具備可用性,支持用戶尤其是企業用戶的安全管理需求,如分析查看日志信息、了解數據使用情況以及展開違法操作調查等.
可追溯性是確保動態數據完整性和可靠性的重要前提,是物聯網系統中動態數據可用性的重要體現.因此,保證動態數據的可追溯性具有重大意義.
動態數據的可追溯性包括動態數據本身及對動態數據的歷史操作的可追溯,其目的是確保動態數據的完整性和可靠性,即保證在存儲及轉移的過程中未發生篡改或偽造.近年來,網絡犯罪已經從個人行為轉變為有組織的行為,攻擊在數據篡改、偽造等方面越來越專業[4].而現有的數據基礎設施最初設計為應用于合法的數據存儲場景,通常采用中心數據庫與訪問控制、接入認證、信息加密、數字水印等傳統密碼學方法結合的安全手段,將動態數據集中存儲和處理[5-8],或采用以云計算為基礎的數據存儲,將各種數據資源抽象成資源池[9,10],供用戶使用.上述設計方案存在安全隱患,例如,高價值數據集中存儲極易被攻擊、算法復雜度高等.因此,防止動態數據被篡改和被偽造成為具有挑戰性的任務.為了提高動態數據存儲的安全性,必須從兩方面對數據進行保護:一方面驗證動態數據的正確性,避免被篡改、偽造;另一方面,實現對動態數據操作歷史的可追溯,提供數據恢復能力.
本文提出一種動態數據溯源機制:采用區塊鏈方式記錄網絡動態數據流轉的全生命周期,對動態數據進行記錄、追溯、確權,以從源頭保證該數字資產以及所代表信息的真實性,減少甚至阻止篡改攻擊的可能性.分析共識終端最大化自身收益的局部行為與保障動態數據存儲安全性和有效性整體目標的一致性,提出適用于動態數據存儲的共識機制,減少算力浪費.采用密鑰分發機制,分層傳遞并驗證各級動態數據存儲平臺信息,相鄰層次間通信采用二次散列迭代的方式,利用公鑰加密正反向不對稱性,增加系統被攻破的難度.
本文的主要工作如下:建立了物聯網動態數據存儲安全問題的數學模型,提出了用于實現操作實體多維授權與動態數據存儲的雙鏈結構;分析群體博弈過程中,單個節點進行決策的誠實行為動機及特定行業背景下分布式節點合作的本質,提出了一種適用于動態數據存儲的共識機制,以共識機制保障動態數據存儲的安全性;提出了一種動態數據溯源信息在物聯網多方實體間動態流轉的分層溯源機制,通過公鑰機制構建通信通道,完成動態數據在通信系統中端到端加密安全傳輸,利用加密運算正反向不對稱性,有效防止動態數據被篡改、偽造.
本文第 1節介紹相關工作.第 2節抽象出對物聯網動態數據操作具有通用性的方式和過程,提出動態數據存儲問題模型.第 3節介紹區塊鏈相關概念,分析聯盟鏈解決物聯網動態數據儲存的適用性,基于博弈論理論分析物聯網環境下各節點達成共識的邊界條件,提出基于驗證節點列表的聯盟鏈共識算法,進一步提出基于上述共識算法的物聯網動態數據存儲體系結構.第 4節通過理論分析及實驗部署證明本方案對于抵御常見攻擊,實現動態數據操作溯源的有效性.第5節總結全文.
在物聯網飛速發展的同時,物聯網動態數據安全面臨嚴峻的挑戰,許多研究人員開展了對中心數據庫和云存儲服務安全性的研究[11-18].文獻[12]審查了29個不同的基于USB對數據庫的攻擊,并將它們分為4個主要類別.提出了一種方法來識別每個攻擊的相關和脆弱的 USB外圍設備和硬件,但這意味著該方法允許攻擊發生,存在數據庫被破壞的可能性.文獻[13]提出了一種數據庫入侵檢測機制,通過在網站上使用SQL注入,記錄入侵者的所有活動來增強數據庫的安全性.管理員可以查看詳細信息,阻止攻擊者向數據庫注入惡意代碼,竊取、銷毀或修改數據庫.但單方信任機制無法控制擁有高級訪問權限的工作人員對動態數據進行惡意篡改或偽造[14].此外,文獻[15]指出,動態數據多由智能處理終端或現場采樣設備采集、編碼和存儲,這些設備的處理和存儲性能有限,加之動態數據的持續性特征導致其隨時間增長的數據量較大,因此,復雜度較高的安全算法不適用解決動態數據的防篡改、防偽造問題.文獻[16]指出:由于云端數據允許多授權用戶訪問,無法對數據信息的去向和各級主體的操作歷史提供充分的證據,因此無法滿足某些特殊領域(如工業控制系統、溯源系統等)對系統動態數據的整個訪問過程進行審計的需求,一旦出現問題難以定責.文獻[17]為解決云平臺下不受控制的惡意修改可能破壞共享數據的可用性問題,提出了一種公共審計解決方案,可以同時保護群體成員的身份隱私和身份可追溯性.但在云平臺下,用戶無法與云服務提供商建立信任,并確保服務協議僅使用 Web前端接口[18].為了避免敏感信息被竊取、篡改和偽造,系統需要一個可靠的云平臺服務提供商.
鑒于傳統數據庫和云存儲服務存在安全隱患,且不可避免,實現動態數據的可追溯性是保障物聯網動態數據安全應用的關鍵.通過分析近幾年溯源領域的論文,發現目前許多現代可追溯系統是基于射頻識別(radio frequency identification devices,簡稱 RFID)技術[19-21].文獻[19]提出了一種電子譜系的食品可追溯系統,利用射頻識別技術跟蹤、定位物品在被無線傳感器網絡收集儲存和運輸過程中的溫度和濕度.但針對傳感器數據損壞或丟失的問題,文中僅采用預測的方式,無法從根本上解決.文獻[20]提出一種基于公鑰加密技術的高級數據保護方案,該方案能夠實現RFID數據的可追溯性和鏈性活動.與傳統的RFID安全方案相比,該方案適用于沒有任何加密功能的標準 RFID 標簽,并且不需要中心數據庫.但操作的復雜度較高,對標簽性能要求較高.文獻[21]對RFID標簽的加密能力進行研究,提出了能夠執行加密操作的RFID標簽體系結構.但是加密功能增加了標簽的成本,并且涉及昂貴的身份驗證計算.
根據物聯網系統的應用特點和要求,需要采取安全措施對系統產生的動態數據進行存儲和共享,實現動態數據的可追溯.RFID在溯源系統中應用的研究僅適用于對有形資產的追溯,不適用于對物聯網動態數據的追溯.而云計算等中心化數據庫僅僅實現了動態數據的存儲,在抵抗惡意用戶(包括具有高級權限的內部人員)篡改、偽造動態數據方面具有天然的缺陷[22,23].區塊鏈在不引入第三方中介機構的前提下,可以提供去中心化、不可篡改、安全可靠等特性保證[24].目前,已有研究來創建更具可擴展性的區塊鏈,文獻[25]提出 Bitcoin-NG區塊鏈協議,它是拜占庭容錯的,共享相同的信任模型,具有較強的魯棒性.文獻[26]提出的 GHOST規則解決了提高塊創建速度的問題,這是對比特幣節點構建和重新組織區塊鏈的一種改進.文獻[27]提出可以重組鏈,構建區塊的有向非循環圖,并降低允許交易的授權規則.雖然這些模型顯著提高了運算速度,但它們可擴展性較差,并且需要復雜的數據結構或共識機制.文獻[28]介紹了一種基于區塊鏈技術的去信任物聯網設備匿名共享方法,對于解決物聯網動態數據的溯源問題有一定借鑒.本文通過分析動態數據面向多機構的區塊鏈應用場景,在聯盟鏈的基礎上,提出一種全新的去中心化基礎架構與分布式計算模型,將區塊的共識及可見性限制在聯盟鏈內部,有效地降低了參與記賬節點的數量,實現快速共識驗證,可以很好地解決動態數據的存儲及溯源問題.
定義1.操作實體(operation entity,簡稱OE)是指動態數據D生命周期數據流動過程中的所有參與實體,用四元組〈ID,FOE,ROE,D〉表示.
·ID是操作實體的標識符,用以對操作實體進行唯一標識;
定義2.實體OEi的授權屬性特征值用集合li表示,H:{0,1}*→{0,1}ω,lij∈{0,1}ω,H是理想化的哈希函數,ω為哈希后得到的特征值長度,δ是授權操作DAG圖中節點最大入度:
由定義 2,若操作實體的授權屬性集合li中存在多個元素,表示存在多個父節點對其授權,SKpj為實體OEi父節點的私鑰,從集合li中刪除某個元素表示某個父節點取消授權;反之亦成立.li=ε表示其擁有根權限,li=?表示該實體授權為空.
與圖1對應的動態數據操作軌跡用多維DAG圖表示,如圖2所示,節點表示動態數據文件授權,其中,圓形節點表示對應操作實體僅持有一項操作授權,將產生一份動態數據文件;柱狀節點表示對應操作實體持有多項操作授權即多維授權,將產生多份動態數據文件;有向邊表示動態數據文件在新操作下的演進軌跡.
定義3.對于DAG圖中節點i,入度為δi,若δi≤1,保持節點不變化;δi>1,節點為每個入度授權的集合,其元素個數|li|=δi,這樣得到的圖稱為多維DAG圖.δi>1時,存在多個父節點對節點i的授權,稱為父節點對節點i的多維授權.

定義 5.操作實體及其后繼節點執行原子操作產生的動態數據文件的集合,稱為該操作實體的域(domain),域中的動態數據文件稱為該域的對象(object);操作實體的操作授權范圍覆蓋自身的域;操作實體的域可以包含其后繼操作實體的域,被包含的域稱為子域(sub domain,簡稱 SD);域所包含的子域和對象統稱為該域的成員(member),子域所包含的成員,稱為間接成員.
定義6.操作實體受到攻擊導致其授權操作的動態數據均不可靠,則該操作實體域中的對象均不可靠,稱為該操作實體的失效覆蓋集(failure coverage set,簡稱FCS).除創始節點外的各節點均處于操作實體的多重失效覆蓋集.
實際情況下,操作實體均存在由惡意攻擊導致的數據篡改或偽造的可能性,本文對動態數據存儲面臨的安全威脅問題進行如下假設.
(1) 每個攻擊者單獨到來,相互獨立;
(2) 在時間[0,t]內,系統受到的攻擊數量{N(t),t≥0}滿足參數為λ的泊松分布;
(3) 操作實體第i次受到攻擊的損失為Li,且損失隨時間按負指數衰減,損失可累加;
(4) 每次攻擊到達的時間間隔和造成的破壞相互獨立.
t=0 時,損失為L;t=ti(ti>0)時,損失為Le-αti.設{Li,i≥1}獨立同分布,且與{N(t),t≥0}獨立,那么時間[0,t]內不考慮失效覆蓋的損失表示為
條件期望為
記Y1,…,Yn為[0,t]上獨立同均勻分布的隨機變量,有:
所以:
即:
因此:
考慮失效覆蓋的情況,用FCS(i)表示節點i的失效覆蓋范圍,本文優化目標為
學術界對區塊鏈技術并沒有統一的定義,但一般認為,區塊鏈是一種按照時間順序將數據區塊以鏈條的方式組合形成的特定數據結構,并以密碼學方式保證其不可篡改和不可偽造的去中心化、去信任的分布式共享總賬系統[29].區塊鏈的提出是計算機科學的一個突破,它有望降低個人和組織建立、維護信任的成本[30],讓沒有信任關系的人們在無中心化信任機構的情況下合作[31].自2008年Nakamoto發表奠基性論文[32]以來,經過近年的快速發展,區塊鏈技術越來越受到政府、銀行及相關研究人員的重視.世界經濟論壇(world economic forum,簡稱WEF)于2016年8月發布了研究報告[33],區塊鏈成為當前技術研究的熱點,包括對區塊鏈協議的分析[34-36]、區塊鏈技術在某些領域的應用等[37-39].
區塊鏈可以分為3類:公共鏈、聯盟鏈和私有鏈.公共鏈對外公開,用戶不用注冊就能匿名自由出入網絡,無需授權即可訪問網絡和區塊鏈,如比特網[32]和以太坊[40];聯盟鏈僅限于聯盟成員參與,區塊鏈上的讀寫權限、參與記賬權按聯盟規則來制訂,如由多家銀行參與的區塊鏈聯盟 R3[41]、Linux基金會支持的超級賬本項目[42]都屬于聯盟鏈架構;私有鏈僅在私有組織使用,區塊鏈上的讀寫權限、參與記賬權限按私有組織規則來制訂.
聯盟鏈可以根據應用場景來決定對公眾的開放程度,其網絡由成員機構共同維護,節點通過成員機構的網關節點接入,因此適用于物聯網行業背景下多成員機構對動態數據的存儲、管理、授權、監控和審計.在實際物聯網應用背景下,用戶、資源、服務、終端存在泛在接入與授權操作的特點,參與的多方實體存在一定的信任前提和利益約束,實體間數據操作共識激勵機制和分布式賬本記賬權確定等問題還需要進一步研究.
分布式共識是構建基于區塊鏈技術零信任動態數據溯源機制必須解決的關鍵問題,而達成共識的條件在公開匿名場景下和帶權限管理的場景下需求差異較大[43,44].例如,比特幣等金融系統在決策權高度分散的去中心化系統中采用經濟激勵機制,使各節點高效地針對區塊數據的有效性達成共識,該方式面向公有鏈中的任意節點的自由加入簡單有效.而動態數據常常是與特定工作過程聯系緊密的行業內部數據,對動態數據的管理更適合采用聯盟鏈方式,僅允許核準的節點加入,貨幣體系背景下共識激勵顯然不適用于聯盟鏈方式下對動態數據的管理.在聯盟鏈方式下,參與多方存在一定的信任前提和利益約束,本節通過分析該群體博弈過程中單個節點進行決策的誠實行為動機,提出特定行業背景下分布式節點合作的本質——使各節點在與環境的交互與分布式計算過程中獲得最大的累積效用,進一步分析動態數據可追溯系統中各節點達成共識的邊界條件,優化共識算法設計.
設動態數據可追溯系統中參與區塊信息驗證的節點集合為有限集,對每個參與區塊信息驗證的節點i有策略空間及收益函數Ui,即每個參與節點i在策略空間Si=(s1,s2,…,sn)下的馮·諾依曼-摩根斯坦效用為U(Si),本文將策略空間Si下節點預期效用U(Si)作為評價各動作的價值函數.
每個參與節點的目標是最大化自己的收益,因此為了簡化問題,除節點i以外的所有其他節點標記為“-i”.通過分析節點i和-i相互作用并達成具有約束力協議的共識過程,得到節點i和-i收益矩陣見表1.

Table 1 Yield matrix of nodes i and -i表1 節點i和-i收益矩陣
表1中,C表示某節點合作(cooperative),B表示背叛(betray),收益函數表達式中第1項為對應策略下節點i的收益(分別為PiCC,PiBC,PiCB,PiBB),第2項為對應策略下節點-i的收益(分別為P-iCC,P-iBC,P-iCB,P-iBB).溯源系統各節點共識模型的構建基于以下前提條件.
(1) 對于節點i,在各種策略組合下的收益滿足:
式(5)表明,在節點行為不一致的情況下,采取背叛策略的一方可以從犧牲其余節點的合作行為中得到比所有節點均合作時更高的收益;在所有節點均合作,即達成共識能夠獲得比都背叛更高的收益;一方合作,其余節點均背叛將會給合作方帶來很大損失,或者說導致最低收益.
(2) 節點i估計節點-i背叛的概率為λ,即節點i對節點-i的信任度為1-λ.本文采用聯盟鏈核準加入的方式,節點由相關溯源系統監管機構、社會團體及志愿者構成,在參與溯源信息驗證的n個節點中,誠實節點占多數(比例相當大),節點-i發生背叛是指除節點i以外的其余節點產生錯誤共識的情況.由上述分析可知,這種可能性非常小,即λ→0+.
(3) 根據條件(2),節點-i發生背叛的可能性很小,在其采取合作的前提下,若節點i采取合作將獲得收益PiCC;若節點i基于投機主義采取不合作策略,其將獲得表1中短期最大自身收益PiBC,但這將導致系統在時間[t,t+Δt]內識別出節點i的背叛,并對其進行懲罰,懲罰代價函數P(Si)用節點信譽ARi表示,將在本文第3.3節詳細描述.因此,節點i發生背叛的總體收益為
根據上面的條件進一步分析得出如下結論:節點i采取合作或背叛策略取決于當前時刻t節點i與節點-i合作所帶來的收益期望值E[U(Si)]與節點i背叛所帶來的收益期望值E[UBC(Si)]的比較,分兩種情況:
其中,若公式(7)成立,節點i采取合作策略;若公式(8)成立,節點i將采取背叛策略.
令θ(0<θ<1)為節點i的折扣因子,用來調節當前收益對長期收益的影響.λ為節點i估計節點-i在一輪驗證過程中采取非合作策略的概率,節點i采取合作策略時收益的期望值可表示為
由公式(9)得:
推導過程與上文類似,節點i采取背叛策略時收益的期望值可表示為
由公式(7)、公式(10)、公式(11)得節點i采取合作策略的條件為
由公式(12)得:
公式(13)即為動態數據可追溯系統中各節點達成共識的邊界條件.上式中,θ是節點i長期收益的折扣因子.θ越大,表明相較當前收益,長期收益對節點i的影響越大;θ越小,表明長期收益對節點i的影響越小.在給定節點行為收益的前提下,不等式左邊的值取決于系數α1=1/(1-λ)和α2=λ/(1-λ)2,只有當不等式右邊折扣因子θ超過一定值時,公式(13)才成立.假設θ為常數,選擇非合作策略將導致公式(13)左邊的值變大;反之亦成立.因此,為了使節點選擇合作行為,必須降低不等式左邊的值,即降低系數α1=1/(1-λ)和α2=λ/(1-λ)2.得出如下結論.
(1) 節點間相互信任是進行合作的必要非充分條件.公式(13)中,若λ→1-,即節點間幾乎不存在信任,不等式左邊的取值F(λ)→+∞,節點間不可能產生合作,因此,節點間相互信任是進行合作的必要條件;若λ=0,不等式左邊的值F(λ)=(PiBC-PiCC)/(PiBC-PiBB),?θ∈(0,1),公式(13)為非重言式的可滿足式,因此,節點間信任不是產生合作的充分條件;
(2) 在本文第3.3節提出的共識算法中,機構優先選擇估計節點-i背叛概率λ較低的節點i作為驗證節點列表(verification nodes list,簡稱VNL)中的節點.隨著λ的減少,節點i對節點-i的信任度將增大,公式(13)中系數α1和α2將減少,進而不等式左邊的值F(λ)下降,節點i選擇合作策略的可能性增大.
通過研究使得共識終端最大化自身收益的局部行為與保障動態數據存儲安全性和有效性整體目標的關系得出:當所有終端都持有待提交驗證的區塊,為了讓自己的收益最大,任何一方都不會(或者無法)改變自己對其他區塊的驗證結果.
根據本文第 3.2節達成共識的邊界條件,提出基于信譽的共識激勵機制:通過授權一部分信任節點組成一個驗證節點列表VNL,TVNL={T1,T2,…,Tn},?Ti∈TVNL,初始狀態下,節點信譽ARi=1,每個節點通過為其他節點服務保持信譽,每輪共識選取最佳區塊打包驗證節點的同時,以系數γ降低最壞區塊打包驗證節點的信譽,即ARi=γARi(0<γ<1).為了阻止自私行為并鼓勵節點保持其信譽,當VNL列表中驗證節點信譽低于某一閾值w時,將該節點移出VNL列表,當超過1/3驗證節點被移出,則必須由授權機構重新授權組成新的VNL列表.假設信譽閾值是全局的,即所有節點使用相同的值,關于特殊情況下某些節點定義局部閾值方面的問題,還有待進一步研究.
每個參與驗證的節點會獲取在共識開始之前未被記錄的所有有效操作,并且以候選集的形式公開他們.然后,每個參與驗證的節點合并VNL中所有其他驗證節點的候選集合,并對所有操作的真實性進行比對投票.對動態數據的有效操作分為兩種情況:一是新數據的發布;二是動態數據在不同實體間的流轉.上述兩種操作都必須由通過機構授權的節點來實現,且均看做一次交易:新數據的發布可以沒有輸入,但必須有輸出,擁有與輸出地址公鑰對應私鑰的節點即為可對該地址數據進行有效操作的授權節點;動態數據在不同實體間的流轉既要有輸入,又要有輸出,其輸入需要通過上一筆輸出地址所對應的私鑰進行簽名,驗證當前節點是否為授權節點.通過行業頂層管理機構預先頒發根CA證書(certificate authority),構建基于根CA及中間層CA到最底層實體CA的完整的證書信任鏈來實現上述信任基礎.系統中全節點服務器負責維護VNL列表,驗證節點在達成共識時只考慮VNL中成員的驗證結果完成區塊生成,這種共識算法在保證安全性的同時,大幅提高了系統達成共識的效率.同時,由于驗證節點是機構授權的節點,一旦其中出現背叛節點便于系統核實身份并追究責任.
區塊共識過程的數學形式描述如下.
在動態數據存儲系統中,TVNL={T1,T2,…,Tn}為系統中驗證節點集合.驗證節點Ti獲取的待驗證有效操作候選集記為χ(Ti),合并后的待驗證候選集為
某終端Ti∈TVNL提交的打包區塊Bnewi={tx1,…,txm},txj∈χ(TVNL),獲得其他終端驗證組合及其收益用集合Gi={ηi1,…,ηin:ui}表示.由某個終端Ti進行打包的區塊Bnewi組成的各終端驗證組合(ηi1,…,ηin)中,任意參與驗證方Tk對Ti提交區塊Bnewi的驗證結果表示為ηik,且滿足:
根據物聯網系統的規模及對吞吐率的要求,為共識過程設置合適的等時間間隔輪,用r表示.在一輪時間內,達成共識的步驟為:
步驟1.VNL列表驗證節點數大于2n/3,則執行步驟2;否則,等待授權機構授權新列表;
步驟2. 本輪時間未結束,對于最早出現的Ti∈TVNL,且使ui(ηi1,…,ηij,…,ηin)=n,則選取Ti打包區塊為本輪最佳區塊,即選取最早通過驗證節點列表終端驗證的區塊,轉步驟5;否則,執行步驟3;
步驟 3. 本輪時間結束,?Ti,?Tj∈TVNL,使得n>ui(ηi1,…,ηij,…,ηin)>uj(ηj1,…,ηji,…,ηjn),則選取Ti打包區塊為本輪最佳區塊,即選取經驗證節點列表終端驗證獲得最大收益的區塊,轉步驟 5;否則,執行步驟4;
步驟 4. 本輪時間結束,?Ti,Tj,?Tk∈TVNL,若n>ui(ηi1,…,ηij,…,ηin)=uj(ηj1,…,ηji,…,ηjn)>uk(Sk1,…,Skj,…,Skn),則從Ti,Tj中選取最早達到ui當前值的驗證節點打包區塊為最佳區塊,即選取最早經驗證節點列表終端驗證獲得最大收益的區塊;
步驟 5. 本輪時間結束,?Ti,?Tj∈TVNL(j≠i),若ui(ηi1,…,ηij,…,ηin) 動態數據操作與存儲體系采用靜態多維授權關系鏈和動態數據存儲鏈雙聯盟鏈模式,實現數據操作授權關系和動態數據本身的防篡改.對應的所有權的轉移過程可看做文獻[45]描述的所有權轉移. 依據本文第2節提出的操作實體間授權方式將各實體對動態數據的授權及操作類型作為交易發布到授權關系聯盟鏈網絡上,不同的應用場景下可以選擇以明文或密文方式發送.根據整個行業物聯網操作實體間的合作關系,操作授權往往只需限定在較小的子系統內,涉及的操作實體節點數目較少;此外,由于物聯網系統具有可靠性高和生存期長的特點,操作實體間授權關系相對穩定,變更較少.鑒于上述調研現狀,本文采取靜態方式為各子系統生成實體授權關系,由定義 2描述的方法創建實體間多維授權鏈,并作為一筆交易發布到授權關系聯盟鏈網絡上.各操作實體數據交付過程如圖3所示,若存儲一個實體節點的編碼需nc位,存儲用于溯源路徑鏈接的實體節點特征值需ω位,實體間授權邊的總數為E,實體總數為N,每筆交易的數據量上限為E·ω+N·nc.當發生操作實體間授權關系變更時,需將授權鏈作為新的交易在網絡上重新發布并記入區塊,以便授權追溯. 由密鑰分發機構為實例系統中各操作實體IDi生成密鑰對(PKi,SKi),用于操作實體對動態數據的授權驗證.授權節點申請發布新的動態數據或對某個動態數據進行操作時需包含自己的實體證書,經過驗證并獲得共識的動態數據及相關信息(包括發布方及接收方的地址,動態數據文件的哈希值等)形成發布摘要信息存儲到動態數據聯盟鏈網絡上.每一輪共識結束后,驗證節點會將滿足條件的所有交易進行分組哈希運算,將哈希值存儲于Merkle樹狀數據結構中,方便實現區塊的快速歸納和完整性校驗.再利用區塊鏈中的區塊生成機制生成數據區塊.區塊之間利用區塊頭的哈希指針連接形成鏈狀數據結構.接收方收到動態數據后,在本地計算其哈希值并采用Merkle樹支持的簡化支付驗證協議與區塊鏈上的對應數據進行比較,如果不一致,說明文件遭到篡改并向監控中心報警.下面分析圖3中操作實體對動態數據的授權操作過程. 對于任意操作實體OEi,可用IDi唯一標識,為敘述方便,后面也用IDi表示操作實體,簡稱實體.假設操作實體IDi,IDi+1需要進行的操作Xt為:IDi采用加密方式發送數據STi,IDi+1接收數據并對其完整性進行驗證.若對完整的動態數據進行簽名將導致兩方面的缺陷:一方面,存儲完整消息對應的數字簽名往往需要大量的空間;另一方面,采用非對稱加密技術對完整消息進行加密計算開銷較大,處理速度較慢.因此,本文在實例系統中相鄰層次實體間通信時,采用二次散列迭代的方式,將發送方公鑰及消息STi同時作為哈希函數的輸入,得到可作為特征值的哈希運算消息認證碼.用發送方的私鑰對消息認證碼進行簽名,由于數據量較少,可保證此運算過程較快.動態數據在授權實體間流轉的步驟為: 步驟1. 判斷(IDi,Xt)∈FOEi,若為True,證明其為授權節點,執行步驟2;否則,報錯未授權; 步驟2. 計算STi和PKi的哈希值Hi,減少實體IDi簽名信息量; 步驟3. 用實體IDi的私鑰SKi對Hi進行簽名,得到Mi; 步驟4. 實體IDi用實體IDi+1的公鑰對Mi,STi進行加密并發送; 采用與比特幣系統類似的方法,將操作實體對動態數據的一次處理過程看做一筆交易,操作實例系統的區塊形成過程可描述為:各個操作實體的帳戶名為其公鑰的哈希值,使用自己的私鑰對驗證過的信息進行簽名.新交易TX創建過程由文獻[45]定義,TX通過P2P網絡進行廣播,區塊鏈中各節點都不斷地監聽網絡并收集尚未進入塊鏈的交易TX的列表,生成待驗證區塊,各節點對接收到的區塊進行驗證,判斷區塊中是否存在無效交易,即沒有正確簽名或重復交易.將驗證結果再次通過P2P網絡進行廣播,并按照本文第3.3節提出的共識機制選出本輪獲得共識的區塊作為新生區塊,通過與前一區塊頭部鏈接寫入賬本.此時,新賬本為系統中最長區塊鏈,獲得記賬權的節點將新創建的區塊鏈向全網廣播,其他節點收到后,將其與本地區塊鏈進行比較:若長度大于本地區塊鏈,則將本地區塊鏈更新. 假設創世區塊存在且新生區塊B非空,區塊有效性驗證算法見算法1. 算法1.區塊有效性驗證算法. 輸入:區塊鏈C,新生成區塊B; 輸出:若創世區塊不存在或新區塊B不存在,返回錯誤提示Error;若新區塊B合法,返回加入新區塊后的區塊鏈C;若B非法,返回B. 其中,函數v(x)收容當前交易并將其打包成區塊B,若創世區塊不存在(C=False)或新區塊B不存在(B=ε),返回錯誤提示Error;若B非空且存在創世區塊,則依據五元組?Num,Type,Code,Len,S?定義的方法對區塊B中交易進行驗證,在區塊鏈誠實節點為多數的前提下,若區塊B中所有交易TX均通過驗證且獲得本輪共識,則將B作為新生區塊鏈接到區塊鏈C的末尾,返回新生成的當前最長區塊鏈C;否則,將B標記為False并返回. 本文提出動態數據授權操作機制和基于信任節點列表的區塊鏈共識算法,通過機構授權決定記賬節點,提供不可篡改且能夠在任何時間點恢復的數據庫服務,是一種高效的共識機制.下面對其性能進行分析. 假設操作實體總數為N,其每個實體編碼占用nc個比特,根據定義2,得到各實體的操作授權集合 {li}i∈{0,1}≤ω,對來自誠實或惡意用戶的操作請求均需在多維DAG圖中至少回溯查詢q次才能獲得確認,用τ表示從當前提出操作請求的實體向根實體回溯路徑上的節點集合,即: 例如,某用戶提供自己的授權類型l申請對圖1中v7進行操作(為了簡化問題,操作的類型暫不討論),存在多條回溯路徑:τ={v7,v6,v3,v2,v1},q=5;或τ={v7,v6,v2,v1},q=4;或τ={v7,v4,v2,v1},q=4.由此可見,回溯路徑τ不唯一,下面證明其具備性質1. 性質 1.理想化哈希函數表示為H:{0,1}*→{0,1}ω,ω為哈希后得到的特征值長度,操作實體至少在多維DAG 圖中查詢q次才能獲得確認(q≤N),攻擊者將動態數據操作權限l偽造成l′,并獲得攻擊成功,即l≠l′,H(l,ID)=H(l′,ID)的概率上限為q2/2ω+1. 證明:第i次查詢輸出時,前i?1次查詢輸出相同的概率至多為(i?1)/2ω,因此,q次查詢輸出均相同的概率為 在多維DAG圖中,由公式(18)計算τ,并回溯至τ中根節點r(即該節點無父節點),按照定義2重新計算授權路徑上各實體授權特征值li′,與聯盟鏈上經過VNL驗證的實體授權特征值的保存值li進行比較,若滿足: 則該請求合法;否則,拒絕請求.公式(19)中,qi表示為滿足安全系數,實體OEi設定的查詢次數,qi′表示實際執行的查詢系數.若某中間層實體撤銷對其子節點的授權會造成qi′ 由性質 1,參考比特網,給定取值ω=256,q=6時,攻擊者篡改動態數據操作權限并獲取成功的概率非常小,理論上存在,但實際很難做到.圖4對不同物聯網規模下本文方案的系統可靠性進行分析. 當物聯網子系統規模較小,操作實體授權鏈深度較小,回溯查詢的次數q在較小范圍內變動(如取值4,8,16),授權特征值位數|ω|=16b時,攻擊者成功篡改授權關系的概率P趨近0,如圖4(a)所示;當物聯網規模較大,需要更多的比特位對授權特征值ω進行編碼,當|ω|=64b,物聯網規模N=106時,攻擊者成功篡改授權關系的概率P<10-6,如圖4(b)所示. 鑒于比特幣網絡中經常出現雙重輸出攻擊、重放攻擊和隱藏攻擊,下面對本文提出的方案在上述3種常見攻擊類型下的性能進行分析. (1) 雙重輸出攻擊 雙重輸出攻擊是指操作實體隱藏對其他操作實體授權的動態數據文件及授權關系.與比特幣類似,可以通過創建兩個不同的交易分支來分割自己的區塊鏈.本文提出的動態數據溯源架構對雙重輸出攻擊具有防御能力,違規者會被發現并失去他人的信任. 圖5說明了本方案對這種攻擊的防御機制,描述了溯源架構中某操作實體執行雙重輸出攻擊的過程(注:符號C本段局部定義為操作實體). 在這種情況下,操作實體A希望隱藏虛線塊,即:對操作實體C授權的動態數據文件及授權關系,只傳播關于他對操作實體D授權的動態數據文件及授權關系.雖然這種攻擊看起來似乎成功,但是當操作實體C除A以外的授權實體,比如B,查看操作實體C的歷史記錄時,會發現在C鏈的驗證期間A隱藏了一筆對C授權的交易.這與B關于操作實體A所涉及的交易的知識相矛盾.這樣,操作實體A創建的兩個區塊形成了一個欺詐證據,并被其他節點在網絡中進行廣播.其他操作實體可以使用上述方法以較小計算量來驗證雙重輸出攻擊行為,將其列入黑名單或拒絕服務. (2) 重放攻擊 重放攻擊試圖重復使用由某個操作實體創建的動態數據文件及授權關系簽名重放已經發生的交易.惡意操作實體將指針重用到另一操作實體的先前塊.圖6說明了本方案對重放攻擊的抵御機制.操作實體A使用兩次相同的事務增長其塊鏈,這種攻擊背后的動機是:惡意操作實體隱藏動態數據的時間屬性,達到對物聯網控制系統的某種破壞.這種攻擊相對容易發現:當由另一個操作實體驗證操作實體A的事務鏈正確性時,將檢測出有兩個塊具有相同的輸出指針.惡意操作實體在重放攻擊期間創建的塊組成欺詐證據,網絡中的任何操作實體都可以通過觀察塊的輸出指針來驗證欺詐. (3) 隱藏攻擊 一旦操作實體對動態數據進行操作,就會在網絡中創建記錄.一個操作實體可能只想公開對其聲譽有正面影響的操作或授權,同時隱藏對其聲譽有負面影響的操作或授權.本文提出的溯源鏈架構能夠抵御這種攻擊:由于每條記錄都包含一個序列號,網絡中的任何人都可以請求其他人的特定記錄,如果某操作實體無法提供自身的歷史記錄,則在該實體所要求的記錄被提供并被驗證之前,其他實體可以選擇不與這個操作實體發生交易.值得注意的是,操作實體不能防止其授權對象授權給其他操作實體. 本文進行了一項公開實驗,對物聯網動態數據溯源機制性能進行評估,從互聯網招募的1210名志愿者參加了為期一個月的開放式研究.這些志愿者在Ubuntu 16.04下安裝并使用了ChainSQL平臺.該平臺是在瑞波幣的基礎上改進的,是我們和眾享比特公司長期合作進行的基于區塊鏈的物聯網應用安全研究的一部分.修改配置文件,使用不同的配置文件啟動應用程序,得到普通節點和驗證節點.隨機生成初始化測試數據集合,不同輪次的測評實施需基于相同的測試數據以確保測試結果的有效性.測試數據作為新交易相繼提交到ChainSQL測試網絡,采用多組交易并發激勵的方式,以測試較高并發交易場景下系統的性能. 圖7給出了操作實體總數N,驗證節點列表中節點數目為VNL,ω=256,nc=16,達成共識的每輪時間r取不同值時ChainSQL平臺溯源數據增長情況. 圖 7(a)中取N=500,VNL=100,r=5s時,數據量高于r=10s,但其數據量的增幅不到r=10s時數據量的兩倍,說明相比r=5s的情況,r=10s時部分輪次在本文第3.3節提出的共識機制的步驟2完成;同理,r=1s與r=5s,r=10s時相比數據量有顯著增加,但增幅低于相應的時間倍值. 圖7(b)中取N=1000,VNL=100,相比圖7(a),操作實體數目多了1倍,但r取3種不同值時數據量同比均有所下降,r=5s和r=10s時下降程度較r=1s時大.這說明隨著系統規模的增大,達成共識的速度減慢,且在共識機制步驟2完成的輪次受影響較大,在共識機制步驟3和步驟4完成的輪次受影響較小. 圖7(d)中取N=1000,VNL=200,相比圖7(b),機構授權的驗證列表節點數目多了1倍,r取3種不同值時達成共識的速度均有所減慢,因此數據量同比均有所下降;相比圖7(c),操作實體數目多了1倍,數據量增長同比變化差異不大,這說明機構授權的驗證列表節點數目增多將導致共識時間增加,使得大部分輪次均在共識機制步驟3或步驟4完成,此時,系統溯源鏈中數據量的增幅對操作實體數目的增多呈現一定程度的魯棒性. 圖8顯示了N=1000,VNL=100,r取不同值時,在聯想T480S和Y450A-TSI(W)型號移動終端上,3000s時間區間內,系統吞吐量隨時間的變化情況.從總體上看,r取值越小,系統吞吐量越大.r=1s時,在性能較高的移動設備聯想T480S上,3000s內吞吐量均值為182tps;在性能較低的移動設備Y450A-TSI(W)上,3000s內吞吐量均值為115tps.通過觀察圖8(a)和圖8(b)在不同性能的移動設備上同一時間區間和網絡環境下的吞吐量數據對比,可以看出系統吞吐量受硬件性能的影響.結果表明:即使在性能較差的移動終端上,也可以實現對大量輕型交易的創建和處理,這些測試數據為我們進一步開發嵌入式系統ChainSQL接口提供了參考.假定不論r取何值,均在每輪時間用完后形成共識并產生新區塊,顯然,r=5s和r=10s時,在3000s時間內產生新區塊的數目將分別是r=1s時的1/5和1/10.圖8(a)和圖8(b)的數據表明:r=5s和r=10s時,對應的吞吐量均值均大于r=1s時相應的倍值.這是因為r=1s時,各節點將接收到并存儲在本地的交易廣播出去,大部分在接近或等于r時形成共識;r=5s和r=10s時,會有一部分節點提交的區塊在該輪時間尚未用完就獲得共識.通過分析圖 8測試數據發現,幾種情況下系統吞吐量的變化存在共同點:測試初始階段,吞吐量較大;隨著測試時間增加,吞吐量變小.對于這一現象的合理解釋是:測試初始階段,節點本地存儲器為空,生成的新交易區塊獲得共識后,在ChainSQL數據庫中快速插入;隨著數據庫的增長,每次插入新的區塊都需要查詢和同步數據庫來獲取最新聯盟鏈區塊的信息,插入開銷有所增加,系統吞吐量隨著數據庫大小的增加而減少. 通過為期一個月的由志愿者參與的實驗,證明了本文提出的溯源機制的實際適用性和成熟度水平.結果表明:本文提出的物聯網動態數據溯源機制在沒有任何中心數據庫的情況下,能夠在網絡上以共識方式保證各操作實體數據的完整性和可靠性;且隨著系統中機構授權的驗證列表節點數目和操作實體數目增多,系統達成共識的速度對這兩項參數呈現魯棒性,而主要受預先設置的每輪時間影響. 本文針對動態數據安全問題,設計了動態數據安全問題模型,分析達成共識的邊界條件,提出了聯盟鏈方式下基于節點信譽的共識激勵機制和基于驗證節點列表的共識算法,實現了對動態數據授權操作和安全管理.分析了該機制下授權機制的可靠性及系統抵抗雙重輸出攻擊、重放攻擊及隱藏攻擊的能力等安全性能,通過在ChainSQL平臺下的公開實驗,分析了系統規模、驗證節點列表規模、每輪時間與實際達成共識的速度、系統吞吐量的關系,得出隨著系統中機構授權的操作實體數目和驗證節點列表節點數目增多,系統達成共識的速度對這兩項參數呈現魯棒性,而主要受預先設置的每輪時間影響的結論,證明了核準加入方式下該方案能夠有效防御攻擊者對動態數據的篡改、偽造等潛在安全威脅,在保證動態數據安全存儲的同時,提高了系統達成共識的效率.目前的研究已經取得了階段性的成果,但仍存在一定的局限性:首先,本文所討論的節點信譽閾值是全局的,所有節點被賦予相同的初始閾值,關于特殊情況下某些節點定義局部閾值方面的問題,還有待進一步研究;其次,目前,改進后共識機制的部署和調用都需要專業區塊鏈研發人員進行,在易用性和對應用的支持上還需要進一步驗證. 結合物聯網行業應用需求和安全技術發展熱點,課題組擬進一步開展以下幾方面的研究工作. (1) 智能合約形式化證明與部署.與傳統授權協議相比,如基于角色的訪問管理協議OAuth 2.0,OpenID等,智能合約能夠為物聯網設備提供基于單方或多方身份驗證和業務邏輯的高效授權訪問規則.但智能合約一經部署就不能修改,其漏洞將給物聯網系統應用帶來巨大損失.因此,部署智能合約前必須對其正確性進行完備的形式化證明; (2) 輕量級安全通信協議.常見的物聯網通信協議 MQTT,CoAP,RPL,6LoWPAN等,無法提供通信安全性.此類協議必須嵌入在其他安全協議中,如DTLS,TLS,IPSec等,以提供安全通信.然而,DTLS,TLS,IPSec甚至輕量級TinyTLS協議對計算和存儲資源的性能要求都超出物聯網設備的承受能力,因此,迫切需要開發適用于物聯網設備的輕量級安全協議,用以保障鏈下動態數據安全.3.4 動態數據操作與存儲


4 分析及實驗
4.1 可靠性分析
4.2 安全性分析
4.3 部署和實驗
5 總 結