馮春波,阿不都熱衣木江·阿白,葛 翔,王 軼,程 力
(1.中國(guó)科學(xué)院 新疆理化技術(shù)研究所,新疆 烏魯木齊 830011;2.中國(guó)科學(xué)院大學(xué),北京 100049;3.新疆民族語(yǔ)音語(yǔ)言信息處理實(shí)驗(yàn)室,新疆 烏魯木齊 830011;4.新疆維吾爾自治區(qū)信息中心,新疆 烏魯木齊 830011;5.國(guó)網(wǎng)新疆電力公司營(yíng)銷(xiāo)服務(wù)中心(資金集約中心、計(jì)量中心),新疆 烏魯木齊 830011;6.湖北大學(xué),湖北 武漢 430000)
區(qū)塊鏈(Blockchain)[1]是一種由多方共同維護(hù)的分布式賬本技術(shù),具有去中心化、不可篡改、可溯源等特性。區(qū)塊鏈技術(shù)的去中心化特性與物聯(lián)網(wǎng)的海量感知網(wǎng)絡(luò)具有天然的耦合性[2-3],而基于密碼學(xué)原理的不可篡改性和可溯源性則為物聯(lián)網(wǎng)設(shè)備的身份認(rèn)證、數(shù)據(jù)安全和可信存儲(chǔ)提供了理論基礎(chǔ)和全新的設(shè)計(jì)思路。
物聯(lián)網(wǎng)網(wǎng)關(guān)是物聯(lián)網(wǎng)中感知設(shè)備和上層應(yīng)用連接的樞紐,同時(shí)也是物聯(lián)網(wǎng)與區(qū)塊鏈融合的關(guān)鍵設(shè)備,將區(qū)塊鏈技術(shù)引入網(wǎng)關(guān),可以增強(qiáng)物聯(lián)網(wǎng)系統(tǒng)的安全性。然而,網(wǎng)關(guān)作為一種資源受限的物聯(lián)網(wǎng)設(shè)備,一般不具備足夠的計(jì)算和存儲(chǔ)資源,無(wú)法支撐區(qū)塊鏈節(jié)點(diǎn)功能的正常運(yùn)行。其次,在網(wǎng)關(guān)中對(duì)感知設(shè)備進(jìn)行可靠的身份認(rèn)證,是保障物聯(lián)網(wǎng)-區(qū)塊鏈融合安全的重要基礎(chǔ)。最后,作為一種數(shù)據(jù)匯集設(shè)備,網(wǎng)關(guān)運(yùn)行時(shí)持續(xù)從感知設(shè)備獲取感知數(shù)據(jù),感知數(shù)據(jù)包含大量的正常感知數(shù)據(jù)與少量的異常感知數(shù)據(jù)。相較于正常感知數(shù)據(jù),由于環(huán)境異常或設(shè)備本身異常而產(chǎn)生的異常感知數(shù)據(jù)對(duì)應(yīng)用安全和設(shè)備安全更具價(jià)值。因此,如何在資源受限的物聯(lián)網(wǎng)網(wǎng)關(guān)中,通過(guò)區(qū)塊鏈技術(shù)保障設(shè)備接入和運(yùn)行狀態(tài)安全,仍是一個(gè)值得探究的重要問(wèn)題。
針對(duì)以上問(wèn)題,該文設(shè)計(jì)了一種基于聯(lián)盟鏈的輕量級(jí)區(qū)塊鏈-物聯(lián)網(wǎng)網(wǎng)關(guān)原型。首先,基于聯(lián)盟鏈的SPV[1](Simplified Payment Verification)架構(gòu)搭建了輕量級(jí)的物聯(lián)網(wǎng)-區(qū)塊鏈網(wǎng)關(guān)原型框架,該框架僅存儲(chǔ)本組織相關(guān)的交易數(shù)據(jù);其次,基于感知設(shè)備的流量指紋與行為模式進(jìn)行感知設(shè)備運(yùn)行狀態(tài)下的可信接入檢測(cè);再次,通過(guò)高效的機(jī)器學(xué)習(xí)算法識(shí)別關(guān)鍵異常感知數(shù)據(jù)并進(jìn)行上鏈可信存儲(chǔ);最后,在資源受限網(wǎng)關(guān)的輕節(jié)點(diǎn)中對(duì)區(qū)塊頭中的默克爾樹(shù)進(jìn)行剪枝,進(jìn)一步降低節(jié)點(diǎn)的存儲(chǔ)空間需求并大幅度優(yōu)化關(guān)聯(lián)交易數(shù)據(jù)的鏈上驗(yàn)證時(shí)間性能。
近年來(lái),區(qū)塊鏈技術(shù)的興起為物聯(lián)網(wǎng)安全研究開(kāi)辟了新方向。區(qū)塊鏈-物聯(lián)網(wǎng)融合系統(tǒng)中,在融合架構(gòu)方面,輕量級(jí)的融合架構(gòu)是當(dāng)前研究中需要解決的重要問(wèn)題。B. Bünz等人[4]提出了基于NIPoPoWs(Non-Interactive Proofs of Proof-of-Work)的FlyClient,其只存儲(chǔ)本地區(qū)塊頭數(shù)據(jù)。王思源等人[5]在其工作中引入SPV節(jié)點(diǎn)和超輕節(jié)點(diǎn)的概念,將權(quán)能令牌以交易的形式存儲(chǔ)在區(qū)塊鏈上,并且SPV節(jié)點(diǎn)只需存儲(chǔ)區(qū)塊頭就能完成交易驗(yàn)證,而超輕節(jié)點(diǎn)只需維護(hù)一個(gè)令牌哈希值。H. Yahya等人[6]提出每個(gè)節(jié)點(diǎn)隨機(jī)存儲(chǔ)部分區(qū)塊鏈數(shù)據(jù),并通過(guò)鼓勵(lì)相互驗(yàn)證提高數(shù)據(jù)可信性。上述工作對(duì)區(qū)塊鏈節(jié)點(diǎn)進(jìn)行的輕量化改進(jìn),在進(jìn)行交易驗(yàn)證時(shí)需要向全節(jié)點(diǎn)請(qǐng)求數(shù)據(jù),增加了網(wǎng)絡(luò)中的通信開(kāi)銷(xiāo)。
在感知設(shè)備安全認(rèn)證方面,S. Saha等人[7]提出了一種方案,即感知設(shè)備和網(wǎng)關(guān)之間相互認(rèn)證,同時(shí)網(wǎng)關(guān)和邊緣服務(wù)器之間也相互認(rèn)證。邊緣服務(wù)器從網(wǎng)關(guān)中提取傳感數(shù)據(jù)并添加到區(qū)塊鏈中,在該方案中,它能夠?qū)鞲袛?shù)據(jù)添加到區(qū)塊鏈中,從而保證數(shù)據(jù)的安全性和可靠性,但是感知設(shè)備無(wú)法與區(qū)塊鏈直接建立信任。S.C. Cha等人[8]提出為網(wǎng)關(guān)和每個(gè)新增設(shè)備分別創(chuàng)建智能合約,將兩個(gè)智能合約綁定在一起,以實(shí)現(xiàn)設(shè)備在網(wǎng)關(guān)中的認(rèn)證。沈海波等人[9]和F. Xu等人[10]則直接在網(wǎng)關(guān)中增加區(qū)塊鏈相關(guān)功能模塊。盡管這些方案都有一定的優(yōu)點(diǎn),但它們?cè)谥悄芎霞s、賬本數(shù)據(jù)等區(qū)塊鏈模塊在資源受限的傳統(tǒng)網(wǎng)關(guān)中應(yīng)用所帶來(lái)的壓力問(wèn)題方面考慮不足。
在融合框架的數(shù)據(jù)處理方面,張利華等人[11]針對(duì)電力物聯(lián)網(wǎng)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)提出了一種基于聯(lián)盟鏈的解決方案。P. Kumar等人[12]面向智慧城市場(chǎng)景,通過(guò)區(qū)塊鏈技術(shù)保證相關(guān)的隱私安全。G.S. Aujla等人[13]將區(qū)塊鏈技術(shù)應(yīng)用于室內(nèi)健康監(jiān)測(cè),通過(guò)區(qū)塊鏈技術(shù)進(jìn)行數(shù)據(jù)的安全傳輸。T.H. Pranto等人[14]和M. Sultan等人[15]將區(qū)塊鏈技術(shù)應(yīng)用于農(nóng)產(chǎn)品供應(yīng)鏈場(chǎng)景中相關(guān)數(shù)據(jù)的安全存儲(chǔ)。上述區(qū)塊鏈在物聯(lián)網(wǎng)中的應(yīng)用多是將相關(guān)的數(shù)據(jù)全部存儲(chǔ)在區(qū)塊鏈中,這樣物聯(lián)網(wǎng)系統(tǒng)產(chǎn)生的高頻感知數(shù)據(jù)占用了大量的存儲(chǔ)資源。
該文提出了一種基于聯(lián)盟鏈的輕量級(jí)網(wǎng)關(guān)框架,該框架主要由SPV模塊、邊緣計(jì)算模塊和外部接口模塊組成,如圖1所示。
圖1 輕量級(jí)網(wǎng)關(guān)原型框架
SPV模塊是一個(gè)輕量級(jí)的聯(lián)盟鏈節(jié)點(diǎn),其中,數(shù)據(jù)同步功能同步與本組織相關(guān)的交易數(shù)據(jù),以降低節(jié)點(diǎn)的存儲(chǔ)壓力。默克爾樹(shù)剪枝功能對(duì)SPV節(jié)點(diǎn)區(qū)塊頭的默克爾樹(shù)進(jìn)行剪枝優(yōu)化,進(jìn)一步降低節(jié)點(diǎn)的存儲(chǔ)空間需求,并大幅降低交易驗(yàn)證速度。本地存儲(chǔ)以LevelDB[16]為載體將區(qū)塊鏈數(shù)據(jù)存儲(chǔ)在網(wǎng)關(guān)節(jié)點(diǎn)本地,數(shù)據(jù)服務(wù)為其他應(yīng)用或設(shè)備提供交易查詢(xún)、驗(yàn)證服務(wù);邊緣計(jì)算模塊包括設(shè)備行為模式監(jiān)測(cè)和感知數(shù)據(jù)異常檢測(cè)兩個(gè)核心功能,用于感知設(shè)備身份合法性判斷和篩選出高價(jià)值的異常數(shù)據(jù);外部接口模塊用于支撐網(wǎng)關(guān)與IPFS(Inter Planetary File System)[17]、云服務(wù)器和區(qū)塊鏈節(jié)點(diǎn)等系統(tǒng)或平臺(tái)進(jìn)行交互,從而實(shí)現(xiàn)分布式存儲(chǔ)、大數(shù)據(jù)分析、智能合約等功能。
網(wǎng)關(guān)從感知設(shè)備采集感知數(shù)據(jù),并從這些數(shù)據(jù)中提取感知設(shè)備的行為模式數(shù)據(jù)。網(wǎng)關(guān)主要處理這兩類(lèi)數(shù)據(jù),其處理流程如圖2所示。
圖2 數(shù)據(jù)處理流程
網(wǎng)關(guān)對(duì)設(shè)備行為模式數(shù)據(jù)進(jìn)行上鏈存儲(chǔ),并同步存儲(chǔ)在網(wǎng)關(guān)的SPV模塊,用于設(shè)備的可信接入認(rèn)證。感知數(shù)據(jù)經(jīng)過(guò)邊緣計(jì)算模塊中感知數(shù)據(jù)異常檢測(cè)功能的處理之后分為正常感知數(shù)據(jù)和異常感知數(shù)據(jù)。對(duì)于正常感知數(shù)據(jù)在邊緣側(cè)進(jìn)行聚合形成日志數(shù)據(jù),定期存入鏈下擴(kuò)展存儲(chǔ)—IPFS中,而日志數(shù)據(jù)的哈希值存儲(chǔ)到區(qū)塊鏈上。對(duì)于異常感知數(shù)據(jù),它們可能對(duì)應(yīng)用的安全或設(shè)備的安全產(chǎn)生積極的意義,在邊緣側(cè)通過(guò)設(shè)備的運(yùn)行狀態(tài)判斷異常產(chǎn)生的原因,然后將設(shè)備狀態(tài)與感知數(shù)據(jù)一起進(jìn)行數(shù)據(jù)上鏈。
設(shè)備可信接入既是保障物聯(lián)網(wǎng)系統(tǒng)安全的重要手段,也是區(qū)塊鏈中數(shù)據(jù)可信的基礎(chǔ)。本團(tuán)隊(duì)前期研究工作通過(guò)基于感知設(shè)備流量指紋[18]的方式實(shí)現(xiàn)了設(shè)備的可信接入,但是缺少對(duì)感知設(shè)備在運(yùn)行時(shí)行為合法性的監(jiān)控。為此,該文進(jìn)一步在網(wǎng)關(guān)中實(shí)時(shí)采集感知設(shè)備的行為模式,并通過(guò)JS散度(Jensen-Shannon Divergence)衡量感知設(shè)備當(dāng)前的行為模式和鏈上存儲(chǔ)到歷史行為模式的差別,進(jìn)而判斷感知設(shè)備行為的合法性。這種基于JS散度對(duì)設(shè)備行為進(jìn)行合法性判斷的算法是一種具有敏捷性的輕量化身份認(rèn)證算法,只需消耗較少的計(jì)算資源。
JS散度是對(duì)KL散度(Kullback-Leibler Divergence)缺少對(duì)稱(chēng)性的改進(jìn),可以更好地度量?jī)蓚€(gè)概率分布的相似程度。KL散度和JS散度的計(jì)算方法如公式:
(1)
(2)
公式中,P表示真實(shí)的概率分析,G表示預(yù)期的概率分布;DJS(P‖G)取值范圍為[0,1],其取值越小表示兩個(gè)分布越相似。
用D表示一個(gè)感知設(shè)備,T表示行為模式監(jiān)測(cè)周期,p為判斷閾值。通過(guò)設(shè)備的行為模式判斷設(shè)備行為合法性的步驟為:
步驟1:初始化階段,定期統(tǒng)計(jì)設(shè)備D向網(wǎng)關(guān)發(fā)送數(shù)據(jù)包的時(shí)間間隔,計(jì)算其均值和標(biāo)準(zhǔn)差,并使用得到的均值和標(biāo)準(zhǔn)差進(jìn)行正態(tài)分布建模。記得到的正態(tài)分布的概率密度為f0(x)。
步驟2:設(shè)備正常運(yùn)行時(shí),持續(xù)計(jì)算網(wǎng)關(guān)接收到設(shè)備D數(shù)據(jù)包的時(shí)間間隔。然后,在每個(gè)周期結(jié)束計(jì)算當(dāng)前周期網(wǎng)關(guān)接收到設(shè)備D發(fā)送的數(shù)據(jù)包時(shí)間間隔的均值和標(biāo)準(zhǔn)差,并將其進(jìn)行正態(tài)分布建模,記其概率密度函數(shù)為ft(x)。
步驟3:從本地同步的區(qū)塊數(shù)據(jù)中獲取設(shè)備D在當(dāng)前周期之前3個(gè)周期設(shè)備的行為模式,記設(shè)備D在上述3個(gè)周期中網(wǎng)關(guān)接收到設(shè)備D發(fā)送數(shù)據(jù)時(shí)間間隔的概率密度函數(shù)為f1(x),f2(x),f3(x)。
步驟4:將{ft(x),f0(x)},{ft(x),f1(x)},{ft(x),f2(x)}和{ft(x),f3(x)}4組概率密度函數(shù)帶入公式,得到DJS(ft‖f0),DJS(ft‖f1),DJS(ft‖f2),DJS(ft‖f3)。
步驟5:為DJS(ft‖f0),DJS(ft‖f1),DJS(ft‖f2)和DJS(ft‖f3)分配權(quán)重,分別為0.5,0.25,0.15和0.1,計(jì)算得到加權(quán)JS散度DJS(AVG)。
步驟6:如果DJS(AVG)大于p,則將結(jié)果判定為異常,否則判定結(jié)果為正常。
在生產(chǎn)環(huán)境中,網(wǎng)關(guān)采集到的感知數(shù)據(jù)通常包含大量的正常數(shù)據(jù)和少量的異常數(shù)據(jù)。由于區(qū)塊鏈的存儲(chǔ)方式采用了多節(jié)點(diǎn)冗余存儲(chǔ)的架構(gòu),在資源受限的邊緣側(cè)尤其需要降低網(wǎng)關(guān)節(jié)點(diǎn)的存儲(chǔ)壓力。因此,該文選擇只存儲(chǔ)高價(jià)值的異常感知數(shù)據(jù),以減少節(jié)點(diǎn)存儲(chǔ)空間需求。通過(guò)基于LSTM(Long Short Term Memory)加滑動(dòng)窗口的方式進(jìn)行感知數(shù)據(jù)的異常檢測(cè),這種異常檢測(cè)方法通過(guò)Tensorflow Lite實(shí)現(xiàn),只需要較少的計(jì)算和存儲(chǔ)資源。
用P和R分別表示在t時(shí)刻感知設(shè)備的預(yù)測(cè)值和實(shí)際值,在t時(shí)刻的誤差計(jì)算公式為:
(3)
異常區(qū)間指以?xún)蓚€(gè)連續(xù)異常為端點(diǎn)所形成的區(qū)間?;瑒?dòng)窗口是從歷史誤差數(shù)據(jù)中取出的一段連續(xù)誤差的集合,用于確定當(dāng)前時(shí)刻誤差在歷史誤差中的相對(duì)位置。為了具有代表性,滑動(dòng)窗口應(yīng)包含一定數(shù)量的異常區(qū)間。然而,在某個(gè)時(shí)間段內(nèi),異常發(fā)生的情況可能比較密集,也可能比較稀疏。因此,為滑動(dòng)窗口長(zhǎng)度設(shè)置最小值minLen和最大值maxLen。
感知數(shù)據(jù)異常檢測(cè)分為建立模型、確定滑動(dòng)窗口、異常判斷和上鏈存儲(chǔ)四個(gè)階段。
(1)建立模型:用{…t-2,t-1,t0,t1,t2…}表示一個(gè)時(shí)間序列,其中t0表示當(dāng)前時(shí)刻,用r0表示t0時(shí)刻網(wǎng)關(guān)采集到的實(shí)際感知數(shù)據(jù),在t-1時(shí)刻,將t0之前一段時(shí)間的感知數(shù)據(jù)作為L(zhǎng)STM模型的輸入,可以得到t0時(shí)刻的預(yù)測(cè)值p0。將p0,r0帶入公式,可以得到t0時(shí)刻的誤差e0,使用同樣的方法可得到t0之前的誤差集E。
(2)確定滑動(dòng)窗口:用[ws,we]表示一個(gè)滑動(dòng)窗口。用wn表示滑動(dòng)窗口中包含異常區(qū)間的數(shù)量。設(shè)ln為當(dāng)前時(shí)刻之前出現(xiàn)的第n(n≥0)個(gè)異常的時(shí)間點(diǎn),則ws等于l0,we等于lwn。當(dāng)歷史異常值的數(shù)量小于wn時(shí),將we的值設(shè)為ws+minLen。
(3)異常判斷:計(jì)算E中數(shù)據(jù)的平均值(μ)和標(biāo)準(zhǔn)差(σ)。當(dāng)e0大于μ+1.96σ時(shí),將結(jié)果判定為異常,否則判定為正常。
(4)上鏈存儲(chǔ):當(dāng)結(jié)果判斷為異常時(shí),根據(jù)網(wǎng)關(guān)邊緣計(jì)算模塊中的設(shè)備行為模式數(shù)據(jù)對(duì)感知數(shù)據(jù)異常的來(lái)源進(jìn)行判斷。若是因?yàn)樵O(shè)備自身而產(chǎn)生的異常,則將異常數(shù)據(jù)進(jìn)行簡(jiǎn)化上鏈存儲(chǔ)。否則,將異常數(shù)據(jù)進(jìn)行完整的上鏈存儲(chǔ)。
網(wǎng)關(guān)作為一種資源受限的設(shè)備,與其相連的設(shè)備對(duì)數(shù)據(jù)的需求大多為本組織中的交易數(shù)據(jù),因此在網(wǎng)關(guān)中可以只同步存儲(chǔ)與本組織相關(guān)的交易數(shù)據(jù)。
默克爾樹(shù)剪枝算法的基本思想為:網(wǎng)關(guān)輕量級(jí)節(jié)點(diǎn)中只存儲(chǔ)了本組織相關(guān)的交易數(shù)據(jù),默克爾樹(shù)剪枝算法在上述基礎(chǔ)上實(shí)現(xiàn)了在區(qū)塊頭的默克爾樹(shù)中剪掉與本組織無(wú)關(guān)交易的哈希值。這進(jìn)一步簡(jiǎn)化了默克爾樹(shù),并降低了交易驗(yàn)證時(shí)的時(shí)間消耗。
在默克爾樹(shù)剪枝過(guò)程中,首先計(jì)算交易的數(shù)量,并添加虛擬交易使交易能夠構(gòu)成一個(gè)高度最小的滿(mǎn)二叉樹(shù)。將虛擬交易的交易字段設(shè)為空,此時(shí)在以虛擬交易生成的節(jié)點(diǎn)作為葉子節(jié)點(diǎn)的樹(shù)中,各層的哈希值是一致的,從而,在交易驗(yàn)證階段不需要多次進(jìn)行哈希計(jì)算,這保證了即使大量增加了虛擬交易,交易驗(yàn)證的工作量不會(huì)出現(xiàn)大幅的增加。
對(duì)連續(xù)多個(gè)不屬于本組織的交易形成的葉子節(jié)點(diǎn)集進(jìn)行分組,分組的方法為依次從葉子節(jié)點(diǎn)集取出能組成最高子樹(shù)的葉子節(jié)點(diǎn)作為一個(gè)子集,直到葉子節(jié)點(diǎn)集變?yōu)榭占?然后,用各個(gè)子集中的節(jié)點(diǎn)作為葉子節(jié)點(diǎn)所組成樹(shù)的根作為該子集中節(jié)點(diǎn)的摘要存儲(chǔ)在網(wǎng)關(guān)本地。具體示例如圖3所示。
圖3 默克爾樹(shù)剪枝示例
圖3中包含8個(gè)交易(Transaction,TX),默克爾樹(shù)剪枝時(shí)對(duì)非本組織的交易{TX1,TX2,TX3,TX5,TX6}作丟棄處理。對(duì)相應(yīng)的葉子節(jié)點(diǎn){1,2,3,5,6},將節(jié)點(diǎn)A和B分別作為葉子節(jié)點(diǎn){1,2}和{5,6}的摘要存儲(chǔ)在網(wǎng)關(guān)本地。為了保證TX4可驗(yàn)證,將葉子節(jié)點(diǎn)3存儲(chǔ)在網(wǎng)關(guān)中,最終形成一個(gè)以{A,3,4,B,7,8}為葉子節(jié)點(diǎn),以{TX4,TX7,TX8}為交易的簡(jiǎn)化默克爾樹(shù)。簡(jiǎn)化默克爾樹(shù)能夠在節(jié)省存儲(chǔ)空間的情況下,保證{TX4,TX7,TX8}的可驗(yàn)證性,并加快交易的驗(yàn)證速度。
簡(jiǎn)化默克爾樹(shù)中的葉子節(jié)點(diǎn)使用起始值和終止值字段標(biāo)識(shí)該節(jié)點(diǎn)所代表的原始葉子節(jié)點(diǎn)的范圍,例如,圖3中的葉子節(jié)點(diǎn)A的起始值和終止值字段的數(shù)值分別為1和2,節(jié)點(diǎn){4,7,8}的起始值和終止值字段的數(shù)值均為其自身的編號(hào)。
通過(guò)默克爾樹(shù)剪枝算法,可以降低默克爾樹(shù)的存儲(chǔ)空間,同時(shí),能夠加快交易驗(yàn)證效率。默克爾樹(shù)剪枝算法如下(算法1):
算法1:默克爾樹(shù)剪枝偽代碼
輸入:交易數(shù)據(jù)集TXs,虛擬交易哈希序列virtualTXHashs,本組織編號(hào)LocOrgID
輸出:剪枝后的交易數(shù)據(jù)集
1.計(jì)算交易組成的MerkleTree高度TXsHeight
2.for mkH:=0; mkH 3.distance := 2^i 4.定義tempTXs用于存儲(chǔ)臨時(shí)交易列表 5.for i:=0;i 6.if TXs[i].OrgID!=LocOrgID &&TXs[i+1].OrgID!= LocOrgID 7.if TXs[i]和TXs[i+1]的葉子節(jié)點(diǎn)距離均等于distance 8.由TXs[i]和TXs[i+1]計(jì)算生成哈希值TxHASH,若其葉子節(jié)點(diǎn)為虛擬節(jié)點(diǎn)則TxHASH=virtualTXHashs[mkH] 9.將TxHASH添加到tempTXs中,i+=2 10.else 11.將TXs[i]添加到tempTXs中,i+1=1 12.Return tempTXs //返回剪枝后交易 交易驗(yàn)證的基本思路是根據(jù)最新節(jié)點(diǎn)的區(qū)塊頭哈希獲取上一個(gè)區(qū)塊頭,并在其中尋找到指定高度的區(qū)塊。一旦找到該區(qū)塊,就從其區(qū)塊頭中獲取葉子節(jié)點(diǎn)列表。接著,需要遍歷葉子節(jié)點(diǎn)列表中的哈希值,若目標(biāo)哈希值在哈希值列表中存在,則可以驗(yàn)證該交易的合法性。 交易合法性的驗(yàn)證流程如下:首先,從區(qū)塊頭中取出葉子節(jié)點(diǎn)列表,并確定默克爾樹(shù)的高度。接下來(lái),按照從下到上的順序?qū)δ藸枠?shù)進(jìn)行逐層驗(yàn)證。在進(jìn)行每一層驗(yàn)證時(shí),假設(shè)當(dāng)前層高為n,則交易間隔為2n。遍歷葉子節(jié)點(diǎn)列表中的節(jié)點(diǎn),通過(guò)節(jié)點(diǎn)中的起始值和終止值確定該節(jié)點(diǎn)的交易間隔。當(dāng)節(jié)點(diǎn)的交易間隔為2n時(shí),對(duì)該節(jié)點(diǎn)及其相鄰的后續(xù)節(jié)點(diǎn)進(jìn)行哈希計(jì)算。依此類(lèi)推,直到葉子節(jié)點(diǎn)列表中只剩下一個(gè)節(jié)點(diǎn)時(shí),該節(jié)點(diǎn)即為交易默克爾樹(shù)的根節(jié)點(diǎn)。交易驗(yàn)證流程的算法偽代碼如下(算法2): 算法2:交易驗(yàn)證偽代碼 輸入:交易所在區(qū)塊高度blockH,交易哈希值TxHash,最新區(qū)塊頭哈希HeadHash 輸出:交易是否合法 1.根據(jù)HeadHash查詢(xún)區(qū)塊,并從中取前區(qū)塊的HeadHash,直到查詢(xún)到目標(biāo)區(qū)塊block 2.merkleLeafNodes :=block.MerkleLeafNodes 3.for i := 0; i 4.if merkleLeafNodes[i].TxHash == TxHash &&blockH == blockHeight Then flag = True 5.if flag == False Then return Fale 6.for i:=0; i 7.定義tempNodes用于存儲(chǔ)臨時(shí)節(jié)點(diǎn)數(shù)據(jù) 8.for j:=0; j 9.if merkleLeafNodes[j].range == 2^i //2^i表示當(dāng)前處理節(jié)點(diǎn)對(duì)應(yīng)原始節(jié)點(diǎn)的數(shù)量 10.TxHash=SHA(merkleLeafNodes[j].key+ (merkleLeafNodes[j+1].key) 11.將通過(guò)merkleLeafNodes第j,j+1生成的節(jié)點(diǎn)放入tempNodes,j+=2 12.else 13.將merkleLeafNodes[j]放在tempNodes中,j+=1 14.merkleLeafNodes = tempNodes 15.root = merkleLeafNodes[0] 16.if block.MerkleRoot != root 17.return False 18.return True 4.1.1 實(shí)驗(yàn)硬件基礎(chǔ) 實(shí)驗(yàn)環(huán)境硬件包括1臺(tái)在VMware ESXiTM7.0平臺(tái)中部署的虛擬機(jī)、1臺(tái)樹(shù)莓派4B和1臺(tái)PC,分別在其中部署了長(zhǎng)安鏈2.1.0網(wǎng)絡(luò)、文中的網(wǎng)關(guān)系統(tǒng)和感知設(shè)備模擬程序。虛擬機(jī)硬件資源配置為CPU: Intel(R) Xeon(R) Gold 6140 CPU @ 2.30 GHz,16核心,內(nèi)存16 GB,操作系統(tǒng)為CentOS8.2。樹(shù)莓派4B硬件資源配置為CPU:Broadcom BCM2711 @ 1.5 GHz,4核心,內(nèi)存4 GB,操作系統(tǒng)為Ubuntu21.04。PC硬件配置為CPU: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40 GHz,4核心,操作系統(tǒng)為Windows10。 4.1.2 區(qū)塊鏈網(wǎng)絡(luò) 虛擬機(jī)中的長(zhǎng)安鏈網(wǎng)絡(luò)由4個(gè)通過(guò)Docker啟動(dòng)的共識(shí)節(jié)點(diǎn)組成,網(wǎng)絡(luò)采用RAFT共識(shí)算法,單個(gè)區(qū)塊的最大交易數(shù)為100,出塊間隔為2 000 ms。感知數(shù)據(jù)異常檢測(cè)滑動(dòng)窗口的minLen和maxLen分別為60和200。 4.1.3 數(shù)據(jù)集 英特爾伯克利研究室(IBRL)傳感器數(shù)據(jù)集為IBRL在2004年使用54個(gè)傳感器采集到的約230萬(wàn)條的感知數(shù)據(jù)。該文將原始數(shù)據(jù)按照設(shè)備編號(hào)分組并按時(shí)間順序排序整合為標(biāo)準(zhǔn)數(shù)據(jù)集。在標(biāo)準(zhǔn)數(shù)據(jù)集的基礎(chǔ)上為每個(gè)設(shè)備添加了5% A.B. Sharma等人[19]所定義的異常數(shù)據(jù),并將得到的數(shù)據(jù)集發(fā)布在Github (https://github.com/Trible863/GatewayTestDataset)上。通過(guò)將原始標(biāo)準(zhǔn)數(shù)據(jù)集進(jìn)行復(fù)制實(shí)現(xiàn)增加設(shè)備數(shù)量到90個(gè)。取每個(gè)設(shè)備前10 000條數(shù)據(jù),其中,前8 000條作為模型訓(xùn)練集,后2 000條用于本實(shí)驗(yàn)測(cè)試。 4.2.1 感知設(shè)備安全 為了驗(yàn)證設(shè)備可信接入功能的有效性,進(jìn)行了感知設(shè)備異常行為檢測(cè)實(shí)驗(yàn),實(shí)驗(yàn)分為正常分組和異常分組。正常分組中各個(gè)設(shè)備以其自身初始化階段的行為模式為基準(zhǔn),異常分組中各個(gè)設(shè)備以其它設(shè)備初始化階段的行為模式為標(biāo)準(zhǔn)模型。之后以100秒為周期計(jì)算各個(gè)設(shè)備的JS散度值。 實(shí)驗(yàn)結(jié)果如圖4所示。 根據(jù)實(shí)驗(yàn)結(jié)果顯示,在正常分組中各個(gè)設(shè)備的數(shù)據(jù)包時(shí)延JS散度幾乎均小于0.1,這表明正常設(shè)備的數(shù)據(jù)包時(shí)延呈現(xiàn)出一定的相似性和穩(wěn)定性。相反,在異常分組中,各個(gè)設(shè)備的數(shù)據(jù)包時(shí)延JS散度幾乎均大于0.1,這意味著異常設(shè)備的數(shù)據(jù)包時(shí)延具有更大的差異性和不確定性。綜合分析可以得出結(jié)論,將判斷閾值設(shè)為0.1時(shí),通過(guò)設(shè)備行為模式對(duì)設(shè)備行為進(jìn)行監(jiān)測(cè)能夠有效地識(shí)別設(shè)備的正常行為和異常行為。因此,該感知設(shè)備異常檢測(cè)方案不僅能夠幫助檢測(cè)感知設(shè)備的異常行為,而且還能夠增強(qiáng)物聯(lián)網(wǎng)系統(tǒng)的安全性。該方案可以在現(xiàn)有的物聯(lián)網(wǎng)系統(tǒng)中應(yīng)用,以提高物聯(lián)網(wǎng)系統(tǒng)的可靠性和安全性。 4.2.2 感知數(shù)據(jù)安全 感知數(shù)據(jù)異常檢測(cè)能夠從大量低質(zhì)量的重復(fù)數(shù)據(jù)中篩選出有價(jià)值的異常數(shù)據(jù),該文采用了LSTM和滑動(dòng)窗口方法對(duì)感知數(shù)據(jù)進(jìn)行異常檢測(cè)。在提出的預(yù)測(cè)方法中進(jìn)行了3 000次的預(yù)測(cè),圖5顯示了將預(yù)測(cè)誤差按1‰的組距分組統(tǒng)計(jì)的結(jié)果。 圖5 模型預(yù)測(cè)性能 從實(shí)驗(yàn)結(jié)果看,隨著誤差率的增加,分組統(tǒng)計(jì)和累積比重逐漸增加。同時(shí),當(dāng)預(yù)測(cè)誤差在0.9%以下時(shí),占比達(dá)到了97.8%。這表明該預(yù)測(cè)模型的效果能夠滿(mǎn)足生產(chǎn)環(huán)境中的異常檢測(cè)需求。 4.3.1 節(jié)點(diǎn)運(yùn)行時(shí)延分析 為了分析在網(wǎng)關(guān)中采用輕量級(jí)節(jié)點(diǎn)和在長(zhǎng)安鏈全節(jié)點(diǎn)中進(jìn)行數(shù)據(jù)上鏈和交易查詢(xún)的時(shí)延情況,分別在網(wǎng)關(guān)節(jié)點(diǎn)和長(zhǎng)安鏈節(jié)點(diǎn)中進(jìn)行了數(shù)據(jù)上鏈和交易驗(yàn)證的實(shí)驗(yàn)。實(shí)驗(yàn)分9組進(jìn)行測(cè)試,模擬感知設(shè)備的數(shù)量分別為{10,20,30,40,50,60,70,80,90},實(shí)驗(yàn)結(jié)果如圖6所示,圖6中“本地”和“節(jié)點(diǎn)”分別指在網(wǎng)關(guān)節(jié)點(diǎn)和長(zhǎng)安鏈中進(jìn)行實(shí)驗(yàn)得到的實(shí)驗(yàn)結(jié)果。 圖6 網(wǎng)關(guān)運(yùn)行時(shí)延 實(shí)驗(yàn)結(jié)果顯示:在數(shù)據(jù)上鏈時(shí)延方面,在網(wǎng)關(guān)節(jié)點(diǎn)中和在長(zhǎng)安鏈節(jié)點(diǎn)中的時(shí)延幾乎一致,說(shuō)明在網(wǎng)關(guān)中進(jìn)行數(shù)據(jù)上鏈不會(huì)明顯增加時(shí)延開(kāi)銷(xiāo)。在交易驗(yàn)證時(shí)延方面,在網(wǎng)關(guān)中向網(wǎng)關(guān)節(jié)點(diǎn)進(jìn)行交易驗(yàn)證請(qǐng)求相較于向長(zhǎng)安鏈節(jié)點(diǎn)進(jìn)行交易驗(yàn)證請(qǐng)求,能夠大幅度降低交易驗(yàn)證時(shí)延開(kāi)銷(xiāo)。 4.3.2 默克爾樹(shù)剪枝分析 為了驗(yàn)證文中默克爾樹(shù)剪枝方案的優(yōu)勢(shì),進(jìn)行了區(qū)塊節(jié)點(diǎn)壓縮測(cè)試、交易驗(yàn)證和默克爾樹(shù)驗(yàn)證實(shí)驗(yàn),對(duì)比方案為K. Saito等人[20]提出的輕量級(jí)節(jié)點(diǎn)方案(K. Saito方案),將K. Saito方案通過(guò)代碼實(shí)現(xiàn)進(jìn)行相關(guān)實(shí)驗(yàn)。 為了測(cè)試默克爾樹(shù)剪枝方案相較于K. Saito方案在節(jié)點(diǎn)壓縮上的優(yōu)勢(shì),首先,根據(jù)不同的組織數(shù)量隨機(jī)生成了5 000個(gè)交易,并模擬K. Saito方案區(qū)塊中不同的交易數(shù)隨機(jī)生成2 000個(gè)區(qū)塊。然后,采用默克爾樹(shù)剪枝算法對(duì)區(qū)塊中默克爾樹(shù)進(jìn)行了剪枝,并計(jì)算默克爾樹(shù)剪枝后葉子節(jié)點(diǎn)的平均數(shù)量。表1顯示了文中方案相較于K. Saito方案(表1中基線方案)在葉子節(jié)點(diǎn)壓縮上的效果。 表1 默克爾樹(shù)剪枝結(jié)果 從實(shí)驗(yàn)結(jié)果看,當(dāng)組織數(shù)量分別為4,6,8和10時(shí),文中方案區(qū)塊中的葉子節(jié)點(diǎn)數(shù)相較于K. Saito方案分別降低了36.6%,49.3%,57.4%和62.9%。這表明提出的默克爾樹(shù)剪枝算法能夠顯著降低區(qū)塊中的葉子節(jié)點(diǎn)數(shù)。 將組織數(shù)設(shè)為4,進(jìn)行交易驗(yàn)證時(shí)延和默克爾樹(shù)驗(yàn)證時(shí)延測(cè)試。在進(jìn)行交易驗(yàn)證時(shí)延實(shí)驗(yàn)時(shí),將區(qū)塊中交易數(shù)設(shè)為100,然后,在不同的區(qū)塊高度情況下測(cè)試了5 000次交易驗(yàn)證時(shí)延的情況并計(jì)算其均值,實(shí)驗(yàn)結(jié)果如圖7(a)所示。進(jìn)行默克爾樹(shù)驗(yàn)證時(shí)延實(shí)驗(yàn)時(shí),在默克爾樹(shù)中包含一定交易數(shù)的情況下,隨機(jī)生成了5 000個(gè)默克爾樹(shù)。然后,測(cè)試默克爾樹(shù)的交易驗(yàn)證時(shí)延,并計(jì)算默克爾樹(shù)交易驗(yàn)證時(shí)延的均值,實(shí)驗(yàn)結(jié)果如圖7(b)所示。 (a)交易驗(yàn)證時(shí)延 從圖7可以看出,文中方案相比于K. Saito方案,具有更優(yōu)秀的性能表現(xiàn)。在圖7(a)中,文中方案的交易驗(yàn)證時(shí)延均小于K. Saito方案的交易驗(yàn)證時(shí)延,而且總體上比K. Saito方案優(yōu)化了32.3%。這表明文中方案可以更快速地完成交易驗(yàn)證,從而提高了整個(gè)交易處理過(guò)程的效率。在圖7(b)中,文中方案的驗(yàn)證時(shí)延相較于K. Saito方案明顯降低。綜上,文中方案可以被廣泛應(yīng)用于區(qū)塊鏈輕量級(jí)節(jié)點(diǎn)技術(shù)的實(shí)踐中,提高區(qū)塊鏈系統(tǒng)的整體性能和效率。 該文提出了一種基于聯(lián)盟鏈的輕量級(jí)區(qū)塊鏈-物聯(lián)網(wǎng)網(wǎng)關(guān)模型,在資源受限的設(shè)備上實(shí)現(xiàn)了物聯(lián)網(wǎng)設(shè)備的可信接入、感知數(shù)據(jù)與設(shè)備的快速異常發(fā)現(xiàn)以及高效的數(shù)據(jù)處理,為區(qū)塊鏈技術(shù)在物聯(lián)網(wǎng)場(chǎng)景中的融合應(yīng)用提供了可行的方案。 未來(lái)的工作將基于提出的新型智能物聯(lián)體系架構(gòu),結(jié)合實(shí)際的物聯(lián)網(wǎng)場(chǎng)景和感知數(shù)據(jù)類(lèi)型,進(jìn)一步優(yōu)化提出的區(qū)塊鏈網(wǎng)關(guān)系統(tǒng)。特別是,在區(qū)塊鏈默克爾樹(shù)中交易排序方面進(jìn)行研究,以更好地優(yōu)化輕量級(jí)節(jié)點(diǎn)的存儲(chǔ)需求,實(shí)現(xiàn)輕量級(jí)、高可信和自適應(yīng)的特性。這將有助于提升物聯(lián)網(wǎng)系統(tǒng)的安全性和效率,并為實(shí)際應(yīng)用場(chǎng)景提供更好的服務(wù)。4 實(shí)驗(yàn)設(shè)計(jì)與評(píng)估
4.1 實(shí)驗(yàn)設(shè)計(jì)
4.2 安全性分析
4.3 輕量級(jí)節(jié)點(diǎn)分析
5 結(jié)束語(yǔ)