樊愛京,孫澤軍,潘中強,常新峰,孫亞南,呂樂樂
(1.平頂山學(xué)院 實驗室管理中心,河南 平頂山 467036;2.平頂山學(xué)院 信息工程學(xué)院,河南 平頂山 467036;3.平頂山學(xué)院 網(wǎng)絡(luò)管理中心,河南 平頂山 467036)
隨著大數(shù)據(jù)、人工智能和5G技術(shù)的迅猛發(fā)展和廣泛應(yīng)用,物聯(lián)網(wǎng)作為其基礎(chǔ)也得到了快速的發(fā)展.無線傳感網(wǎng)絡(luò)(WSN)作為物聯(lián)網(wǎng)核心技術(shù)之一,具有廣闊的應(yīng)用前景,目前已廣泛地應(yīng)用在國防軍事、智慧醫(yī)療、智慧城市、智能家居、智能交通、地質(zhì)監(jiān)測和環(huán)境保護等多個領(lǐng)域[1].但是,由于無線通信的開放性以及傳感器節(jié)點的局限性,使得無線傳感器網(wǎng)絡(luò)很容易遭受攻擊,也使得無線傳感器網(wǎng)絡(luò)的安全問題顯得尤為重要[2].無線傳感器網(wǎng)絡(luò)的安全問題主要來自以下幾個方面:數(shù)據(jù)機密性問題、數(shù)據(jù)認(rèn)證問題、完整性鑒別問題、數(shù)據(jù)新鮮性問題、數(shù)據(jù)廣播認(rèn)證問題.可以說,缺乏有效的可信性保障嚴(yán)重阻礙了無線傳感器網(wǎng)絡(luò)的發(fā)展[3-5].如何從安全認(rèn)證機制上,實現(xiàn)計算系統(tǒng)平臺安全、可信賴地運行,已經(jīng)成為亟待解決的核心問題.
針對這一問題,國內(nèi)外的研究學(xué)者對WSN的安全認(rèn)證做了大量的研究工作.其中Fantacci等[6]提出了分布式節(jié)點認(rèn)證模型,該方案不需要基站作為認(rèn)證的中心.Han等[7-8]提出的方案,能夠提高認(rèn)證的效率,但在初始化認(rèn)證過程中離不開第三方的參與,認(rèn)證效率低,通信開銷也較大.Oscar 等人[9]提出了一種輕量級的 WSN 認(rèn)證方案,建立通信雙方的共享密鑰.文獻[10]提出了一種 WSN 中改進的輕量級認(rèn)證和密鑰管理方案.該方案利用消息認(rèn)證碼保證了傳輸信息的安全性,同時驗證共享密鑰的正確性,能有效抵抗物理攻擊、拒絕服務(wù)攻擊(DoS)、冒用和欺騙攻擊等.文獻[11]提出了無線傳感器網(wǎng)絡(luò)的輕量級安全體系和安全算法,在不需要第三方認(rèn)證中心 CA的參與下,可減少認(rèn)證過程中的計算開銷和通信開銷.
已有的研究大都基于中央授權(quán)驗證機制,需要一個中央集權(quán)實體對各傳感結(jié)點進行驗證.每個節(jié)點的認(rèn)證都指向同一個中央認(rèn)證實體,該實體存儲所有信息,并根據(jù)信息完成認(rèn)證和授權(quán).這種方式存在單點故障問題,當(dāng)集中式服務(wù)器出現(xiàn)問題時,所有認(rèn)證都將失效.區(qū)塊鏈作為比特幣的核心技術(shù),可以廣泛地應(yīng)用到金融、供應(yīng)鏈、版權(quán)保護、物聯(lián)網(wǎng)、公共服務(wù)等領(lǐng)域[12].區(qū)塊鏈采用分布式技術(shù),以密碼學(xué)算法為基礎(chǔ),通過點對點網(wǎng)絡(luò)構(gòu)建分布式賬簿[13].由于區(qū)塊鏈技術(shù)沒有中機構(gòu),也從根本上解決了基于中央集權(quán)模型帶來的安全問題,并通過非對稱加密、數(shù)字簽名、哈希函數(shù)和共識算法保證了交易的安全、可追溯和數(shù)據(jù)的一致性.雖然區(qū)塊鏈技術(shù)有諸多優(yōu)點和先天的安全可信認(rèn)證保障,但現(xiàn)有的區(qū)塊鏈技術(shù)解決方案并不能直接應(yīng)用到無線傳感網(wǎng)絡(luò)環(huán)境中,主要有以下原因:
共識機制復(fù)雜:區(qū)塊鏈中采用的共識機制(POW),需要大量的計算資源,遠(yuǎn)遠(yuǎn)超出大多數(shù)無線傳感網(wǎng)絡(luò)設(shè)備的能力[14].
資源開銷巨大:區(qū)塊鏈中的區(qū)塊都需要廣播到每一個節(jié)點進行存儲和驗證.對于無線傳感網(wǎng)絡(luò)設(shè)備來說,這將耗費大量的能量和帶寬資源.
延遲高:用區(qū)塊鏈技術(shù)生成一個新的區(qū)塊需要較長的延遲,這是無線傳感網(wǎng)絡(luò)不可接受的.例如,在比特幣(bitcoin)中,一筆交易需要10分鐘才能確認(rèn).
由于無線傳感設(shè)備存在較大的局限,如計算能力較弱,內(nèi)存空間較小,帶寬資源有限等,這與現(xiàn)有基于區(qū)塊鏈的重量級分布式安全解決方案的要求不兼容.針對無線傳感設(shè)備安全需求和資源限制,筆者將區(qū)塊鏈技術(shù)應(yīng)用到無線傳感網(wǎng)絡(luò),構(gòu)建輕量級區(qū)塊鏈結(jié)構(gòu),建立基于區(qū)塊鏈技術(shù)的無線傳感網(wǎng)絡(luò)可信認(rèn)證模型來解決物聯(lián)網(wǎng)的安全和隱私問題.
區(qū)塊鏈技術(shù)最早由學(xué)者中本聰(Satoshi Nakamoto)在其設(shè)計的一種電子貨幣-比特幣中提出.比特幣是一種去中心化的點對點式的電子現(xiàn)金系統(tǒng)[15],該系統(tǒng)的核心是維護各賬戶之間網(wǎng)絡(luò)交易的公共賬簿,區(qū)塊鏈?zhǔn)菍崿F(xiàn)公共賬簿完成整個交易最重要的技術(shù).接下來筆者對區(qū)塊鏈技術(shù)進行簡單的介紹.
關(guān)于區(qū)塊鏈概念,到目前為止并沒有形成統(tǒng)一的定義.它是一種將交易的信息以時間先后順序?qū)懭雲(yún)^(qū)塊,并采用密碼學(xué)技術(shù)和鏈?zhǔn)浇Y(jié)構(gòu)來確保內(nèi)容不能被篡改的分布式賬簿技術(shù).它由多種技術(shù)組成,主要包括:密碼學(xué)技術(shù)、點對點的網(wǎng)絡(luò)技術(shù)、激勵機制、共識機制、鏈上腳本等.區(qū)塊鏈技術(shù)與集中認(rèn)證的根本區(qū)別是其沒有中央機構(gòu),網(wǎng)絡(luò)中的每個節(jié)點都擁有同等的權(quán)利,且它們都存儲了歷史交易的所有記錄,即賬簿.網(wǎng)絡(luò)中的每一筆交易,需要大多數(shù)節(jié)點進行有效性驗證來達(dá)成共識,并采用非對稱加密和數(shù)字簽名等密碼學(xué)技術(shù)來保證交易的安全,交易完成后生成新的塊鏈接到歷史區(qū)塊上形成新的賬簿,然后通過點對點網(wǎng)絡(luò)將新的賬簿分發(fā)給各個節(jié)點,這也保證了每個節(jié)點上存儲的交易賬簿的一致性.區(qū)塊鏈,也就是賬簿上存放的是交易的哈希值,它采用Merkle樹的形式存儲在各個區(qū)塊中,這些區(qū)塊按照時間先后順序構(gòu)成鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu).通過生成時間和哈希值,在鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)上可以快速查找定位每一筆交易數(shù)據(jù).由于后一區(qū)塊哈希值的生成以前一區(qū)塊交易數(shù)據(jù)為基礎(chǔ),這就決定了區(qū)塊內(nèi)的交易數(shù)據(jù)的不可篡改特性.因為這種鏈?zhǔn)酱鎯Y(jié)構(gòu)一旦更改其中一個區(qū)塊,將導(dǎo)致后續(xù)所有區(qū)塊數(shù)據(jù)發(fā)生變化.
如圖1[14]所示,區(qū)塊鏈技術(shù)的發(fā)展經(jīng)歷了兩個版本,從最早比特幣中所使用的技術(shù)發(fā)展到以太坊為代表的區(qū)塊鏈2.0技術(shù).這兩個版本都由數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層、激勵層和應(yīng)用層組成.數(shù)據(jù)層主要負(fù)責(zé)數(shù)據(jù)的存儲和安全保障,通過鏈?zhǔn)浇Y(jié)構(gòu)和Merkle樹來存儲區(qū)塊數(shù)據(jù),并采用數(shù)字簽名、非對稱加密、哈希函數(shù)等技術(shù)來確保區(qū)塊鏈上的內(nèi)容不能被篡改.網(wǎng)絡(luò)層主要是確定區(qū)塊鏈所采用的網(wǎng)絡(luò)類型(P2P網(wǎng)絡(luò)),另外,還規(guī)定了信息的分發(fā)機制及驗證機制.共識層主要解決區(qū)塊鏈分布式存儲所產(chǎn)生的內(nèi)容一致性問題,在比特幣中,也就是區(qū)塊鏈1.0的技術(shù)架構(gòu)中,采用工作量證明(POW)來保證內(nèi)容的一致性.由于工作量證明機制需要大量的算力,因此并不適合于所有的場景,研究者們又提出了權(quán)益證明(POS)、授權(quán)股份證明(DPOS),如圖1(b)所示.激勵層主要采用獎勵機制,對做出貢獻的節(jié)點進行獎勵,從而保證大部分節(jié)點的誠實性.應(yīng)用層主要實現(xiàn)交易和記賬功能,在區(qū)塊鏈2.0的技術(shù)架構(gòu)中提供了各種腳本和虛擬機供開發(fā)者使用.基于此,用戶可以開發(fā)多種類型的智能合約應(yīng)用[14].
區(qū)塊鏈結(jié)構(gòu)如圖2所示,一個區(qū)塊主要包括區(qū)塊頭和區(qū)塊體(區(qū)塊數(shù)據(jù)).區(qū)塊頭主要由前一塊的哈希值、時間戳、難度、隨機數(shù)、Merkle樹根組成.前一塊的哈希值用來連接下一個區(qū)塊,這樣每一個區(qū)塊都鏈接在一起,從而形成一個鏈條.另外引用前一區(qū)塊的哈希值也可用來保障數(shù)據(jù)不被篡改,因為每個區(qū)塊都存放了上一區(qū)塊的哈希值,如果某一區(qū)塊發(fā)生變化會導(dǎo)致哈希值的變化,從而導(dǎo)致該塊后的所有區(qū)塊發(fā)生變化.時間戳指的是區(qū)塊創(chuàng)建的時間,在比特幣中是挖礦節(jié)點算出滿足條件的結(jié)果,并填充區(qū)塊的時間.難度指的是區(qū)塊目標(biāo)值的難度,隨機數(shù)用于計算區(qū)塊目標(biāo)值.Merkle樹用來存儲區(qū)塊數(shù)據(jù),對應(yīng)的是區(qū)塊體,Merkle樹根存放在區(qū)塊頭中.在比特幣中,多個交易單合在一起形成一個區(qū)塊的區(qū)塊體.這些數(shù)據(jù)以哈希樹的形式記錄存放.區(qū)塊頭中包含前一個區(qū)塊的哈希值.
區(qū)塊鏈的獨特結(jié)構(gòu)決定了其具有不可篡改的特性,并且采用非對稱加密、數(shù)字簽名、哈希函數(shù)和共識算法等技術(shù)保證了數(shù)據(jù)的安全.但是,典型區(qū)塊鏈技術(shù)對資源的要求較高,這也是其沒有在物聯(lián)網(wǎng)中廣泛應(yīng)用的重要原因.接下來筆者將詳細(xì)介紹基于輕量級區(qū)塊鏈技術(shù)的無線傳感網(wǎng)絡(luò)的安全認(rèn)證模型.
由于無線傳感網(wǎng)絡(luò)設(shè)備計算能力較弱,內(nèi)存空間較小,帶寬資源有限,這也導(dǎo)致傳統(tǒng)的區(qū)塊鏈技術(shù)不能直接應(yīng)用于無線傳感網(wǎng)絡(luò).本節(jié)將詳細(xì)介紹一種基于輕量級區(qū)塊鏈技術(shù)的無線傳感網(wǎng)絡(luò)的安全認(rèn)證模型.
由于比特幣區(qū)塊鏈結(jié)構(gòu)龐大,雖然采用工作量證明(POW)能夠保證內(nèi)容的一致性,但這同時需要終端設(shè)備擁有大量的計算資源,而無線傳感設(shè)備往往是不具備這樣的計算能力.另外從區(qū)塊的產(chǎn)生到交易的完全認(rèn)定需要較長的時間,大約10分鐘.這么長的延遲對于無線傳感網(wǎng)絡(luò)是不可接受的.再者由于無線傳感設(shè)備的存儲資源有限,在區(qū)塊鏈中并不能存儲所有傳輸?shù)木唧w數(shù)據(jù).因此照搬區(qū)塊鏈原有結(jié)構(gòu)并不能滿足無線傳感網(wǎng)絡(luò)的需求.筆者采用基于有向非循環(huán)圖(DAG)結(jié)構(gòu)來生成區(qū)塊鏈,其具有更快的交易速度,需要更少的資源,也不需要挖礦.DAG鏈仍然采用的是去中心化的網(wǎng)絡(luò)結(jié)構(gòu)來管理網(wǎng)絡(luò)節(jié)點,這種結(jié)構(gòu)的特點是網(wǎng)絡(luò)中的每個節(jié)點都是對等、自治、開放和公平的.圖3 給出了DAG鏈與比特幣區(qū)塊鏈的區(qū)別.比特幣區(qū)塊鏈在交易生成區(qū)塊時是選擇賬簿中的最長鏈進行追加,也就是說,它對賬簿的操作是串行的,這將減慢區(qū)塊鏈的生成速度.而DAG則是在網(wǎng)絡(luò)中找2個或更多前驅(qū)交易來進行驗證,同時將本次交易指向它們.在比特幣的每一個區(qū)塊中包含多次交易,由于每一個區(qū)塊生成時間大約是10分鐘,因此區(qū)塊中的每筆交易的成交時間也需要這么長.而DAG采用的是更細(xì)粒度區(qū)塊,他將每一次交易都作為一個區(qū)塊,這樣可以快速地生成區(qū)塊.更重要的是,DAG鏈天然支持并發(fā)操作,從而能在很大程度上提高系統(tǒng)的吞吐量[16].
一個DAG鏈指的是一個無環(huán)有向圖G=(V,E),其中,V代表圖中節(jié)點的集合,一個節(jié)點V就是區(qū)塊中的一個事務(wù)或交易單元,E表示邊的集合,一條邊e代表節(jié)點之間的指向關(guān)系.正因為DAG鏈?zhǔn)怯邢蚝蜔o環(huán)的,這使得它構(gòu)成的賬簿添加節(jié)點簡單方便,但刪除節(jié)點很難,且整個賬簿可確定交易全序.
在比特幣區(qū)塊中,節(jié)點通過工作量證明(POW)準(zhǔn)則來獲得賬簿的記賬權(quán),POW需要耗費大量的計算資源.雖然學(xué)者們提出了多種改進方案,如POS、PPOS、DPOS等,但對于無線傳感網(wǎng)絡(luò)來說,這些方法所消耗的資源也是不可接收的.本模型采用IOTA技術(shù),IOTA的設(shè)計非常適合于物聯(lián)網(wǎng)環(huán)境,它使用Tangle(纏結(jié))技術(shù)來構(gòu)建新型的分布賬簿.在一個新的事務(wù)或交易發(fā)起時,需要在Tangle中找兩筆之前的其他交易去驗證,并指向這兩個節(jié)點,整個賬簿就這樣擴展下去.整個交易的共識機制采用關(guān)鍵節(jié)點和隨機游走方法,首先根據(jù)關(guān)鍵節(jié)點檢測算法[17],在整個事務(wù)網(wǎng)絡(luò)中選擇前K個重要節(jié)點,K可以根據(jù)實際環(huán)境進行調(diào)整;然后在前K個重要節(jié)點中隨機選擇一個或多個節(jié)點,以這些節(jié)點為起點采用隨機游走算法選擇N個節(jié)點進行一致性驗證,N根據(jù)實際環(huán)境安全需要可選擇15%,30%,50%等數(shù)量的節(jié)點.
無線傳感網(wǎng)絡(luò)可能包含大量節(jié)點,為了確??缮炜s性,假設(shè)區(qū)塊鏈由網(wǎng)絡(luò)中的部分節(jié)點進行管理.這里使用DBSCAN[18]聚類算法將無線傳感網(wǎng)絡(luò)中的節(jié)點分簇,每簇節(jié)點選一個節(jié)點作為簇首.被選作簇首的節(jié)點將長時間保持在線狀態(tài),并具有足夠的資源來處理區(qū)塊的計算.筆者將無線傳感網(wǎng)絡(luò)分為兩層:一個是本地網(wǎng)絡(luò),也就是各簇內(nèi)結(jié)點間交換傳輸信息,采用集中式授權(quán)管理,由簇首節(jié)點(匯聚節(jié)點)負(fù)責(zé);另一個是全局網(wǎng)絡(luò),各簇首之間及與服務(wù)器之間的通信采用基于DAG區(qū)塊鏈方式授權(quán).無線傳感網(wǎng)絡(luò)體系結(jié)構(gòu)如圖4 所示.所有的簇首結(jié)點負(fù)責(zé)區(qū)塊鏈的管理.此外,各個簇首節(jié)點負(fù)責(zé)和簇內(nèi)其他結(jié)點之間的通信和數(shù)據(jù)傳輸.
2.3.1 本地網(wǎng)絡(luò)認(rèn)證
由于本地網(wǎng)絡(luò)無線傳感節(jié)點擁有的資源有限,所以簇內(nèi)節(jié)點數(shù)據(jù)傳輸認(rèn)證采用輕量級認(rèn)證方案(Lightweight based Authentication Scheme,LAS),采用非對稱加密進行保護,見圖5.非對稱加密解決了密鑰分發(fā)問題,由簇首節(jié)點存儲,也可以存儲在簇內(nèi)的其他節(jié)點,私鑰只由節(jié)點自身存儲.可以根據(jù)需要周期性地替換公鑰和私鑰,私鑰由寫入傳感器中的算法(橢圓曲線ECC公鑰算法)自動生成,然后將公鑰發(fā)給簇首節(jié)點,簇首節(jié)點再將公鑰發(fā)給可信的簇內(nèi)節(jié)點.在數(shù)據(jù)傳輸之前都要先進行認(rèn)證,在進行認(rèn)證時,簇首節(jié)點可以根據(jù)公鑰來驗證連接節(jié)點的安全性.為了進一步提高可信度,可以在本地網(wǎng)絡(luò)隨機地選擇幾個節(jié)點,使用本地網(wǎng)絡(luò)節(jié)點存儲的公鑰來解密,驗證結(jié)果是否一致.
2.3.2 全局網(wǎng)絡(luò)認(rèn)證模型
全局網(wǎng)絡(luò)認(rèn)證采用基于DAG有向無環(huán)圖的數(shù)據(jù)結(jié)構(gòu),如圖3(b)所示.基于比特幣的區(qū)塊鏈生成需要花費大量的時間和資源.一個區(qū)塊的驗證需要礦工挖礦進行大量的計算,整個生成過程需要花費10分鐘.而在無線傳感網(wǎng)絡(luò)中,要求通信得到及時的響應(yīng),因此挖礦機制不可行.筆者采用基于IOTA的方法,在全局網(wǎng)絡(luò)中一個簇首節(jié)點要發(fā)起事務(wù)時,需要在鏈表中找2項其他事務(wù)去驗證,并且將自己新發(fā)起的事務(wù)指向這兩項事務(wù),整個鏈表就這樣一點一點增加.這樣設(shè)計的優(yōu)點是去除傳統(tǒng)的挖礦工作,全局網(wǎng)絡(luò)中驗證事務(wù)的工作轉(zhuǎn)移到了每個傳感器節(jié)點上.也就是傳感器節(jié)點想要發(fā)起一項事務(wù),就必須幫著一起驗證網(wǎng)絡(luò)中的其他事務(wù).全局網(wǎng)絡(luò)認(rèn)證模型如圖6所示,其中事務(wù)N表示無線傳感網(wǎng)絡(luò)中處理的業(yè)務(wù).
2.3.3 數(shù)據(jù)結(jié)構(gòu)
在輕量級區(qū)塊中,數(shù)據(jù)流與事務(wù)流是分開的.首先,請求者需要事先通過認(rèn)證和授權(quán),在通過認(rèn)證和授權(quán)后可以訪問數(shù)據(jù).類似地,對于存儲事務(wù),由請求者創(chuàng)建的數(shù)據(jù)與事務(wù)是分開發(fā)送的.所有事務(wù)存儲在由簇首管理的公共區(qū)塊鏈中.區(qū)塊鏈中的每個塊都包含兩個主要部分,即事務(wù)和父區(qū)塊Hash.公共區(qū)鏈中前一個塊的哈希確保了不變性,如果攻擊者試圖更改先前存儲的交易,則存儲在下一個塊中的相應(yīng)塊的哈希將不再是一致的,因此將暴露此攻擊.數(shù)據(jù)結(jié)構(gòu)如圖7所示.
當(dāng)簇首接收到事務(wù)時,它首先檢查該事務(wù)的被請求者是否包含在其簇內(nèi).簇首維護一個密鑰列表,包含了請求者和被請求者的密鑰對(本質(zhì)上是簡化的訪問控制列表).根據(jù)密鑰對來驗證是否有權(quán)發(fā)送消息.分組成員可以更新此密鑰列表,以允許其他節(jié)點向其發(fā)送事務(wù).被請求者可以將簇首密鑰列表中的請求者值設(shè)置為“廣播”,這意味著它將接收包含其公鑰的所有交易作為被請求者的公鑰.如果傳入事務(wù)的請求者和被請求者與密鑰列表中的條目匹配,則簇首將事務(wù)發(fā)送給被請求者.如果事務(wù)中的被請求者不屬于當(dāng)前的分組,則將該事務(wù)廣播到所有其他簇首.所有待處理的事務(wù)都存儲在每個簇首的事務(wù)池中.
無線傳感網(wǎng)絡(luò)的開放性和節(jié)點資源受限使得傳統(tǒng)的安全認(rèn)證方法不能有效地在無線傳感網(wǎng)絡(luò)中使用.筆者提出了一個基于區(qū)塊鏈的無線傳感網(wǎng)絡(luò)安全認(rèn)證模型,該模型采用集中授權(quán)和非集中授權(quán)相結(jié)合的方式,并通過非對稱加密、哈希函數(shù)和共識算法保證交易的安全、防篡改和數(shù)據(jù)的一致性.模型中本地節(jié)點采用集中授權(quán)方式,計算量很小,交互的消息少,消耗資源也很小.全局網(wǎng)絡(luò)采用Tangle技術(shù)來構(gòu)建輕量級區(qū)塊鏈,并通過關(guān)鍵節(jié)點檢測和隨機游走算法來建立共識機制,保證數(shù)據(jù)的一致性.