沈海波 陳 強 黃 海
(廣東第二師范學(xué)院計算機科學(xué)系 廣東 廣州 510303)
物聯(lián)網(wǎng)包含大量的設(shè)備,這些設(shè)備收集、處理環(huán)境數(shù)據(jù),提供各種資源(如數(shù)據(jù)、服務(wù)、存儲空間、計算單元等)服務(wù)。由于:(1) 大多數(shù)IoT設(shè)備的資源受限性(存儲空間、電池容量、計算能力等都有限),難以實現(xiàn)計算量較大的安全算法;(2) IoT設(shè)備通常以無線方式互聯(lián),使得它們更易于遭到各種各校的攻擊,如身份洪泛、消息竊聽、消息篡改等;(3) IoT設(shè)備通常是異構(gòu)的,并且可能具有較強的移動性;因此需要好的認證和授權(quán)機制來保證只有被認證和授權(quán)的用戶才能訪問請求的資源。為了適應(yīng)IoT環(huán)境的特性,認證和授權(quán)機制應(yīng)該具有如下主要特性[1-2]:(1) 去中心化。IoT網(wǎng)絡(luò)通常采用P2P (Peer-to-Peer)架構(gòu),不應(yīng)采用中心化的認證和授權(quán)架構(gòu),而應(yīng)使用去中心化的分布式的認證和授權(quán)架構(gòu)。(2) 富有彈性和規(guī)模性。IoT設(shè)備易于加入和退出;隨著區(qū)塊鏈交易的增加,需要解決區(qū)塊鏈的存儲空間問題。(3) 防數(shù)據(jù)篡改。能阻止IoT設(shè)備收集的數(shù)據(jù)在存儲和傳遞過程中被篡改。(4) 輕載性。由于IoT設(shè)備的資源受限性,要求信息傳遞和信道安全機制必須是輕載的。但大多數(shù)傳統(tǒng)的IoT認證和授權(quán)系統(tǒng)通常采用中心化的客戶端(IoT設(shè)備)-服務(wù)器模式,用戶或IoT設(shè)備需要通過服務(wù)器(可信第三方)與IoT設(shè)備交互,來自大量IoT設(shè)備的請求可能造成服務(wù)器擁塞,易于造成單點失效,而且也難以解決規(guī)模性問題;另外,很多中心化的IoT平臺也沒有提供消息源和目的地的認證機制,易于造成洪泛攻擊。區(qū)塊鏈(BlockChain)和智能合約技術(shù)給解決上述問題帶來了希望[3-4]。
區(qū)塊鏈?zhǔn)且环N分布式的不可篡改的交易存儲數(shù)據(jù)庫(帳本),每個網(wǎng)絡(luò)節(jié)點維護著交易帳本的副本以防止單點失效;它不需要中心化的機構(gòu),消除了對可信第三方驗證的需求[5]。智能合約(Smart Contract,SC)的引入,使區(qū)塊鏈進化成為了一個能夠開發(fā)分布式的、可信應(yīng)用的平臺,特別適用于IoT這種P2P分布式網(wǎng)絡(luò)[6]。但由于IoT設(shè)備的資源受限性,內(nèi)存空間和處理能力等都有限,不能存儲大量的區(qū)塊鏈信息和進行區(qū)塊鏈運算,需要在IoT設(shè)備與區(qū)塊鏈之間引進一個中介——網(wǎng)關(guān)(Gateway),作為IoT設(shè)備的代理,使得IoT設(shè)備能與區(qū)塊鏈網(wǎng)絡(luò)進行交互[7-8]。許多研究者也對如何將區(qū)塊鏈和智能合約技術(shù)應(yīng)用于IoT環(huán)境的認證和訪問控制中進行了探究[9-13]。文獻[8]提出利用中介網(wǎng)關(guān)的思想,但認證過程沒有采用智能合約來實現(xiàn);文獻[9]主要利用三個區(qū)塊鏈來存儲相關(guān)信息,使用共享密鑰而不是智能合約來實現(xiàn)認證,沒有充分利用區(qū)塊鏈的計算能力;文獻[10]提出了利用多種智能合約來解決IoT環(huán)境的訪問控制和授權(quán)問題,但沒有討論認證問題;文獻[11]提出利用中介網(wǎng)關(guān)和智能合約來實現(xiàn)IoT訪問控制,并采用基于數(shù)字證書的認證機制,但其網(wǎng)關(guān)只作為瘦客戶端,不屬于區(qū)塊鏈網(wǎng)絡(luò),只起信息傳遞和格式轉(zhuǎn)換作用;文獻[12]提出利用中介網(wǎng)關(guān)產(chǎn)生共享密鑰的方式來實現(xiàn)IoT設(shè)備與網(wǎng)關(guān)之間的相互認證,但若網(wǎng)關(guān)是惡意的,則不能保證IoT訪問控制系統(tǒng)的安全;文獻[13]提出了一種利用智能合約解決IoT設(shè)備擁有者與其擁有的IoT設(shè)備之間認證問題的方案,并沒有采用網(wǎng)關(guān)結(jié)構(gòu)。
本文根據(jù)IoT和Ethereum(以太坊)區(qū)塊鏈[14]的特點,綜合上述研究思想,通過引入IoT網(wǎng)關(guān)作為IoT設(shè)備的中心管理節(jié)點和公有區(qū)塊鏈的全能節(jié)點,采用中心化與去中心化相結(jié)合、私有區(qū)塊鏈和公有區(qū)塊鏈相結(jié)合、本地局部存儲和外部公共存儲相結(jié)合的方法,并充分利用智能合約的計算能力,提出了一個面向IoT的認證和授權(quán)方案。該方案提供了利用Ethereum區(qū)塊鏈和智能合約來實現(xiàn)IoT設(shè)備和IoT網(wǎng)關(guān)的多種相互認證方式,并實現(xiàn)用戶對IoT設(shè)備中資源及存儲在數(shù)據(jù)庫中數(shù)據(jù)的授權(quán)訪問,具有去中心化、分布式特點,滿足了規(guī)模性和安全性等要求。
我們提出的面向IoT的基于以太坊區(qū)塊鏈和智能合約的訪問控制架構(gòu)如圖1所示。
圖1 訪問控制系統(tǒng)架構(gòu)
架構(gòu)中共包括如下不同的主要核心構(gòu)件:Private IoT Network(專有IoT網(wǎng)絡(luò))、Public IoT Network(公有IoT網(wǎng)絡(luò))、Local Blockchain (局部區(qū)塊鏈)、Public Blockchain (公有區(qū)塊鏈)、Smart Gateway(智能網(wǎng)關(guān))、Smart Contracts(智能合約)、Local Storage(局部存儲設(shè)備)、Public Storage(公有存儲設(shè)備)、User Device(用戶設(shè)備)。網(wǎng)絡(luò)中的網(wǎng)關(guān)、公有存儲設(shè)備、用戶設(shè)備等主要節(jié)點都有自己的一對密鑰(公鑰和私鑰)以及由公鑰產(chǎn)生的以太坊地址。各構(gòu)件的主要功能說明如下:
(1) Private IoT Network。專有IoT網(wǎng)絡(luò)可以是智能家居、智能建筑等網(wǎng)絡(luò)管理域。每個專有IoT網(wǎng)絡(luò)包括由資源擁有者控制的大量IoT Device、一個Smart Gateway、一個Local Blockchain和一個Local Storage。資源擁有者(Resource Owner, RO)負責(zé)這些設(shè)備的管理(如設(shè)備配置和注冊、設(shè)備資源訪問策略制定)和局部區(qū)塊鏈中智能合約的開發(fā)和注冊。Local Blockchain是一個私有區(qū)塊鏈,用于存儲專有網(wǎng)絡(luò)中各構(gòu)件之間的交易信息,其中保存有一組Smart Contracts,用于控制該網(wǎng)絡(luò)內(nèi)IoT Device的認證、資源訪問授權(quán)決策等。Local Storage是一個存儲設(shè)備,用于在Smart Gateway本地局部存儲IoT Device收集的數(shù)據(jù)。IoT Device一方面通過Gateway向Local Storage發(fā)送收集的數(shù)據(jù),另一方面可接收Gateway傳遞的命令或消息。每個設(shè)備都有一對密鑰:公鑰和私鑰。這些IoT Device本身并不屬于區(qū)塊鏈網(wǎng)絡(luò),只是借助網(wǎng)關(guān)與區(qū)塊鏈網(wǎng)絡(luò)連接。
(2) Public IoT Network。公有IoT網(wǎng)絡(luò)是指專有IoT網(wǎng)絡(luò)之外的網(wǎng)絡(luò),主要包括User Device(用戶設(shè)備,如智能手機、平板電腦等,代理用戶與區(qū)塊鏈交互)和公有存儲設(shè)備(Public Storage)。Public Storage通常是云存儲設(shè)備,用于存儲Public Blockchain產(chǎn)生的信息和Private IoT Network中IoT Device收集的數(shù)據(jù)。它的引入一方面可解決局部區(qū)塊鏈的存儲空間問題,另一方面也可提高數(shù)據(jù)的安全性(當(dāng)一方數(shù)據(jù)損壞時,可用另一方恢復(fù)),還可將數(shù)據(jù)與第三方服務(wù)提供商共享,以便提供其他方面的服務(wù)。
(3) Smart Contracts。智能合約是一個擁有相關(guān)代碼(包括可實現(xiàn)某些具體功能的多個函數(shù))和數(shù)據(jù)的特殊Ethereum帳戶,運行在區(qū)塊鏈之上,可不借助可信第三方而實現(xiàn)彼此不信任的雙方之間的協(xié)議。一個智能合約被創(chuàng)建并注冊后,就有了Ethereum地址;通過向智能合約的地址發(fā)送區(qū)塊鏈交易,可觸發(fā)智能合約的執(zhí)行,從而實現(xiàn)設(shè)計的相關(guān)功能。一個智能合約類似于一個類,包括狀態(tài)變量、函數(shù)、函數(shù)修改器、事件、結(jié)構(gòu)。智能合約也可調(diào)用另外的智能合約。我們的Local Blockchain和Public Blockchain都有一組智能合約,用于完成設(shè)計的相關(guān)功能。Ethereum區(qū)塊鏈中,需要使用圖靈完備的專用語言Solidity[15]來開發(fā)智能合約;Solidity代碼必須轉(zhuǎn)換成EVM(Ethereum Virtual Machine)能夠執(zhí)行的二進制代碼。
(4) Smart Gateway。智能網(wǎng)關(guān)在我們的架構(gòu)中起著至關(guān)重要的作用,是一個資源豐富的設(shè)備。一方面,在Private IoT Network內(nèi),智能網(wǎng)關(guān)負責(zé)管理該網(wǎng)絡(luò)中的所有IoT設(shè)備及其之間的交易,如負責(zé)設(shè)備的注冊認證、負責(zé)Local Blockchain和Local Storage的管理、負責(zé)驗證設(shè)備之間的交易并將它們鏈接到Local Blockchain中。另一方面,智能網(wǎng)關(guān)還是公共區(qū)塊鏈網(wǎng)絡(luò)中的全能節(jié)點(相當(dāng)于礦工),是由智能網(wǎng)關(guān)、Public Network節(jié)點組成的P2P(Peer-to-Peer)網(wǎng)絡(luò)的一個peer,負責(zé)公共區(qū)塊鏈網(wǎng)絡(luò)中交易的驗證并鏈接到Public Blockchain 中,保存有公共區(qū)塊鏈的副本;同時,還負責(zé)Private IoT Network和Public IoT Network兩種網(wǎng)絡(luò)之間的通信。
(5) Public Blockchain。Public Blockchain用于存儲Private IoT Network節(jié)點與Public IoT Network節(jié)點之間的通信,如Public Storage節(jié)點產(chǎn)生的交易和User Device產(chǎn)生的訪問交易。其中也保存有一組相關(guān)的Smart Contracts,用于完成指定的功能。
所有IoT Devices,特別是新的IoT Device,必須注冊到某一個Private IoT Network。在傳遞數(shù)據(jù)之前,必須認證到該網(wǎng)絡(luò)中的Smart Gateway,以便它們之間能安全傳遞信息??紤]到IoT Device的異構(gòu)性,我們的系統(tǒng)不要求采取統(tǒng)一的認證方式,而是可采用符合設(shè)備特性的任何認證方式,認證過程由認證智能合約(Authentication Smart Contract,ASC)來完成。
2.1.1設(shè)備注冊
IoT Device首先向其所在的Smart Gateway發(fā)送交易Tx=(m,Sig(m,D.sk)),其中Sig(m,D.sk)表示用設(shè)備D的私鑰D.sk對交易消息m的簽名,m的內(nèi)容為m=(IDx,IDD,EGW.pk(PK,D.pk,DownPort,UpPort))。IDx是交易的序列號;IDD表示設(shè)備D的標(biāo)識符;PK表示是采用公鑰認證的方式,除此外,設(shè)備認證方式還可以是共享密鑰認證方式PSK、一次性認證方式OTP、公鑰證書認證方式PKC等;D.pk是D的公鑰,表示對應(yīng)認證方法PK的認證參數(shù),每種認證方式都有其對應(yīng)的認證參數(shù);DownPort和UpPort分別是D接收消息和上傳數(shù)據(jù)的端口號。為保證機密性,相關(guān)信息用Smart Gateway的公鑰GW.pk進行加密得到EGW.pk(PK,D.pk,DownPort,UpPort)。
專用網(wǎng)絡(luò)中的Smart Gateway對上述交易進行驗證后,將交易信息添加到設(shè)備D的區(qū)塊中,并將該區(qū)塊追加到此網(wǎng)絡(luò)的Local Blockchain中。
2.1.2設(shè)備認證
IoT Device為了認證到其所在的Smart Gateway并建立安全通信,需要向Smart Gateway發(fā)送一個會話建立請求SERep,內(nèi)容包括:
SERep:(IDD,Hmac(PK,D.pk,Nonce),Nonce)
其中PK是注冊時用的認證方式、D.pk是對應(yīng)認證方式認證參數(shù),Nonce是隨機數(shù),用于防止重放攻擊。Smart Gateway收到請求后,調(diào)用認證智能合約ASC來進行認證,最后向IoT Device返回認證結(jié)果。ASC的主要功能是:從Local Blockchain中根據(jù)IDD抽取設(shè)備的相關(guān)參數(shù),計算(PK,D.pk,Nonce)的Hmac值,并與請求中的Hmac值進行比對。若兩個值相等,則認證通過,返回OK消息;否則,返回NOK消息。
為了實現(xiàn)對IoT Device中資源(如溫度等數(shù)據(jù))或Local Storage中數(shù)據(jù)的授權(quán)訪問,我們設(shè)計了一組訪問控制合約(Access Control Contract,ACC),使得資源擁有者可實現(xiàn)對資源訪問策略的創(chuàng)建、管理(策略更新、刪除)以及資源訪問授權(quán)決策。每個ACC實現(xiàn)某一個用戶對某個設(shè)備(即一個主體-客體對)的訪問請求的授權(quán)決策,它通過檢查預(yù)先定義的訪問策略,判斷用戶的訪問請求是否被許可。訪問策略可用訪問控制列表機制實現(xiàn),訪問策略列表由ACC維護與使用。ACC提供如下函數(shù)來實現(xiàn)策略管理和訪問控制授權(quán)決策:
? AddPolicy():創(chuàng)建新的訪問策略,接收新訪問策略的信息并將信息添加到策略列表;
? UpdatePolicy():更新訪問策略,接收需要更新的策略的信息,并更新該策略;
? DeletePolicy():刪除訪問策略,接收需要刪除的策略的信息,并從策略列表中刪除該策略;
? AccessControl():授權(quán)決策函數(shù),接收訪問授權(quán)請求信息,根據(jù)預(yù)先定義的訪問策略進行授權(quán)決策,并返回決策結(jié)果。
利用上述的訪問控制合約ACC,實現(xiàn)用戶對某Private IoT Network內(nèi)某設(shè)備中資源訪問的授權(quán)決策的過程,如圖2所示,這是一個授權(quán)成功的例子。
圖2 用戶成功訪問設(shè)備資源過程
圖2中用戶利用設(shè)備首先向Smart Gateway發(fā)送一個訪問請求交易Taccess;利用此交易中的信息,Smart Gateway向局部區(qū)塊鏈中的智能合約發(fā)送授權(quán)請求交易Tgetpermission,調(diào)用函數(shù)AccessControl()進行授權(quán)決策。
當(dāng)用戶請求訪問Public Storage中的數(shù)據(jù)時,則需要Public Blockchain來進行授權(quán)決策了。類似于Local Blockchain,Public Blockchain中也設(shè)計了一組訪問控制合約ACC,用于對Public Storage中的數(shù)據(jù)的訪問策略的注冊、管理(策略更新、刪除)以及訪問授權(quán)決策。Local Storage和Public Storage中的數(shù)據(jù),我們用唯一的帳本,保存所有設(shè)備產(chǎn)生的數(shù)據(jù),其中每一個數(shù)據(jù)塊中以塊帳本(Block Ledger)的方式保存同一個設(shè)備產(chǎn)生的所有數(shù)據(jù),這種數(shù)據(jù)存儲方式及訪問授權(quán)過程如圖3所示。
圖3 用戶成功訪問公共存儲數(shù)據(jù)過程
正如圖3所示,塊帳本(Block Ledger)中SD表示用產(chǎn)生數(shù)據(jù)的設(shè)備Device1的私鑰對數(shù)據(jù)Date1和其產(chǎn)生時間Time簽名后內(nèi)容;SGW表示對上述簽名內(nèi)容再次用網(wǎng)關(guān)Gateway A簽名后的內(nèi)容,主要用于驗證數(shù)據(jù)的真實性和完整性;HashHeader是該塊塊頭的Hash;HashPrev是前一個塊的Hash。圖3所示的主要過程是:用戶設(shè)備向Public Storage發(fā)送請求指定數(shù)據(jù)的交易,Public Storage向公共區(qū)塊鏈網(wǎng)絡(luò)廣播驗證該請求的授權(quán)交易,公共區(qū)塊鏈網(wǎng)絡(luò)各Gateway節(jié)點檢查該數(shù)據(jù)是否由其管理的設(shè)備產(chǎn)生的。如果是,則由該Gateway(圖示為Gateway A,因為Data1是由其管理的設(shè)備Device1產(chǎn)生)調(diào)用訪問控制智能合約,對訪問請求進行授權(quán)決策(即進行策略檢查),并將授權(quán)決策結(jié)果返回給Public Storage,本例是授權(quán)成功。如果許可訪問,Public Storage則給予用戶數(shù)據(jù),否則,拒絕用戶請求。
物聯(lián)網(wǎng)技術(shù)及其應(yīng)用正受到研究機構(gòu)、政府、企業(yè)的更大關(guān)注,但影響物聯(lián)網(wǎng)廣泛應(yīng)用和深入發(fā)展的關(guān)鍵正是其安全和隱私問題,為此本文提出了一種面向物聯(lián)網(wǎng)的基于區(qū)塊鏈智能合約和中介網(wǎng)關(guān)的訪問控制架構(gòu),其中網(wǎng)關(guān)起著重要的作用,用來管理資源受限的IoT設(shè)備信息的訪問和控制這些設(shè)備的通信,并將它們聯(lián)接到區(qū)塊鏈網(wǎng)絡(luò)中。由于采用了中心化與去中心化相結(jié)合、私有區(qū)塊鏈和公有區(qū)塊相結(jié)合、本地局部存儲和外部公共相結(jié)合的方法,并充分利用了智能合約的計算能力,因此該架構(gòu)具有去中心化、分布式特點,滿足了認證和授權(quán)等安全性要求。特別是根據(jù)IoT設(shè)備的特點,采用了自適應(yīng)的認證方式,使得設(shè)備易于加入IoT網(wǎng)絡(luò),滿足了IoT規(guī)模性的要求。未來將針對智能家居等應(yīng)用環(huán)境實例,進行概念模型驗證,驗證架構(gòu)的效率。