宋晴晴,徐 輝,楊冬蕾,佟 寧
(大連交通大學(xué)軟件學(xué)院,遼寧 大連 116028)
物聯(lián)網(wǎng)作為21 世紀(jì)的新興戰(zhàn)略,是互聯(lián)網(wǎng)的技術(shù)延伸,也是互聯(lián)網(wǎng)之后一場更大的技術(shù)革命。物聯(lián)網(wǎng)的一個關(guān)鍵應(yīng)用場景在于結(jié)合工業(yè)場景,這二者的結(jié)合也被稱為工業(yè)4.0[1]。然而,隨著物聯(lián)網(wǎng)互通互聯(lián)程度的進(jìn)一步加深,其雖然給生產(chǎn)和制造業(yè)帶來了更多機會,但也為各種類型的網(wǎng)絡(luò)攻擊創(chuàng)造了環(huán)境。因此,有必要對物聯(lián)網(wǎng)設(shè)備層所采集的特殊數(shù)據(jù)進(jìn)行身份認(rèn)證,以高效、安全地維護物聯(lián)網(wǎng)安全。機構(gòu)和組織聯(lián)合會在分布式數(shù)據(jù)庫中集體記錄其物聯(lián)網(wǎng)身份和運營信息,同時將這些信息提供給聯(lián)合會所有成員是一種保障物聯(lián)網(wǎng)安全的有效手段。本文設(shè)計了由聯(lián)盟鏈主體、低層設(shè)備節(jié)點及高層設(shè)備節(jié)點組成的聯(lián)盟鏈。低層設(shè)備節(jié)點為物聯(lián)網(wǎng)設(shè)備節(jié)點,高層設(shè)備節(jié)點為機構(gòu)或組織所代表的節(jié)點。聯(lián)盟鏈對這些節(jié)點信息進(jìn)行去中心化存儲,并對身份認(rèn)證結(jié)果進(jìn)行存儲,每個組織利用智能合約認(rèn)證物聯(lián)網(wǎng)節(jié)點的身份標(biāo)識和物聯(lián)網(wǎng)設(shè)備的使用功能。聯(lián)盟鏈有義務(wù)管理物聯(lián)網(wǎng)節(jié)點信息,物聯(lián)網(wǎng)節(jié)點向多個組織申請加入聯(lián)盟鏈,以完成初始化。物聯(lián)網(wǎng)節(jié)點必須在聯(lián)盟鏈中完成物聯(lián)網(wǎng)設(shè)備注冊,上傳節(jié)點信息,并在再次申請加入網(wǎng)絡(luò)時向聯(lián)盟鏈提交身份信息。第二次加入網(wǎng)絡(luò)時,需要向構(gòu)建好的聯(lián)盟鏈提交主要認(rèn)證信息,高層節(jié)點需要接受該請求,之后創(chuàng)建錢包。低層設(shè)備節(jié)點同時將需認(rèn)證設(shè)備與已認(rèn)證設(shè)備節(jié)點進(jìn)行關(guān)聯(lián),以方便后續(xù)操作。
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,從零散的設(shè)備接入到萬物互聯(lián),實現(xiàn)了對社會溝通范圍、模式、渠道和效率的全方位改變。然而,物聯(lián)網(wǎng)在給人們工作、生活帶來便利的同時,也引發(fā)了一系列新的技術(shù)和社會問題[2]。無處不在的連接將導(dǎo)致嚴(yán)重的安全隱患,因此物聯(lián)網(wǎng)設(shè)備的身份認(rèn)證極其重要[3]。近年來,身份認(rèn)證技術(shù)解決了物聯(lián)網(wǎng)的部分安全問題,為保障物聯(lián)網(wǎng)安全提供了一個有效思路。基于生物識別技術(shù)的身份認(rèn)證策略相比傳統(tǒng)的身份鑒別技術(shù)具有安全性高、存在唯一性特征等優(yōu)點,但該方法無法進(jìn)行M2M 身份驗證,不適用于普遍的工業(yè)環(huán)境;Li等[4-5]提出一種將生物信息與密碼相結(jié)合的雙因素識別方法;Deebak等[6]提出將智能卡與生物信息結(jié)合進(jìn)行認(rèn)證,但該方法需要某些特殊硬件來達(dá)到識別認(rèn)證目的;Beltran 等[7]提出一種基于令牌的聯(lián)合身份認(rèn)證方法,以解決在物聯(lián)網(wǎng)某些場景中低功耗設(shè)備的能量限制問題。
以上研究成果均基于傳統(tǒng)的身份認(rèn)證方法,其所具備的中心化結(jié)構(gòu)很難滿足如今的物聯(lián)網(wǎng)體系。而區(qū)塊鏈作為一個去中心化技術(shù),其具有的不可篡改、可追溯、公開透明等特性可作為網(wǎng)絡(luò)安全的一個保障。Bartolomeu 等[8]提出基于物聯(lián)網(wǎng)的自我主權(quán)身份(SSI)技術(shù),該技術(shù)以區(qū)塊鏈技術(shù)為基礎(chǔ)提供去中心化身份標(biāo)識符(DID),以此構(gòu)建一個無需集中信任的模型;Yu 等[9]提出一種基于區(qū)塊鏈的智能工業(yè)應(yīng)用選擇性撤銷匿名身份驗證方法,以解決智能工業(yè)環(huán)境中的憑證撤銷問題;Shen 等[10]提出一種區(qū)塊鏈輔助安全設(shè)備認(rèn)證機制BASA,以解決不同域之間設(shè)備的認(rèn)證問題;Zhang 等[11]構(gòu)建一個大規(guī)模異構(gòu)WSNs 協(xié)作身份驗證協(xié)議,以確保物聯(lián)網(wǎng)環(huán)境中數(shù)據(jù)來源的可靠性;Wang 等[12]設(shè)計一個協(xié)作驗證協(xié)議,包括一個內(nèi)存效率高且快速的驗證人定位器、一個評估設(shè)備可信度的信任模型,以及一個用于動態(tài)更新和撤銷驗證的協(xié)議套件,以高效地驗證物聯(lián)網(wǎng)設(shè)備。
以上方法雖然在某種程度上解決了物聯(lián)網(wǎng)終端設(shè)備的可信性問題,但是基于集中式的身份認(rèn)證方法存在若服務(wù)端遭受攻擊將導(dǎo)致整個系統(tǒng)無法使用的問題,基于區(qū)塊鏈的身份認(rèn)證方法存在適用范圍受限的問題。由于聯(lián)盟鏈大多基于多個組織或機構(gòu)集體背書產(chǎn)生的信用,因此可很大程度上提高傳統(tǒng)區(qū)塊鏈的效率與成本優(yōu)勢。因此,本文提出基于聯(lián)盟鏈的物聯(lián)網(wǎng)設(shè)備身份認(rèn)證方法,很好地解決了多個節(jié)點之間相互不信任的問題,對推進(jìn)物聯(lián)網(wǎng)技術(shù)的大范圍安全應(yīng)用具有重要意義。
聯(lián)盟鏈?zhǔn)菐讉€私有鏈的集合,是由幾個機構(gòu)控制的區(qū)塊鏈,每個組織或機構(gòu)控制一個或多個節(jié)點[13]。其數(shù)據(jù)只允許系統(tǒng)中的不同機構(gòu)讀取、寫入或傳輸。通常情況下,聯(lián)盟鏈中的每個節(jié)點都有一個相應(yīng)的實體組織,允許其加入和離開網(wǎng)絡(luò)。各個機構(gòu)組織形成一個利益相關(guān)者聯(lián)盟,以維護區(qū)塊鏈安全。
物聯(lián)網(wǎng)(IoT)是目前的研究熱點,廣泛應(yīng)用于網(wǎng)絡(luò)產(chǎn)品、系統(tǒng)和傳感器中,但全球?qū)τ谖锫?lián)網(wǎng)尚沒有統(tǒng)一標(biāo)準(zhǔn)[14-15]。目前物聯(lián)網(wǎng)的整體系統(tǒng)架構(gòu)主要分為6 層:數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層、激勵層、合約層和應(yīng)用層。
智能合約可被視為區(qū)塊鏈技術(shù)的一大進(jìn)步。在20 世紀(jì)90 年代,智能合約作為一種計算機化的交易協(xié)議被提出,其是一種執(zhí)行協(xié)議的合同條款[16]。智能合約中嵌入的合同條款將在滿足特定條件時自動執(zhí)行。智能合約是在區(qū)塊鏈上執(zhí)行的,經(jīng)批準(zhǔn)的合同條款被轉(zhuǎn)換成可執(zhí)行的計算機程序,合同條款之間的邏輯聯(lián)系也以程序中邏輯流的形式被保留。每個合同語句的執(zhí)行都被記錄為存儲在區(qū)塊鏈中的不可變交易。而且,開發(fā)人員可為合同中的每個功能分配訪問權(quán)限,一旦智能合約中的任何條件得到滿足,被觸發(fā)的語句將以可預(yù)測的方式自動執(zhí)行相應(yīng)功能。
本文研究目的是在實現(xiàn)物聯(lián)網(wǎng)設(shè)備身份認(rèn)證的同時,將認(rèn)證結(jié)果存儲在聯(lián)盟鏈中。在需要使用物聯(lián)網(wǎng)設(shè)備時,設(shè)備的所有者可將用戶信息,例如用戶名和密碼存儲在服務(wù)器中。該服務(wù)器一般由中心化機構(gòu)統(tǒng)一代理,一旦當(dāng)用戶或設(shè)備需要登錄時,可使用該用戶已存儲的信息通過中心化服務(wù)器進(jìn)行對比。如果對比成功,則允許該用戶設(shè)備登錄。本文研究一個基于聯(lián)盟鏈或產(chǎn)業(yè)鏈網(wǎng)絡(luò)的分布式服務(wù)器物聯(lián)網(wǎng)認(rèn)證系統(tǒng),該系統(tǒng)中不同物聯(lián)網(wǎng)設(shè)備之間或物聯(lián)網(wǎng)設(shè)備與聯(lián)盟鏈組織之間進(jìn)行一對一通信。同時,這些物聯(lián)網(wǎng)節(jié)點的信息是通過使用公共密鑰的非對稱加密算法來識別的,因為在具體通信過程中,物聯(lián)網(wǎng)設(shè)備的身份信息及區(qū)塊鏈節(jié)點信息驗證的安全過程需要得到保護。
通過區(qū)塊鏈的去中心化特性,將物聯(lián)網(wǎng)設(shè)備的身份認(rèn)證信息進(jìn)行去中心化存儲,以此降低認(rèn)證過程的不安全因素。物聯(lián)網(wǎng)身份認(rèn)證信息分布式存儲系統(tǒng)整體架構(gòu)如圖1所示。物聯(lián)網(wǎng)節(jié)點的第一個請求被發(fā)送到聯(lián)盟鏈,聯(lián)盟鏈處理發(fā)送來的信息,共識根據(jù)算法生成一個新區(qū)塊。聯(lián)盟鏈利用信息處理模塊對物聯(lián)網(wǎng)節(jié)點信息進(jìn)行處理,同時將處理結(jié)果發(fā)送給對外接口層。如果該設(shè)備第一次沒有請求認(rèn)證,聯(lián)盟鏈則會由現(xiàn)有數(shù)據(jù),主要包括本地存儲或之前維護的數(shù)據(jù)對此節(jié)點進(jìn)行驗證。

Fig.1 Systematic entirety structure圖1 系統(tǒng)整體架構(gòu)
聯(lián)盟鏈中最主要的節(jié)點就是低層設(shè)備,也即物聯(lián)網(wǎng)設(shè)備,因為物聯(lián)網(wǎng)設(shè)備所提供的信息是構(gòu)成此網(wǎng)絡(luò)的核心要素。物聯(lián)網(wǎng)設(shè)備通過各種通信協(xié)議,如WiFi、4G、Lorea 和NB-ITT 等與聯(lián)盟鏈交換與傳輸信息。在初始化設(shè)備時,首先需要啟動注冊請求,通過調(diào)用機構(gòu)提供的API 將設(shè)備添加到聯(lián)盟鏈網(wǎng)絡(luò)中。一旦設(shè)備注冊完成,聯(lián)盟鏈會為該設(shè)備創(chuàng)建一個錢包,錢包的私鑰將被存儲在設(shè)備上。設(shè)備注冊聯(lián)盟鏈流程如下:①初始化設(shè)備,之后物聯(lián)網(wǎng)設(shè)備向聯(lián)盟鏈發(fā)起注冊請求;②聯(lián)盟鏈通過使用設(shè)備請求注冊的信息,借此得到物聯(lián)網(wǎng)設(shè)備ID 等唯一標(biāo)識信息;③聯(lián)盟鏈調(diào)用安全控制功能向機構(gòu)發(fā)出注冊申請;④如果注冊成功,機構(gòu)或組織獲取設(shè)備信息來獲取相應(yīng)權(quán)限;⑤注冊成功后,聯(lián)盟鏈會為該節(jié)點創(chuàng)建一個錢包,之后將私鑰發(fā)送給節(jié)點。具體流程如圖2所示。
物聯(lián)網(wǎng)設(shè)備身份認(rèn)證功能的認(rèn)證過程主要由4 個步驟構(gòu)成:首先通過SHA 256 算法將公鑰轉(zhuǎn)化為自有特殊ID;當(dāng)ID 生成后,物理設(shè)備發(fā)出加入聯(lián)盟鏈的請求;接下來需要在當(dāng)前區(qū)塊中存儲該節(jié)點身份ID 的公鑰,同時將信息存儲在當(dāng)前區(qū)塊鏈網(wǎng)絡(luò)中;最后利用智能合約技術(shù)設(shè)置低層節(jié)點的具體操作過程與操作權(quán)限。然后,此設(shè)備的用戶可通過區(qū)塊鏈交易的形式遠(yuǎn)程操作設(shè)備、查詢設(shè)備信息,或?qū)⑽锫?lián)網(wǎng)設(shè)備加入網(wǎng)絡(luò)等。

Fig.2 Device registration federated chain process圖2 設(shè)備注冊聯(lián)盟鏈流程
在安全性方面,為提高整個區(qū)塊鏈網(wǎng)絡(luò)的安全性,該系統(tǒng)會對物聯(lián)網(wǎng)設(shè)備的操作預(yù)先進(jìn)行檢查。為防止惡意或危險節(jié)點發(fā)送錯誤請求,聯(lián)盟鏈在執(zhí)行智能合約之后確定設(shè)備所能夠擁有的功能。聯(lián)盟鏈驗證設(shè)備過程如圖3所示。

Fig.3 Federated chain verification equipment process圖3 聯(lián)盟鏈驗證設(shè)備過程
智能合約執(zhí)行過程如下:


在本研究中,數(shù)據(jù)層的交互信息是測試標(biāo)準(zhǔn)。當(dāng)信息從互聯(lián)網(wǎng)設(shè)備上傳時,在物聯(lián)網(wǎng)設(shè)備中創(chuàng)建一個錢包,因為區(qū)塊鏈記錄的運行直接影響到設(shè)備響應(yīng)時間。如果設(shè)備不及時向區(qū)塊發(fā)送和確認(rèn)信息,就不可能正確調(diào)查設(shè)備數(shù)據(jù)或用戶操作設(shè)備時的意圖。因此,在這項研究中需要作進(jìn)一步功能測試。
在此項研究中,區(qū)塊鏈在每次產(chǎn)生操作信息時,以及要產(chǎn)生新區(qū)塊即主區(qū)塊時,都會在區(qū)塊中記錄這些操作信息。假設(shè)節(jié)點生成了區(qū)塊,每個區(qū)塊都被認(rèn)為是等價的。為該流程構(gòu)建具體測試程序,首先在模擬構(gòu)建的系統(tǒng)中,在所模擬的終端第一次請求加入網(wǎng)絡(luò)的過程中,根據(jù)系統(tǒng)整體設(shè)計,在擁有該設(shè)備的機構(gòu)確認(rèn)之后,才可以成功加入。一旦組織或機構(gòu)確定加入,聯(lián)盟鏈則需要為該終端設(shè)備創(chuàng)建錢包,同時檢驗錢包是否生成,還需要檢查設(shè)備信息上傳過程是否成功。信息上傳完成后,該設(shè)備則需要每間隔2min 向聯(lián)盟鏈網(wǎng)絡(luò)發(fā)送身份驗證請求。該節(jié)點設(shè)備還需在聯(lián)盟鏈網(wǎng)絡(luò)中測試區(qū)塊是否成功生成以及其他具體信息。然后查看所模擬的終端設(shè)備,通過人為手段更改此設(shè)備信息后,再次每間隔2min 向聯(lián)盟鏈發(fā)送身份認(rèn)證請求,并查看身份認(rèn)證是否通過。
為該方案設(shè)計一個測試場景,檢查物聯(lián)網(wǎng)設(shè)備是否能在不同實驗環(huán)境下實現(xiàn)對設(shè)備的具體操作。所選4 臺設(shè)備的基本配置信息分別為:1 臺CPU 為英特爾i7、GPU 為英偉達(dá)MX50、RAM 為8G 的電腦;2 臺CPU 為因特爾i5、GPU分別為英特爾Graphics620 與英偉達(dá)MX150、RAM 均為4GB 的電腦;1 臺CPU 為英特爾八代i5,GPU 為英特爾UHD Graphics620、RAM 為4GB 的電腦。分別從不同設(shè)備生成錢包所需時間、區(qū)塊生成時間以及整體身份認(rèn)證所花費時間來實驗本方法的可靠性。同時,為使設(shè)備節(jié)點能夠在大規(guī)模物聯(lián)網(wǎng)場景下有效地進(jìn)行身份認(rèn)證,將上述4 臺設(shè)備對應(yīng)模擬成4 個組織機構(gòu),其上安裝Linux 系統(tǒng),并配置Java PairingBased Cryptography 相關(guān)環(huán)境。使用MATLAB R2020a 模擬此次方案,并使用Hyperledger Fabric 創(chuàng)建大規(guī)模交易,模擬海量請求下的使用場景。
根據(jù)錢包創(chuàng)建實驗結(jié)果分析,聯(lián)盟鏈設(shè)備創(chuàng)建錢包的過程與物聯(lián)網(wǎng)設(shè)備創(chuàng)建過程十分相似,都是使用密碼學(xué)相關(guān)技術(shù)為用戶創(chuàng)建錢包,同時將私鑰存放在節(jié)點中,通過創(chuàng)建的公鑰對聯(lián)盟鏈組織或機構(gòu)進(jìn)行廣播。通過實驗,不同機構(gòu)或組織生成錢包的速度如圖4所示。

Fig.4 Speed of wallets generated by different devices圖4 不同設(shè)備生成錢包的速度
由圖4 可知,生成錢包的數(shù)量不受設(shè)備因素影響,但隨著物聯(lián)網(wǎng)節(jié)點數(shù)量的增加,錢包生成的速度會略有提高。當(dāng)一個節(jié)點需要生成一個新錢包時,會有一個新區(qū)塊來存儲具體交易信息。錢包生成速度會隨著節(jié)點的增加緩慢提高,這是因為存儲交易信息區(qū)塊的增長。
上述實驗數(shù)據(jù)表明,基于聯(lián)盟鏈的物聯(lián)網(wǎng)節(jié)點身份認(rèn)證方案會伴隨著新區(qū)塊的產(chǎn)生,同時區(qū)塊中還可存儲具體信息操作過程。根據(jù)區(qū)塊生成實驗結(jié)果分析,本文還研究了創(chuàng)建區(qū)塊所需時間,并比較了在4 個不同物理平臺上更快地創(chuàng)建新字段所需時間。4 臺設(shè)備生成區(qū)塊所需時間如圖5所示。

Fig.5 Time required for four devices to generate blocks圖5 4臺設(shè)備生成區(qū)塊所需時間
從以上實驗結(jié)果可以看到,4 臺物聯(lián)網(wǎng)設(shè)備節(jié)點的生成時間都在一個適當(dāng)、合理的范圍內(nèi),并且隨著物聯(lián)網(wǎng)設(shè)備節(jié)點生成變多,其增長速度會變慢。這是由于當(dāng)區(qū)塊數(shù)量相對較多時,拜占庭算法的速度較慢,因為網(wǎng)絡(luò)通信很重要,節(jié)點必須協(xié)調(diào)生成新區(qū)塊。
本文的研究重點在于物聯(lián)網(wǎng)設(shè)備的身份認(rèn)證。當(dāng)物聯(lián)網(wǎng)節(jié)點將錢包創(chuàng)建完成后,這些設(shè)備需要加入聯(lián)盟鏈網(wǎng)路,在此過程中需要設(shè)備身份驗證以保證物聯(lián)網(wǎng)安全。實驗主要測試這些物聯(lián)網(wǎng)設(shè)備能否成功加入聯(lián)盟鏈,身份認(rèn)證結(jié)果分析如圖6所示。

Fig.6 Analysis of identity authentication results圖6 身份認(rèn)證結(jié)果分析
根據(jù)實驗結(jié)果,可看到認(rèn)證成功和不成功的所需時間有所差異。時間上的差異在于認(rèn)證后的操作,如果認(rèn)證成功,組織會對每個設(shè)備進(jìn)行訪問控制,如果認(rèn)證失敗則不會進(jìn)行。
本文在區(qū)塊鏈基礎(chǔ)上構(gòu)建一個基于聯(lián)盟鏈的物聯(lián)網(wǎng)身份認(rèn)證方案,實現(xiàn)去中心化的身份認(rèn)證系統(tǒng)以及區(qū)塊與區(qū)塊之間的點對點通信。每個區(qū)塊除包含區(qū)塊頭的信息外,還包含關(guān)于物聯(lián)網(wǎng)身份認(rèn)證的交易輸入和交易輸出。一旦記錄在區(qū)塊中,則這些數(shù)據(jù)不可逆。當(dāng)區(qū)塊鏈系統(tǒng)建成后,通過對此平臺的分析及測試,使得此平臺更加符合物聯(lián)網(wǎng)特定場景,從而促進(jìn)物聯(lián)網(wǎng)和區(qū)塊鏈技術(shù)的發(fā)展,這對于物聯(lián)網(wǎng)與區(qū)塊鏈在安全方面的技術(shù)融合具有重大意義。
使用區(qū)塊鏈技術(shù)來認(rèn)證物聯(lián)網(wǎng)設(shè)備,實現(xiàn)物聯(lián)網(wǎng)設(shè)備的安全認(rèn)證,對于保障物聯(lián)網(wǎng)安全具有重要意義。但是,從整個物聯(lián)網(wǎng)安全身份認(rèn)證體系來看,還有很大的發(fā)展空間,很多問題需要作進(jìn)一步研究。首先,物聯(lián)網(wǎng)設(shè)備節(jié)點本身,即使是輕量級節(jié)點,其處理速度和存儲空間也是有限的,隨著物聯(lián)網(wǎng)的發(fā)展,區(qū)塊創(chuàng)建數(shù)量的增加給設(shè)備存儲帶來了挑戰(zhàn)。此外,設(shè)備在聯(lián)盟鏈中上傳與廣播交易信息的頻繁操作對設(shè)備的存儲容量和計算能力提出了較高要求,難以滿足大規(guī)模物聯(lián)網(wǎng)場景下的需求,因此后續(xù)將在現(xiàn)有工作基礎(chǔ)上,圍繞大規(guī)模應(yīng)用展開研究。其次,在區(qū)塊鏈共識算法下,隨著物聯(lián)網(wǎng)設(shè)備中節(jié)點數(shù)量的增加,系統(tǒng)的吞吐量會成倍增加,無疑對網(wǎng)絡(luò)性能提出了更高要求。同時,在區(qū)塊之間不選擇主節(jié)點,而是任何人都可以成為主節(jié)點來生成區(qū)塊,導(dǎo)致了區(qū)塊生成過程中聯(lián)盟鏈的性能浪費。最后,本文主要關(guān)注區(qū)塊鏈數(shù)據(jù)層的安全,缺乏從網(wǎng)絡(luò)層到應(yīng)用層的物聯(lián)網(wǎng)完整認(rèn)證系統(tǒng)。