張利華,蔣騰飛,姜攀攀,李晶晶,張朋偉
(1.華東交通大學 軟件學院,江西 南昌 330000;2.華東交通大學 電氣與自動化工程學院,江西 南昌 330000;3.江西交通職業(yè)技術學院 機電工程系,江西 南昌 330000)
當前高速鐵路通過部署無線傳感器網絡(wireless sensor network,WSN)對其運營環(huán)境進行監(jiān)測,將采集到的數(shù)據(jù)(溫度、異物侵線、風雨雪、受電弓壓力等)通過數(shù)據(jù)采集基站(data acquisition base station,DS)在可信第三方監(jiān)管下進行存儲[1]。但是,采集數(shù)據(jù)分布存儲在節(jié)點上,容易造成存儲數(shù)據(jù)被惡意偽造、篡改等信息安全問題。
Shan Xu等采用分布式計算,利用Linux技術構造信息平臺存儲鐵路沿線監(jiān)測數(shù)據(jù),但沒有對數(shù)據(jù)防篡改問題進行保護[2]。高玉等提出利用云存儲技術對高速鐵路視頻監(jiān)測數(shù)據(jù)進行存儲,但沒有對惡意偽造數(shù)據(jù)進行保護[3]。范歆琦等提出基于CH376的格式化方式存儲高鐵電纜溫度監(jiān)測數(shù)據(jù)系統(tǒng),以離線形式存儲監(jiān)測數(shù)據(jù),主要存在的問題在于離線存儲易遭受單點故障[4]。王偉等提出基于Hadoop技術,利用HDFS分布式文件管理系統(tǒng)實現(xiàn)對鐵路信號數(shù)據(jù)的存儲[5]。
傳統(tǒng)的分布式存儲是由可信第三方收集數(shù)據(jù)的,雖然一定程度上解決了內存容量的問題,但不能保證數(shù)據(jù)一致性、防偽造、防篡改等。隨著區(qū)塊鏈(Blockchain)的快速發(fā)展,為分布式數(shù)據(jù)安全存儲提供了新的技術方案。本文依據(jù)高速鐵路的特點,提出了將無線傳感器網絡和聯(lián)盟區(qū)塊鏈技術相結合,搭建高速鐵路運營環(huán)境無線傳感器網絡感知節(jié)點分布框架,構造聯(lián)盟區(qū)塊鏈的高速鐵路監(jiān)測數(shù)據(jù)安全存儲雙鏈模型,從而實現(xiàn)對其運營環(huán)境監(jiān)測數(shù)據(jù)的安全存儲。
區(qū)塊鏈定義詳見文獻[6],其數(shù)據(jù)結構如圖1所示。區(qū)塊頭保存當前區(qū)塊的目標哈希值,該值是由前一區(qū)塊的塊頭進行哈希(Hash)計算得到的。此外還包括前一區(qū)塊地址、當前共識過程中的隨機數(shù)、Merkle根(Merkle-Root)以及時間戳等信息,這樣就可以讓所有的區(qū)塊組合成依賴前一區(qū)塊的可追溯但不可篡改的鏈。區(qū)塊體則負責保存數(shù)據(jù)即當前區(qū)塊的交易數(shù)量以及經過驗證的區(qū)塊在創(chuàng)建過程中生成的所有交易記錄。這些記錄通過Merkle樹的哈希過程生成唯一的Merkle根并記入?yún)^(qū)塊頭。利用區(qū)塊鏈的數(shù)據(jù)結構在防篡改上的優(yōu)勢,文獻[7-12]將區(qū)塊鏈應用到電網、農業(yè)、物聯(lián)網、醫(yī)療等分布式數(shù)據(jù)存儲中。
圖1 數(shù)據(jù)區(qū)塊模型
高速鐵路沿線呈明顯的線性分布,WSN也必將是一維的線性拓撲網絡,而區(qū)塊鏈是一種P2P網絡,網絡中的傳感器感知節(jié)點(sensor node,SN)需要頻繁參與共識、驗證等,需要消耗大量的能量,因此,WSN感知節(jié)點會因能量耗盡而使整個網絡無法正常運行。
區(qū)塊鏈按參與方分類,可分為:公有鏈、聯(lián)盟鏈、私有鏈,其特點見表1。因聯(lián)盟鏈僅限認證許可的聯(lián)盟成員參與共識,卻記錄了所有感知節(jié)點的相關交易信息,因此可以大大減少非共識傳感器感知節(jié)點的網絡開銷。結合高速鐵路無線傳感器網絡感知節(jié)點分布的特點,可以將聯(lián)盟區(qū)塊鏈部署于網絡中,設計高速鐵路運營環(huán)境監(jiān)測數(shù)據(jù)安全存儲系統(tǒng)。
表1 區(qū)塊鏈分類及特點
聯(lián)盟鏈SN分布框架如圖2所示?,F(xiàn)用的高速鐵路設計資料顯示,鐵路沿線每隔3公里就會設置一個通信機房,其具有鐵路專線網和無線網絡,且有鐵路供電系統(tǒng)為其供電,不需要考慮能耗耗盡的問題。但考慮到非共識傳感器共識節(jié)點需要向機房傳輸采集數(shù)據(jù),為減少逐跳通信帶來的能耗,因此可以將所有的機房作為聯(lián)盟區(qū)塊鏈的預選節(jié)點(DS)。從圖2可以看出,每個DS只需要聚合周邊1.5公里范圍內所有SN采集到的數(shù)據(jù)。
圖2 聯(lián)盟鏈感知節(jié)點分布框架
數(shù)據(jù)存儲聯(lián)盟鏈系統(tǒng)如圖3所示,其并不依靠無線傳感器網絡中唯一可信中心節(jié)點存儲數(shù)據(jù),聯(lián)盟鏈建立在預選的鐵路沿線采集基站(DS),由這些節(jié)點進行公開審計、共識、驗證、存儲數(shù)據(jù),構成區(qū)塊鏈。根據(jù)在系統(tǒng)中的作用,有以下實體:傳感器感知節(jié)點、采集基站、監(jiān)測中心。
圖3 系統(tǒng)模型
傳感器感知節(jié)點(SN),負責監(jiān)測數(shù)據(jù)的采集、上傳。SN隨著監(jiān)測目標重要性變化而能滿足系統(tǒng)加入或刪除該節(jié)點的要求。
采集基站(DS),負責收集周邊SN上傳的感知數(shù)據(jù),由本地存儲池和控制器構成,可驗證SN的合法性和真實性,合法的數(shù)據(jù)可以保存到本地存儲池,控制器負責對周邊SN上傳的監(jiān)測數(shù)據(jù)進行整合、排列。另一方面,DS是整個系統(tǒng)實現(xiàn)雙鏈存儲的核心,DS之間競爭將數(shù)據(jù)寫入?yún)^(qū)塊鏈的記錄權。
監(jiān)測中心(monitor center,MC),負責整個系統(tǒng)的初始化,擁有最高權限,且認為不可被第三方控制。MC監(jiān)管DS形成的數(shù)據(jù)區(qū)塊,分析各監(jiān)測數(shù)據(jù)是否異常等。
使用到的主要符號見表2。
表2 主要符號及其含義
系統(tǒng)采用哈希信息驗證碼(hashed message authentication code,HMAC)技術實現(xiàn)初始化。SN中含有智能嵌入式設備,SN首先通過MC的身份認證后,成為WSN的許可感知節(jié)點,同時獲得該節(jié)點的屬性集合type和地址信息loc,MC將密鑰對PKSi,SKSi載入該嵌入式設備,該過程表示為: {PKSi,SKSi,type,loc}。DS經過MC驗證合法后只需獲得PKDi,SKDi, 以此實現(xiàn)對SN的驗證、數(shù)據(jù)的加密及數(shù)字簽名。
聯(lián)盟存儲鏈是在預選節(jié)點下的去中心化、集體維護、防篡改的點對點(P2P)網絡,預選節(jié)點之間是對等計算的,在進行一次共識之后,每個參與節(jié)點都會保存一個相同的區(qū)塊鏈副本,即使某一個節(jié)點被攻陷,也不會使整個無線傳感器網絡的數(shù)據(jù)被篡改而導致數(shù)據(jù)失效。鐵路聯(lián)盟鏈監(jiān)測數(shù)據(jù)雙鏈存儲模型如圖4所示。
其中,v=HMACSKSi(PID‖EpkDi(m))。
圖4 數(shù)據(jù)存儲模型
(2)監(jiān)測數(shù)據(jù)聚合:DSi首先對SNi上傳數(shù)據(jù)中的Timestamp進行驗證,避免重放攻擊,接著用SNi的PKSi對發(fā)送的HMAC進行身份認證,從而保證其合法性,驗證成功后將合法的數(shù)據(jù)保存在存儲池中,一段時間后,DSi將范圍內的監(jiān)測數(shù)據(jù)進行聚合,同時加上一個時間戳,并對其進行數(shù)字簽名,保證數(shù)據(jù)的合法性,然后等待下一次共識過程從而寫入數(shù)據(jù)區(qū)塊鏈。具體過程表示如下
DSi→DSi
d=Sig{(d1,d2,d3…dn)‖Timestamp}
其中,dn表示DSi范圍內的所有感知數(shù)據(jù);d表示聚合數(shù)據(jù)。
(3)數(shù)據(jù)區(qū)塊上鏈:通過DS之間的共識過程形成數(shù)據(jù)區(qū)塊并鏈接到數(shù)據(jù)存儲聯(lián)盟鏈。DSi將d向其它DS發(fā)送并競爭此次數(shù)據(jù)區(qū)塊的記錄權,獲得記錄權的節(jié)點也稱為主節(jié)點,記作:DSleader, 其它DS稱為從節(jié)點。此時DSleader就獲得d和當前數(shù)據(jù)區(qū)塊的寫入權限,DSleader將數(shù)據(jù)d排好序,然后按一定的順序分配給從節(jié)點。達成共識后,DSleader就可將d寫入?yún)^(qū)塊鏈,其它DS通過DSleader可以獲得最新的數(shù)據(jù)區(qū)塊鏈副本,進而實現(xiàn)聯(lián)盟鏈系統(tǒng)中所有DS都保存一份唯一、可靠的數(shù)據(jù)區(qū)塊信息。此外,從節(jié)點有檢查DSleader是否合法的權限,并可以利用計時器的超時機制(timeout機制)驗證DSleader是否已經宕掉,如果該主節(jié)點有異常,則可由從節(jié)點通過協(xié)議重新競爭出一個新的主節(jié)點。數(shù)據(jù)區(qū)塊形成過程可表示如下
DSi→DS(1…i-1,i+1…n)
(d,authority)∈DSleader
DBi=DBi-1‖dbd
其中,authority表示數(shù)據(jù)區(qū)塊記錄權;DBi表示當前形成的區(qū)塊鏈;dbd表示數(shù)據(jù)d形成的數(shù)據(jù)區(qū)塊。
(4)數(shù)據(jù)存儲雙鏈:區(qū)塊鏈數(shù)據(jù)結構需要對每一條數(shù)據(jù)進行哈希計算,因此可以將數(shù)據(jù)的哈希值保存在DS的存儲池。每一種類型最后上鏈數(shù)據(jù)的哈希值(lastdatahash)都可以根據(jù)typen,locn在數(shù)據(jù)區(qū)塊中進行標記,而且每種類型的lastdatahash都按照一定規(guī)則排列在存儲池中。當前進行交易的數(shù)據(jù)的哈希值記為:parenthash,當數(shù)據(jù)上鏈后,parenthash又會變成當前區(qū)塊中該類型的lastdatahash。這樣一段時間之后,具體類型的監(jiān)測數(shù)據(jù)可以依據(jù)hash值單獨形成一條hash鏈,此hash鏈指示出該類型的每一條歷史數(shù)據(jù)在區(qū)塊鏈中具體的數(shù)據(jù)區(qū)塊中,而且,此hash鏈依附數(shù)據(jù)區(qū)塊鏈從而保證了其不可篡改、不可偽造。
算法1: Store Data // building data block
輸入: sig//Sensor signature m// Sensor data
type//Sensor type loc//Sensor location
輸出: DB (數(shù)據(jù)區(qū)塊)
(1)d=(sig,type,loc,m);
(2)if sig is right; /*基站檢查節(jié)點合法性、真實性*/
(3) store d inDS; /*若合法,將數(shù)據(jù)放入基站存儲池*/
(4) create metadata for d;
(5) collect all metadata fromDSand make a Merkle tree; /*構造Merkle樹*/
(6)build a DB for all metedata;/*構造數(shù)據(jù)區(qū)塊*/
(7) build ahashDB for the same type of metadata;
/*構造同一類型hash鏈*/
(8)broadcast message to allDSand get write authority;
/*在預選節(jié)點之間廣播消息,獲得記錄權限*/
(9)write into last data block;/*寫入上一個數(shù)據(jù)區(qū)塊*/
(10)end
DS之間通過共識以及每個DS內對具體監(jiān)測數(shù)據(jù)的hash值進行排列,整個數(shù)據(jù)存儲聯(lián)盟鏈就形成了由數(shù)據(jù)區(qū)塊鏈和具體類型的hash鏈組成的雙鏈結構,如圖5所示。從而在存儲聯(lián)盟鏈中既得到所有監(jiān)測數(shù)據(jù)的區(qū)塊,也得到表征某一特性的數(shù)據(jù)區(qū)塊的hash鏈,這樣不但能有效監(jiān)測所有感知數(shù)據(jù),也能快速通過hash鏈查詢歷史記錄對鐵路沿線某一監(jiān)測項目進行追蹤分析。聯(lián)盟鏈數(shù)據(jù)雙鏈存儲可由算法1來實現(xiàn)。
圖5 雙鏈存儲結構
此外,雖然DS不能對上鏈的監(jiān)測數(shù)據(jù)進行偽造、篡改等操作但到每個DS都會擁有一份完整的數(shù)據(jù)區(qū)塊鏈副本,也就是說,每個DS都可以查看上鏈的監(jiān)測數(shù)據(jù)。為防止存儲在聯(lián)盟鏈中的隱私數(shù)據(jù)被惡意DS查看,可采用Hawk系統(tǒng)對數(shù)據(jù)的隱私進行保護[13]。Hawk是一個基于密碼學分散的區(qū)塊鏈智能合約開發(fā)平臺,其不把隱私數(shù)據(jù)直接存儲在區(qū)塊鏈中,由Hawk編譯器自動通過零知識證明協(xié)議與數(shù)據(jù)區(qū)塊鏈進行交互,從而保證監(jiān)測數(shù)據(jù)的隱私,而且在數(shù)據(jù)傳輸過程中,一旦偏離合約的規(guī)定,Hawk系統(tǒng)都會及時終止此次數(shù)據(jù)的傳輸。
Hawk由3個角色組成:管理者,用戶,程序員,其中用戶為每個DS; 管理者對整個Hawk合同的執(zhí)行負責,每次監(jiān)測數(shù)據(jù)的傳輸都可以在DS中重新選擇一個管理者;程序員負責編寫數(shù)據(jù)區(qū)塊的鏈上程序。鏈上程序程序分為兩個部分: publicφpub和privateφpriv, 由所有參與共識的DS共同執(zhí)行。 publicφpub用來執(zhí)行不涉及隱私或隱私性較弱數(shù)據(jù)的代碼; privateφpriv用來執(zhí)行涉及隱私數(shù)據(jù)的代碼,Hawk對privateφpriv處理的隱私數(shù)據(jù)進行加密處理。Hawk系統(tǒng)架構如圖6所示。
圖6 Hawk系統(tǒng)架構
鐵路沿線機房是依據(jù)標準設置的,也就是說在本存儲聯(lián)盟鏈系統(tǒng)中,共識節(jié)點是固定的,一般不會有節(jié)點的加入或者離開,也就是說該聯(lián)盟鏈的共識不必考慮節(jié)點的動態(tài),而SN的更換可以在MC初始化時進行身份認證。因此,鐵路運營環(huán)境數(shù)據(jù)存儲聯(lián)盟鏈采用實用拜占庭(PBFT)算法共識機制進行區(qū)塊共識。PBFT算法適用于異步拜占庭容錯,主要結論是n≥3f+1, 其中,n表示系統(tǒng)中參與共識的總節(jié)點數(shù),f表示系統(tǒng)在共識過程中所允許出現(xiàn)的故障節(jié)點數(shù)。也就是說,在共識節(jié)點總數(shù)為n的系統(tǒng)中,如果故障節(jié)點不多于f個,則認為共識結果是可接受的。具體共識過程如圖7所示,其中,DSi(i=0,1,2…n) 表示采集基站,SNin(n=0,1,2…) 表示采集基站DSi管理范圍內的感知節(jié)點。
圖7 數(shù)據(jù)存儲聯(lián)盟鏈共識過程
如前文所述,SNin將采集到的感知數(shù)據(jù)發(fā)送給DSi,DSi將數(shù)據(jù)打包后在DS之間競爭寫入數(shù)據(jù)區(qū)塊的權限,假設DS0獲得了的寫入權限,那么DS0就成本輪共識的唯一主節(jié)點,主節(jié)點DS0負責新數(shù)據(jù)區(qū)塊的產生。
(1)主節(jié)點廣播區(qū)塊階段,主節(jié)點DS0將數(shù)據(jù)區(qū)塊、新數(shù)據(jù)區(qū)塊的哈希值和其數(shù)字簽名廣播至其從節(jié)點以備查驗。
(2)從點驗證區(qū)塊階段,每個從節(jié)點對主節(jié)點發(fā)來的數(shù)據(jù)區(qū)塊和數(shù)字簽名進行驗證,根據(jù)排序模擬執(zhí)行這些交易數(shù)據(jù)。所有交易執(zhí)行完后,基于交易結果計算新區(qū)塊的哈希摘要并附上其數(shù)字簽名,向全網廣播。
(3)從節(jié)點比較與確認階段,各節(jié)點匯總整理其它節(jié)點發(fā)來的交易結果和哈希摘要。如果一個節(jié)點收到的2f(f為可容忍的拜占庭節(jié)點數(shù))個其它節(jié)點發(fā)來的摘要都和自己相同,就向全網廣播一條commit消息。
(4)主節(jié)點反饋階段,主節(jié)點整理所有從節(jié)點發(fā)送的消息,如果收到2f+1條commit消息,即可提交新區(qū)塊和各從節(jié)點的審計結果到本地的區(qū)塊鏈和狀態(tài)數(shù)據(jù)庫。同時,將得到驗證的新數(shù)據(jù)區(qū)塊附上主節(jié)點的數(shù)字簽名廣播至從節(jié)點。自此,該數(shù)據(jù)區(qū)塊將以時間先后的順序存儲到聯(lián)盟鏈中。
假設主節(jié)點在匯總過程中發(fā)現(xiàn)有至少f+1個從節(jié)點不接受主節(jié)點發(fā)送的數(shù)據(jù)區(qū)塊和哈希摘要,主節(jié)點將分析和校驗所有從節(jié)點的審計結果,主節(jié)點可重新發(fā)送數(shù)據(jù)區(qū)塊給所有的從節(jié)點進行再一次校驗。如果接受主節(jié)點審計結果的從節(jié)點數(shù)量仍大于等于f+1, 系統(tǒng)可重新選擇主節(jié)點,再次進行共識計算,直至滿足生產數(shù)據(jù)區(qū)塊的要求。
鐵路運營環(huán)境監(jiān)測數(shù)據(jù)存儲聯(lián)盟鏈能有效保護監(jiān)測數(shù)據(jù)的安全,具有防單點攻擊、防惡意篡改、數(shù)據(jù)真實可靠性、數(shù)據(jù)隱私保護等性能。
(1)存儲節(jié)點防單點攻擊。與傳統(tǒng)的可信第三方集中存儲方式不同,存儲聯(lián)盟鏈通過預選節(jié)點之間的共識達成一致生成數(shù)據(jù)區(qū)塊,數(shù)據(jù)存儲在各收集感知數(shù)據(jù)的采集基站中,不依賴于系統(tǒng)可信賴的第三方,且每個基站在每一輪共識機制后都有一份完整的數(shù)據(jù)鏈。因此可以避免傳統(tǒng)中心存儲節(jié)點易受單點攻擊的風險。而且,本文預選節(jié)點不需考慮能耗、內存空間不足等問題,可根據(jù)實際數(shù)據(jù)存儲的需要進行擴展。
(2)存儲數(shù)據(jù)完整性。聯(lián)盟鏈共識具有防篡改的特點,生成數(shù)據(jù)區(qū)塊時,系統(tǒng)采用實用拜占庭算法進行共識,而其結論為:n≥3f+1。 在數(shù)量為n的系統(tǒng)中,如果某些節(jié)點合謀篡改數(shù)據(jù),則其數(shù)量不得少于f+1。 假設系統(tǒng)共有100個預選節(jié)點,每一個節(jié)點變節(jié)的概率為1/2,若要篡改數(shù)據(jù),則至少有34個節(jié)點同時被控制,那么變節(jié)采集基站篡改數(shù)據(jù)的概率為1/234。鐵路沿線的機房數(shù)量遠不止100,因此,在生成數(shù)據(jù)區(qū)塊時,數(shù)據(jù)被篡改的可能性很低。再者,形成數(shù)據(jù)鏈后,因為每個數(shù)據(jù)區(qū)塊都依賴于前一個數(shù)據(jù)區(qū)塊的哈希值等信息生成,因此篡改鏈上某一數(shù)據(jù)區(qū)塊,則必須修改此數(shù)據(jù)區(qū)塊之前的所有數(shù)據(jù),顯然,這個工作量不在可計算范圍內,一旦數(shù)據(jù)區(qū)塊鏈形成,數(shù)據(jù)被篡改的可能性非常小。因此,采用數(shù)據(jù)存儲聯(lián)盟鏈可有效保證數(shù)據(jù)的完整性。
(3)數(shù)據(jù)真實可追溯性。感知節(jié)點向采集基站傳輸數(shù)據(jù)都需附上數(shù)字簽名、PID等信息。采集基站可以據(jù)此保證節(jié)點的合法性和數(shù)據(jù)來源的真實性。
(4)隱私保護。所有的監(jiān)測數(shù)據(jù)由SN采用非對稱加密方式,以密文形式向DS進行傳輸。攻擊者無法在非共識間斷的短時間竊取所有信息,也就無法獲取監(jiān)測數(shù)據(jù)的隱私信息,所以能有效保護監(jiān)測數(shù)據(jù)的機密性。
現(xiàn)有高速鐵路監(jiān)測數(shù)據(jù)的保護都是基于密碼學的安全性設計的,無論是基于大數(shù)據(jù)還是基于云平臺,都不可避免的會遭受數(shù)據(jù)被惡意篡改等安全問題。聯(lián)盟存儲雙鏈基于區(qū)塊鏈本身的數(shù)據(jù)結構特點輔以密碼學技術對鐵路沿線環(huán)境監(jiān)測數(shù)據(jù)展開設計,下面從機密性、完整性、不可篡改、不可偽造、防單點攻擊、去中心化等方面與文獻[2-5]性能進行對比,見表3??梢钥闯龌诼?lián)盟鏈的高速鐵路運營環(huán)境監(jiān)測數(shù)據(jù)存儲的安全性能與其它方案相比有明顯的優(yōu)勢。
表3 方案性能對比
高速鐵路的快速發(fā)展,運營監(jiān)測數(shù)據(jù)種類繁多,數(shù)量巨大,其存儲安全直接關乎其進一步發(fā)展。以現(xiàn)有的鐵路周邊設備結合聯(lián)盟鏈技術在預選的采集基站之間進行共識實現(xiàn)對周邊環(huán)境數(shù)據(jù)的安全存儲。為便于對歷史數(shù)據(jù)的分析,本文提出了雙鏈數(shù)據(jù)存儲模型,解決了傳統(tǒng)存儲方式存在的惡意偽造、篡改數(shù)據(jù)等問題。為進一步驗證此方案安全有效,后續(xù)工作將采用可證明安全形式對所提方案的安全深入研究。