蘇芮,裘炅
(杭州電子科技大學(xué)計(jì)算機(jī)學(xué)院,杭州 310000)
近幾年來,各大高校的消防管理體系在多元化地發(fā)展中,逐漸凸顯了兩方面的問題:消防部門與部門之間、二級(jí)單位與子組織之間弱信任問題;消防各部門之間沒有形成數(shù)據(jù)的互聯(lián)、互通,導(dǎo)致消防數(shù)據(jù)孤立、不可靠。這些問題導(dǎo)致校園各部門消防數(shù)據(jù)不可信,火災(zāi)預(yù)測(cè)數(shù)據(jù)不準(zhǔn)確,對(duì)火災(zāi)的應(yīng)對(duì)決策起不到關(guān)鍵作用,從而發(fā)生了多起高校宿舍、實(shí)驗(yàn)室等的校園火災(zāi),給學(xué)校人員和財(cái)產(chǎn)造成嚴(yán)重?fù)p失[1]。而私有區(qū)塊鏈技術(shù)[2]運(yùn)用數(shù)據(jù)加密、時(shí)間戳、分布式共識(shí)等為校園消防管理提供了安全、可追溯、不可篡改、自動(dòng)執(zhí)行的運(yùn)算平臺(tái),解決了校園消防中突出的信任和數(shù)據(jù)互通互信問題,而傳統(tǒng)消防管理模式很難實(shí)現(xiàn)[3]。目前區(qū)塊鏈技術(shù)在其他領(lǐng)域中也得到了廣泛的應(yīng)用,如,張亞嬌等人研究了基于私有區(qū)塊鏈的醫(yī)療數(shù)據(jù)安全存儲(chǔ)模型,并驗(yàn)證和評(píng)估了該模型,很好地解決了傳統(tǒng)醫(yī)療個(gè)人與醫(yī)院之間數(shù)據(jù)信任和安全的問題[4];陳志東等人研究了基于私有區(qū)塊鏈的眾籌業(yè)務(wù),在數(shù)據(jù)安全和公信方面得到極大加強(qiáng),目前已經(jīng)在實(shí)際應(yīng)用[5]。由此可以看出私有區(qū)塊鏈技術(shù)可以很好地解決校園消防中存在的弱信任和消防數(shù)據(jù)不可靠問題。
本文設(shè)計(jì)的校園消防管理模型,主要是解決校園消防部門間的弱信任和數(shù)據(jù)不可信問題。通過使用私有區(qū)塊鏈技術(shù),將校園消防數(shù)據(jù)區(qū)塊向各個(gè)消防部門節(jié)點(diǎn)公開,各節(jié)點(diǎn)之間通過共識(shí)機(jī)制,保證消防數(shù)據(jù)的及時(shí)更新和透明性,提高了部門之間信任度和數(shù)據(jù)的可信度,校園消防管理模型架構(gòu)圖如圖1所示。
基于私有區(qū)塊鏈技術(shù)的校園消防管理系統(tǒng)是一個(gè)去中心化的分布式系統(tǒng),而私有區(qū)塊鏈最緊要的問題是消防部門節(jié)點(diǎn)間的共識(shí)問題,也就是消防各部門節(jié)點(diǎn)之間的如何達(dá)成相同協(xié)議,增強(qiáng)消防各部門之間的信任關(guān)系。本文針對(duì)校園消防的應(yīng)用,提出基于PBFT[6]的校園消防管理共識(shí)機(jī)制,并對(duì)該共識(shí)機(jī)制做了改進(jìn),以減少了共識(shí)算法中的計(jì)算量和檢查點(diǎn)校驗(yàn),減少了通訊資源開銷,加快區(qū)塊校驗(yàn)速度并保證消防數(shù)據(jù)的高度一致性。
本文是基于私有區(qū)塊鏈的校園消防系統(tǒng),其場(chǎng)景情況如下:
(1)有M個(gè)消防部門節(jié)點(diǎn),分別為{M1,M2,M3,M4,M5,M6,…,Mm},各部門節(jié)點(diǎn)相互獨(dú)立。部門節(jié)點(diǎn)之間去中心化,在系統(tǒng)運(yùn)行中,消防部門節(jié)點(diǎn)不存在動(dòng)態(tài)添加和退出的情況。
(2)消防部門節(jié)點(diǎn)之間建立連接采用以太坊提供的校驗(yàn)方式,認(rèn)為該校驗(yàn)是安全的,并且惡節(jié)點(diǎn)不能冒充其他節(jié)點(diǎn)連接到網(wǎng)絡(luò)中。
(3)當(dāng)消防部門節(jié)點(diǎn)斷開連接時(shí),系統(tǒng)會(huì)嘗試重新連接該節(jié)點(diǎn),但超過超時(shí)時(shí)間仍沒連接成功,本文認(rèn)為該消防部門節(jié)點(diǎn)發(fā)生錯(cuò)誤,即為錯(cuò)誤節(jié)點(diǎn)。
圖1 校園消防管理模型架構(gòu)圖
在私有區(qū)塊鏈中,消防數(shù)據(jù)以區(qū)塊的形式提交并永久記錄到區(qū)塊鏈中。本文采用以太坊交易校驗(yàn)協(xié)議,自身節(jié)點(diǎn)先校驗(yàn)消防數(shù)據(jù)的有效性后,將消防數(shù)據(jù)寫入?yún)^(qū)塊中,并發(fā)送區(qū)塊,該區(qū)塊中的消防數(shù)據(jù)經(jīng)過全網(wǎng)其他消防部門節(jié)點(diǎn)校驗(yàn)通過,并添加到區(qū)塊鏈中則認(rèn)為消防數(shù)據(jù)被執(zhí)行。消防數(shù)據(jù)區(qū)塊生成流程如圖2所示。相關(guān)定義如下:
(1)timespan(時(shí)間間隔):當(dāng)消防數(shù)據(jù)列表為空時(shí),各消防部門節(jié)點(diǎn)監(jiān)聽區(qū)塊鏈中最新消防數(shù)據(jù)區(qū)塊(LatesetBlock)的時(shí)間戳與系統(tǒng)的時(shí)間間隔。
(2)△t:消防數(shù)據(jù)區(qū)塊從生成到達(dá)成共識(shí)并添加到區(qū)塊鏈的最長時(shí)間,這個(gè)時(shí)間中包含信息傳輸過程會(huì)造成網(wǎng)絡(luò)延遲。
(3)LatestBlock:當(dāng)前消防數(shù)據(jù)區(qū)塊鏈中最新添加成功的消防數(shù)據(jù)區(qū)塊。
(4)開始生成消防數(shù)據(jù)區(qū)塊判定條件:當(dāng)前生成的消防數(shù)據(jù)區(qū)塊為空、或當(dāng)前消防數(shù)據(jù)區(qū)塊正要添加的區(qū)塊號(hào)不大于LatestBlock區(qū)塊、或提交新的消防數(shù)據(jù)。
(5)上一消防數(shù)據(jù)區(qū)塊添加成功判定條件:節(jié)點(diǎn)監(jiān)聽區(qū)塊鏈中的timespan,當(dāng)timespan超過△t會(huì)生成一個(gè)空的消防數(shù)據(jù)區(qū)塊并添加到區(qū)塊鏈中,timespan需要滿足timespan>△t,這樣可以保證在生成空區(qū)塊時(shí),所有交易已經(jīng)在全網(wǎng)達(dá)成一致。
圖2 消防數(shù)據(jù)區(qū)塊生成流程圖
消防管理區(qū)塊鏈系統(tǒng)的共識(shí)機(jī)制中,采用一致性協(xié)議和區(qū)塊校驗(yàn)分離的策略,來縮短系統(tǒng)網(wǎng)絡(luò)中各部門節(jié)點(diǎn)達(dá)成共識(shí)的時(shí)間,以加快消防數(shù)據(jù)區(qū)塊添加速度,且保證區(qū)塊鏈中即使出現(xiàn)壞部門節(jié)點(diǎn),仍能保證消防管理區(qū)塊鏈系統(tǒng)去中心化可信的運(yùn)行。
一致性協(xié)議通信模式如圖3所示,一致性協(xié)議包含五個(gè)階段:請(qǐng)求(request)、序號(hào)分配(pre-prepare)、交互(prepare)、序號(hào)確認(rèn)(commit)、響應(yīng)(reply)。消防管理共識(shí)機(jī)制系統(tǒng)采用兩兩交互的方式在服務(wù)器中達(dá)成一致之后再執(zhí)行客戶端的請(qǐng)求。消防管理共識(shí)機(jī)制的一致性協(xié)議通信模型中,C:客戶端節(jié)點(diǎn),即消防數(shù)據(jù)提交節(jié)點(diǎn);N0~N3:消防管理系統(tǒng)網(wǎng)絡(luò)中其他部門節(jié)點(diǎn);N0:消防管理系統(tǒng)中的主節(jié)點(diǎn);N3:消防管理系統(tǒng)網(wǎng)絡(luò)中存在的故障消防部門節(jié)點(diǎn)。
圖3 消防管理共識(shí)機(jī)制通信協(xié)議模型
當(dāng)主節(jié)點(diǎn)中滿足生成消防數(shù)據(jù)區(qū)塊條件時(shí),主節(jié)點(diǎn)接收新生成消防數(shù)據(jù)區(qū)塊的請(qǐng)求,啟動(dòng)序號(hào)分配階段、交互階段、序號(hào)確認(rèn)階段的協(xié)議,并向各消防部門節(jié)點(diǎn)廣播發(fā)送請(qǐng)求;
序號(hào)分配階段:主節(jié)點(diǎn)給請(qǐng)求賦值一個(gè)序列號(hào)n,向網(wǎng)絡(luò)中廣播序號(hào)分配消息和客戶端的請(qǐng)求消息m,并將構(gòu)造pre-prepare消息發(fā)送給網(wǎng)絡(luò)中其他消防部門節(jié)點(diǎn);
交互階段:從節(jié)點(diǎn)接收pre-prepare消息,向其他部門節(jié)點(diǎn)廣播prepare消息;
序號(hào)確認(rèn)階段:當(dāng)發(fā)現(xiàn)該信息通過了2m個(gè)消防部門節(jié)點(diǎn)反饋并同意某一條證書時(shí),即該消防數(shù)據(jù)區(qū)塊信息通過了一個(gè)Quorum的同意,那么對(duì)于這條證書該部門節(jié)點(diǎn)進(jìn)入Commit的狀態(tài),并向其他部門節(jié)點(diǎn)發(fā)送Commit消息客戶端等待來自不同消防部門節(jié)點(diǎn)的響應(yīng),若有2m+1(包括自身)個(gè)響應(yīng)相同,則認(rèn)為該消防數(shù)據(jù)區(qū)塊的信息在消防管理系統(tǒng)中達(dá)成共識(shí),并嘗試將該消防數(shù)據(jù)區(qū)塊添加到系統(tǒng)區(qū)塊鏈中。
通過以上這種提交方式,實(shí)現(xiàn)了發(fā)送的區(qū)塊信息達(dá)成一致,以圖為例考慮到當(dāng)N3節(jié)點(diǎn)發(fā)生拜占庭錯(cuò)誤,由于另外兩個(gè)是安全的消防部門節(jié)點(diǎn),因此仍可以滿足2m+1個(gè)消防部門節(jié)點(diǎn)通過驗(yàn)證,安全的消防部門節(jié)點(diǎn)之間可以保證消防數(shù)據(jù)區(qū)塊的一致性,正確的區(qū)塊會(huì)成功添加到區(qū)塊鏈,并觸發(fā)下一個(gè)區(qū)塊的生成,循環(huán)執(zhí)行該過程。
消防數(shù)據(jù)區(qū)塊的校驗(yàn)過程主要針對(duì)區(qū)塊頭部信息進(jìn)行校驗(yàn),本文結(jié)合以太坊中區(qū)塊結(jié)構(gòu)進(jìn)行區(qū)塊校驗(yàn),消防數(shù)據(jù)區(qū)塊校驗(yàn)是整個(gè)區(qū)塊鏈校驗(yàn)的核心內(nèi)容,區(qū)塊校驗(yàn)流程如圖4所示。
圖4 校驗(yàn)流程圖
針對(duì)校園消防的特殊性,校園消防系統(tǒng)需要提供高效的查詢服務(wù),以滿足對(duì)消防設(shè)備、消防水壓、消防報(bào)警的歷史查詢。本文研究設(shè)計(jì)了一種樹狀結(jié)構(gòu)的區(qū)塊鏈來加速查詢,結(jié)合了Patricia樹和Merkle樹[7]的特點(diǎn),形成消防管理MPT(Merkle Patricia Tree)鏈,可以保證分布式數(shù)據(jù)索引的一致性和查詢結(jié)果的正確性。Patricia[8]樹的更新并不需要花費(fèi)太多的計(jì)算資源,只需要修改葉節(jié)點(diǎn)即可。
消防管理MPT鏈包括四種不同類型節(jié)點(diǎn)的樹結(jié)構(gòu),節(jié)點(diǎn)結(jié)構(gòu)如圖5所示。根節(jié)點(diǎn)的結(jié)構(gòu)由兩部分組成:分支指針和值。分支指針講指針指向分支節(jié)點(diǎn),值中存儲(chǔ)消防管理MPT鏈的Merkle根,當(dāng)創(chuàng)建區(qū)塊時(shí),存儲(chǔ)在塊頭中的值將被改變。分支節(jié)點(diǎn)是一個(gè)列表,以十六進(jìn)制編碼格式的HolderID作為搜索關(guān)鍵字,所有的分支節(jié)點(diǎn)都有16個(gè)用于存儲(chǔ)子指針的鍵值。當(dāng)搜索路徑到達(dá)這個(gè)分支節(jié)點(diǎn)時(shí),秘鑰的索引號(hào)表示搜索碼的值。分支節(jié)點(diǎn)的value字段以分支節(jié)點(diǎn)為根時(shí),存儲(chǔ)Merkle樹的Merkle根值。
圖5 不同類型節(jié)點(diǎn)的樹結(jié)構(gòu)
本文通過建立消防管理MPT鏈,以holderID為索引關(guān)鍵字加速查詢。如圖6中的消防管理PM鏈結(jié)構(gòu),數(shù)據(jù)交易指針存儲(chǔ)在葉子節(jié)點(diǎn)的tx指針中,當(dāng)使用holderID進(jìn)行查詢時(shí),MPT逐個(gè)讀取holderID,并匹配從根開始到葉子節(jié)點(diǎn)或者擴(kuò)展節(jié)點(diǎn)的holderID。其中圖6使用灰色來表示搜索路徑,通過使用holderID,并顯示tx指針指向區(qū)塊鏈中的事務(wù)。另外MPT鏈的最新Merkle根也存儲(chǔ)在最新區(qū)塊的塊頭中,圖6中用虛線表示了這種關(guān)系。
圖6 MPT鏈結(jié)構(gòu)
本文的實(shí)驗(yàn)主要對(duì)消防管理共識(shí)機(jī)制和消防管理MPT鏈進(jìn)行驗(yàn)證,實(shí)驗(yàn)主要從吞吐量,網(wǎng)絡(luò)延遲和區(qū)塊創(chuàng)建速度的角度討論區(qū)塊生成達(dá)成共識(shí)的速度、區(qū)塊儲(chǔ)結(jié)構(gòu)的查詢效率,而評(píng)估的指標(biāo)是每秒消防數(shù)據(jù)區(qū)塊成功添加的次數(shù)(TPS)。區(qū)塊鏈中創(chuàng)建塊的時(shí)候,網(wǎng)絡(luò)的延遲是一個(gè)非常重要的因素,而Decker和Wattenhofer[9]提出的測(cè)量研究解決了這個(gè)問題。本文以他們的實(shí)驗(yàn)數(shù)據(jù)作為理論估計(jì),我們選擇的塊大小為200kb,并為共識(shí)過程設(shè)置時(shí)間閾值,塊的時(shí)間閾值為20s。
本文使用的實(shí)驗(yàn)數(shù)據(jù)是來自某高校的消防數(shù)據(jù)。我們比較消防數(shù)據(jù)區(qū)塊的創(chuàng)建時(shí)間和區(qū)塊添加成功的吞吐量。圖7顯示了吞吐量,它可以達(dá)到每秒300個(gè)。圖8表示塊的創(chuàng)建時(shí)間,根據(jù)實(shí)驗(yàn)數(shù)據(jù),我們可以看到實(shí)體可以承受的事務(wù)延遲大約是10秒。毫無疑問,消防管理共識(shí)機(jī)制和消防管理MPT鏈可以加快節(jié)點(diǎn)共識(shí)和歷史數(shù)據(jù)查詢的速度。消防管理MPT鏈同時(shí)可以加速區(qū)塊的驗(yàn)證,消防數(shù)據(jù)區(qū)塊的驗(yàn)證過程需要驗(yàn)證Merkle根的正確性,中間值可以重復(fù)使用。通過上述實(shí)驗(yàn)結(jié)果,可以得出本文提出的校園消防共識(shí)機(jī)制和消防管理MPT鏈可以應(yīng)用于基于私有區(qū)塊鏈的校園消防管理系統(tǒng)中,它不僅能夠滿足延遲和吞吐量的要求,而且支持毫秒查詢時(shí)間,提供更便捷,高效的校園消防服務(wù)。
隨著互聯(lián)網(wǎng)的高速發(fā)展,校園消防局限于中心化數(shù)據(jù)庫、不可擴(kuò)展、不可互相監(jiān)管以及中心數(shù)據(jù)庫數(shù)據(jù)可隨意更改的系統(tǒng)越來越難以處理當(dāng)前越來越多樣化的校園消防數(shù)據(jù)。區(qū)塊鏈技術(shù)在去中心化、不可篡改、可追溯、可擴(kuò)展趨勢(shì)的發(fā)展過程中得到了廣泛關(guān)注[10]。它作為一個(gè)大規(guī)模的協(xié)作工具,將對(duì)校園消防數(shù)據(jù)的存儲(chǔ)產(chǎn)生深遠(yuǎn)影響。本文中分析和研究了基于私有區(qū)塊鏈技術(shù)的校園消防管理模型,解決了傳統(tǒng)系統(tǒng)中存在的部門與部門之間若信任的問題、數(shù)據(jù)缺乏透明化和可信度,無法和學(xué)校其他相關(guān)部門互聯(lián)互通互信、相互監(jiān)督的問題,對(duì)于未來的消防事業(yè)的發(fā)展和研究具有一定的借鑒意義。區(qū)塊鏈技術(shù)在解決傳統(tǒng)問題的同時(shí),自身也有一些問題需要解決[11]。首先,智能合約程序的表達(dá)范圍有限,并不能像自然語言合約那樣制定嚴(yán)格的約束,將阻礙其發(fā)展。最后,區(qū)塊鏈所造成的過度的資源消耗、高度數(shù)據(jù)冗余形成性能瓶頸。區(qū)塊鏈技術(shù)仍處在發(fā)展階段,還未形成一定的產(chǎn)業(yè)標(biāo)準(zhǔn),需要學(xué)業(yè)界產(chǎn)業(yè)界的進(jìn)一步推動(dòng)。
圖7 吞吐量
圖8 區(qū)塊的創(chuàng)建時(shí)間
參考文獻(xiàn):
[1]朱彤,傅貴,張?zhí)K.高校火災(zāi)事故行為原因分析及預(yù)防[J].工業(yè)安全與環(huán)保,2014,40(3):33-35.
[2]Castro M,Liskov B.Practical Byzantine Fault Tolerance[C].Proc of OSDL Berkeley,USENIX Association,1999:173-186
[3]袁勇,王飛躍.區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀與展望[J].自動(dòng)化學(xué)報(bào),2016,42(4):481-494.DOI:10.16383/j.aas.2016.c160158.
[4]張亞嬌,王樅.區(qū)塊鏈技術(shù)在醫(yī)療數(shù)據(jù)安全存儲(chǔ)中的應(yīng)用[J],2016.
[5]陳志東,董愛強(qiáng),孫赫,等.基于眾籌業(yè)務(wù)的私有區(qū)塊鏈研究[J].信息安全研究,2017,3(3):227-236.
[6]Platania M,Obenshain D,Tantillo T,et al.On Choosing Server-or Client-Side Solutions for BFT[J].Acm Computing Surveys,2016,48(4):1-30.
[7]Merkle R C,Protoools for Public Key Cryptosystems[C].Proc of IEEE Symp on Security&Privacy.Los Alamitos,CA;IEEE Computer Society,1980:122-122.
[8]Xu Y,Zhao S,Kong L,et al.ECBC:A High Performance Educational Certificate Blockchain with Efficient Query[M].Theoretical As-pects of Computing-ICTAC 2017,2017.
[9]Decker,C.,Wattenhofer,R.:Information propagation in the Bitcoin network.In:13th IEEEInternational Conference on Peer-to-Peer Computing(P2P),Trento,Italy,September 2013
[10]Zhao He,Li Xiao-Feng,Zhan Li-Kui,Wu Zhong-Cheng.Data Integrity Protection Method for Microorganism Sam-pling Robots Based on Blockchain Technology.Journal of Huazhong University of Science and Technology(Natural Science Edition),2015,43(Z1):216-219
[11]蔣潤祥,魏長江.區(qū)塊鏈的應(yīng)用進(jìn)展與價(jià)值探討[J].甘肅金融,2016,(2):19-21.DOI:103969/j.jssn.1009-4512.2016.02.003