黃苗,徐庭銳,劉洋廷,張媛媛
(1.四川大學計算機學院,成都610065;2.四川虹微技術有限公司,成都610000)
物聯網與人類的生產、生活越來越密不可分,其普遍具有大規模、設備資源有限、異構等特點。特別是在工業領域,為了發掘異地、異構、異主的數據所蘊含的巨大價值,需要為數據提供聯通的平臺和訪問的接口。而保證數據的安全和隱私是當前物聯網面臨的兩大挑戰。訪問控制是通過監控訪問記錄,制定訪問權限和規則,訪問權限的授予和取消等決策實現信息開放并且保證數據安全性的一種重要技術手段。傳統上多采用基于中心權威機構的訪問控制方案,但這種方案會造成服務器性能瓶頸和遭受單點故障。智能合約基于去中心化的區塊鏈網絡,可事先定義一組狀態和規則,并在滿足規則后強制自動執行的計算機代碼。以太坊創建之初便是以提供一個可編程的區塊鏈應用平臺,這也是其與比特幣最主要的區別。隨著以太坊智能合約的發展和成熟,新的訪問控制方案也多基于以太坊智能合約進行對方案進行實現和驗證。
訪問控制的目的在于避免非授權用戶訪問操作權限受限的資源或者授權用戶執行非權限范圍內的操作。訪問控制涉及的基本概念包括主體(subject)、客體(object)、操作(operation)、環境(condition)。主體即請求訪問資源以執行某種操作的用戶??腕w即主體請求訪問的資源,包括文件、應用、服務器、API 等。操作指的是主體想對客體執行的動作,常見的操作包括讀、寫、執行、修改、復制、刪除等。環境指每一次訪問請求的上下文信息,例如訪問的時間、地點、通信協議、通信加密方式等。新型的去中心化的訪問控制方案分為下面對本文介紹的研究工作涉及到的兩個經典訪問控制模型進行簡單的介紹。
(1)基于屬性的訪問控制(Attribute-Based Access Control,ABAC)
也稱為基于規則的訪問控制(Policy-Based Access Control,PBAC),基于這種模型的訪問控制方案由主體、客體、操作和環境的屬性集確定主體對資源的訪問權限。其中主體的屬性包括ID、角色、組別、部門、級別、組織或公司等??腕w的屬性包括創建時間、資源擁有者、資源密級、資源類型等。這種模型支持使用自然語言描述訪問規則,例如,工廠車間管理員可以讀取生產設備數據。如果需要修改訪問權限,只需要修改相關屬性值。具備靈活、可擴展等優點,適用于物聯網大規模應用場景。
(2)基于權能的訪問控制(Capability-Based Access Control,CapBAC)
權能實質是一個訪問主體持有的其可訪問的客體及對應授權操作的數據結構,可以類比為令牌、門票、鑰匙。這種權能憑證(capability token)的一個重要特性是可轉移(transferable)以及可代理(delegable),無需通過中心實體的認證,即一個主體的訪問權能可由一個主體自由轉移或授予另一個主體。基于權能的訪問控制方法需要保證權能不可被篡改,否則可能對訪問客體進行未授權操作,危害客體信息安全。保證憑證不被篡改的方式主要有兩種,一是將保存權能的數據結構保存在安全的位置,二是加密校驗和(例如數字簽名)。另外,憑證也存在被復制的風險。
在比特幣最初由中本聰提出于2008 年提出,并于2009 年開發實現,而區塊鏈則是比特幣的底層技術。區塊鏈(Blockchain)是一種不依賴中心權威機構的由多方共同維護,使用密碼學保證傳輸和訪問安全,能夠實現數據一致存儲、難以篡改、防止抵賴的記賬技術[1]。所謂區塊實際上是包含特定字段的文字記錄。每個區塊間通過指向前一個區塊的散列值串聯成一個鏈條。每個加入區塊鏈網絡的節點都擁有一條完整的區塊鏈,參與即區塊鏈中的數據記錄對所有節點公開。區塊鏈使用共識機制對在差不多時間內的發生的事務(即一條文字記錄,transaction)進行共識,從而保證在不同節點的數據一致性。
以太坊的概念最初由Vitalik Buterin 于2013 年提出,該平臺有類似比特幣的數字貨幣以太(ether),但其最重要的技術貢獻在于支持存儲在區塊鏈上的智能合約的開發。智能合約是一種可自動執行的計算機程序,即函數和狀態的集合。因區塊鏈的不可篡改特性,智能合約一旦部署在區塊鏈網絡中便很難篡改,事務參與者可事先約定一定的規則和操作,智能合約可在滿足規則后強制執行預定操作并發送相應事務?;谝蕴煌晟频纳鷳B環境和用戶廣泛的接受度,近幾年基于區塊鏈的訪問控制研究主要基于以太坊智能合約進行實驗驗證,因此本文調研了今年來影響力較大的基于以太坊智能合約的訪問控制機制?;趨^塊鏈的訪問控制方案具有不依賴第三方中心實體、可自主決策、資源擁有者可保持其資源所有權等優點。
文獻[2]基于該作者之前的工作提出了一種訪問控制參考模型并設想并實現了一種新型訪問控制方案FairAccess。該方案基于訪問憑證引入了包括授予、獲取、代理和撤銷憑證四種事務類型。但是基于區塊鏈的事務機制也使得該方案不能滿足對實時性有要求的應用場景,以比特幣的工作量共識機制為例,一條事務大概需要十分鐘的確認時間。
文獻[3]提出一種基于區塊鏈的和CapBAC 模型的訪問控制方案BlendCAC。該方案提出一種支持多級憑證代理模型,探索了代理授權和撤回機制。同時基于智能合約提出了一種憑證生命周期管理策略,即實現了訪問控制憑證的生成、傳遞和撤銷函數。該方案的多級代理路徑呈樹形,同時其訪問憑證以主體為單位表示。
文獻[4]提出一種包含訪問控制合約(Access Control Contract,ACC),決策合約(Judge Contract,JC),注冊合約(Register Contract,RC)的訪問控制框架。其中每一個訪問控制合約都為一個主客體對提供一個訪問控制接口函數,該函數可實現基于預定義訪問策略的靜態訪問權限驗證以及通過檢測主體行為實現動態訪問權限驗證。JC 通過分析來自ACC 的異常行為報告生成判罰,輔助ACC 的動態訪問權限驗證。注冊合約用于注冊訪問控制和異常行為判罰函數及其智能合約的信息以及這些函數的生命周期(注冊、更新以及銷毀)函數。但該方案不具備訪問代理功能,不適合對靈活性要求較高的場景。
文獻[5]是文獻[3]的改進方案。不同于文獻[3]以主體為單位創建機能憑證(capability token),該方案以訪問操作為單位,以圖的形式表示代理路徑,實現了更加細粒度且靈活的憑證代理機制。除了憑證代理函數,該方案還實現了如憑證創建、撤銷和驗證的基于權能的訪問控制的主要函數。但該方案中,憑證明文存儲于區塊鏈中且未對憑證進行加密,存在嚴重的安全隱患。
文獻[6]提出了一種結合區塊鏈的新的分布式架構,該架構包含無線傳感網、管理員、代理節點、智能合約、區塊鏈網絡、管理中心節點六部分。考慮到大多數物聯網設備資源有限的特性,該架構引入區塊鏈網絡以外(加入區塊鏈的節點都擁有一份完整的數據拷貝)的管理中心節點作為無線傳感網和區塊鏈網絡的中間節點。該方案的區塊鏈網絡共享一個不可刪除的智能合約,該合約定義了所有允許的操作。該方案有輕量(無須修改物聯網設備)、可擴展性強、透明(隱藏了物聯網設備地址)、可并發修改訪問規則等優點,但因規則的創建、撤銷等操作都基于區塊鏈的事務,無法滿足實時要求較高的場景。
訪問控制是物聯網場景下對數據開放同時保護數據安全和隱私的一種重要技術。近幾年的研究重心在于如何應對傳統集中式訪問控制的性能和安全問題。區塊鏈作為支撐區塊鏈的基礎設施經過了時間的檢驗,越來越多的科研工作者開始探索使用區塊鏈技術實現去中心化的應用。本文首先對訪問控制作了基本概述,然后對區塊鏈和智能合約作了簡單的介紹,最后對于最新的五篇基于智能合約的訪問控制方案的工作作了進行粗略的介紹和分析。