馬嘉杰 沈海波 陳升 盧宇忠 黃良振



摘要:為解決傳統(tǒng)的中心化的物聯(lián)網(wǎng)(Internet of Things,IoT)訪問控制解決方案中存在的單點失效、規(guī)模受限等安全問題,基于以太坊區(qū)塊鏈和智能合約技術,采用中心化與去中心化相結合的方法,提出了一個面向IoT的訪問控制架構。該架構中設計了多個訪問控制合約、一個設備管理合約、一個管理員管理合約等多種合約,來實現(xiàn)去中心化的和可信的訪問控制功能;利用訪問控制列表機制來表示資源訪問策略,利用智能合約來實現(xiàn)基于策略的授權決策。該架構將IoT訪問控制過程分為智能合約注冊、IoT設備和管理員注冊、IoT設備訪問策略的制定和資源訪問授權決策四個階段。最后,還對架構的安全和性能進行了分析。
關鍵詞:物聯(lián)網(wǎng); 區(qū)塊鏈; 智能合約; 訪問控制; 以太坊
中圖分類號:TP309.2? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)03-0071-04
Abstract:To solve the security problems such as the single point of failure, limited scalability that existed in the traditional and centralized access control schemes for the Internet of Things (IoT), an Ethereum blockchain and smart contract based access control framework is proposed in this paper by introducing a centralized-decentralized combined architecture. To achieve decentralized and trustworthy access control for IoT systems in the proposed framework, multiple access control contracts(ACCs), one device management contract(DMC), one manager management contract(MMC) are designed, the mechanism of access control list to represent the access policy of resources is adopted, and the smart contracts are used to make authorization decisions based on predefined polices. This framework consists of four different phases including registering smart contracts, registering managers and IoT devices, defining the access polices for resources and making authorization decisions to resources access. In the end, the security and performance of the proposed framework are analyzed.
Key words:Internet of Things(IoT); blockchain; smart contract; access control; Ethereum
1 引言
由于通信技術、網(wǎng)絡技術的快速發(fā)展和智能設備的廣泛應用,導致物聯(lián)網(wǎng)(Internet of Things,IoT)技術受到研究機構、政府、企業(yè)的更大關注[1]。在典型的物聯(lián)網(wǎng)應用中,大量的IoT設備通過物聯(lián)網(wǎng)網(wǎng)關構成簇,這些簇通過P2P (Peer-to-Peer)網(wǎng)絡,與其他簇、用戶設備、存儲設備、應用服務器相連接,它們收集、處理和共享數(shù)據(jù),提供各種資源(如數(shù)據(jù)、服務、存儲空間、計算單元等)服務。這些端(Peer)都擁有相應的資源供其他端訪問使用,因此需要相應的訪問控制機制來阻止未授權的資源訪問,同時保護那些敏感的隱私數(shù)據(jù)。例如,IoT設備需要能夠拒絕抽取其數(shù)據(jù)或控制其執(zhí)行器的未授權訪問請求。但大多數(shù)傳統(tǒng)的IoT訪問控制系統(tǒng)通常采用中心化的客戶端(IoT設備)-服務器模式,用戶或IoT設備需要通過服務器(可信第三方)與IoT設備交互,訪問IoT設備中的數(shù)據(jù)或控制IoT設備的執(zhí)行器,授權驗證工作則由中心服務器來完成。一旦中心服務器遭到攻擊,容易造成系統(tǒng)單點失效。同時,這些大量異構的、分散的、資源受限的IoT設備的規(guī)模化管理,也是IoT系統(tǒng)應用面臨的一大問題[2]。因此需要新的訪問控制模式,來為IoT提供分布式的、去中心化的、可信的訪問控制機制。區(qū)塊鏈(BlockChain,簡稱BC)和智能合約技術給我們帶來了希望[3-4]。
BlockChain是由區(qū)塊數(shù)據(jù)按產(chǎn)生、驗證和加入的時序而構成的鏈式數(shù)據(jù)結構,開始是作為密碼數(shù)字貨幣系統(tǒng)中一種分布式的和不可篡改交易存儲賬本,主要保存交易數(shù)據(jù),具有去中心化、不可篡改、可追溯、多方共同維護的特點[5]。但智能合約(Smart Contract,SC)的發(fā)明,使BlockChain進化成了一個能夠開發(fā)分布式的、可信應用的平臺,特別適用于IoT這種P2P分布式網(wǎng)絡中[6]。許多研究者對如何將區(qū)塊鏈和智能合約技術應用于IoT環(huán)境的訪問控制和安全管理中,進行了探究[7-11]。文獻[7]和文獻[8]中的解決方案主要利用區(qū)塊鏈來存儲訪問控制策略,并沒有使用智能合約,從而不能充分利用區(qū)塊鏈的計算能力,也存在存儲空間限制和隱私等問題;盡管文獻[9]中提出了使用智能合約,但他們的架構是基于Bitcoin區(qū)塊鏈,也難以發(fā)揮區(qū)塊鏈和智能合約的計算效能。文獻[10]中提出了將ABAC(Attribute Based Access Control)方法與區(qū)塊鏈技術結合,來實現(xiàn)對IoT 的訪問控制,也提出了利用智能合約進行授權決策,但沒有詳細說明智能合約的設計與實現(xiàn)。文獻[11]中比較詳細地提出了一種利用區(qū)塊鏈和智能合約來解決IoT 訪問控制的方案,但整個系統(tǒng)只設計了一個智能合約,不符合智能合約使用的原則[12],也沒有說明訪問策略的設計方案。
本文根據(jù)IoT和Ethereum區(qū)塊鏈[13]的特點,通過創(chuàng)建介于IoT設備與區(qū)塊鏈網(wǎng)絡之間的Gateway這一構件來中心化管理IoT設備,并充分利用區(qū)塊鏈的去中心化能力和智能合約的計算能力,通過中心化與去中心化相結合的方法,提出了一個面向IoT的訪問控制架構。該架構將IoT訪問控制過程分為智能合約注冊、IoT設備注冊、IoT設備訪問策略的制定和資源授權訪問四個階段;并設計了訪問控制合約(Access Control Contract,ACC)、設備管理合約(Device Management Contract,DMC)、管理員管理合約(Manager Management Contract,MMC)等多種合約,來實現(xiàn)相應的功能,提高系統(tǒng)的執(zhí)行效率。該架構利用訪問控制列表機制來表示資源訪問策略,并利用智能合約來實現(xiàn)基于策略的授權決策。
2 系統(tǒng)架構與工作流程
本節(jié)將詳細說明我們提出的面向IoT的基于區(qū)塊鏈和智能合約的系統(tǒng)設計和系統(tǒng)的工作流程。
2.1 系統(tǒng)架構
本文提出的面向IoT的基于以太坊區(qū)塊鏈和智能合約的訪問控制架構如圖1所示。
架構共包括如下七類不同構件: Private Networks(專有網(wǎng)絡)、Domain Managers(專有網(wǎng)絡域管理者)、Gateways(網(wǎng)關)、Blockchain Network(區(qū)塊鏈網(wǎng)絡)、Contract Creator(合約創(chuàng)建者)、Smart Contracts(智能合約)、User Device(用戶設備)。其中各構件的主要功能說明如下:
(1)Private Network。一個專用網(wǎng)絡是一個網(wǎng)絡管理域,通常是無線傳感器網(wǎng)絡,由許多資源受限的IoT Device (IoT設備)構成,IoT設備之間通過Bluetooth、Wi-Fi、Zigbee等方式互聯(lián)并交互。IoT設備既可以充當資源請求者,也可以充當被訪問的資源。這些IoT設備之間采用基于DTLS[14]的CoAP[15]協(xié)議進行通信。
(2)Gateways。由于大多數(shù)IoT設備的資源受限性(存儲空間、電池容量、計算能力等都有限),不能存儲區(qū)塊鏈信息和驗證區(qū)塊鏈交易,需要采用基于網(wǎng)關的設計模式[12]。因此本架構中規(guī)定IoT設備不屬于區(qū)塊鏈,代之每個專用網(wǎng)絡專門構建了一個IoT網(wǎng)關構件,用于代表IoT設備與區(qū)塊鏈網(wǎng)絡之間傳遞訪問控制信息,IoT設備只能通過IoT網(wǎng)關請求訪問控制信息。IoT網(wǎng)關直接與區(qū)塊鏈網(wǎng)絡節(jié)點--Miner(礦工)連接,它將IoT設備的產(chǎn)生的CoAP訪問請求消息轉化為區(qū)塊鏈網(wǎng)絡節(jié)點能夠理解的RPC格式的消息,并以Call方式(直接調用合約中的相關函數(shù))可免費從區(qū)塊鏈網(wǎng)絡獲取訪問控制信息。Gateways 的引進,可使得IoT設備易于連接到網(wǎng)絡中,解決IoT的規(guī)模性問題。
(3)Domain Managers。一個網(wǎng)絡域管理者可管理一個或多個專用網(wǎng)絡中的IoT設備,負責這些IoT設備的設置和注冊、資源訪問控制策略的制定,也可以查詢區(qū)塊鏈。一個IoT設備至少要注冊到一個網(wǎng)絡域管理者,也可以注冊到多個網(wǎng)絡域管理者。
(4)Contract Creator。以太坊區(qū)塊鏈中,需要使用圖靈完備的專用語言Solidity[16]來開發(fā)。考慮到智能合約存儲于區(qū)塊鏈中,合約代碼的功能對區(qū)塊鏈質量有至關重要的影響。因此,本架構中專門設計了一個唯一的角色—合約創(chuàng)建者,負責區(qū)塊鏈網(wǎng)絡中所有智能合約的開發(fā)和注冊、合約地址列表的維護。合約創(chuàng)建者可以是Web服務器中的一個應用,也可以是區(qū)塊鏈網(wǎng)絡的一個獨立節(jié)點,使得智能合約的創(chuàng)建過程可以自動化。合約創(chuàng)建者需要將Solidity代碼轉換成EVM(Ethereum Virtual Machine)能夠執(zhí)行的二進制代碼。
(5)Smart Contracts。智能合約是一個擁有相關代碼(包括可實現(xiàn)某些具體功能的多個函數(shù))和數(shù)據(jù)的特殊賬戶。一個智能合約被創(chuàng)建并注冊后,就有了地址;通過向智能合約的地址發(fā)送區(qū)塊鏈交易,可觸發(fā)智能合約的執(zhí)行,從而實現(xiàn)設計的相關功能。本架構中設計了多個訪問控制合約、一個設備管理合約、一個管理員管理合約,來實現(xiàn)分布式的和可信的訪問控制功能。
(6)Blockchain Network。區(qū)塊鏈網(wǎng)絡由區(qū)塊鏈網(wǎng)絡節(jié)點--Miner(礦工)及 Blockchain構成,智能合約存儲在區(qū)塊鏈中。一個曠工節(jié)點可以利用區(qū)塊鏈中的智能合約來存儲和訪問設備的訪問控制策略。我們采用私有區(qū)塊鏈網(wǎng)絡,主要是為了能定制負責授權決策的Miner節(jié)點。
(7)User Device。用戶設備是用戶的代理,用戶可使用用戶設備(如智能電話、平板電腦等)通過區(qū)塊鏈網(wǎng)絡訪問IoT設備中的資源。
2.2 工作流程
訪問控制架構中各構件之間的交互過程如圖2所示。訪問控制系統(tǒng)工作流程可分為如下四個主要階段:
(1)定義并注冊智能合約階段。Contract Creator通過交易,將Smart Contracts注冊到區(qū)塊鏈網(wǎng)絡中。一旦智能合約注冊到區(qū)塊鏈網(wǎng)絡,Contract Creator就可接收到智能合約的地址,并負責智能合約地址列表的維護。區(qū)塊鏈網(wǎng)絡中的其他構件需要利用此地址來調用相應的智能合約,實現(xiàn)合約中提供的功能。
(2)設置并注冊IoT設備階段。Domain Manager通過交易,將其管理的IoT Devices注冊到區(qū)塊鏈網(wǎng)絡中。一旦IoT設備注冊到區(qū)塊鏈網(wǎng)絡,Domain Manager就可接收到IoT設備的地址,并負責IoT設備地址列表的維護。IoT設備地址用于標識IoT設備,其他IoT設備或其他構件通過此地址來訪問該IoT設備。一個IoT設備的地址通常用其公鑰的HASH值來表示,其注冊地址在不同Domain Manager中是唯一的。
(3)訪問策略定義并注冊階段。Domain Manager通過交易,定義其管理的IoT設備的訪問控制策略并注冊到區(qū)塊鏈網(wǎng)絡中。一旦注冊完成,IoT設備的訪問控制策略列表存儲到區(qū)塊鏈中,由ACCs負責維護。資源請求者可查詢IoT設備的訪問策略。
(4)資源訪問和授權決策階段。假定一個客戶端C(可以是另一個IoT設備D2或用戶設備),希望訪問IoT設備D1中的資源R1,主要過程為:(a)D2首先向D1發(fā)送一個請求資源R1的CoAP消息;(b)C向其Gateway發(fā)送一個獲取D2訪問控制信息的訪問請求;(c) Gateway將訪問請求消息轉換為RPC消息格式后,前傳給與其直接連接的Miner;(d) Miner向R1對應的訪問控制合約ACC發(fā)送授權請求交易;(e) ACC執(zhí)行,進行策略檢查,并向Miner返回策略決策結果(Allow/Deny);(f) 策略決策結果經(jīng)Gateway返回給D1;(g)D1根據(jù)策略決策結果,決定是否允許C的資源訪問請求;如果策略決策結果是Allow,則給予C請求的資源;如果策略決策結果是Deny,則拒絕請求。
3 訪問策略和智能合約設計
本文提出的訪問控制系統(tǒng)是利用智能合約實現(xiàn)基于策略的訪問控制機制,因此資源訪問策略和智能合約的設計就顯得尤其重要,本節(jié)說明我們的訪問策略和智能合約的設計方案。
3.1 訪問策略設計
訪問控制系統(tǒng)是根據(jù)資源的訪問策略來進行授權決策的,訪問策略由若干訪問規(guī)則構成,每條規(guī)則規(guī)定了哪個客戶端對哪個IoT設備在約定的時間內(nèi)是否能進行指定的操作,如“設備D1能讀取設備D2中的數(shù)據(jù)兩個小時”。本文利用訪問控制列表機制來設計訪問策略,策略列表樣例如表1所示,其中每一行用一個(請求者,資源,操作)即(主體,客體,操作)三元組來表示一個訪問策略。
上述訪問策略列表中,Requester是指請求訪問資源的客戶端C,用其地址標識;Resource是指被訪問的某IoT設備上的資源,用其地址標識;Action是指請求者對請求資源的操作方式,如read、write等;Permission是指對資源進行某種操作的許可權限,有allow和deny兩種取值;ToLR(Time of Last Access)是指請求者的最近的訪問請求的時間,利用它和系統(tǒng)當前時間可決定訪問時間長度。訪問策略列表由訪問控制合約ACC維護和查詢使用。當請求者請求對某資源進行某種操作時,相應的ACC通過查詢維護的訪問策略列表,即可確定是否許可請求的操作,并返回授權決策結果。
3.2 智能合約設計
不像文獻[11]中只設計一個智能合約,使得它過于復雜影響執(zhí)行效率,我們的訪問控制系統(tǒng)共設計了訪問控制合約、設備管理合約、管理員管理合約等三種智能合約。訪問控制合約完成資源訪問策略的注冊、管理(策略更新、刪除)和授權決策功能;設備管理合約完成IoT設備的注冊和管理;管理員管理合約完成網(wǎng)絡管理員的注冊和移除。
(1)訪問控制合約ACCs
一個ACC實現(xiàn)某一個客戶端對某個設備(即一個“主體-客體-操作”三元組)的訪問請求的授權決策,它通過檢查預先定義的訪問策略,判斷客戶端的訪問請求是否被許可。因此,訪問控制合約是一個合約集。由于ACCs的執(zhí)行結果會被區(qū)塊鏈中所有Miner節(jié)點驗證,確保了訪問控制的可信性。每個ACC提供如下函數(shù)來實現(xiàn)策略管理和訪問控制授權決策。
?policyAdd():注冊訪問策略,接收新訪問策略的信息并將信息添加到策略列表
?policyUpdate():更新訪問策略,接收需要更新的策略的信息,并更新該策略
?policyDelete():刪除訪問策略,接收需要刪除的策略的信息,并從策略列表中刪除該策略
?accessControl():授權決策函數(shù),接收訪問授權請求信息,根據(jù)預先定義的訪問策略進行授權決策,并返回決策結果。
(2)管理員管理合約MMC
MMC合約提供如下函數(shù)來實現(xiàn)網(wǎng)絡域管理員的注冊和管理。
?managerAdd():注冊管理員,接收新管理員的信息并將信息添加到管理員列表
?managerDelete():刪除管理員,接收需要刪除的管理員的信息并從管理員列表中刪除該管理員
(3)設備管理合約DMC
DMC提供如下函數(shù)來實現(xiàn)設備注冊和管理。
?deviceAdd():注冊IoT設備,接收新IoT設備的信息并將信息添加到設備列表
?deviceRemove():移除IoT設備,接收需要刪除的IoT設備的信息并從IoT設備列表中刪除該IoT設備
?addManagertoDevice():將指定設備注冊到指定管理員名下
?removeManagerfromDevice():將指定設備從指定管理員名下刪除。
4 安全和性能分析
考慮到大多數(shù)IoT設備的資源受限性和保證IoT應用的規(guī)模性,我們提出的基于區(qū)塊鏈和智能合約的訪問控制系統(tǒng),將IoT設備排除在區(qū)塊鏈之外,特別設計了一個Gateway構件來作為IoT設備與區(qū)塊鏈的中介,這樣IoT設備可借助Gateway與區(qū)塊鏈交互,發(fā)送資源訪問請求或從區(qū)塊鏈獲取訪問控制授權決策結果。這種設計也帶來如下兩個需要考慮的問題:
(1)IoT設備是否許可客戶端的訪問請求,完全依賴于Gateway傳遞過來的授權決策結果。如果Gateway是惡意的,則會帶來安全問題。惡意的Gateway可以篡改授權決策結果或假冒IoT設備進行未授權操作。考慮到IoT設備和Gateway一般位于同一個管理域,可以在IoT設備和Gateway之間建立共享密鑰,實現(xiàn)相互認證從而建立信任關系。或者通過互換公鑰,對發(fā)送的消息進行簽名驗證,都可以較好地解決這個安全問題。
(2)在我們提出的訪問控制架構中,Gateway是通過查詢而不是交易方式,從區(qū)塊鏈網(wǎng)絡(與其直接連接的Miner處)獲取訪問控制授權決策結果,這既不需要交易費用,也可實時向IoT設備傳遞授權決策結果,但也因此讓區(qū)塊鏈失去了驗證哪些訪問控制規(guī)則是否被Gateway正確地執(zhí)行的能力,因為這些信息通常局部存儲在IoT設備所在的管理域中而不是存儲在區(qū)塊鏈中。由于IoT設備的動態(tài)移動性,可能造成很難審計和追蹤這些信息。因此,某些訪問控制系統(tǒng)希望Gateway是用交易而不是查詢方式與區(qū)塊鏈交互(這樣相關信息可永久存儲于區(qū)塊鏈),這增強了安全性,但也可能失去了執(zhí)行效率和增加了交易費用。在具體的應用場景需要具體權衡。
5 結語
區(qū)塊鏈和智能合約技術在物聯(lián)網(wǎng)領域的應用,越來越受到各國政府、學術界和工業(yè)界的重視。本文探討了區(qū)塊鏈技術和智能合約在IoT應用環(huán)境中對大量資源受限IoT設備的訪問控制,提出了一個基于區(qū)塊鏈的資源訪問控制架構,并且詳細說明了智能合約和訪問策略的設計。由于Gateway的引進,可使得資源受限的IoT設備非常容易地加入?yún)^(qū)塊鏈訪問控制系統(tǒng),能較好解決IoT的規(guī)模性問題。本文還對提出的訪問控制系統(tǒng)的安全性和性能進行了分析。接下來的主要工作,一是繼續(xù)優(yōu)化設計方案,解決存在的局限性,特別是要設計合約管理合約,實現(xiàn)對智能合約的管理,如向智能合約中添加方法(函數(shù))、更新或刪除智能合約中的方法;二是針對智能家居的實際應用場景,進行概念模型的驗證。
參考文獻:
[1] Yaqoob I, Ahmed E, Hashem I A T, et.al. Internet of Things Architecture: Recent Advances, Taxonomy, Requirements, and Open Challenges[J]. IEEE Wireless Communication, 2017, 24(3):10-16.
[2] Choi S S, Burm J W, Sung W, et al. A Blockchain-based Secure IoT Control Scheme[C]//Proc of IEEE 2018 International Conference on Advances in Computing and Communication Engineering (ICACCE). Washington DC: IEEE Xplore, 2018:74-78.
[3] Khan M A, Salah K. IoT Security: Review, Blockchain Solutions, and open challenges[J]. Future Generation Computer Systems, 2018, 82(5):395-411.
[4] Reyna A, Martin C, Chen J, et al. On Blockchain and its Integration with IoT, Challenges and Opportunities[J]. Future Generation Computer Systems, 2018, 88(11):173-190.
[5] 邵奇峰,金澈清,張召,等. 區(qū)塊鏈技術:架構及進展[J]. 計算機學報, 2017, 40(157): 1-21.
[6] Christidis K, Devetsiotis M. Blockchains and Smart Contracts for the Internet of Things[J]. IEEE Access: The Plethora of Research in Internet of Things (IoT), 2016, 4: 2292-2303.
[7] Maesa D D F, Mori P, Ricci L. Blockchain Based Access Control[C]//Proc of the IFIP International Conference on Distributed Applications & Interoperable Systems. Berlin: Springer-Verlag, 2017:206-220.
[8] Dorri A, Kanhere S S, Jurdak R, et al. Blockchain for IoT Security and Privacy: The Case Study of a Smart Home[C]//Proc of 2017 IEEE International Conference on Pervasive Computing and Communications Workshops. Washington DC: IEEE Xplore,2017:618-623.
[9] Ouaddah A, Elkalam A A, Abdellah A A.? FairAccess: A New Blockchain-Based Access Control Framework for Internet of Things[J]. Security and Communication Networks, 2016, 9(18):5943-5964.
[10] Dukkipati C, Zhang Y P, Cheng L C. Decentralied, Blockchain Based Access Control Framework for the Heterogeneous Internet of Things[C]// Proc of the 3rd Workshop on Attribute Based Access Control. New York: ACM Presss, 2018:61-69.
[11] Novo O. Blockchain Meets IoT: An Architecture for Scalable Access Management in IoT[J]. IEEE Internet of Things Journal, 2018, 5(2):1184-1194.
[12] Fotiou N, George C.P. Smart Contract for the Internet of Things: Opportunities and Challenges[C]// Proc of the 2018 European Conference on Networks and Communications: Application Areas and Services. Washington DC: IEEE Xplore, 2018:256-260.
[13] Buterin V. Ethereum: A Next-Generation Cryptocurrency and Decentralized Application Platform. [EB/OL]. (2014-01-22) [2020-09-18]. https://genius.com/Ethereum-ethereum-whitepaper-annotated.
[14] Rescorla E, Modadugu N. Datagram Transport Layer Security (DTLS) Version 1.2 [EB/OL]. (2014-01-10) [2020-08-28].? https://www.rfc-editor.org/info/rfc6347.
[15] Shelby Z, Hartke K, Bormann C. Constrained Application Protocol (CoAP) [EB/OL]. (2014-06-12) [2020-08-28].? https://www.rfc-editor.org/info/rfc7252.
[16] Solidity—A Contract-oriented, High-level Language for Implementing Smart Contract. (2016-01-01) [2020-09-18]. https://solidity.readthedocs.io/en/develop.
【通聯(lián)編輯:代影】