徐龍,李楊
(齊魯工業大學(山東省科學院) 山東省科學院自動化研究所, 山東 濟南 250014)
物聯網(Internet of things,IoT)作為新一代信息技術,為社會各個階層帶來了革命性的變化,已經應用到智能醫療、智能家居和智慧消防等眾多領域。據估計,到2025年全球物聯網系統中設備連接數將達到215億~416億臺[1],使人們進入萬物互聯時代。物聯網基本架構是完成數據收集、融合、處理和共享的物與物互聯的網絡[2-3],物聯網中會產生海量的數據,其中包含大量的隱私數據,由于物聯網設備具有計算力資源有限、安全性差等特點,所以這種物與物互聯的機制存在著巨大的安全隱患。訪問控制作為保護數據安全的關鍵性技術之一,可以保障數據僅能被擁有相應權限的用戶使用[4]。
針對如何保障物聯網系統數據安全問題,研究人員從不同角度提出了多種訪問控制模型,主要有基于角色的訪問控制(role-based access control, RBAC)模型[5],基于屬性的訪問控制(attributed-based access control, ABAC)模型[6]和基于權能的訪問控制(capability-based access control, CapBAC)模型[7]。RBAC模型引入角色概念,將系統中的用戶映射到角色,不同的角色對應不同的權限[8-9]。ABAC模型兼顧訪問控制細粒度問題,將主體與客體的屬性作為訪問政策制定的關鍵要素,利用權限請求者所具有的屬性來確定是否賦予權限。CapBAC模型是以權能為基礎提供訪問控制,可以讓用戶自定義訪問控制政策,被認為是物聯網下訪問控制模型中最有潛力的模型。
在上述模型中,模型的授權驗證操作需引入可信的第三方實體,所有的訪問控制操作由集中式服務器完成,故存在單點故障和隱私泄露問題。隨著區塊鏈、智能合約的出現,為解決傳統的集中式物聯網訪問控制模型存在的問題,研究者們將區塊鏈技術與傳統的訪問控制模型有機地結合,實現分布式訪問控制。當前物聯網系統具有異構性和多樣性的特點,其訪問技術的要求開始向細粒度和分層次的方向發展。但目前提出的模型中仍然存在著以下問題:一是沒有充分估計物聯網系統設備存在資源有限的特點,導致提出的方案會導致物聯網系統的網絡運算負擔增大;二是物聯網系統中設備訪問控制的細粒度、靈活度不夠,不能滿足當前物聯網系統的要求。
針對上述問題,本文提出了新的基于權能的訪問控制模型(novel-capability-based access control,NCBAC)。基于區塊鏈與智能合約技術,充分利用其不可篡改性、可回溯性,構建出可信任的分布式的新型物聯網訪問控制系統;設計了面向物聯網系統的訪問控制管理的新型架構,為避免給物聯網系統帶來巨大的網絡開銷,提出了由管理節點來實現物聯網系統與區塊鏈系統的通信;提出了基于傳統的基于權能訪問控制模型的基礎上,引入角色集合和屬性集合,實現了高細粒度、靈活的、高效的訪問控制,能夠更好地滿足當前物聯網系統對其訪問控制系統的要求。
本文提出的系統架構如圖1所示,主要包括區塊鏈、管理節點、特殊節點、管理者和智能合約部署者等5個主要組成部分。

圖1 系統架構 Fig.1 System architecture
(1) 區塊鏈:本系統用以太坊進行智能合約部署,由以太坊虛擬機(ethereum virtual machine,EVM)為智能合約提供運行環境。智能合約中定義的函數實現訪問控制模型各項功能,通過應用程序接口ABI(application binary interface)為外部提供各項功能執行接口。
(2) 管理節點: 該節點是區塊鏈的特殊節點,可直接與區塊鏈進行通信,該節點擁有了兩個外部賬戶(externally owned accounts,EOA):Normal Account和Special Account。實現的功能包括將傳感器網絡傳輸的多種格式消息統一轉換為區塊鏈可識別的JSON-RPC(JavaScript object notation-remote procedure call)信息,以及調用區塊鏈中部署的智能合約完成對系統的初始化以及訪問控制功能。另外,物聯網系統中的所有傳感器均通過管理節點直接或間接方式與區塊鏈進行通信,因此管理節點通常是由計算資源豐富的設備承擔,并且為了提高系統的響應時間,所有的管理節點都需要進行并發處理,以滿足實際情況的需求,提高系統的響應速度。管理節點是區塊鏈的組成部分,本文提出的模型中管理節點不是唯一的,其數量可根據實際情況增減。此外,其所實現的功能傳感器注冊、傳感器操作授權等都是由區塊鏈中智能合約提供的,因此,管理節點是一個去中心化、安全的模塊。
(3) 特殊節點: 物聯網系統中各類傳感器等設備屬于輕量級設備,很多設備只能發送和接收特定的、簡單的通信信息,但也有不少的輕量級設備有一定的計算和存儲能力。因此,部分物聯網設備是可以在其上編寫特定算法,實現信息轉發并與管理節點通信的功能,為了保障整個系統的通信實時性和可靠性,該算法要根據當時網絡情況進行最優鏈路選擇。
(4) 管理者:該模塊是擁有管理節點的Special Account賬戶的操作者,可以擁有設置系統的角色集合、屬性集合、訪問政策制定等一系列安全要求高的系統初始化操作權限。
(5) 智能合約部署者:智能合約部署者是完成智能合約在區塊鏈部署的人,可以將系統中的管理節點信息記錄在區塊鏈中,完成系統的管理節點的指定。
為解決傳統訪問控制方法安全性不高、細粒度不夠等瓶頸問題,本文基于傳統的基于權能訪問控制算法設計了新的智能合約體系,可實現分布式、安全、高細粒度的訪問控制。區塊鏈中維護多種信息列表詳見OSID,智能合約的功能應用程序二進制接口(application binary interface,ABI)主要包括:
· MangerRegister(): 此功能用來指定系統中管理節點,即用來注冊管理員;
· MangerDelete(): 此功能用來刪除系統中管理節點,即用來刪除管理員;
· RoleSetCreate(): 此功能用來創建NCBAC模型中的角色集合;
· RoleSetDelete(): 此功能用來刪除NCBAC模型中的角色集合;
· MemberDelete(): 此功能用來刪除已添加進角色集合中的物聯網設備;
· UserRegister(): 此功能是被物聯網設備調用,以此完成設備連接到系統操作;
· UserDelete(): 此功能是被物聯網設備調用,以此完成設備斷開與系統連接操作;
· UserUpdate(): 此功能用來更新已連接系統設備的信息;
· AttributeCreate(): 此功能是用來創建NCBAC模型中的屬性集合;
· AttributeDelete(): 此功能是用來刪除NCBAC模型中的屬性集合;
· AttributeUpdate(): 此功能是用來更新屬性集合中的元素;
· PolicyMake(): 此功能用于添加新訪問控制政策,該函數是由本政策中主體與客體對中的客體調用;
· PolicyDelete(): 此功能用來刪除已添加的訪問控制政策;
· PolicyUpdate(): 此功能用來更新已添加的訪問控制政策;
· AccessControl(): 此功能用來訪問決策,結合相關信息合法性檢測和預先定義好的訪問控制政策,進行權限決策。
為保證系統的安全性,不同的ABI具有不同的調用權限,ABI調用權限配置表見OSID。
圖2是系統各模塊間交互過程,主要分為兩大階段:系統初始化階段、訪問政策執行階段。
(1)系統初始化階段:該階段主要完成智能合約部署、角色集合創建、屬性集合創建和政策制定等一些保證系統能正常工作的系統初始化操作。具體步驟如下:
步驟1:該步驟部署智能合約,當智能合約在區塊鏈中部署成功后會得到智能合約地址,只有提前獲取該地址才能與合約交互;
步驟2:管理者通過管理節點調用智能合約中RoleSetCreate()函數,將角色集合信息保存到區塊鏈中;
步驟3:設備1與設備2通過管理節點調用智能合約中UserRegister()函數,完成將設備連接至系統操作;
步驟4: 只有完成步驟3后設備2才可通過管理節點調用智能合約中的AttributeCreate()函數將自身資源池選擇性地在系統中共享;
步驟5:管理者通過管理節點調用智能合約中的PolicyMake()函數,根據在步驟4中設備2共享的資源池,來設定設備1對設備2的訪問控制政策。
(2)政策執行階段:如圖2所示,物聯網設備1訪問目標物聯網設備2的資源。設備1經由特殊節點或直接與管理節點通信發送資源請求信息,該信息包含的主要字段為發起設備:設備1;目標設備:設備2;請求動作:read/write等;請求資源:resourse;令牌:Token。管理節點將信息編譯為可用信息后,調用智能合約中AccessControl()函數根據系統初始化時設定的政策對發起設備、目標設備、請求動作、請求資源的合法性進行檢測,此次請求經過智能合約的判定,判定結束時會觸發智能合約中ReturnResult()事件,將合約決策結果反饋給管理節點,系統依據判斷結果來決定設備1是否可以對設備2資源進行相應的操作。為提高系統的決策速度,在本文提出的智能合約體系中采用令牌機制,成功獲取一次訪問權限后,在預設時間內再發起相同的權限訪問請求,不再需要驗證多種信息,只需驗證Token的合法性,以此提高系統的決策速度。Token是一段保存在區塊鏈中的時間戳,包含了該請求所有身份識別信息,因此保證了該Token的安全性。具體的訪問控制算法偽代碼見OSID。

圖2 系統工作流程Fig.2 System workflow
為了驗證本文提出的面向物聯網的基于區塊鏈的訪問控制模型建模方法,測試本文提出的系統架構與模型的可行性和有效性,我們搭建了實驗環境并設計了實驗方案。
我們設計的實驗中包含兩臺臺式電腦(Inter?CoreTMi3-9100 CPU@3.60 Hz 3.60 GHz),一臺筆記本電腦(DELL Inspiron 3541)和一臺智能手機(One plus 6T)。臺式電腦安裝由Go語言編寫的geth客戶端,使其成為區塊鏈節點,二者之間構建起以太坊私有鏈。本次實驗系統中所有設備運行在同一局域網環境下。
本次實驗的主體-客體對為筆記本電腦-智能手機,其中客體設定的政策為允許主體讀取Database1,為了得到更直觀的實驗結果,采用JavaScript腳本語言編寫了事件監聽腳本,具體的監聽程序算法偽代碼以及整個項目的關鍵代碼見OSID 。
2.2.1 合法設備訪問結果與分析
為驗證主體對客體訪問的可行性,實施主體對客體的Database1發起讀操作訪問過程,實驗結果如圖3所示。

圖3 合法設備獲取訪問權限Fig.3 Legal devices gain access
2.2.2 非法篡改令牌攻擊實驗
在上一個實驗成功取得訪問權限允許結果條件下,人為地將系統發放的Token中Action字段由read篡改為write后,重新發起請求,實驗結果如圖4所示。

圖4 篡改令牌非法攻擊實驗結果Fig.4 Experiment results of the illegal Token tampering attack
2.2.3 驗證訪問控制的靈活性與細粒度
在維持實驗環境不變的情況下,客體(筆記本電腦)發起刪除共享屬性Database1請求,成功完成請求后,重復2.2.1權限訪問請求操作。圖5所示是系統監聽訪問請求事件結果。

圖5 靈活性與細粒度驗證實驗結果Fig.5 Flexibility and fine-granularity verification experiment results
為了評估系統性能,在上述實驗條件基礎上,采用Apache Benchmark工具測試了每秒發送請求節點從0到10 000個的響應時間情況,如圖6所示。

圖6 兩類基本操作的性能測試結果圖Fig.6 Performance test results of the two types of basic operations
本次實驗在有、無Token機制的情況下進行多次訪問請求,測量系統對全部請求做出回應時的延遲時間。如圖7所示,隨著請求次數的增加,沒有采用Token機制模型與采用Token機制模型的延遲時間差值越來越大,采用Token機制的模型對系統訪問控制性能提升越明顯。

圖7 有無Token機制的訪問控制請求實驗Fig.7 Access control request experiments with or without Token mechanism
本文旨在解決物聯網系統中的訪問控制問題,提出了一種基于區塊鏈技術的分布式物聯網訪問控制模型NCBAC。該模型充分吸收現有訪問控制模型的優點,實現靈活、可擴展、細粒度高的訪問控制。實驗仿真結果表明,本文提出的NCBAC模型可以為物聯網系統提供安全、可靠和高效的訪問控制。