方詩(shī)虹,彭習(xí)羽
(西南民族大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川 成都 610041)
近年來(lái),隨著互聯(lián)網(wǎng)的不斷發(fā)展,越來(lái)越多的物聯(lián)網(wǎng)[1](Internet of things,IoT)設(shè)備走進(jìn)了人們的生活,在不久的將來(lái),5G 時(shí)代的到來(lái)更加會(huì)加速I(mǎi)oT 的普及.市面上,各大互聯(lián)網(wǎng)廠商都提供了相應(yīng)IoT 的云平臺(tái)[2],用戶通過(guò)對(duì)IoT 設(shè)備安裝相應(yīng)的SDK 連接云平臺(tái),實(shí)現(xiàn)云平臺(tái)對(duì)于IoT 設(shè)備狀態(tài)的監(jiān)控和管理,使各設(shè)備間可以相互合作為用戶的生活提供更多的便利.但隨著IoT 設(shè)備的不斷增多,IoT 中所存在的問(wèn)題也日益顯現(xiàn)出來(lái),包括設(shè)備安全、個(gè)人隱私安全、架構(gòu)僵化等問(wèn)題.其中設(shè)備安全和個(gè)人隱私安全問(wèn)題較為突出,設(shè)備安全問(wèn)題主要是由于現(xiàn)在IoT 設(shè)備自身存在安全[3]漏洞以及用戶在使設(shè)備時(shí)安全意識(shí)較低造成的,使得黑客可輕易通過(guò)惡意軟件攻擊IoT 設(shè)備.個(gè)人隱私方面,當(dāng)IoT 設(shè)備被攻擊后造成信息的泄露,中心化的管理架構(gòu)使得取證人員無(wú)法進(jìn)行有效的溯源和取證,對(duì)個(gè)人隱私數(shù)據(jù)被泄露的事件不能得到有效的遏制. 如在2016 年10 月,黑客利用由150萬(wàn)臺(tái)設(shè)備組成的“僵尸網(wǎng)絡(luò)”,整垮了大半個(gè)美國(guó)互聯(lián)網(wǎng).就國(guó)內(nèi)近期而言,由人民網(wǎng)報(bào)道的,不法分子通過(guò)掃描軟件攻破攝像頭的IP 地址使成都市266 個(gè)攝像頭被網(wǎng)絡(luò)直播.要想解決這些問(wèn)題不僅需要加強(qiáng)設(shè)備自身的安全等級(jí),也需要對(duì)IoT 信息交互的記錄做好安全存儲(chǔ),目前,還沒(méi)有能夠有效的解決IoT 信息記錄安全存儲(chǔ)的方案.
隨著區(qū)塊鏈[4]技術(shù)近年來(lái)的快速發(fā)展,區(qū)塊鏈作為具有匿名性、去中心化、去可信第3 方等特性的存儲(chǔ)結(jié)構(gòu),可以作為構(gòu)建可行計(jì)算平臺(tái)的基礎(chǔ)[5]. 本文針對(duì)IoT 節(jié)點(diǎn)信息記錄過(guò)程中存在的安全問(wèn)題,使用容器和區(qū)塊鏈技術(shù),提出一個(gè)去中心化的物聯(lián)網(wǎng)信息記錄安全存儲(chǔ)的方案. 在該方案中,使用容器技術(shù)來(lái)完成區(qū)塊鏈技術(shù)中共識(shí)層的工作,解決了IoT 設(shè)備層的計(jì)算壓力,由于設(shè)備信息的記錄存儲(chǔ)在鏈?zhǔn)浇Y(jié)構(gòu)中,以便在遭受攻擊后的取證.
針對(duì)目前物聯(lián)網(wǎng)中智能設(shè)備所存在的設(shè)備安全、個(gè)人隱私保護(hù)等安全方面的問(wèn)題,將區(qū)塊鏈技術(shù)與IoT 相結(jié)合,打造一個(gè)可供用戶管理的安全系統(tǒng).本方案主要利用區(qū)塊鏈技術(shù)的信息加密、安全通信和數(shù)據(jù)不可更改等特性作為IoT 信息記錄存儲(chǔ)的可靠保障,以每一個(gè)接入IoT 設(shè)備為一個(gè)區(qū)塊鏈的參與節(jié)點(diǎn),所有信息交互記錄的數(shù)據(jù)存儲(chǔ)到區(qū)塊鏈的鏈?zhǔn)浇Y(jié)構(gòu)中,其結(jié)構(gòu)如圖1 所示,幫助物聯(lián)網(wǎng)上的設(shè)備實(shí)現(xiàn)防攻擊、防篡改和攻擊的可證可溯等功能. 幫助解決傳統(tǒng)物聯(lián)網(wǎng)中存在的信息記錄安全存儲(chǔ)問(wèn)題.
圖1 區(qū)塊鏈的結(jié)構(gòu)Fig.1 Structure of Blockchain
本方案使用區(qū)塊鏈和容器[6]技術(shù)搭建出對(duì)于IoT設(shè)備進(jìn)行信息記錄安全存儲(chǔ)的系統(tǒng),稱(chēng)之為安全系統(tǒng),主體結(jié)構(gòu)如圖2 所示. 方案中利用區(qū)塊鏈技術(shù)保證信息記錄的一致性和不可篡改性,其使用的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)可方便對(duì)于數(shù)據(jù)的溯源.使用容器技術(shù)將原始的區(qū)塊鏈節(jié)點(diǎn)容器化,將其作為區(qū)塊鏈?zhǔn)聞?wù)節(jié)點(diǎn)[7]集中部署于服務(wù)器中,方便對(duì)于整體網(wǎng)絡(luò)的管理. 下層IoT 設(shè)備節(jié)點(diǎn)將不參與上層區(qū)塊鏈網(wǎng)絡(luò)中對(duì)于工作量證明機(jī)制的計(jì)算,只負(fù)責(zé)提供信息記錄的數(shù)據(jù),每個(gè)IoT 設(shè)備節(jié)點(diǎn)對(duì)應(yīng)唯一一個(gè)容器化的區(qū)塊鏈?zhǔn)聞?wù)節(jié)點(diǎn),兩者之間通過(guò)IoT 的相關(guān)協(xié)議進(jìn)行通信. 安全系統(tǒng)還結(jié)合容器管理軟件提供方便用戶觀察的Web端,可觀察整體網(wǎng)絡(luò)節(jié)點(diǎn)的狀態(tài),包括容器節(jié)點(diǎn)的詳細(xì)信息、信息寫(xiě)入記錄、IoT 設(shè)備節(jié)點(diǎn)等.
圖2 安全系統(tǒng)基本結(jié)構(gòu)Fig.2 Basic structure of the security system
對(duì)于傳統(tǒng)的區(qū)塊鏈應(yīng)用如比特幣、以太坊[8]等,由于其共識(shí)層的計(jì)算需要大量的算力,對(duì)于傳統(tǒng)IoT設(shè)備來(lái)說(shuō),區(qū)塊鏈節(jié)點(diǎn)中的工作量證明機(jī)制對(duì)資源消耗太大,并不適合直接部署在計(jì)算能力低的傳統(tǒng)IoT節(jié)點(diǎn)中,所以本方案使用Python 語(yǔ)言編寫(xiě)了可存儲(chǔ)IoT 設(shè)備節(jié)點(diǎn)信息記錄的區(qū)塊鏈網(wǎng)絡(luò)腳本,如圖3 所示對(duì)產(chǎn)生的一筆新交易進(jìn)行處理,該算法在完成基本區(qū)塊鏈功能后,使用Python Flask 框架,將相應(yīng)的功能以Rest API 的形式暴露出來(lái),使設(shè)備節(jié)點(diǎn)可以通過(guò)常見(jiàn)的HTTP 請(qǐng)求的方式(如Get、Post)向上層區(qū)塊網(wǎng)絡(luò)中發(fā)起交易、提交數(shù)據(jù)、查詢(xún)區(qū)塊鏈網(wǎng)絡(luò)的交易信息、節(jié)點(diǎn)信息等,使用戶可通過(guò)API 的形式操控網(wǎng)絡(luò)節(jié)點(diǎn).區(qū)塊鏈中大量的計(jì)算過(guò)程被部署在服務(wù)端,減小了IoT 設(shè)備的工作壓力,以保證整體網(wǎng)絡(luò)的健壯性.在信息記錄存儲(chǔ)交易中只保存對(duì)信息的簡(jiǎn)要描述和相關(guān)哈希值,而重要的數(shù)據(jù)都保存在鏈下的設(shè)備中.進(jìn)一步將區(qū)塊鏈節(jié)點(diǎn)容器化,方便系統(tǒng)的整體遷移和節(jié)點(diǎn)的部署.使用端口映射技術(shù)將節(jié)點(diǎn)中的API映射出來(lái),IoT 設(shè)備和容器節(jié)點(diǎn)之間的數(shù)據(jù)記錄以輕便量級(jí)的數(shù)據(jù)交換格式Json 進(jìn)行傳輸,讓信息記錄的數(shù)據(jù)具有良好的可讀性方便在不同的平臺(tái)間進(jìn)行數(shù)據(jù)交換.
圖3 交易相關(guān)算法Fig.3 Trading related algorithms
常見(jiàn)的IoT 設(shè)備被攻擊的方式主要是黑客使用掃描軟件發(fā)現(xiàn)設(shè)備的IP,利用漏洞對(duì)于設(shè)備進(jìn)行信息竊取和篡改.在本方案中設(shè)備將通過(guò)物聯(lián)網(wǎng)安全協(xié)議的方式接入到網(wǎng)絡(luò)中,IoT 設(shè)備接入?yún)^(qū)塊鏈網(wǎng)絡(luò)中,安全系統(tǒng)為其分配一個(gè)新的容器節(jié)點(diǎn),該容器相應(yīng)端口被映射到與IoT 設(shè)備相同的局域網(wǎng)中,方便IoT 設(shè)備與容器進(jìn)行連接并傳輸數(shù)據(jù).在IoT 設(shè)備中提前編寫(xiě)了相應(yīng)的腳本,可以在與容器完成連接后,發(fā)送設(shè)備的基本狀態(tài)信息,使容器節(jié)點(diǎn)完成區(qū)塊鏈?zhǔn)聞?wù)節(jié)點(diǎn)的注冊(cè).注冊(cè)完成后,容器節(jié)點(diǎn)和IoT 節(jié)點(diǎn)之間可完成數(shù)據(jù)交互,如圖4 所示,設(shè)備通過(guò)HTTP 請(qǐng)求的方式發(fā)送數(shù)據(jù).容器節(jié)點(diǎn)會(huì)在相應(yīng)時(shí)間端內(nèi)對(duì)IoT 設(shè)備的狀態(tài)進(jìn)行記錄和判斷,當(dāng)IoT 節(jié)點(diǎn)被攻擊后,對(duì)應(yīng)的事務(wù)節(jié)點(diǎn)會(huì)向區(qū)塊鏈的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中寫(xiě)入IoT 信息交互的記錄并擴(kuò)散至整體的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)中,容器節(jié)點(diǎn)在相應(yīng)情況下也會(huì)自動(dòng)關(guān)閉.在整個(gè)安全系統(tǒng)中,存在監(jiān)控系統(tǒng)可以對(duì)容器和容器宿主機(jī)的狀態(tài)進(jìn)行監(jiān)控,及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)中存在的安全問(wèn)題,幫助用戶進(jìn)行管理和維護(hù).
圖4 發(fā)送數(shù)據(jù)Fig.4 Sending data
使用HTML/CSS/JavaScript 前端語(yǔ)言寫(xiě)出符合安全系統(tǒng)要求的Web 前端界面,讓用戶可以在可視化的界面管理整體的安全系統(tǒng). 在容器化事務(wù)節(jié)點(diǎn)中,使用了Rest API 可方便Web 前端訪問(wèn)并獲取后端事務(wù)節(jié)點(diǎn)的交易的信息和區(qū)塊鏈網(wǎng)絡(luò)中的鏈?zhǔn)浇Y(jié)構(gòu),如圖5 所示初始區(qū)塊鏈中的信息,在安全系統(tǒng)中還使用了Weave Scope,用于監(jiān)控容器狀態(tài)和主機(jī)狀態(tài),該軟件獲取的信息也將以Web 的方式顯示出來(lái),如圖6所示,容器節(jié)點(diǎn)的具體狀態(tài),方便用戶利用Web 平臺(tái)對(duì)整個(gè)區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行監(jiān)控,對(duì)網(wǎng)絡(luò)進(jìn)行管理和對(duì)于惡意攻擊事件的及時(shí)處理.
圖5 平臺(tái)上顯示的信息Fig.5 Information displayed on the platform
該部分從防篡改、身份鑒權(quán)兩個(gè)方面對(duì)安全系統(tǒng)進(jìn)行安全性分析,并于傳統(tǒng)的IoT 的安全性進(jìn)行了對(duì)比.
安全系統(tǒng)中鏈上存儲(chǔ)的所有信息都是經(jīng)過(guò)網(wǎng)絡(luò)中所有節(jié)點(diǎn)確認(rèn)寫(xiě)入?yún)^(qū)塊中的,并且每一筆交易都含有時(shí)間戳,在區(qū)塊中按照時(shí)間戳的順序進(jìn)行排列. 安全系統(tǒng)中的分布式共識(shí)機(jī)制[9]使信任建立在被證明可靠的密碼學(xué)算法的基礎(chǔ)之上,無(wú)需依賴(lài)可信第3方[10].數(shù)據(jù)一旦被寫(xiě)入到區(qū)塊鏈中就將無(wú)法被篡改,這是由于在區(qū)塊鏈的鏈?zhǔn)浇Y(jié)構(gòu)中,每個(gè)區(qū)塊都會(huì)記錄前一個(gè)區(qū)塊上所有數(shù)據(jù)的哈希值,如果要對(duì)已存儲(chǔ)在區(qū)塊中的數(shù)據(jù)進(jìn)行修改,至少需要整體網(wǎng)絡(luò)中51%的算力,這對(duì)于龐大的IoT 來(lái)說(shuō),想通過(guò)非法攻擊獲取幾乎是不可能的事情.安全系統(tǒng)中鏈上區(qū)塊結(jié)構(gòu)中存儲(chǔ)著IoT 節(jié)點(diǎn)原始信息記錄的哈希值,直接修改原始信息也會(huì)引起區(qū)塊中哈希值的改變,所以也保證了IoT 節(jié)點(diǎn)信息記錄的不可篡改性.
在安全系統(tǒng)IoT 設(shè)備和區(qū)塊鏈?zhǔn)聞?wù)節(jié)點(diǎn)之間使用IoT 的協(xié)議相連(如藍(lán)牙,zigbee 等),上層使用區(qū)塊鏈的網(wǎng)絡(luò)[11]進(jìn)行信息記錄,每一個(gè)設(shè)備對(duì)應(yīng)一個(gè)事務(wù)節(jié)點(diǎn),利用區(qū)塊鏈的驗(yàn)證和共識(shí)機(jī)制有助于避免非法甚至惡意節(jié)點(diǎn)接入IoT.
安全系統(tǒng)相較于傳統(tǒng)的IoT 結(jié)合了區(qū)塊鏈技術(shù),對(duì)整體網(wǎng)絡(luò)了安全性有了顯著的提升,具體的安全性對(duì)比如表1 所示. 憑借區(qū)塊鏈技術(shù)去中心化、信息公開(kāi)透明、安全通信、寫(xiě)入?yún)^(qū)塊后難以篡改和多方共識(shí)等特性,保證了IoT 設(shè)備信息記錄的安全存儲(chǔ),在安全系統(tǒng)中,信息記錄的修改需要經(jīng)過(guò)半數(shù)以上的節(jié)點(diǎn)確認(rèn)增大了攻擊者篡改記錄的難度,保證了信息記錄的完整性.對(duì)于身份的權(quán)限管理和共識(shí)算法可幫助系統(tǒng)有效的識(shí)別非法節(jié)點(diǎn)的接入,對(duì)于接入的非法節(jié)點(diǎn)依托區(qū)塊鏈的鏈?zhǔn)浇Y(jié)構(gòu)可方便構(gòu)建有效的電子存證.
表1 傳統(tǒng)IoT 和安全系統(tǒng)的安全性比較Table 1 Security comparison of traditional IoT and security systems
本方案提出使用區(qū)塊鏈和容器技術(shù)搭建出用于IoT 信息記錄安全存儲(chǔ)的安全系統(tǒng),其創(chuàng)新之處主要有以下幾點(diǎn):
①利用區(qū)塊鏈技術(shù)去中心化、多點(diǎn)確認(rèn)、難以篡改和多方共識(shí)等特性解決IoT 中存在的中心化架構(gòu)、設(shè)備安全、隱私保護(hù)等問(wèn)題. 區(qū)塊鏈可以簡(jiǎn)單理解成分布式的數(shù)據(jù)庫(kù),每次的數(shù)據(jù)(在區(qū)塊鏈中稱(chēng)之為交易)被按一定順序存放在帶有時(shí)間戳的數(shù)據(jù)塊中,每一塊數(shù)據(jù)塊中存放著前一個(gè)數(shù)據(jù)塊所產(chǎn)生的哈希值,多個(gè)數(shù)據(jù)塊構(gòu)成一個(gè)數(shù)據(jù)塊的鏈條. 其鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)[12-13]可保證信息記錄的完整性和溯源性.
②使區(qū)塊鏈節(jié)點(diǎn)以容器的形式存放在服務(wù)端,使整體系統(tǒng)具有跨平臺(tái)、持續(xù)部署與測(cè)試等特性,將區(qū)塊鏈中的共識(shí)機(jī)制的計(jì)算交給服務(wù)端,保證了整體物聯(lián)網(wǎng)的健壯性.
③可視化Web 平臺(tái),IoT 節(jié)點(diǎn)于區(qū)塊鏈節(jié)點(diǎn)進(jìn)行信息交互,方便了Web 對(duì)于IoT 設(shè)備的信息采集,容器化的區(qū)塊鏈節(jié)點(diǎn)可使用相應(yīng)的容器管理軟件進(jìn)行管理和監(jiān)測(cè),用戶可直接在Web 平臺(tái)觀察整體網(wǎng)絡(luò)的狀態(tài)
安全系統(tǒng)為IoT 信息記錄提供了一個(gè)安全的分布式存儲(chǔ)機(jī)制,使IoT 設(shè)備的信息記錄可以被完全存儲(chǔ)在鏈?zhǔn)浇Y(jié)構(gòu)中.使用容器技術(shù)方便了系統(tǒng)的部署和遷移,實(shí)現(xiàn)區(qū)塊鏈中共識(shí)層和IoT 層的分離,將復(fù)雜的計(jì)算留給了服務(wù)端,保證整體網(wǎng)絡(luò)的健壯性.
然而安全系統(tǒng)中還有許多的問(wèn)題需要去解決,如實(shí)現(xiàn)IoT 設(shè)備與區(qū)塊鏈?zhǔn)聞?wù)節(jié)點(diǎn)之間的安全通信[14-15],隨著IoT 設(shè)備的增多,設(shè)備與設(shè)備間的協(xié)調(diào)合作等問(wèn)題還有待提出更好的方案.