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



摘要:為解決傳統的中心化的物聯網(Internet of Things,IoT)訪問控制解決方案中存在的單點失效、規模受限等安全問題,基于以太坊區塊鏈和智能合約技術,采用中心化與去中心化相結合的方法,提出了一個面向IoT的訪問控制架構。該架構中設計了多個訪問控制合約、一個設備管理合約、一個管理員管理合約等多種合約,來實現去中心化的和可信的訪問控制功能;利用訪問控制列表機制來表示資源訪問策略,利用智能合約來實現基于策略的授權決策。該架構將IoT訪問控制過程分為智能合約注冊、IoT設備和管理員注冊、IoT設備訪問策略的制定和資源訪問授權決策四個階段。最后,還對架構的安全和性能進行了分析。
關鍵詞:物聯網; 區塊鏈; 智能合約; 訪問控制; 以太坊
中圖分類號: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 引言
由于通信技術、網絡技術的快速發展和智能設備的廣泛應用,導致物聯網(Internet of Things,IoT)技術受到研究機構、政府、企業的更大關注[1]。在典型的物聯網應用中,大量的IoT設備通過物聯網網關構成簇,這些簇通過P2P (Peer-to-Peer)網絡,與其他簇、用戶設備、存儲設備、應用服務器相連接,它們收集、處理和共享數據,提供各種資源(如數據、服務、存儲空間、計算單元等)服務。這些端(Peer)都擁有相應的資源供其他端訪問使用,因此需要相應的訪問控制機制來阻止未授權的資源訪問,同時保護那些敏感的隱私數據。例如,IoT設備需要能夠拒絕抽取其數據或控制其執行器的未授權訪問請求。但大多數傳統的IoT訪問控制系統通常采用中心化的客戶端(IoT設備)-服務器模式,用戶或IoT設備需要通過服務器(可信第三方)與IoT設備交互,訪問IoT設備中的數據或控制IoT設備的執行器,授權驗證工作則由中心服務器來完成。一旦中心服務器遭到攻擊,容易造成系統單點失效。同時,這些大量異構的、分散的、資源受限的IoT設備的規模化管理,也是IoT系統應用面臨的一大問題[2]。因此需要新的訪問控制模式,來為IoT提供分布式的、去中心化的、可信的訪問控制機制。區塊鏈(BlockChain,簡稱BC)和智能合約技術給我們帶來了希望[3-4]。
BlockChain是由區塊數據按產生、驗證和加入的時序而構成的鏈式數據結構,開始是作為密碼數字貨幣系統中一種分布式的和不可篡改交易存儲賬本,主要保存交易數據,具有去中心化、不可篡改、可追溯、多方共同維護的特點[5]。但智能合約(Smart Contract,SC)的發明,使BlockChain進化成了一個能夠開發分布式的、可信應用的平臺,特別適用于IoT這種P2P分布式網絡中[6]。許多研究者對如何將區塊鏈和智能合約技術應用于IoT環境的訪問控制和安全管理中,進行了探究[7-11]。文獻[7]和文獻[8]中的解決方案主要利用區塊鏈來存儲訪問控制策略,并沒有使用智能合約,從而不能充分利用區塊鏈的計算能力,也存在存儲空間限制和隱私等問題;盡管文獻[9]中提出了使用智能合約,但他們的架構是基于Bitcoin區塊鏈,也難以發揮區塊鏈和智能合約的計算效能。文獻[10]中提出了將ABAC(Attribute Based Access Control)方法與區塊鏈技術結合,來實現對IoT 的訪問控制,也提出了利用智能合約進行授權決策,但沒有詳細說明智能合約的設計與實現。文獻[11]中比較詳細地提出了一種利用區塊鏈和智能合約來解決IoT 訪問控制的方案,但整個系統只設計了一個智能合約,不符合智能合約使用的原則[12],也沒有說明訪問策略的設計方案。
本文根據IoT和Ethereum區塊鏈[13]的特點,通過創建介于IoT設備與區塊鏈網絡之間的Gateway這一構件來中心化管理IoT設備,并充分利用區塊鏈的去中心化能力和智能合約的計算能力,通過中心化與去中心化相結合的方法,提出了一個面向IoT的訪問控制架構。該架構將IoT訪問控制過程分為智能合約注冊、IoT設備注冊、IoT設備訪問策略的制定和資源授權訪問四個階段;并設計了訪問控制合約(Access Control Contract,ACC)、設備管理合約(Device Management Contract,DMC)、管理員管理合約(Manager Management Contract,MMC)等多種合約,來實現相應的功能,提高系統的執行效率。該架構利用訪問控制列表機制來表示資源訪問策略,并利用智能合約來實現基于策略的授權決策。
2 系統架構與工作流程
本節將詳細說明我們提出的面向IoT的基于區塊鏈和智能合約的系統設計和系統的工作流程。
2.1 系統架構
本文提出的面向IoT的基于以太坊區塊鏈和智能合約的訪問控制架構如圖1所示。
架構共包括如下七類不同構件: Private Networks(專有網絡)、Domain Managers(專有網絡域管理者)、Gateways(網關)、Blockchain Network(區塊鏈網絡)、Contract Creator(合約創建者)、Smart Contracts(智能合約)、User Device(用戶設備)。其中各構件的主要功能說明如下:
(1)Private Network。一個專用網絡是一個網絡管理域,通常是無線傳感器網絡,由許多資源受限的IoT Device (IoT設備)構成,IoT設備之間通過Bluetooth、Wi-Fi、Zigbee等方式互聯并交互。IoT設備既可以充當資源請求者,也可以充當被訪問的資源。這些IoT設備之間采用基于DTLS[14]的CoAP[15]協議進行通信。
(2)Gateways。由于大多數IoT設備的資源受限性(存儲空間、電池容量、計算能力等都有限),不能存儲區塊鏈信息和驗證區塊鏈交易,需要采用基于網關的設計模式[12]。因此本架構中規定IoT設備不屬于區塊鏈,代之每個專用網絡專門構建了一個IoT網關構件,用于代表IoT設備與區塊鏈網絡之間傳遞訪問控制信息,IoT設備只能通過IoT網關請求訪問控制信息。IoT網關直接與區塊鏈網絡節點--Miner(礦工)連接,它將IoT設備的產生的CoAP訪問請求消息轉化為區塊鏈網絡節點能夠理解的RPC格式的消息,并以Call方式(直接調用合約中的相關函數)可免費從區塊鏈網絡獲取訪問控制信息。Gateways 的引進,可使得IoT設備易于連接到網絡中,解決IoT的規模性問題。
(3)Domain Managers。一個網絡域管理者可管理一個或多個專用網絡中的IoT設備,負責這些IoT設備的設置和注冊、資源訪問控制策略的制定,也可以查詢區塊鏈。一個IoT設備至少要注冊到一個網絡域管理者,也可以注冊到多個網絡域管理者。
(4)Contract Creator。以太坊區塊鏈中,需要使用圖靈完備的專用語言Solidity[16]來開發。考慮到智能合約存儲于區塊鏈中,合約代碼的功能對區塊鏈質量有至關重要的影響。因此,本架構中專門設計了一個唯一的角色—合約創建者,負責區塊鏈網絡中所有智能合約的開發和注冊、合約地址列表的維護。合約創建者可以是Web服務器中的一個應用,也可以是區塊鏈網絡的一個獨立節點,使得智能合約的創建過程可以自動化。合約創建者需要將Solidity代碼轉換成EVM(Ethereum Virtual Machine)能夠執行的二進制代碼。
(5)Smart Contracts。智能合約是一個擁有相關代碼(包括可實現某些具體功能的多個函數)和數據的特殊賬戶。一個智能合約被創建并注冊后,就有了地址;通過向智能合約的地址發送區塊鏈交易,可觸發智能合約的執行,從而實現設計的相關功能。本架構中設計了多個訪問控制合約、一個設備管理合約、一個管理員管理合約,來實現分布式的和可信的訪問控制功能。
(6)Blockchain Network。區塊鏈網絡由區塊鏈網絡節點--Miner(礦工)及 Blockchain構成,智能合約存儲在區塊鏈中。一個曠工節點可以利用區塊鏈中的智能合約來存儲和訪問設備的訪問控制策略。我們采用私有區塊鏈網絡,主要是為了能定制負責授權決策的Miner節點。
(7)User Device。用戶設備是用戶的代理,用戶可使用用戶設備(如智能電話、平板電腦等)通過區塊鏈網絡訪問IoT設備中的資源。
2.2 工作流程
訪問控制架構中各構件之間的交互過程如圖2所示。訪問控制系統工作流程可分為如下四個主要階段:
(1)定義并注冊智能合約階段。Contract Creator通過交易,將Smart Contracts注冊到區塊鏈網絡中。一旦智能合約注冊到區塊鏈網絡,Contract Creator就可接收到智能合約的地址,并負責智能合約地址列表的維護。區塊鏈網絡中的其他構件需要利用此地址來調用相應的智能合約,實現合約中提供的功能。
(2)設置并注冊IoT設備階段。Domain Manager通過交易,將其管理的IoT Devices注冊到區塊鏈網絡中。一旦IoT設備注冊到區塊鏈網絡,Domain Manager就可接收到IoT設備的地址,并負責IoT設備地址列表的維護。IoT設備地址用于標識IoT設備,其他IoT設備或其他構件通過此地址來訪問該IoT設備。一個IoT設備的地址通常用其公鑰的HASH值來表示,其注冊地址在不同Domain Manager中是唯一的。
(3)訪問策略定義并注冊階段。Domain Manager通過交易,定義其管理的IoT設備的訪問控制策略并注冊到區塊鏈網絡中。一旦注冊完成,IoT設備的訪問控制策略列表存儲到區塊鏈中,由ACCs負責維護。資源請求者可查詢IoT設備的訪問策略。
(4)資源訪問和授權決策階段。假定一個客戶端C(可以是另一個IoT設備D2或用戶設備),希望訪問IoT設備D1中的資源R1,主要過程為:(a)D2首先向D1發送一個請求資源R1的CoAP消息;(b)C向其Gateway發送一個獲取D2訪問控制信息的訪問請求;(c) Gateway將訪問請求消息轉換為RPC消息格式后,前傳給與其直接連接的Miner;(d) Miner向R1對應的訪問控制合約ACC發送授權請求交易;(e) ACC執行,進行策略檢查,并向Miner返回策略決策結果(Allow/Deny);(f) 策略決策結果經Gateway返回給D1;(g)D1根據策略決策結果,決定是否允許C的資源訪問請求;如果策略決策結果是Allow,則給予C請求的資源;如果策略決策結果是Deny,則拒絕請求。
3 訪問策略和智能合約設計
本文提出的訪問控制系統是利用智能合約實現基于策略的訪問控制機制,因此資源訪問策略和智能合約的設計就顯得尤其重要,本節說明我們的訪問策略和智能合約的設計方案。
3.1 訪問策略設計
訪問控制系統是根據資源的訪問策略來進行授權決策的,訪問策略由若干訪問規則構成,每條規則規定了哪個客戶端對哪個IoT設備在約定的時間內是否能進行指定的操作,如“設備D1能讀取設備D2中的數據兩個小時”。本文利用訪問控制列表機制來設計訪問策略,策略列表樣例如表1所示,其中每一行用一個(請求者,資源,操作)即(主體,客體,操作)三元組來表示一個訪問策略。
上述訪問策略列表中,Requester是指請求訪問資源的客戶端C,用其地址標識;Resource是指被訪問的某IoT設備上的資源,用其地址標識;Action是指請求者對請求資源的操作方式,如read、write等;Permission是指對資源進行某種操作的許可權限,有allow和deny兩種取值;ToLR(Time of Last Access)是指請求者的最近的訪問請求的時間,利用它和系統當前時間可決定訪問時間長度。訪問策略列表由訪問控制合約ACC維護和查詢使用。當請求者請求對某資源進行某種操作時,相應的ACC通過查詢維護的訪問策略列表,即可確定是否許可請求的操作,并返回授權決策結果。
3.2 智能合約設計
不像文獻[11]中只設計一個智能合約,使得它過于復雜影響執行效率,我們的訪問控制系統共設計了訪問控制合約、設備管理合約、管理員管理合約等三種智能合約。訪問控制合約完成資源訪問策略的注冊、管理(策略更新、刪除)和授權決策功能;設備管理合約完成IoT設備的注冊和管理;管理員管理合約完成網絡管理員的注冊和移除。
(1)訪問控制合約ACCs
一個ACC實現某一個客戶端對某個設備(即一個“主體-客體-操作”三元組)的訪問請求的授權決策,它通過檢查預先定義的訪問策略,判斷客戶端的訪問請求是否被許可。因此,訪問控制合約是一個合約集。由于ACCs的執行結果會被區塊鏈中所有Miner節點驗證,確保了訪問控制的可信性。每個ACC提供如下函數來實現策略管理和訪問控制授權決策。
?policyAdd():注冊訪問策略,接收新訪問策略的信息并將信息添加到策略列表
?policyUpdate():更新訪問策略,接收需要更新的策略的信息,并更新該策略
?policyDelete():刪除訪問策略,接收需要刪除的策略的信息,并從策略列表中刪除該策略
?accessControl():授權決策函數,接收訪問授權請求信息,根據預先定義的訪問策略進行授權決策,并返回決策結果。
(2)管理員管理合約MMC
MMC合約提供如下函數來實現網絡域管理員的注冊和管理。
?managerAdd():注冊管理員,接收新管理員的信息并將信息添加到管理員列表
?managerDelete():刪除管理員,接收需要刪除的管理員的信息并從管理員列表中刪除該管理員
(3)設備管理合約DMC
DMC提供如下函數來實現設備注冊和管理。
?deviceAdd():注冊IoT設備,接收新IoT設備的信息并將信息添加到設備列表
?deviceRemove():移除IoT設備,接收需要刪除的IoT設備的信息并從IoT設備列表中刪除該IoT設備
?addManagertoDevice():將指定設備注冊到指定管理員名下
?removeManagerfromDevice():將指定設備從指定管理員名下刪除。
4 安全和性能分析
考慮到大多數IoT設備的資源受限性和保證IoT應用的規模性,我們提出的基于區塊鏈和智能合約的訪問控制系統,將IoT設備排除在區塊鏈之外,特別設計了一個Gateway構件來作為IoT設備與區塊鏈的中介,這樣IoT設備可借助Gateway與區塊鏈交互,發送資源訪問請求或從區塊鏈獲取訪問控制授權決策結果。這種設計也帶來如下兩個需要考慮的問題:
(1)IoT設備是否許可客戶端的訪問請求,完全依賴于Gateway傳遞過來的授權決策結果。如果Gateway是惡意的,則會帶來安全問題。惡意的Gateway可以篡改授權決策結果或假冒IoT設備進行未授權操作。考慮到IoT設備和Gateway一般位于同一個管理域,可以在IoT設備和Gateway之間建立共享密鑰,實現相互認證從而建立信任關系。或者通過互換公鑰,對發送的消息進行簽名驗證,都可以較好地解決這個安全問題。
(2)在我們提出的訪問控制架構中,Gateway是通過查詢而不是交易方式,從區塊鏈網絡(與其直接連接的Miner處)獲取訪問控制授權決策結果,這既不需要交易費用,也可實時向IoT設備傳遞授權決策結果,但也因此讓區塊鏈失去了驗證哪些訪問控制規則是否被Gateway正確地執行的能力,因為這些信息通常局部存儲在IoT設備所在的管理域中而不是存儲在區塊鏈中。由于IoT設備的動態移動性,可能造成很難審計和追蹤這些信息。因此,某些訪問控制系統希望Gateway是用交易而不是查詢方式與區塊鏈交互(這樣相關信息可永久存儲于區塊鏈),這增強了安全性,但也可能失去了執行效率和增加了交易費用。在具體的應用場景需要具體權衡。
5 結語
區塊鏈和智能合約技術在物聯網領域的應用,越來越受到各國政府、學術界和工業界的重視。本文探討了區塊鏈技術和智能合約在IoT應用環境中對大量資源受限IoT設備的訪問控制,提出了一個基于區塊鏈的資源訪問控制架構,并且詳細說明了智能合約和訪問策略的設計。由于Gateway的引進,可使得資源受限的IoT設備非常容易地加入區塊鏈訪問控制系統,能較好解決IoT的規模性問題。本文還對提出的訪問控制系統的安全性和性能進行了分析。接下來的主要工作,一是繼續優化設計方案,解決存在的局限性,特別是要設計合約管理合約,實現對智能合約的管理,如向智能合約中添加方法(函數)、更新或刪除智能合約中的方法;二是針對智能家居的實際應用場景,進行概念模型的驗證。
參考文獻:
[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] 邵奇峰,金澈清,張召,等. 區塊鏈技術:架構及進展[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.
【通聯編輯:代影】