摘 要:在智能電網環境中,電力運營商和消費者通過智能電表進行大量高精度的用電數據的實時監測,用戶機密數據持續暴露于未經授權的訪問,在這種傳統通信模式下,智能電表對家庭用戶能源消耗的細粒度測量造成了嚴重的隱私安全問題,而現有的靜態訪問控制方法并不滿足智能電網環境基于上下文的動態訪問特性。針對此問題,提出一種基于物聯網通信協議(MQTT協議)的訪問控制方案,通過在MQTT協議中對樹型結構的主題列表設計基于ABAC訪問控制模型的動態上下文授權策略,并在WSO2系統使用XACML策略語言實現了提出的訪問控制方案。性能評估結果表明,該方案能在較低的通信開銷內支持動態的訪問控制,以解決智能電網中用戶的用電信息未經授權而泄露的隱私安全問題。
關鍵詞:智能電網;隱私安全;訪問控制;MQTT協議;ABAC模型
中圖分類號:TP393.04 文獻標志碼:A
文章編號:1001-3695(2022)11-038-3436-08
doi:10.19734/j.issn.1001-3695.2022.03.0156
ABAC access control scheme based on MQTT protocol in smart grid
Shao Ruixue,Tian Xiuxia
(School of Computer Science amp; Technology,Shanghai University of Electric Power,Shanghai 201306,China)
Abstract:In the smart grid environment,power suppliers and consumers used smart meters to monitor a large number of high-precision power consumption data in real time,and users’ confidential data was continuously exposed to unauthorized access.In this traditional communication mode,the fine-grained measurement of household users’ energy consumption by smart meters posed serious privacy and security issues,while existing static access control methods didn’t meet the context-based dynamic access characteristics of the smart grid environment.To solve this problem,this paper proposed an access control scheme based on the Internet of Things communication protocol(MQTT protocol).By designing a dynamic context authorization policy based on the ABAC access control model for the topic list in the tree structure in the MQTT protocol,the proposed access control scheme was implemented using XACML policy language in WSO2 system.The performance evaluation results show that the scheme can support dynamic access control with low communication overhead,so as to solve the privacy security problem of unauthorized leakage of user electricity consumption information in smart grid.
Key words:smart grid;privacy security;access control;MQTT protocol;ABAC model
基金項目:國家自然科學基金面上項目(61772327);國網甘肅省電力公司電力科學研究院橫向項目(H2019-275);上海市大數據管理系統工程研究中心開放課題(H2020-216)
作者簡介:邵瑞雪(1998-),女,安徽阜陽人,碩士研究生,主要研究方向為電力物聯網、信息安全、通信傳輸技術;田秀霞(1976-),女(通信作者),河南安陽人,教授,碩導,博士,主要研究方向為數據庫安全、隱私保護(大數據和云計算)、安全機器學習等(xxtian@shiep.edu.cn).
0 引言
智能電網被認為是傳統電網的新發展,它將信息通信技術的優勢融入到能源配電中,實現了能源使用的計費、監控、規劃和預測的自動化,提高了可靠性和能源效率[1]。在智能電網的概念中,智能電表是固定在用戶端用于監控用戶的用電情況和相關的統計數據的智能實體,如用電數據、高峰時段、散工時段和平均耗電量等。智能電網中大量高精度的用電數據為電網的管理帶來了便利,然而智能電表對家庭用戶能耗的細粒度測量也使智能電網中的機密數據持續暴露于未經授權的訪問,造成了用戶用電信息的嚴重隱私泄露[2],例如不可信第三方獲取智能電表記錄的用戶用電信息后,攻擊者通過分析用戶各個時間段的用電量數據很容易推斷出用戶的日常習慣,從而導致用戶隱私泄露。為了保證用戶用電信息的機密性,電力運營商和設備之間的通信通常是基于靜態訪問控制方法進行安全性保護的,然而這種以靜態和固定的方式定義訪問權限的方法并不滿足于電力物聯網環境基于上下文的動態訪問特性。
根據研究發現,智能電表采集的電力數據往往通過不受信任的公共網絡作為傳輸中介,利用訪問權限開放的通信協議進行數據傳輸,造成了嚴重的用戶用電信息的隱私泄露問題[3]。近年來,研究人員廣泛調查了智能電網生態系統安全隱私方面的研究,就訪問控制而言,已經提出很多為物聯網應用定制的各種訪問控制模型,但是仍然缺少將訪問控制平滑集成到物聯網生態系統中的通用方法。此外,由于智能電網環境中設備存儲和計算能力有限,許多大規模的訪問控制方案也不適用于智能電網的實際應用[4]。消息隊列遙測傳輸協議(MQTT協議)是一種標準的應用層協議[5],通過發布/訂閱體系結構實現物聯網異構設備之間的通信。由于其簡單性和低開銷,目前,MQTT協議已被廣泛應用于資源受限的電力物聯網環境中以實現智能電表、傳感器等分布式電網設備的異端通信。然而,MQTT協議只提供了一個非常簡單的安全模型,且其本身針對客戶端異步通信沒有定義任何安全管理方案并且沒有指定任何授權模型,因此,基于MQTT協議來執行訪問控制授權更適合電力物聯網環境,因為基于MQTT協議的通信環境代表了電力物聯網生態系統的一個重要子集。
針對電力物聯網系統在訪問控制實施機制方面存在的不足,本文提出一種基于MQTT協議的ABAC訪問控制方案,通過在MQTT協議中對樹型結構的主題列表設計基于ABAC訪問控制模型的動態上下文授權策略,并在WSO2系統[6]架構使用可擴展訪問控制標記語言(XACML)實現了提出的訪問控制方案。所提出方法的創新點在于:a)所提方案是在MQTT協議上設計訪問控制實施機制,無須修改MQTT消息代理或客戶端,可以平滑地集成到任何基于MQTT協議的智能電網部署中;b)方案選用ABAC訪問控制模型因其出色的靈活性以及所支持策略的動態和上下文感知特性,非常適配于智能電網的環境特性;c)對MQTT協議的樹型結構的主題列表設計基于屬性的動態上下文授權策略,并在策略匹配中執行樹節點后序遍歷搜索,降低了系統開銷。
1 相關工作
隨著智能電網的發展,電力用戶逐漸從原來的被動用電模式發展到智能用電模式,利用智能電表的廣泛實施,電力用戶與智能電網的雙向互動日益緊密。然而,智能電表的開放授權訪問也帶來了非法竊取、控制用戶隱私信息等安全風險,例如2014年10月,西班牙研究人員在電表中發現了一個安全漏洞,黑客可以利用該漏洞進行計費欺詐甚至關閉整個電路系統,造成大面積停電[7]。類似的電表信息安全隱患不僅會給電力企業帶來經濟損失,還會給社會帶來安全穩定問題,因此,智能電網中基于智能電表的安全訪問控制方法有很大的研究前景[8]。
文獻[9]通過對MQTT主題和用戶進行訪問權限的ACL訪問授權預定義,設計了由單個用戶的主題和對應權限聚合成訪問控制樹,以防止用戶非法訪問主題進行發布/訂閱操作;在文獻[10,11]提出的基于能力的訪問控制模型CapBAC中,服務提供商基于用戶主動提供的信息授予特定的訪問特權,并且提出了CapBAC的集中式[10]和分布式[11]實現。此類靜態訪問控制方法存在的問題是沒有考慮上下文感知,不能適用于如電力物聯網環境的動態訪問特性。
文獻[12]提出利用OAuth 2.0協議流設計訪問控制決策方案以啟用對通過MQTT分發信息的訪問控制,但是基于OAuth的訪問控制通常是粗粒度的,且其巨大的通信和處理開銷并不適合在工業物聯網的受限設備中運行其所有OAuth邏輯。文獻[13]提出了一個基于信任的物聯網角色訪問控制模型 TBRI,通過計算信任值決定該角色主體是否可以訪問對象,并引入程度系數和對象的影響參數防止主體進行惡意的重復操作來積累信任值;文獻[14,15]提出了基于角色的訪問控制RBAC的擴展,引入了上下文約束以適應物聯網動態特性,其中文獻[15]使用最終確定的屬性擴展了RBAC模型,以處理角色到用戶的動態分配,不支持其他屬性。此類RBAC訪問控制方法存在的問題是并不適合在需要高互操作性/可伸縮性的物聯網領域應用程序(如智能電網和智能城市)中執行授權功能,其角色爆炸的問題會阻止RBAC封裝壓力和動態訪問控制策略[16]。文獻[17,18]提出使用的UCON模型被視為下一代訪問控制模型,與RBAC和ABAC模型[19]相比,它引入了各種新穎性,在訪問執行之前、執行期間和之后以連續的方式處理授權問題。雖然已經介紹了一些理論實驗,但這種方法的技術和架構假設限制了該提議的通用性。對目前探討的訪問控制方案存在的問題進行分析,靜態訪問控制方法和大型的訪問控制方案并不能滿足電力物聯網環境基于上下文的動態訪問特性,且系統開銷問題也無法避免。與此相對,ABAC其出色的靈活性以及所支持策略的動態和上下文感知特性非常適合電力物聯網應用訪問控制的實施[4],其優點是:a)互操作性,ABAC模型簡化了互操作性,它允許未知用戶訪問資源,只要其屬性滿足某些標準;b)細粒度訪問控制,ABAC模型基于屬性定義訪問權限,可以描述所有實體的相關安全特性,使其更適合提供細粒度的訪問控制。
文獻[20]提出使用ABAC模型來表達在MQTT通信網絡中控制發布和訂閱的安全策略,但是沒有詳細闡述安全策略的表達能力和安全訪問控制方法,因此該方案的可行性和系統開銷都有待驗證;文獻[21]采用基于ABAC模型的授權方法作為訪問控制策略,并基于ECC的安全密鑰建立,實現了一種簡單高效的實時認證,但是將加密方案部署到物聯網的受約束設備上需要復雜的管理和系統開銷,因此該方案僅提供所提出模型的理論結果;文獻[22]描述了一個位于對象和MQTT客戶端之間的連網智能中間件(NOS),NOS攔截打算發布的消息對其進行規范化(即提取元數據),并根據安全策略實施ABAC模型來決定是否允許用戶端發布消息,但這種模型需要建立一個密鑰管理機制,開銷很大并且只提供了相當粗糙的粒度級別;文獻[23]提出的訪問控制方案將MQTT通信消息作為保護對象制定了兩種類型的ABAC安全策略,并在鍵值數據存儲(Redis)中管理安全策略,但是Redis數據庫不允許復雜的策略查詢,因此在電力物聯網環境中也不適用于存儲高度表達的上下文策略。基于目前針對MQTT提出的動態訪問控制方案進行分析,一些工作[20]沒有詳細闡述訪問控制的策略實現,僅提出一些理論結果;還有一些工作[21~23]因其系統開銷或者策略查詢管理等原因,不適用于電力物聯網的動態上下文訪問控制特性。因此,在已有工作的基礎上,本文提出一種基于MQTT協議的訪問控制方案。
2 預備知識
2.1 MQTT協議
消息隊列遙測傳輸協議(message queuing telemetry transmission protocol,MQTT)是一種用于物聯網環境中的通信協議,其核心是使用發布/訂閱通信模型進行消息的分發和傳遞。通信是由第三個節點(即代理)進行協調,記錄一個樹狀結構組織的主題列表,并從發布者節點接收數據,同時將數據傳遞給訂閱者節點。MQTT客戶端通過網絡連接上交換的控制數據包與服務器連接并進行通信,系統模型如圖1所示,主要實體描述如下:a)broker,負責管理MQTT消息的中央服務器;b)publisher,通過代理向訂閱者發布消息的實體;c)subscriber,通過代理接收消息的實體,可以訂閱主題消息;d)topic,系列信息主題的標志,主題遵循一個層次結構,不同層次的主題以斜線分隔(如region/house/consumption)。
2.2 ABAC訪問控制模型
ABAC是一種根據主體和對象的指定屬性、環境條件以及根據這些屬性和條件指定的一組策略,實現對受保護資源的訪問控制權限匹配的訪問控制方法[24]。與傳統方法不同,ABAC將訪問控制建立在實體屬性上而不是基于用戶身份,在ABAC模型中,訪問權限是根據主體提供的屬性授予的,主體和客體都通過與特征相關的屬性進行識別。策略規則指定授予或拒絕訪問的條件,當用戶發起訪問請求時,會根據其屬性授予其對系統的適當訪問權限。可擴展訪問控制標記語言是一種用XML語言來為信息訪問表達訪問控制策略的OASIS規范,可以支持復雜、細粒度規則的訪問控制策略語言[25],可以用于實現ABAC授權模型。為了滿足ABAC模型的動態訪問控制需求,XACML體系結構從邏輯上分離了負責策略定義、策略實施和策略評估的訪問控制組件,由以下四部分組成:a)策略執行點(PEP),通過發出決策請求和強制執行授權決策來執行訪問控制的系統實體;b)策略決策點(PDP),依據XACML描述的訪問控制策略以及其他屬性信息進行訪問控制決策的實體;c)策略管理點(PAP),系統中產生和維護安全策略的實體;d)策略信息點(PIP),獲取主體、環境和資源的屬性信息的實體,如果PEP發起的XACML請求中缺少某些屬性,會由PIP查找并反饋給PDP做決策。基于ABAC的XACML訪問控制模型如圖2所示。
3 基于MQTT協議的ABAC訪問控制方案
3.1 系統模型
本文方案使用WSO2框架實現了基于ABAC模型的訪問控制的實施,首先描述基于WSO2框架的系統架構[26],系統模型由客戶端、WSO2應用服務器、WSO2身份服務器、MQTT代理四個實體組成。
1)MQTT client 客戶端通過網絡連接上交換的控制數據包與服務器連接并進行通信,服務器在響應客戶端發出的連接請求(控制數據包CONNECT)時打開與客戶端的連接后,發送已建立連接的確認(控制數據包CONNACK)給客戶端。之后,MQTT client可以發起MQTT通信請求進行對主題topic的發布/訂閱,由代理broker進行消息的存儲和轉發。
2)WSO2 application server WSO2應用服務器(WSO2 AS)是一個由Apache Axis2支持的面向企業的Web服務引擎,用于承載MQTT通信中客戶端所提出的request請求,在給MQTT通信的請求提供授權時,需要有一個點攔截該請求并檢查授權,這個特定的點被命名為PEP,WSO2平臺使用Servlet filter授權過濾器作為PEP在WSO2 application server 5.0.1中使用。
3)WSO2 identity server WSO2身份服務器(WSO IS)是一個支持OpenID和XACML的開源身份和授權管理服務器,內置了一個“Balana”作為其內部引擎以支持基于XACML策略的訪問控制,與策略評估相關的核心邏輯駐留在一個名為“XACML Engine”的組件中。
WSO2身份服務器被用做XACML策略決策點(PDP),用于存儲基于屬性的策略和檢查進入特定應用程序的請求的授權,其中,XACML引擎充當模型的PAP、PDP和PIP,授權服務則通過PEP強制執行。
4)MQTT broker 在智能電網分布式系統中,基于MQTT的通信是通過代理(broker)進行基于主題(topic)的發布和訂閱請求實現消息的轉發和存儲。在本系統中,MQTT用戶發出的request請求被應用服務器中的PEP捕獲,再轉發給身份服務器的策略決策點PDP進行策略匹配,決定是否授權MQTT客戶端的請求。
系統模型如圖3所示,該架構定義了兩個ABAC模型的基本組件:訪問策略執行點(PEP)和策略決策點(PDP)。PEP截獲用戶發出的每個MQTT通信請求,然后轉發給PDP進行訪問決策評估,PDP可根據安全策略回答“是/授予”或“否/拒絕”,而PEP根據返回結果執行該決定。該授權功能使用XACML標準機制定義如何根據這些策略評估訪問請求,并實現強制執行策略。
3.2 MQTT控制數據包流
為了實現基于該系統模型中符合訪問控制策略的MQTT通信過程,本節對被改變的客戶端和服務器交換的MQTT控制數據包流進行分析和實現。
1)客戶端連接請求 如圖4所示,當客戶端Ci發送CONNECT請求申請與broker進行連接時,WSO2應用服務器中的PEP組件被激活,該任務專用于管理連接傳輸中的所有控制分組的流。PEP對從客戶端Ci收到的CONNECT連接控制數據包中提取用戶的身份憑據并將數據包轉發給broker,再對請求的客戶端進行身份驗證,并回復一個確認控制數據包CONNACK到客戶端Ci,CONNACK數據包中包含一個狀態碼以指定服務器是接受還是拒絕客戶端請求以及拒絕原因,連接成功后,客戶端Ci可以發送任何其他控制數據包。
2)客戶端發布請求 如圖5所示,發布者Pi發送針對主題topic的發布請求PUBLISH,此時為客戶端Pi連接而激活的PEP組件攔截該數據包,并轉發給PDP組件,PDP由基于主題topic訪問控制策略決定是否授權客戶端Pi的發布請求,如果請求符合至少一個適用的策略,則控制分組數據包PUBLISH的發布被授權,否則傳輸被中止。
3)客戶端訂閱請求 如圖6所示,訂閱者Si對主題topic的讀取訪問受到控制主題topic接收消息的訪問控制策略的約束,因此合法訂閱者發出的SUBSCRIBE控制分組仍然必須通過PEP執行攔截器被決定授權或阻止傳輸。此時PEP將分組轉發給PDP,如果SUBSCRIBE數據包中的訂閱請求荷載與topic的主題過濾器表達式匹配,即符合至少一個可應用的訪問控制策略,則服務器授權Si對主題topic的訪問,并將結果數據包SUBACK轉發給Si。
3.3 訪問控制實現流程
圖3中的系統架構是在ABAC模型的基礎上構建的,主題管理員通過定義該主題下的屬性、角色、權限、資源、授權約束和策略管理各自域的認證和授權。根管理員為每個主題分配其匹配的訪問權限,基于主題的訪問控制策略被創建并存儲在WSO2 identity server中。該模型下實現訪問控制的基本過程如圖7所示。
客戶端Ci發送連接請求后,系統打開客戶端通道和服務器通道,由PEP攔截并調節流經的MQTT消息控制分組,用于客戶端Ci和服務器broker的輸入、輸出分組。客戶端Ci發送發布或訂閱請求后,PEP向服務器轉發其攔截接收的由客戶端發出的所有控制分組包packn,這些控制分組被分析和處理后發送到服務器。類似地,PEP從服務器接收的所有控制數據包也會被發送到合法的客戶端,執行客戶端發出的請求授權。
根據PEP的授權,系統會決定允許還是拒絕駐留在WSO2 AS中的MQTT客戶端發出的request請求。如果決定是permit,則授予其與MQTT代理通信的訪問權限,然后通過代理將關于訪問主題返回的正確響應值發送給客戶端;如果決定是deny,那么適當的錯誤消息將以同樣的方式發送給客戶端,然后用戶可以再次嘗試創建一個已經為他定義的正確訪問權限的訪問請求,最終將獲得與MQTT代理通信的正確訪問權限。此場景描述基于屬性的訪問控制策略的具體實現,對于在智能電網環境中避免第三方不可信實體對智能電表的危險訪問發揮著重要的作用。
4 訪問控制策略方法
4.1 訪問控制策略設計
以下描述具有等式的一階邏輯語言來定義ABAC訪問控制模型的邏輯語言,以表示節點、屬性、事件(如發布、訂閱和消息分發)和授權規則,并使用XACML策略語言來實現。
4.1.1 策略語言定義
a)常量。常量使用字符串表達式,表示節點標志符,如meter1、user1等,或者引用MQTT broker的特殊字符串。主題由路徑表達式定義,使用通配符#和+引用主題,如meter1/consumption。例如,consumption/#解決了任何以耗電量作為路徑根的主題,region/+/consumption解決了諸如region/house/consumptions、region/house2/consumptions等主題。
b)變量。變量用大寫字母表示,在路徑表達式中進行引用。例如,如果M包含字符串meter1,則consumptions/M代表consumptions/meter1。策略規則中的角色層次結構如表1所示。其中,規則(1)~(3)定義了策略語言中的角色層次結構;規則(4)描述主題T的路徑表達式,表示主題T路徑中包含T′。
4.1.2 動作策略語言
a)授權規則定義。授權規則R表示節點的動作事件(發布、訂閱、傳遞等),定義一組授權規則表示MQTT通信中的上下文授權動作,如表2所示。規則(1)~(3)表示MQTT通信中的執行動作(發布、訂閱、傳遞等);規則(4)(5)表示在MQTT通信中根據上下文對請求進行肯定/否定授權。
b)授權規則示例。安全策略P由一組授權規則R組成,conditions表示節點、主題、QoS、消息和環境上的上下文條件的組合(可以為空)。授權規則R表示為allow/deny(N,A)←conditions。授權規則如表3所示。其中,規則(1)表示允許meter1在白天的主題alarms/meter1中發布消息;規則(2)表示允許訪客節點訂閱主題的警報層次結構;規則(3)表示拒絕代理將消息從主題的警報層次結構傳遞到用戶節點;規則(4)表示如果主題T被拒絕發布消息,那么T的每個子集T′也被拒絕發布消息。
示例策略P1描述為表3中的規則(1)(2),表示允許訪客節點在白天發布/訂閱主題alarm/#的警報層次結構,如下所示。
PolicyId=\"P1\"
rulecombiningAlgId=\"deny-overrides\";
〈Target〉〈Anyof〉〈Allof〉
MatchId=\"lessthan\";
AttributeId=\"time\";
AttributeValue=\"20pm\";
MatchId=\"morethan\";
AttributeId=\"time\";
AttributeValue=\"08am\";
〈/Allof〉〈/Anyof〉〈/Target〉
RuleId=\"R1\";
Effect=\"Allow\";
〈Target〉〈Anyof〉〈Allof〉
MatchId=\"equal\";
AttributeId=\"userId\";
AttributeValue=\"guest\";
MatchId=\"equal\";
AttributeId=\"topic\";
AttributeValue=\"alarm/#\";
〈/Allof〉〈/Anyof〉〈/Target〉
4.1.3 主題管理策略語言
訪問控制授權過程中的安全管理是基于主題的,每個主題至少有一個安全管理員,給定主題T的安全管理員負責定義管理主題T的發布/訂閱和來自主題T的消息分發的安全策略P,還有一個根管理員(RM)可以管理所有主題的安全策略(包括添加、刪除、授予、撤銷權限)。RM可以執行以下任務:管理(定義)所有主題的安全策略;授權主題T的管理員定義該主題的安全策略;授予/取消用戶對給定主題的管理權限;授予/取消用戶轉移給定主題的管理權限到另一用戶的權限。
a)主題管理規則定義。定義一組授權規則R表示對主題的安全管理,如表4所示。其中,規則(1)表示規則R中的主題路徑表達式;規則(2)~(5)表示管理給定主題的安全策略(添加、刪除、授予、撤銷權限)。
b)主題管理規則示例。針對主題的安全策略P管理所有主題的安全策略,主題管理規則如表5所示。其中,規則(1)表示RM給自己授予了管理所有主題層次結構的權限;規則(2)(3)表示若節點N被授予了主題T的管理權限,則它可以添加/刪除涉及主題T的授權規則(如果T代表一組主題,則添加到主題T的子集);規則(4)表示若節點N被授予了關于主題T的授權管理權限,則它可以授權關于主題T的管理選項;規則(5)表示若節點N已經授予節點N′管理主題T的權限,則它可以從節點N′撤銷該權限,這種機制稱為級聯撤銷。
示例策略P2包含表5中的規則(1)(2),表示根管理員RM給主題T添加了策略P1中的授權規則R1,示例策略P2如下所示。
PolicyId=\"P2\"
rulecombiningAlgId=\"deny-overrides\";
〈Target〉〈Anyof〉〈Allof〉;
MatchId=\"equal\";
AttributeId=\"role\";
AttributeValue=\"RM\";
〈/Allof〉〈/Anyof〉〈/Target〉
RuleId=\"R2\";
Effect=\"Allow\";
〈Target〉〈Anyof〉〈Allof〉
MatchId=\"equal\";
AttributeId=\"authority\";
AttributeValue=\"ruleAdd(R1) \";
〈/Allof〉〈/Anyof〉〈/Target〉
4.2 策略匹配
4.2.1 策略匹配模型
規則(rule)是XACML策略語言中一個重要的基本元素,包括目標(target)、效用(effect)和條件(condition)三個組成部分[27]。在XACML標準中,屬性以樹狀結構的形式表示為規則或策略,規則的適用性由請求應該滿足的主體、資源和動作屬性的目標表示來決定。中間節點包含這些目標,葉節點有一個額外的effect字段來表示permit/deny決策。在根節點上形成的效果是最終的訪問決策,在策略樹的每個中間節點上通過策略組合算法和規則組合算法得到。
基于XACML語言的策略匹配模型如圖8所示。
4.2.2 策略匹配算法
XACML表示的策略集可以被可視化為策略樹結構,其中節點包含主題、資源、動作或環境定義的目標屬性ai,同樣地,subject、resource和action可以包含給定屬性的多個屬性值vi,訪問請求中攜帶屬性名值對(ai,vi)。策略評估點接收訪問任何資源的請求,PEP將此請求傳遞給策略決策點以進行決策計算并與策略存儲進行交互,PDP根據滿足的目標確定適用于請求的規則。為請求識別的所有規則被組合成策略,然后使用決策組合算法(first-applied,permit-override,deny-override,only-one-applied)形成策略集,直到訪問到根,這種優化組合算法可以降低系統PDP評估時間,提高策略匹配的效率。
訪問決策是這些組合算法在沿遍歷分支成功匹配子節點的結果,沿著匹配的分支樹的所有目標(Ti)在每個中間節點和葉節點上都滿足請求屬性。每個節點的目標表達式可以表示為
由于智能電網的動態訪問特性,策略的匹配需要進行多次判定,能否快速匹配適用的策略直接影響著策略評估的效率[28]。所以方案執行后序遍歷搜索匹配算法,然后通過使用每個中間節點的組合算法回溯根來推斷單個決策,最終得到的決策決定了用戶訪問請求的授權結果。
算法1 策略匹配算法(algorithm PolicyMatch(T))
輸入:根節點為r的請求樹T。
輸出:匹配結果。
for each path[i] in T
PostOrder(path[i]);//對于T中的每條路徑進行后序遍歷
for each node[j] in path[i]
matchpolicyTree(node[j]);//對每條路徑中的節點匹配
if (isRoot(node[j]))
orderOutput(result[i,j]);//匹配至根節點時輸出結果
end if
end for
if (igt;0)
if (root(result[i,0] !=root(result[i-1,0]))
stopMatch();//停止匹配,避免無用路徑
end if
end if
end for
假設請求樹中每條路徑匹配的節點數為n、匹配路徑總數為m,則匹配一條路徑的時間復雜度為O(n);算法的總體時間復雜度為O(nm)。
4.3 策略實現
XACML策略由一個策略集和策略合并算法構成,而一個策略由規則集組成,每個策略包含一個目標,該目標決定了該策略與請求的相關性。
本文方案中由XACML規則描述的策略集表示為PolicySet,在策略示例中,PolicySet包含主題根管理員、主題管理員和用戶授權的策略。其中,target組件指定這組策略適用的訪問主題、資源和操作,如果訪問請求滿足target中列出的所有條件,則認為PolicySet是適用的;access-subject表示請求訪問的用戶,resource表示包含訪問權限的主題,action是允許access-subject對資源執行的操作。
本節描述使用XACML語言支持的ABAC訪問控制機制來表達用戶通過MQTT協議進行關于主題的發布/訂閱的請求的策略算法,示例策略為Management策略和Client策略。
1)主題管理員的訪問請求策略 策略1為策略集PolicySet中的單個策略,其中包含一個確定其適用性的目標組件,因此該策略僅適用于符合target屬性值的主題管理員,target指定訪問主題必須在role屬性中具有值management,被授權主題數據是PowerConsumption和AggregatePowerConsumption,被授權的訪問操作是publish和subscribe。
策略1的規則表示,若用戶訪問請求符合授權規則,主題管理員允許該用戶通過代理發布/訂閱PowerConsumption主題。Management策略表示如下:
策略1 Policy of Management
〈PolicySet PolicySetId = \"PolicySetManagement\"
policy-combining-algorithm=\"permit-overrides\"〉
〈Target〉
/*:Attribute-Category :Attribute ID :Attribute Value */
AnyOf:access-subject
:access-subject :Role :Management
:access-subject :Role :Client
AnyOf :resource
:resource :Type :PowerConsumption
:resource :Type :AggregatePowerConsumption
AnyOf :action
:action :Action-id :Publish
:action :Action-id :Subscribe
〈/Target〉
〈Policy PolicyId =\"Policy1\"
rule-combining-algorithm=\"deny-overrides\"〉
//Management Rules//
〈Target〉
/* :Attribute-Category :Attribute ID :Attribute Value */
:access-subject :Role :Client
AnyOf :resource
:resource :Type :PowerConsumption
:resource:Type :PowerConsumption
:action:Action-id :Publish
:action:Action-id :Subscribe
〈/Target〉
〈Rule RuleId = \"P1R1\" Effect=\"Permit\"〉
〈Condition〉
Function:string-equal
/* :Attribute-Category :Attribute ID :Attribute Value */
:access-subject:AMI Comp:Yes
〈/Condition〉
〈/Rule〉
〈/Policy〉
〈/PolicySet〉
2)用戶的訪問請求策略 策略2也是策略集PolicySet中的單個策略,其中策略組合算法為“permit-overrides”,當訪問規則發生沖突時,決策結果為允許用戶進行發布/訂閱訪問;規則組合算法為“deny-overrides”,即不允許用戶進行主題的發布/訂閱訪問。策略2的規則表示不允許其他用戶訂閱其私有的主題,例如house/client1room/#主題只能由用戶client1進行訂閱訪問。Client策略表示如下:
策略2 Policy of Client
〈PolicySet PolicySetId = \"PolicySetClient\"
policy-combining-algorithm=\"permit-overrides\"〉
〈Target〉
/*:Attribute-Category :Attribute ID :Attribute Value */
AnyOf:access-subject
:access-subject :Role :Client
:resource :Type :house/client1room/#
AnyOf :action
:action :Action-id :Publish
:action :Action-id :Subscribe
〈/Target〉
〈Policy PolicyId =\"Policy2\"
rule-combining-algorithm=\"deny-overrides\"〉
//Client1 Rules for MQTT Topic//
〈Target〉
/*:Attribute-Category :Attribute ID :Attribute Value */
:access-subject :Role :Client
:resource:Type:PowerConsumption
:action:Action-id:Publish
:action:Action-id:Subscribe
〈/Target〉
〈Rule RuleId = “P2R2\" Effect=\"Permit\"〉
〈Condition〉
Function:string-equal
/*:Attribute-Category :Attribute ID :Attribute Value */
:resource:Resource-owner :Client1
Function:string-not-equal
:resource :Content :Consumption-Client1
〈/Condition〉
〈/Rule〉
〈/Policy〉
〈/PolicySet〉
5 性能分析
5.1 安全性分析
a)防竊聽攻擊。竊聽攻擊包括不可信設備竊取通信過程中的消息和可信設備對非訪問權限的主題進行發布/訂閱兩個方面。首先,通過使用Wireshark抓包工具模擬對通信過程中的消息進行竊取,當設備端連接代理進行主題的發布/訂閱時,由于不可信方PDP決策匹配不成功,攻擊者無法進行竊聽攻擊;其次,由于MQTT通信過程中可信設備只能獲取其訪問權限對應的主題范圍,對于非訪問權限內的訪問主題操作將被拒絕發布/訂閱,所以可以抵抗竊聽攻擊。
b)防中間人攻擊。不可信設備對用戶名密碼實施重放攻擊竊取用戶身份認證信息時,未被MQTT broker認證權限的客戶端無法與代理連接成功,這種機制可以有效地防止中間人攻擊,因為只有被授權設備才可以建立與代理的連接和發布/訂閱主題。所以即使攻擊者通過竊取含有身份標志消息標頭也無法為自己取得合法的權限。
c)防重放攻擊。可信設備端連接MQTT broker進行用戶身份、權限認證中使用時間戳方案防止重放攻擊,主題信息的有效載荷中加入了timestamp,攻擊者對設備端發布/訂閱消息過程無法實施重放攻擊。
d)防不可信MQTT broker。可信設備端在和MQTT broker之間進行通信時,訪問控制機制驗證其身份和權限,攻擊者無法偽造成MQTT broker與設備端進行通信,并且在本系統實施的場景中,客戶端代碼中已經將需要連接的代理IP地址固定,因此不存在偽造代理的問題。
e)訪問一致性。基于ABAC模型的受限訪問控制是對每次建立連接和基于主題的數據包級別進行發布/訂閱請求,對每個發布/訂閱者設備和用戶是一致的,與設備和用戶所在位置和主題發布/訂閱發起方式無關。并且MQTT協議屬于應用層協議,并不依賴于底層協議的安全性,因此可以確保方案的訪問一致性。
5.2 策略開銷分析
實驗在一臺配備i7 64 bit四核中央處理器和16 GB內存的臺式電腦上進行系統性能測試。MQTT代理選擇EMQ X 4.3版本;客戶端(即發布者和訂閱者)依賴于Paho-mqtt 1.4.0庫用Python進行實現;實驗中的壓力測試選擇官方推薦的EMQTT連接測試工具emqtt_benchmark,版本為emqtt-bench-master。
5.2.1 屬性開銷分析
本節實驗測試隨著用戶屬性的增加訪問請求的響應時間的變化。自定義一個用戶為其定義一組屬性,屬性數量遞增依次為1、5、10、15、25、30,訪問請求響應時間為代理接收到消息時從數據包中提取的時間戳差值。如圖9所示,隨著策略中使用的屬性數量增加時,訪問請求的響應時間幾乎與屬性數量呈線性關系,這是因為在策略匹配時,系統收集用戶更多屬性需要更長的時間,并且對于PDP執行的評估也需要更長的時間。而在實際情況中,具有大量屬性的策略是少見且不實用的,因此在方案的屬性開銷分析中,即使考慮30個屬性,大多數基于MQTT協議的服務程序仍然可以接受該方案的響應時間。
5.2.2 策略開銷分析
本節實驗測試在策略集中隨著規則的增加系統性能開銷的變化。首先創建一個單一的PolicySet來進行策略匹配的評估測試,其中包含一個帶有越來越多規則的單一策略,實驗從度量策略評估時間(即執行時間)來進行性能的評估。
實驗過程如下:設置一個ABAC引擎,其中包含10個帶有簡單表達式的規則,ABAC訪問控制模型的引擎為特定的MQTT主題、對象、動作及其屬性提供了一組初始的規則,初始化之后,許多并發的授權請求集被提交給引擎,這些集合包括10、100、200、300、400、500、600個同時請求,每100 ms查詢一次以推斷已響應的請求數量來度量端到端的執行時間,結果如圖10 所示。從圖10可以看出,隨著訪問請求數量的增加,ABAC引擎的平均請求服務時間逐漸趨于收斂,這主要是由于系統在訪問請求響應時需要匹配用戶多種屬性,增加了其響應時間,但隨著訪問數量的增加,ABAC模型在處理多任務時的優勢逐漸顯現,平均請求服務時間也就逐漸趨于收斂,而在MQTT通信過程中,設備端在保活時間間隔內發送一次報文的ping請求,其連接保活時間的取值為30~1 200 ms[5],因此最終系統開銷仍保持在可接受的閾值內。
5.3 性能分析
在系統的性能評估中,將本文提出的ABAC訪問控制模型與MQTT協議官方支持的傳統ACL訪問控制模型進行對比,同時橫向對比文獻[23]提出的訪問控制方案。性能對比實驗中,針對訪問請求響應時間這一評估指標進行測試,分析以下四組實驗測試中抓取的MQTT消息數據包并分析其消息傳輸時間。由于客戶端都是同時生成的,當用戶接收到消息時,從有效載荷中提取對應于發送時間的時間戳,并將其減去接收時間以計算傳輸時間,即T傳輸=T發送-T接收。
a)無配置對照實驗組,設備端與MQTT代理連接進行消息傳輸,用戶不受限訪問主題資源。
b)傳統ACL模型選擇EMQ X服務器作為MQTT代理,通過官方支持的ACL訪問控制規則和基于MySQL數據庫插件機制實現設備端與MQTT 代理通信來限制主題的訪問權限,評估過程中,MySQL插件通過mqtt_acl表定義 ACL 訪問控制規則(參考EMQ X使用手冊)。
c)文獻[23]提出在MQTT通信過程中將強制監視器部署在DMZ代理上,攔截訪問請求并與存儲在Redis數據庫中的訪問策略進行匹配,以決定是否授權。
d)本文提出的ABAC訪問控制方案的評估過程中,用戶發布的消息會被WSO2應用服務器中的PEP攔截,經過策略匹配決定是否有權限訪問主題資源。
本文方案實驗配置定義如下:a)定義一個五層的主題樹,每個節點有0~5個子節點,從主題樹中生成訂閱/發布的主題列表,同時創建一個主題過濾器列表(配置的值與MQTT官方文檔的用例一致);b)定義一組包含100條規則的MQTT安全策略,規則定義如4.1節所示;c)每個訂閱者針對主題樹中隨機生成的主題發布單個訂閱,隨機服務質量介于0~2;d)每個發布者就隨機生成的主題發布一條消息,消息的有效載荷包含發布者的標志符、主題、對應于發布時間的時間戳和隨機服務質量。
此外,為了評估所提方法的可伸縮性,改變通過MQTT代理連接到服務器的客戶端數量(包括發布者和訂閱者),多組設備節點配置進行重復實驗分析。實驗節點配置如下:定義一組由50、100、250、500、750和1 000個訂閱者組成的場景,下文中稱為E1~E6,每個訂閱者對應著1 000個發布者,配置如表6所示。
測量結果如圖11所示,在無配置對照實驗組中得到的測量結果顯示了訪問請求傳輸時間的最低值,其小幅增長僅與節點配置中的客戶端的增長相關。首先,本文方案ABAC模型配置下的訪問請求平均傳輸時間和傳統ACL模型配置下的訪問請求平均傳輸時間之間的差異基本恒定,約為150 ms,這150 ms的差異主要包括PEP處理事件所需的時間、PDP處理請求所需的時間、PDP和PEP之間的傳輸時間。這表明方案中消息的傳輸延遲與場景無關,平均傳輸時間只隨著用戶數量呈線性增加,并無額外系統開銷。此外,實驗結果表明當訪問請求數較少時,與傳統ACL訪問控制模型相比,基于ABAC模型的訪問請求平均響應時間略長,但隨著請求數的增加,ABAC訪問控制模型的訪問請求平均響應時間顯著減少,這是因為ABAC模型在主題資源分配中需要考慮多個屬性,增加了其訪問請求的響應時間,而隨著訪問次數的增加,ABAC訪問主題資源的平均響應時間明顯短于本地請求主題資源的響應時間,ABAC模型優勢逐漸顯現,所以本文方案在大型分布式物聯網環境中處理多線程任務的訪問控制請求時具有明顯優勢。
與文獻[23]方案相比,在E1、E2節點配置下,文獻[23]方案模型的平均傳輸時間低于本文方案的ABAC模型,這是由于文獻[23]方案只在MQTT代理和多個客戶端之間部署了強制監控器,遠小于本文方案的啟動執行開銷。但是隨著用戶數量的線性增加,其訪問控制請求的平均傳輸時間顯著增加,明顯低于本文方案的性能表現,這種大幅增長是由該方案中所調用的強制監視器網絡設施的庫所帶來的低效垃圾收集機制造成的。隨著用戶數量和發送的消息越多,其強制監視器會消耗更多內存,執行開銷也會呈線性增長,這也使得該方案會在小型物聯網環境中表現優異(如智能家居、智能健身房等),但并不適合處理多線程任務的訪問控制請求。由圖11也可以看出,在E3之后的配置實驗中,本文方案的性能表現逐漸優于文獻[23],數值增加幅度更為穩定,時延增長率的差值分別為1.1%、1.9%和17.7%,由此說明本文的訪問控制方法能夠實現更加高效平穩的訪問控制過程,這也側面證明了ABAC訪問控制模型的優勢所在。
方案的性能測量表明,在MQTT通信過程中,引入基于ABAC模型的訪問控制方案并不會在基于主題的發布/訂閱訪問請求響應中產生過多的延遲,并且考慮電力物聯網的環境特點,ABAC模型在處理動態和多任務的訪問控制任務時,其平均響應時間增長率明顯優于傳統訪問控制模型,更適合在有限的通信開銷內支持基于MQTT協議的動態授權訪問控制。
6 結束語
智能電網中大量高精度的用電數據為電網的管理帶來了便利,但是智能電表對家庭用戶能源消耗細粒度測量使機密數據持續暴露于未經授權的訪問中,引發了嚴重的用戶用電信息的隱私泄露問題,因此解決智能電表的安全訪問控制問題是電力物聯網安全領域的一大研究重點。本文通過分析智能電表現有的隱私安全保護方案,針對當前提出的訪問控制方案不適用于需要高互操作性/可伸縮性的智能電網領域來執行授權功能,提出一種基于MQTT協議的細粒度ABAC動態訪問控制方案,并結合MQTT協議基于樹型結構的主題特點設計一組動態上下文授權策略并實現了該機制,以解決智能電表的用戶用電信息未經授權而泄露的隱私安全問題。今后的研究重點是在本文方案之上實現訪問控制策略的優化,降低方案開銷。
參考文獻:
[1]張瑤,王傲寒,張宏.中國智能電網發展綜述[J].電力系統保護與控制,2021,49(5):180-187.(Zhang Yao,Wang Aohan,Zhang Hong.Overview of smart grid development in China[J].Power System Protection and Control,2021,49(5):180-187.)
[2] 田楊童,張煌,謝少浩,等.后量子的智能電表隱私保護方案[J].計算機研究與發展,2019,56(10):2229-2242.(Tian Yangtong,Zhang Huang,Xie Shaohao,et al.Post-quantum privacy preserving smart metering system[J].Journal of Computer Research and Development,2019,56(10):2229-2242.)
[3] 趙兵,翟峰,李濤永,等.適用于智能電表雙向互動系統的安全通信協議[J].電力系統自動化,2016,40(17):93-98.(Zhao Bing,Zhai Feng,Li Taoyong,et al.Secure communication protocol for smart meter bidirectional interaction system[J].Automation of Electric Power Systems,2016,40(17):93-98.)
[4] Ouaddah A,Mousannif H,Elkalam A A,et al.Access control in the Internet of Things:big challenges and new opportunities[J].Compu-ter Networks,2017,112(1):237-262.
[5] ISO.ISO/IEC 20922,Information technology message queuing telemetry transport(MQTT) v3.1.1[S].2016.
[6] Bender M,Kirdan E,Pahl M,et al.Open-source MQTT evaluation[C]//Proc of the 18th IEEE Annual Consumer Communications amp; Networking Conference.Piscataway,NJ:IEEE Press,2021:1-4.
[7] 童曉陽,王曉茹.烏克蘭停電事件引起的網絡攻擊與電網信息安全防范思考[J].電力系統自動化,2016,40(7):144-148.(Tong Xiaoyang,Wang Xiaoru.Inference and countermeasure presupposition of network attack in incident on Ukrainian power grid[J].Automation of Electric Power Systems,2016,40(7):144-148.)
[8] Cheung J C L,Chim T W,Yiu S M,et al.Credential-based privacy-preserving power request scheme for smart grid network[C]//Proc of IEEE Global Telecommunications Conference.Piscataway,NJ:IEEE Press,2011:1-5.
[9] 李想.物聯網發布/訂閱系統的研究與實現[D].成都:電子科技大學,2019.(Li Xiang.Research and implementation of Internet of Things publish/subscribe system[D].Chengdu:University of Electro-nic Science and Technology of China,2019.)
[10] Gusmeroli S,Piccione S,Rotondi D.A capability-based security approach to manage access control in the Internet of Things[J].Mathematical amp; Computer Modelling,2013,58(5-6):1189-1205.
[11] Hernández-Ramos J, Jara A, Marín L,et al.Distributed capability-based access control for the Internet of Things[J].Journal of Internet Services and Information Security,2013,3(3/4):1-16.
[12] Sciancalepore S,Piro G,Caldarola D,et al.OAuth-IoT:an access control framework for the Internet of Things based on open standards[C]//Proc of IEEE Symposium on Computers and Communications.Piscataway,NJ:IEEE Press,2017:676-681.
[13] Cheng XiaoHui,Hu Meng,Wang Tong,et al.Research on trust-based access control in the Internet of Things[J].International Journal of Security and Its Applications,2016,10(12):283-288.
[14] Hemdi M,Deters R.Using REST based protocol to enable ABAC within IoT systems[C]//Proc of the 7th IEEE Annual Information Technology,Electronics and Mobile Communication Conference.Pisca-taway,NJ:IEEE Press,2016:1-7.
[15] Sun Kaiwen,Yin Lihua.Attribute-role-based hybrid access control in the Internet of Things[C]//Proc of Asia-Pacific Web Conference.Cham:Springer,2014:333-343.
[16] 熊厚仁,陳性元,杜學繪,等.基于角色的訪問控制模型安全性分析研究綜述[J].計算機應用研究,2015,32(11):3201-3208.(Xiong Houren,Chen Xingyuan,Du Xuehui,et al.Survey of security analysis for role-based access control[J].Application Research of Computers,2015,32(11):3201-3208.)
[17]Zhang Xinwen,Parisi-Presicce F,Sandhu R,et al.Formal model and policy speci-fication of usage control[J].ACM Trans on Information and System Security,2005,8(4):351-387.
[18]Katt B,Zhang Xinwen,Hafner M.Towards a usage control policy specification with Petri nets[C]//Proc of Confederated International Conferences,CoopIS,DOA,IS,and ODBASE.Berlin:Springer-Verlag,2009:905-912.
[19] Vincent H,Kuhn R,Ferraiolo F.Attribute-based access control[J].Computer,2015,48(2):85-88.
[20] Sciancalepore S,Pilc M,Schr?der S,et al.Attribute-based access control scheme in federated IoT platforms[C]//Proc of the 2nd Workshop on Interoperability and Open-Source Solutions for the Internet of Things.Cham:Springer,2016:123-138.
[21] Ye Ning,Zhu Yan,Wang Ruchuan,et al.An efficient authentication and access control scheme for perception layer of Internet of Things[J].Applied Mathematics amp; Information Sciences,2014,8(4):1617-1624.
[22] Rizzardi A,Sicari S,Miorandi D,et al.AUPS:an open source authenticated publish/subscribe system for the Internet of Things[J].Information Systems,2016,62(12):29-41.
[23] Colombo P,Ferrari E.Access control enforcement within MQTT-based Internet of Things ecosystems[C]//Proc of the 23rd ACM Symposium on Access Control Models and Technologies.New York:ACM Press,2018:223-234.
[24] 房梁,殷麗華,郭云川,等.基于屬性的訪問控制關鍵技術研究綜述[J].計算機學報,2017,40(7):1680-1698.(Fang Liang,Yin Lihua,Guo Yunchuan.Survey of key technologies in attribute-based access control scheme[J].Chinese Journal of Computers,2017,40(7):1680-1698.)
[25]曾駿.面向服務環境中基于屬性和協商機制的訪問控制研究及應用[D].重慶:重慶大學,2010.(Zeng Jun.Research and application of access control based on attributes and negotiation mechanism in service-oriented environment[D].Chongqing:Chongqing University,2010.)
[26] Xu Yuanyuan,Yang He.Security solution based on WSO2 IS[C]//Proc of International Conference on Advances in Mechanical Enginee-ring and Industrial Informatics.[S.l.]:Atlantis Press,2015:194-198.
[27] 王靜宇,劉思睿.大數據風險訪問控制研究進展[J].計算機科學,2020,47(7):56-65.(Wang Jingyu,Liu Sirui.Research progress on risk access control[J].Computer Science,2020,47(7):56-65.)
[28] 黃美蓉,歐博.基于屬性分組的訪問控制策略檢索方法[J].計算機應用研究,2020,37(10):3096-3100,3106.(Huang Meirong,Ou Bo.Access control policy retrieval method based on attribute grouping[J].Application Research of Computers,2020,37(10):3096-3100,3106.)