田秀霞,楊明夷
(上海電力大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 201306)
隨著物聯(lián)網(wǎng)(Internet of Things,IoT)技術(shù)的日益成熟[1-2],越來(lái)越多的居民選擇在家中安裝入侵報(bào)警器、遠(yuǎn)程監(jiān)控等家庭物聯(lián)網(wǎng)設(shè)備,這使得家庭物聯(lián)網(wǎng)數(shù)據(jù)呈爆炸式增長(zhǎng)趨勢(shì)。根據(jù)Statista 的預(yù)測(cè),到2025年,全球出貨的家庭智能設(shè)備數(shù)量將達(dá)到4.819億臺(tái)。通過(guò)物聯(lián)網(wǎng)中的智能家居設(shè)備[3-4],將采集到的用戶姓名、聯(lián)系地址、聯(lián)系方式等相關(guān)數(shù)據(jù)自動(dòng)提交給電網(wǎng)公司,電網(wǎng)公司再傳到數(shù)據(jù)庫(kù)進(jìn)行保存,并與政府機(jī)關(guān)(如疫情防控應(yīng)急管理部門、公安機(jī)關(guān)等)共享家庭數(shù)據(jù)。由于目前需要存儲(chǔ)并處理海量的家庭數(shù)據(jù),居民用戶和電網(wǎng)公司對(duì)數(shù)據(jù)安全存儲(chǔ)和高效查詢的需求越來(lái)越大。電網(wǎng)公司需要通過(guò)隨時(shí)隨地按需使用數(shù)據(jù)庫(kù)中的資源信息,并將其安全高效地共享給政府機(jī)關(guān)或公共服務(wù)部門,以此在家庭物聯(lián)網(wǎng)中為居民建立一個(gè)安全可靠的生活環(huán)境。然而,家庭物聯(lián)網(wǎng)對(duì)未經(jīng)授權(quán)訪問(wèn)的漏洞會(huì)使居民的財(cái)產(chǎn)和安全處于危險(xiǎn)之中[5-6]。2020 年12 月,英國(guó)能源供應(yīng)商People's Energy 發(fā)生重大數(shù)據(jù)泄露事件,整個(gè)數(shù)據(jù)庫(kù)被黑客竊取,使所有270 000 名客戶的信息被盜取,包括用戶姓名、聯(lián)系地址、出生日期、電話號(hào)碼、關(guān)稅和電表ID。因此,如何設(shè)計(jì)安全高效的訪問(wèn)控制機(jī)制來(lái)確保家庭數(shù)據(jù)的安全共享是國(guó)內(nèi)外相關(guān)學(xué)者需要考慮的重要問(wèn)題[7-8]。
目前,研究人員已經(jīng)提出了多種面向家庭物聯(lián)網(wǎng)數(shù)據(jù)安全性的訪問(wèn)控制方案。文獻(xiàn)[9]提出一種基于區(qū)塊鏈的分布式訪問(wèn)控制方案,其創(chuàng)建一個(gè)智能合約來(lái)定義管理系統(tǒng)的策略規(guī)則,以實(shí)時(shí)對(duì)設(shè)備提供訪問(wèn)控制信息,同時(shí)幫助物聯(lián)網(wǎng)建立一個(gè)去中心化、可信且可公開驗(yàn)證的數(shù)據(jù)庫(kù),使得億萬(wàn)互聯(lián)的事物實(shí)現(xiàn)分布式信任。但是,對(duì)于家庭物聯(lián)網(wǎng)中的海量數(shù)據(jù),該系統(tǒng)維護(hù)難度極大,電網(wǎng)公司難以承受其巨大的系統(tǒng)開銷。為了能夠處理家庭中的動(dòng)態(tài)數(shù)據(jù),文獻(xiàn)[10]提出基于以太坊的數(shù)據(jù)共享和訪問(wèn)控制系統(tǒng),其設(shè)計(jì)多個(gè)智能合約來(lái)對(duì)網(wǎng)絡(luò)用戶進(jìn)行高效、安全、授權(quán)和基于信任的訪問(wèn)管理。該系統(tǒng)雖然支持高效的數(shù)據(jù)共享,但是每執(zhí)行一個(gè)命令都要消耗Gas(交易費(fèi)),這將造成較大的開銷,因此并不能滿足居民用戶和電網(wǎng)公司的需求。
本文提出一種基于Hyperledger Fabric 的家庭物聯(lián)網(wǎng)訪問(wèn)控制機(jī)制ACHF(Access Control Mechanism Based on Hyperledger Fabric for Home IoT)。以基于屬性的訪問(wèn)控制(Attribute-Based Access Control,ABAC)模型為基礎(chǔ)并進(jìn)行改進(jìn),使用統(tǒng)一的可擴(kuò)展訪問(wèn)控制標(biāo)記語(yǔ)言(eXtensible Access Control Markup Language,XACML)標(biāo)準(zhǔn)來(lái)描述家庭物聯(lián)網(wǎng)環(huán)境下的訪問(wèn)控制策略,同時(shí)設(shè)計(jì)分組策略檢索算法以提高策略的檢索效率,最后基于智能家居實(shí)例,對(duì)ACHF 的可追溯性、自主性、細(xì)粒度檢索、高效動(dòng)態(tài)訪問(wèn)等方面進(jìn)行分析與評(píng)估。
區(qū)塊鏈技術(shù)是比特幣等現(xiàn)代加密貨幣系統(tǒng)的核心[11],其本質(zhì)上是P2P 網(wǎng)絡(luò)管理的分布式數(shù)據(jù)庫(kù),網(wǎng)絡(luò)中所有的對(duì)等節(jié)點(diǎn)需要維護(hù)相同的區(qū)塊鏈副本,并同步更新區(qū)塊鏈。盡管區(qū)塊鏈最初是作為分布式數(shù)據(jù)庫(kù)而開發(fā)的,但是由于出現(xiàn)了一種稱為智能合約的新功能,因此目前已發(fā)展為一個(gè)分布式計(jì)算平臺(tái),這種新型區(qū)塊鏈最具代表性的實(shí)現(xiàn)是超級(jí)賬本[12-13]。與公有區(qū)塊鏈相比,Hyperledger Fabric 作為聯(lián)盟鏈,能執(zhí)行更高效且低成本的共識(shí)算法。
在Hyperledger Fabric 中,將數(shù)據(jù)以事務(wù)的形式打包成區(qū)塊并存放在區(qū)塊鏈中,該區(qū)塊格式如圖1 所示,其中,B 表示區(qū)塊鏈賬本,區(qū)塊B1 包括區(qū)塊頭部H1、區(qū)塊數(shù)據(jù)D1 和區(qū)塊元數(shù)據(jù)M1。H1 由區(qū)塊數(shù)量、當(dāng)前區(qū)塊和前一區(qū)塊的哈希值組成。M1 包括創(chuàng)建區(qū)塊的時(shí)間以及客戶端的身份證書、公鑰和簽名。D1 包括創(chuàng)建區(qū)塊時(shí)的交易。例如,交易T3包括交易頭H3、簽名S3、交易提案P3,交易提案返回R3 和背書E3。H3 中包括鏈碼的名稱、版本等重要數(shù)據(jù)。S3 包括由客戶端創(chuàng)建并由用戶私鑰生成的加密簽名。P3 包括客戶端發(fā)起交易的請(qǐng)求參數(shù)。R3 包括背書節(jié)點(diǎn)返回的讀寫集,該數(shù)據(jù)集合作為模擬提案的結(jié)果,如果交易驗(yàn)證通過(guò),這些數(shù)據(jù)會(huì)被用于更新世界狀態(tài)。E3 是指交易的背書,通常返回一次會(huì)對(duì)應(yīng)多個(gè)背書。
圖1 區(qū)塊結(jié)構(gòu)Fig.1 Block structure
區(qū)塊鏈中的智能合約是一個(gè)可執(zhí)行程序,與交易一樣存儲(chǔ)在區(qū)塊鏈上。智能合約使用變量作為其狀態(tài)和函數(shù),稱為應(yīng)用程序二進(jìn)制接口(Application Binary Interface,ABI),用于查看和更改狀態(tài)[14]。要執(zhí)行智能合約,需要發(fā)送事務(wù)并將其廣播到P2P 網(wǎng)絡(luò)。所有接收此交易的對(duì)等節(jié)點(diǎn)將執(zhí)行合約內(nèi)容,以確保執(zhí)行結(jié)果的有效性。因此,通過(guò)智能合約功能,區(qū)塊鏈技術(shù)可以進(jìn)一步實(shí)現(xiàn)分布式和防篡改計(jì)算。
為了解決家庭物聯(lián)網(wǎng)中的訪問(wèn)控制問(wèn)題,文獻(xiàn)[15]采用類似比特幣的區(qū)塊鏈來(lái)設(shè)計(jì)基于訪問(wèn)控制列表(Access Control Lists,ACL)的訪問(wèn)控制方案。在每個(gè)家庭中應(yīng)用區(qū)塊鏈來(lái)維護(hù)ACL,其中,每個(gè)條目對(duì)應(yīng)一個(gè)內(nèi)部或外部主體、一個(gè)內(nèi)部資源以及被允許的訪問(wèn)權(quán)限。每個(gè)家庭內(nèi)部的訪問(wèn)控制由內(nèi)部礦工執(zhí)行,該礦工充當(dāng)網(wǎng)關(guān)接收來(lái)自主體的訪問(wèn)請(qǐng)求。然而,礦工的存在導(dǎo)致每個(gè)家庭內(nèi)部的集中訪問(wèn)控制,這會(huì)帶來(lái)單點(diǎn)故障問(wèn)題。為此,文獻(xiàn)[16]通過(guò)應(yīng)用以太坊智能合約存儲(chǔ)ACL,并提出一個(gè)基于ACL 的訪問(wèn)控制框架,在該框架中,每個(gè)主體-資源對(duì)使用一個(gè)智能合約來(lái)實(shí)現(xiàn)相關(guān)的訪問(wèn)控制。當(dāng)訪問(wèn)資源時(shí),主體發(fā)送一個(gè)包含所需訪問(wèn)信息的事務(wù),以執(zhí)行相應(yīng)的智能合約,最后自動(dòng)向主體和資源返回結(jié)果(允許或拒絕)。然而,由于一個(gè)合約只負(fù)責(zé)一個(gè)主體-資源對(duì)的訪問(wèn)控制,因此該方案在部署合約時(shí)會(huì)存在巨大的金錢成本,特別是在大規(guī)模家庭物聯(lián)網(wǎng)中,系統(tǒng)開銷更大。為解決該問(wèn)題,文獻(xiàn)[17]設(shè)計(jì)一個(gè)基于角色的訪問(wèn)控制(Role-Based Access Control,RBAC)方案,其部署一個(gè)智能合約來(lái)維護(hù)RBAC 模型中分配給每個(gè)用戶的角色,以便任何服務(wù)提供商都可以在提供服務(wù)時(shí)驗(yàn)證用戶對(duì)角色的所有權(quán)。但是,在用戶和資源數(shù)量巨大的家庭物聯(lián)網(wǎng)環(huán)境下,該系統(tǒng)的維護(hù)難度將大幅提高。
文獻(xiàn)[18]提出ABAC 方案,其中,ABAC 策略的統(tǒng)一資源定位器(Uniform Resource Locator,URL)鏈接存儲(chǔ)在區(qū)塊鏈上,并部署一個(gè)智能合約接收主體的訪問(wèn)請(qǐng)求,然后執(zhí)行訪問(wèn)控制。但是,該方案的主要局限性在于將策略和屬性存儲(chǔ)在外部數(shù)據(jù)庫(kù)中,這使得信息容易受到篡改攻擊,無(wú)法保證策略和屬性的可信度,此外,該文沒(méi)有提供實(shí)現(xiàn),因此方案的可行性未知。文獻(xiàn)[19]對(duì)文獻(xiàn)[18]方案進(jìn)行改進(jìn),提出一個(gè)基于智能合約的框架,該框架由多個(gè)訪問(wèn)控制合約、一個(gè)注冊(cè)合約和一個(gè)判決合約組成,以實(shí)現(xiàn)物聯(lián)網(wǎng)系統(tǒng)的分布式訪問(wèn)控制,并通過(guò)以太坊平臺(tái)進(jìn)行案例研究以演示該框架的應(yīng)用。
雖然以太坊的部署較為簡(jiǎn)單,但其擴(kuò)展性較差,智能合約必須使用固定的、非標(biāo)準(zhǔn)的或特定領(lǐng)域的語(yǔ)言編寫,并需要借助貨幣獎(jiǎng)勵(lì)礦工來(lái)防止攻擊,而超級(jí)賬本無(wú)須借助代幣,其低成本的優(yōu)勢(shì)更適合應(yīng)用于企業(yè)間的業(yè)務(wù)。因此,文獻(xiàn)[20]提出一個(gè)基于Hyperledger Fabric 許可鏈的ABAC 框架,但是其只將屬性信息存儲(chǔ)在區(qū)塊鏈上,沒(méi)有使用智能合約來(lái)處理訪問(wèn)請(qǐng)求。于是,文獻(xiàn)[21]對(duì)文獻(xiàn)[20]框架進(jìn)行改進(jìn),在Hyperledger Fabric 平臺(tái)上使用3 個(gè)智能合約(分別為設(shè)備合約、策略合約和訪問(wèn)合約)來(lái)進(jìn)行實(shí)現(xiàn),但是,其沒(méi)有給出事務(wù)的數(shù)據(jù)格式與工作流程,且策略的檢索效率較低。
綜上,目前針對(duì)家庭物聯(lián)網(wǎng)中的訪問(wèn)控制研究仍處于起步階段,需要在訪問(wèn)控制的效率和動(dòng)態(tài)細(xì)粒度檢索方面進(jìn)行改進(jìn)。本文通過(guò)在Hyperledger Fabric 聯(lián)盟鏈上設(shè)計(jì)3 個(gè)智能合約來(lái)實(shí)現(xiàn)ABAC 模型,并構(gòu)造一種分組策略檢索算法來(lái)縮短策略檢索的時(shí)間,同時(shí)給出事務(wù)的數(shù)據(jù)格式與工作流程。
本文設(shè)計(jì)的訪問(wèn)控制機(jī)制體系架構(gòu)如圖2 所示,該系統(tǒng)架構(gòu)可分為3 層,從左往右分別為數(shù)據(jù)層、服務(wù)層、應(yīng)用層。
圖2 系統(tǒng)架構(gòu)Fig.2 System architecture
各層信息具體如下:
1)數(shù)據(jù)層。將分布式存儲(chǔ)在不同地理位置上的數(shù)據(jù)資源以事務(wù)的形式存儲(chǔ)在區(qū)塊鏈上,該數(shù)據(jù)包括屬性信息、屬性間的關(guān)系、訪問(wèn)控制策略、智能合約、資源URL 等信息。
2)服務(wù)層。服務(wù)層由單個(gè)組件組成,這些組件共同處理數(shù)據(jù)層中的數(shù)據(jù)訪問(wèn)請(qǐng)求,同時(shí)對(duì)請(qǐng)求的數(shù)據(jù)和標(biāo)記的數(shù)據(jù)執(zhí)行計(jì)算,并實(shí)時(shí)監(jiān)控對(duì)數(shù)據(jù)執(zhí)行的每個(gè)操作,然后將所有的操作結(jié)果都廣播到一個(gè)區(qū)塊鏈網(wǎng)絡(luò)中,使其不可被修改,以保證公平地審計(jì)。此外,該層負(fù)責(zé)驗(yàn)證訪問(wèn)資源過(guò)程中的每一個(gè)請(qǐng)求和操作。服務(wù)層包括以下模塊:
(1)驗(yàn)證機(jī)制。許可鏈中的可信機(jī)構(gòu)MSP 負(fù)責(zé)維護(hù)系統(tǒng)中所有節(jié)點(diǎn)的身份,頒發(fā)用于身份驗(yàn)證和授權(quán)的節(jié)點(diǎn)憑據(jù),默認(rèn)實(shí)現(xiàn)基于數(shù)字簽名認(rèn)證的標(biāo)準(zhǔn)PKI 方法,并在確認(rèn)了平臺(tái)許可的參與者身份后將其加入?yún)^(qū)塊鏈網(wǎng)絡(luò)中。
(2)共識(shí)機(jī)制。通過(guò)共識(shí)算法,使區(qū)塊鏈系統(tǒng)中所有的參與者和節(jié)點(diǎn)間的各種數(shù)據(jù)達(dá)成一致,從而保證區(qū)塊鏈的可信度。
(3)智能合約。在區(qū)塊鏈中使用智能合約技術(shù)取代傳統(tǒng)ABAC 訪問(wèn)控制模塊進(jìn)行邏輯操作,包括3 種合約:策略信息合約用于查詢實(shí)體屬性信息和屬性間的關(guān)系;策略管理合約用于管理訪問(wèn)控制策略,并對(duì)策略規(guī)則進(jìn)行編碼和分組;策略判決合約用于判決訪問(wèn)控制請(qǐng)求。
(4)區(qū)塊鏈網(wǎng)絡(luò)。許可區(qū)塊鏈Hyperledger Fabric是一個(gè)分布式操作系統(tǒng),用于執(zhí)行由通用編程語(yǔ)言(如Go、Java、Node.js)編寫的分布式應(yīng)用程序,且僅在復(fù)制的賬本數(shù)據(jù)結(jié)構(gòu)中安全地追蹤溯源其歷史操作記錄,并不使用加密貨幣。
3)應(yīng)用層。為不同類型的用戶提供相應(yīng)的功能,如查詢操作,事務(wù)的創(chuàng)建、更新、撤銷操作等。
本文對(duì)傳統(tǒng)ABAC 模型進(jìn)行改進(jìn)[22],將訪問(wèn)控制技術(shù)與區(qū)塊鏈技術(shù)相結(jié)合,提出一種ACHF 框架,如圖3 所示,該框架包括策略執(zhí)行點(diǎn)(Policy Enforcement Point,PEP)客戶端、策略管理點(diǎn)(Policy Administration Point,PAP)合約、策略判決點(diǎn)(Policy Decision Point,PDP)合約、策略信息點(diǎn)(Policy Information Point,PIP)合約。
圖3 ACHF 框架Fig.3 ACHF framework
圖3 中的虛線部分是進(jìn)行訪問(wèn)請(qǐng)求前的準(zhǔn)備操作,具體如下:
1)PIP 合約負(fù)責(zé)存儲(chǔ)從云端服務(wù)器接收到的設(shè)備資源URL,并管理區(qū)塊鏈?zhǔn)聞?wù)中的屬性信息,使得PAP合約與PDP 合約可以進(jìn)行屬性和資源信息查詢。
2)PAP 合約需要管理訪問(wèn)控制策略信息、對(duì)策略集中的每條規(guī)則使用二進(jìn)制位進(jìn)行編碼,并完成哈希加密。
圖3 中的實(shí)線部分是判斷訪問(wèn)請(qǐng)求時(shí)的執(zhí)行操作,具體如下:
1)當(dāng)PEP 客戶端收到用戶提交的訪問(wèn)請(qǐng)求時(shí),先通過(guò)PIP 合約解析屬性數(shù)據(jù)字段,生成基于屬性的訪問(wèn)控制請(qǐng)求,再將其發(fā)送給PDP 合約。如果資源請(qǐng)求者不希望公開請(qǐng)求,則PEP 客戶端會(huì)使用資源擁有者的公鑰對(duì)該請(qǐng)求進(jìn)行加密。
2)PDP 合約會(huì)根據(jù)收到的基于屬性的訪問(wèn)控制請(qǐng)求,自動(dòng)生成一個(gè)二進(jìn)制編碼,并用sha256 進(jìn)行加密得到一個(gè)哈希值,然后通過(guò)PAP 合約進(jìn)行策略信息查詢,對(duì)查詢結(jié)果做一個(gè)判決,同時(shí)用資源請(qǐng)求者的公鑰對(duì)判決結(jié)果與資源URL 進(jìn)行加密。
3)PDP 合約將加密后的判決結(jié)果(允許或拒絕訪問(wèn))和URL 地址返回給PEP 客戶端,PEP 客戶端會(huì)根據(jù)判決結(jié)果來(lái)決定是否同意用戶的訪問(wèn)請(qǐng)求。
為了便于敘述,給出如下定義:
定義1屬性(Attr)是具有指定數(shù)據(jù)類型和值域的變量,本文使用xAttr,x∈{Sub,Res,Ac,En}分別表示主體屬性、資源屬性、操作屬性和環(huán)境屬性。用xAttrValue,x∈{Sub,Res,Ac,En}分別表示主體、資源、操作和環(huán)境的屬性值范圍。用xAttrSet,x∈{Sub,Res,Ac,En}分別表示主體、資源、操作和環(huán)境的屬性集。用xAttrTuple,x∈{Sub,Res,Ac,En}表示屬性名和屬性值之間的關(guān)系,分別表示主體、資源、操作和環(huán)境的屬性名值對(duì)。用xAttrTupleSet,x∈{Sub,Res,Ac,En}分別表示主體、資源、操作和環(huán)境的屬性名值對(duì)集合。
定義2訪問(wèn)控制策略包括對(duì)資源進(jìn)行特定操作所需要的屬性集合,用三元組Policy←
定義3基于屬性的訪問(wèn)請(qǐng)求(AAR)由一組主體、資源、操作和環(huán)境的屬性名值對(duì)集合構(gòu)成,用四元組表示為AAR=
3.1.1 事務(wù)的數(shù)據(jù)格式
本文在區(qū)塊鏈中以事務(wù)的形式執(zhí)行訪問(wèn)控制策略,該事務(wù)的數(shù)據(jù)格式如圖4 所示。其中:clientID 表示事務(wù)發(fā)布者的編號(hào);chaincodeID 表示事務(wù)調(diào)用的智能合約編號(hào);publicKey 表示事務(wù)發(fā)布者的公鑰;txType 表示事務(wù)類型,包括屬性事務(wù)attrTx、策略事務(wù)policyTx;txPayLoad 表示事務(wù)的具體數(shù)據(jù),包括屬性事務(wù)數(shù)據(jù)attrData、策略事務(wù)哈希txHash 及相應(yīng)的URL;operType 表示操作類型,包括創(chuàng)建、撤銷和更新;timestamp 表示創(chuàng)建事務(wù)的時(shí)間戳;clientSig 表示發(fā)布者對(duì)事務(wù)數(shù)據(jù)的簽名。
圖4 事務(wù)的數(shù)據(jù)格式Fig.4 Data format of transaction
在區(qū)塊鏈中,無(wú)論對(duì)策略事務(wù)執(zhí)行哪類操作以及執(zhí)行多少次,該操作的歷史記錄都將永遠(yuǎn)保留在鏈中,不可被修改,以便日后審計(jì)能掌握整個(gè)訪問(wèn)控制動(dòng)態(tài),并驗(yàn)證PIP、PAP 和PDP 合約是否完全按照訪問(wèn)控制策略對(duì)資源進(jìn)行授權(quán)訪問(wèn),從而杜絕錯(cuò)誤授權(quán)或過(guò)度授權(quán)的問(wèn)題。
3.1.2 事務(wù)的工作流程
如圖5所示,對(duì)等節(jié)點(diǎn)接收事務(wù)的工作過(guò)程可分為4個(gè)階段:提交交易預(yù)案;背書節(jié)點(diǎn)處理并返回響應(yīng)結(jié)果;發(fā)送結(jié)果給排序節(jié)點(diǎn)進(jìn)行處理;交易提交并更新賬本。
圖5 事務(wù)的工作流程Fig.5 Workflow of transaction
事務(wù)工作流程中的4 個(gè)階段具體如下:
1)提交交易預(yù)案??蛻舳税凑?qǐng)D4 的數(shù)據(jù)格式發(fā)起一個(gè)事務(wù)交易tx=
2)背書節(jié)點(diǎn)處理并返回響應(yīng)結(jié)果。背書節(jié)點(diǎn)收到tx 后,先驗(yàn)證clientSig 是否合法,再評(píng)估簽名者是否有權(quán)參與此次交易。若兩者均合法,背書節(jié)點(diǎn)會(huì)通過(guò)執(zhí)行chaincodeID 對(duì)應(yīng)的鏈碼來(lái)進(jìn)行模擬提案。然后,每個(gè)背書節(jié)點(diǎn)都會(huì)生成一個(gè)讀寫集Read/Write_Set,作為該提案的模擬執(zhí)行結(jié)果,并將簽名EndorSig 一并發(fā)回客戶端。
3)發(fā)送結(jié)果給排序節(jié)點(diǎn)進(jìn)行處理??蛻舳耸盏奖硶憫?yīng)Response=
4)交易提交并更新賬本。排序節(jié)點(diǎn)會(huì)自動(dòng)將背書廣播給通道中的所有成員,包括記賬節(jié)點(diǎn)CP1 以及背書節(jié)點(diǎn)EP1、EP2 和EP3,從而建立交易共識(shí)。所有節(jié)點(diǎn)收到交易數(shù)據(jù)塊后,先檢查tx 和EndorSig的合法性,然后判斷背書數(shù)量是否符合背書策略的條件,再校驗(yàn)交易的Read/Write_Set 與當(dāng)前賬本是否一致。如果結(jié)果一致,則表示交易的寫入集是有效的,將其更新到狀態(tài)數(shù)據(jù)庫(kù)中,同時(shí)觸發(fā)一個(gè)事件通知客戶端其發(fā)起的交易已被寫入?yún)^(qū)塊鏈中。
通過(guò)以上流程,將數(shù)據(jù)以事務(wù)的形式存儲(chǔ)在Hyperledger Fabric 許可鏈中,使其具有可追溯性、透明性和可靠性。
目前對(duì)基于XACML 訪問(wèn)控制策略的評(píng)估需要遍歷所有策略才能做出判斷,因此,為了提高策略的檢索效率,本文設(shè)計(jì)二進(jìn)制編碼和哈希算法,構(gòu)造一種分組策略檢索算法。將ABAC 模型中所有屬性的個(gè)數(shù)作為二進(jìn)制編碼的總位數(shù)N,每位取值為0 或1,其中,0 表示不包含該屬性,1 表示含有該屬性。因此,策略集中的每條規(guī)則均可以表示為二進(jìn)制編碼的形式,并將該編碼作為組號(hào)使用,具有相同組號(hào)的規(guī)則合并成一組。
策略集的分組如圖6 所示,根節(jié)點(diǎn)表示策略集的所有規(guī)則信息RuleSet,每條規(guī)則R中又有若干個(gè)屬性。除第一級(jí)的根節(jié)點(diǎn)外,每個(gè)節(jié)點(diǎn)都表示一個(gè)組,若策略集中的某條規(guī)則不包含第一個(gè)屬性,則暫時(shí)并入組號(hào)為011…111 的組中,再依次判斷后面的屬性是否存在,最終確定該規(guī)則的二進(jìn)制編碼,即組號(hào)。具有相同二進(jìn)制編碼的規(guī)則位于同一組中,規(guī)則組的數(shù)量由策略的復(fù)雜性決定,最多可分為2N-1 組。
圖6 策略集分組Fig.6 Policy set grouping
通過(guò)對(duì)ABAC 策略規(guī)則進(jìn)行二進(jìn)制編碼將其分為多個(gè)組,可以在搜索策略時(shí)過(guò)濾掉大量不相關(guān)的策略,從而縮短策略檢索的時(shí)間。但是,在規(guī)則組中檢索時(shí),需要將所有規(guī)則的每個(gè)屬性值xAttrTuple(x∈{Sub,Res,Ac,En})依次與AAR 的屬性值進(jìn)行匹配,檢索時(shí)最壞的情況是每次檢測(cè)到規(guī)則的最后一個(gè)屬性時(shí)發(fā)現(xiàn)不匹配,如果此類規(guī)則太多,則檢索策略的效率較低。因此,本文對(duì)訪問(wèn)控制策略的4 個(gè)屬性ID 進(jìn)行sha256 的哈希加密,在找到匹配的規(guī)則組后,只需比較訪問(wèn)請(qǐng)求和訪問(wèn)控制策略的哈希值,以此來(lái)減少策略檢索的時(shí)間。
對(duì)于本文分組策略檢索算法,作如下定義:
定義4(二進(jìn)制編碼規(guī)則)將所有屬性按照特定的順序排列,屬性中包含的屬性值也需要按照特定的順序排列,形成一個(gè)大的屬性數(shù)組。如果規(guī)則中出現(xiàn)了特定的屬性,則相應(yīng)的位置設(shè)為1。
定義5(群組選擇原則)對(duì)基于屬性的訪問(wèn)控制請(qǐng)求AAR 執(zhí)行二進(jìn)制編碼,并將其與規(guī)則組的組號(hào)進(jìn)行邏輯或操作。若計(jì)算結(jié)果與AAR 的二進(jìn)制編碼一致,則為合適規(guī)則組。
定義6(規(guī)則選擇原則)將AAR 的哈希值與策略規(guī)則的哈希值進(jìn)行比較,如果結(jié)果相等,則該規(guī)則滿足要求。
本文所提機(jī)制使用智能合約技術(shù),為系統(tǒng)提供相關(guān)屬性查詢及策略管理或判決服務(wù)。其中,PIP 合約提供資源URL 以及屬性信息查詢,PAP 合約提供策略信息管理,并對(duì)策略規(guī)則進(jìn)行編碼和哈希運(yùn)算,PDP 合約提供策略判決服務(wù)。
3.3.1 策略信息點(diǎn)PIP 合約
傳統(tǒng)ABAC 模型中的策略信息點(diǎn)PIP 只負(fù)責(zé)提供實(shí)體的屬性信息,本文為了確保屬性間關(guān)系的可信度,將屬性信息和屬性間的關(guān)系都以事務(wù)的形式存儲(chǔ)在區(qū)塊鏈中,同時(shí)PIP 還負(fù)責(zé)管理資源URL 地址,并分別為PAP 和PDP 提供屬性信息和資源地址的查詢服務(wù)。PIP 合約的偽代碼如算法1 所示。
算法1策略信息合約PIP
3.3.2 策略管理點(diǎn)PAP 合約
傳統(tǒng)ABAC 模型中的策略管理點(diǎn)PAP 只負(fù)責(zé)管理訪問(wèn)控制策略規(guī)則,本文為了確保策略的共享性和可信度,不僅使用標(biāo)準(zhǔn)XACML 體系結(jié)構(gòu)細(xì)粒度地描述訪問(wèn)控制策略,并按上述的數(shù)據(jù)格式封裝后存儲(chǔ)在區(qū)塊鏈中,同時(shí)還為PDP 提供策略集中每條規(guī)則的二進(jìn)制編碼和哈希值。
PAP 合約的偽代碼如算法2 所示,其中,管理訪問(wèn)控制策略這一功能包含4 個(gè)ABI,分別為添加策略AddPolicy()、查詢策略QueryPolicy()、更新策略UpdatePolicy()和刪除策略DeletePolicy(),其功能代碼與管理URL 地址相類似,此處不做贅述。
算法2策略管理合約 PAP
3.3.3 策略判決點(diǎn)PDP 合約
傳統(tǒng)ABAC 模型中的策略判定點(diǎn)PDP 只負(fù)責(zé)對(duì)訪問(wèn)控制策略進(jìn)行判決,本文結(jié)合所設(shè)計(jì)的分組策略檢索算法,策略判決點(diǎn)PDP 合約具體流程為:首先,PDP 會(huì)根據(jù)收到的AAR 自動(dòng)生成一個(gè)二進(jìn)制編碼,并用sha256 加密得到一個(gè)哈希值;然后,將AAR的二進(jìn)制編碼與規(guī)則組的組號(hào)做“或運(yùn)算”,找到與其結(jié)果相同的規(guī)則組,再依次比較規(guī)則組中策略的哈希值。當(dāng)返回結(jié)果均不為空時(shí),調(diào)用PAP 的QueryPolicy()ABI,判斷訪問(wèn)請(qǐng)求的環(huán)境屬性是否滿足要求,即申請(qǐng)?jiān)L問(wèn)時(shí)生成的時(shí)間戳的值不能大于策略規(guī)則中的截止時(shí)間,以此來(lái)解決一次授權(quán)多次訪問(wèn)的問(wèn)題。如果所有屬性均符合策略,則驗(yàn)證通過(guò),最后調(diào)用PIP 的GetURL()ABI 獲取資源URL并返回給用戶,否則,返回相應(yīng)的報(bào)錯(cuò)信息。PDP 合約的偽代碼如算法3 所示。
算法3策略判決合約 PDP
本文結(jié)合智能家居場(chǎng)景提供一個(gè)具體的案例分析。首先介紹實(shí)驗(yàn)環(huán)境配置,然后詳細(xì)闡述訪問(wèn)實(shí)現(xiàn)的具體流程,最后對(duì)本文機(jī)制進(jìn)行評(píng)估,并將其與其他相關(guān)方案作比較,以此來(lái)分析該機(jī)制在家庭物聯(lián)網(wǎng)環(huán)境下的性能優(yōu)勢(shì)。
本文實(shí)驗(yàn)在兩臺(tái)PC 機(jī)上進(jìn)行,硬件(上半部分)和軟件(下半部分)環(huán)境配置如表1 所示。
表1 實(shí)驗(yàn)環(huán)境Table 1 Experimental environment
在家庭物聯(lián)網(wǎng)中,每個(gè)參與者都處于不同的地理位置,并且具有互惠互利的關(guān)系,這使得每個(gè)參與者要時(shí)時(shí)共享數(shù)據(jù)來(lái)獲取所需的信息,但是,參與者在鏈中的角色不同,導(dǎo)致無(wú)法共享所有的數(shù)據(jù)。因此,每個(gè)參與者應(yīng)根據(jù)自身的安全需求來(lái)制定相應(yīng)的訪問(wèn)控制策略。同時(shí),智能家居數(shù)據(jù)具有一定的普遍性,并且包含大量具有相同屬性的主體和資源信息,本文所設(shè)計(jì)的機(jī)制適用于此類場(chǎng)景。如圖7所示,電網(wǎng)公司C、普通用戶U 和政府機(jī)關(guān)G 將屬性信息和訪問(wèn)控制策略存放在共同維護(hù)的區(qū)塊鏈中。
圖7 區(qū)塊鏈中參與者的關(guān)系Fig.7 Relationship of participants in the blockchain
電網(wǎng)公司C、普通用戶U 和政府機(jī)關(guān)G 都能在Hyperledger Fabric 平臺(tái)上通過(guò)各自的終端設(shè)備請(qǐng)求服務(wù),因此,可以構(gòu)造相關(guān)的屬性信息。在本例中,定義屬性順序?yàn)椋褐黧w屬性SubAttr 包括1~3 號(hào)屬性項(xiàng);資源屬性ResAttr包括4~6 號(hào)屬性項(xiàng);操作屬性AcAttr包括7~8 號(hào)屬性項(xiàng);環(huán)境屬性EnAttr 包括9~12 號(hào)屬性項(xiàng),如表2 所示。同時(shí),主體編號(hào)、資源編號(hào)、操作編號(hào)和環(huán)境編號(hào)為主鍵且不能為空。如上所述,單個(gè)規(guī)則中屬性的個(gè)數(shù)為12,因此,使用12 個(gè)二進(jìn)制位對(duì)策略進(jìn)行編碼,并利用其屬性信息來(lái)構(gòu)造ABAC 策略。其中,定義的屬性值順序?yàn)橹黧w屬性值SubAttrValue、資源屬性值ResAttrValue、操作屬性值A(chǔ)cAttrValue、環(huán)境屬性值 EnAttrValue,并用policyBinarycode 表示策略哈希值。當(dāng)PAP 對(duì)策略集的每個(gè)規(guī)則執(zhí)行二進(jìn)制編碼后,也會(huì)對(duì)相應(yīng)規(guī)則的subId、resId、acId 和enId 進(jìn)行sha256 的哈希加密。
表2 屬性信息Table 2 Attribute information
若某一政府機(jī)關(guān)G 想讀取某個(gè)智能門鎖資源,則進(jìn)行以下操作:
1)將原始請(qǐng)求發(fā)送給G 的客戶端PEP,PEP 調(diào)用PIP 合約請(qǐng)求查詢屬性信息,然后根據(jù)PIP 合約返回的屬性結(jié)果集將原始申請(qǐng)構(gòu)造為AAR。
2)如果G 不希望公開請(qǐng)求,則使用電網(wǎng)公司C 的公鑰對(duì)該AAR 進(jìn)行加密,并按照第3.1.1 節(jié)的事務(wù)格式將加密后的AAR 進(jìn)行封裝并在區(qū)塊鏈網(wǎng)絡(luò)中廣播。
3)區(qū)塊鏈中的背書節(jié)點(diǎn)負(fù)責(zé)模擬執(zhí)行該事務(wù)tx,將執(zhí)行結(jié)果Read/Write_Set 返回給客戶端,客戶端收到背書響應(yīng)Response 后將該事務(wù)提交給排序服務(wù),排序節(jié)點(diǎn)會(huì)對(duì)其進(jìn)行排序分類,并將該事務(wù)打包成數(shù)據(jù)塊后進(jìn)行廣播。
4)C 收到該事務(wù)后調(diào)用PDP 合約,PDP 合約會(huì)先根據(jù)該AAR 生成一個(gè)二進(jìn)制編碼和一個(gè)哈希值,然后調(diào)用PAP 合約查詢策略信息,通過(guò)二進(jìn)制編碼找到相匹配的規(guī)則組,再依次比較哈希值,找到滿足要求的策略規(guī)則后,判斷AAR 中時(shí)間戳的值是否大于規(guī)則中截止時(shí)間的值。如果驗(yàn)證均通過(guò),則判決結(jié)果為允許訪問(wèn),如圖8 所示。
圖8 允許訪問(wèn)Fig.8 Allow access
5)C 用G 的公鑰來(lái)加密所請(qǐng)求的資源URL,將其與G 的公鑰和訪問(wèn)控制結(jié)果一起封裝為事務(wù),在區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)行廣播,鏈中所有成員會(huì)驗(yàn)證事務(wù)并更新賬本,同時(shí)觸發(fā)一個(gè)事件通知G,G 收到響應(yīng)后解析訪問(wèn)結(jié)果和URL 密文,通過(guò)瀏覽器訪問(wèn)解密的URL 鏈接中的資源信息。
6)如圖9 所示,如果判決結(jié)果為拒絕訪問(wèn),則電網(wǎng)公司C 把所有數(shù)據(jù)封裝為事務(wù)并在區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)行廣播,其中資源URL 為空。鏈中的所有成員會(huì)驗(yàn)證事務(wù),并觸發(fā)一個(gè)事件通知政府機(jī)關(guān)G,內(nèi)容是背書策略拒絕了其訪問(wèn)申請(qǐng)。
圖9 拒絕訪問(wèn)Fig.9 Deny access
為了保護(hù)家庭物聯(lián)網(wǎng)中的數(shù)據(jù)安全,本文所提機(jī)制首先需要滿足美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(National Institute of Standards and Technology,NIST)定義的3 項(xiàng)安全要求,即機(jī)密性、完整性和可用性[23]:
1)機(jī)密性。本文機(jī)制規(guī)定所有用戶節(jié)點(diǎn)必須得到授權(quán)后才能加入?yún)^(qū)塊鏈網(wǎng)絡(luò)中、賬本只能在同一組織間共享,并嚴(yán)格設(shè)置了用戶對(duì)實(shí)體資源的訪問(wèn)權(quán)限,從而確保只有授權(quán)實(shí)體才能訪問(wèn)信息。
2)完整性。根據(jù)第3.1.1 節(jié)設(shè)計(jì)的事務(wù)數(shù)據(jù)格式以及第3.1.2 節(jié)闡述的事務(wù)工作流程,表明每次執(zhí)行事務(wù)操作時(shí)都需要區(qū)塊鏈通道中的所有成員對(duì)其進(jìn)行驗(yàn)證并簽名,從而確保消息在傳輸過(guò)程中不被篡改。
3)可用性。第4.2 節(jié)的案例實(shí)現(xiàn)證明當(dāng)用戶需要服務(wù)或數(shù)據(jù)時(shí),本文所提機(jī)制具有可用性。
除以上3 項(xiàng)基本安全要求外,本文機(jī)制還可以抵抗與家庭物聯(lián)網(wǎng)相關(guān)的安全攻擊[24-25],具體如下:
1)分布式拒絕服務(wù)(Distributed Denial of Service,DDoS)攻擊。本文機(jī)制繼承了比特幣和以太坊抵御DDoS 攻擊的解決方案,如限制事務(wù)交易中的區(qū)塊大小和簽名次數(shù)。
2)修改攻擊。假設(shè)攻擊者修改了廣播的事務(wù)或返回的數(shù)據(jù),那么通過(guò)驗(yàn)證簽名的合法性、比較背書策略的條件,該操作將被發(fā)現(xiàn)并拒絕。
3)重放攻擊。本文機(jī)制設(shè)計(jì)了一個(gè)時(shí)間戳,在用戶提交訪問(wèn)請(qǐng)求時(shí)會(huì)自動(dòng)生成,其值只有不大于策略規(guī)則中的截止時(shí)間才可以被允許訪問(wèn)資源,以此來(lái)解決一次授權(quán)多次訪問(wèn)的問(wèn)題。
4)其他攻擊。由于Hyperledger Fabric 中證書授權(quán)機(jī)構(gòu)(Certificate Authority,CA)的存在,只有在相應(yīng)組織中獲取證書的用戶才可以順利訪問(wèn)。此外,即使惡意用戶可以向區(qū)塊鏈發(fā)送訪問(wèn)請(qǐng)求,通過(guò)設(shè)計(jì)訪問(wèn)控制機(jī)制,其屬性也無(wú)法與策略相匹配,因此,將無(wú)法獲得請(qǐng)求的資源。
4.4.1 ACHF 性能測(cè)試與分析
本文基于XACML 提供的標(biāo)準(zhǔn)策略一致性測(cè)試包中的屬性集和策略集來(lái)進(jìn)行測(cè)試,將策略樣本擴(kuò)充為2 400、4 800、7 200、9 600 和12 000 條規(guī)則,以此映射家庭物聯(lián)網(wǎng)中不斷增加的用戶和設(shè)備,并構(gòu)造2 000、4 000、6 000、8 000 和10 000 個(gè)不同的并發(fā)請(qǐng)求進(jìn)行測(cè)試。本次測(cè)試使用的數(shù)據(jù)庫(kù)為CouchDB,排序服務(wù)為kafka,并依賴于zookeeper。
固定并發(fā)請(qǐng)求數(shù)量為10 000,在不同的策略樣本下,分別調(diào)用AddPolicy()、DeletePolicy()、UpdatePolicy()和QueryPolicy()ABI 并測(cè)試其性能,結(jié)果如圖10 所示。由圖10(a)可知,隨著策略規(guī)則數(shù)量的大幅增加,調(diào)用ABI 花費(fèi)的總時(shí)間也會(huì)相應(yīng)增多,但總體變化不明顯。由圖10(b)可知,在相同的策略規(guī)則數(shù)量下,添加和刪除策略ABI 的吞吐量比更新和查詢策略ABI 的吞吐量更大,因此,前者的性能效率更高,而隨著策略規(guī)則數(shù)量的增加,這4 個(gè)ABI 的吞吐量性能指標(biāo)會(huì)趨于平穩(wěn),表明其在管理訪問(wèn)控制策略方面具有良好的性能。
圖10 策略函數(shù)性能對(duì)比Fig.10 Policy function performance comparison
在不同的策略規(guī)則數(shù)量下,分別構(gòu)造不同數(shù)量的并發(fā)請(qǐng)求,測(cè)試AccessControl()ABI 的性能,結(jié)果如圖11 所示。由圖11(a)可知,在相同的訪問(wèn)數(shù)量、不同的策略數(shù)量下,訪問(wèn)控制花費(fèi)的時(shí)間增多但相差不大,然而,隨著并發(fā)訪問(wèn)數(shù)量的增加,該ABI 花費(fèi)的時(shí)間呈線性增加。由圖11(b)可知,在相同的策略數(shù)量、不同的訪問(wèn)數(shù)量下,訪問(wèn)控制的吞吐量幾乎一致,然而,隨著策略規(guī)則數(shù)量的增加,該ABI 的吞吐量緩慢下降,最后趨于平穩(wěn),表明其在訪問(wèn)控制判決方面具有良好的性能。
圖11 策略判決性能測(cè)試結(jié)果Fig.11 Policy decision performance test results
4.4.2 性能對(duì)比與分析
本文對(duì)比實(shí)驗(yàn)構(gòu)造30、60、150 和600 個(gè)不同的并發(fā)請(qǐng)求進(jìn)行測(cè)試,并從策略檢索時(shí)間方面分析分組策略檢索算法的效率,結(jié)果如圖12 所示。從圖12可以看出,隨著訪問(wèn)數(shù)量的增加,兩種策略的時(shí)間開銷都呈上升趨勢(shì),但是本文策略的高效動(dòng)態(tài)性特點(diǎn)更加顯著。
圖12 策略檢索時(shí)間對(duì)比Fig.12 Policies retrieval time comparison
將本文方案與相關(guān)方案進(jìn)行比較,結(jié)果如表3所示。文獻(xiàn)[15]提出基于比特幣的家庭物聯(lián)網(wǎng)框架,其研究并概述了智能家居中的各種核心組件,但該方案不支持可追溯性、自主性、細(xì)粒度和高效動(dòng)態(tài)訪問(wèn)。文獻(xiàn)[16]提出一種基于以太坊的訪問(wèn)控制框架,該框架通過(guò)預(yù)定義的訪問(wèn)控制策略實(shí)現(xiàn)靜態(tài)訪問(wèn)驗(yàn)證,并通過(guò)檢查主體的行為來(lái)實(shí)現(xiàn)動(dòng)態(tài)訪問(wèn)驗(yàn)證,雖然其支持可追溯性和動(dòng)態(tài)訪問(wèn),但是沒(méi)有自主性、細(xì)粒度檢索且動(dòng)態(tài)訪問(wèn)的效率不高。文獻(xiàn)[26]提出一個(gè)基于屬性的訪問(wèn)控制和通信控制框架,以確保家庭物聯(lián)網(wǎng)體系結(jié)構(gòu)中不同實(shí)體之間的訪問(wèn)和通信安全,雖然其具有自主性,但是沒(méi)有可追溯性、細(xì)粒度和高效動(dòng)態(tài)訪問(wèn)。文獻(xiàn)[21]提出基于超級(jí)賬本和ABAC 模型的訪問(wèn)控制系統(tǒng),并介紹了網(wǎng)絡(luò)初始化、鏈碼安裝和智能合約調(diào)用,該系統(tǒng)雖然支持可追溯性、自主性和細(xì)粒度檢索,但動(dòng)態(tài)訪問(wèn)效率偏低。本文引入超級(jí)賬本來(lái)保證整個(gè)訪問(wèn)過(guò)程的可追溯性,由于鏈中的每個(gè)參與者都可以根據(jù)自身的安全需求自主制定相應(yīng)的訪問(wèn)控制策略,保證了其自主性,此外,本文方案基于ABAC 模型實(shí)現(xiàn)細(xì)粒度的權(quán)限控制,同時(shí)設(shè)計(jì)分組策略檢索算法來(lái)實(shí)現(xiàn)高效動(dòng)態(tài)訪問(wèn),縮短了數(shù)據(jù)檢索的時(shí)間。
表3 不同方案的性能對(duì)比結(jié)果Table 3 Performance comparison results of different schemes
將本文ACHF 機(jī)制與文獻(xiàn)[21]中提出的基于區(qū)塊鏈的物聯(lián)網(wǎng)訪問(wèn)控制系統(tǒng)(Fabric-IoT)、文獻(xiàn)[27]中提出的基于層級(jí)區(qū)塊鏈的物聯(lián)網(wǎng)分布式體系架構(gòu)(DAHB)以及文獻(xiàn)[28]中提出的基于區(qū)塊鏈的IoT訪問(wèn)控制系統(tǒng)(BBIAC)進(jìn)行性能對(duì)比實(shí)驗(yàn),結(jié)果如圖13 所示,以表1 的硬件和軟件環(huán)境為標(biāo)準(zhǔn),選擇訪問(wèn)控制函數(shù)作為比較對(duì)象。從圖13 可以看出,本文所提機(jī)制的吞吐量?jī)?yōu)于其他3 種訪問(wèn)控制方案,更適合大規(guī)模家庭物聯(lián)網(wǎng)環(huán)境下的訪問(wèn)請(qǐng)求場(chǎng)景。
圖13 4 種方案的吞吐量對(duì)比Fig.13 Throughput comparison of four schemes
本文提出一種家庭物聯(lián)網(wǎng)訪問(wèn)控制機(jī)制ACHF,該機(jī)制將智能合約技術(shù)與ABAC 模型相結(jié)合,解決了集中式訪問(wèn)控制存在的單點(diǎn)故障和策略判決中心化的問(wèn)題,同時(shí)使用URL 地址讀取數(shù)據(jù)資源以減輕鏈上存儲(chǔ)大量數(shù)據(jù)區(qū)塊的負(fù)擔(dān)并簡(jiǎn)化數(shù)據(jù)共享的方式。通過(guò)區(qū)塊鏈?zhǔn)聞?wù)管理訪問(wèn)控制策略,數(shù)據(jù)具有不可偽造性、防篡改性、可追溯性的特點(diǎn),并提出對(duì)策略的標(biāo)準(zhǔn)化定義,遵循標(biāo)準(zhǔn)XACML 體系結(jié)構(gòu),提高了互操作性,同時(shí)設(shè)計(jì)分組策略檢索算法,有效縮短了處理訪問(wèn)請(qǐng)求的響應(yīng)時(shí)間。借助Hyperledger Fabric 聯(lián)盟鏈平臺(tái)實(shí)現(xiàn)ACHF 機(jī)制,并將其與相關(guān)方案進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果表明,在包含大量具有相同屬性的主體和資源的家庭物聯(lián)網(wǎng)環(huán)境下,ACHF 機(jī)制能有效保障數(shù)據(jù)安全和用戶自主權(quán),同時(shí)實(shí)現(xiàn)高效動(dòng)態(tài)、細(xì)粒度的訪問(wèn)控制,可以提高系統(tǒng)的靈活性、可擴(kuò)展性和處理能力。由于本文ACHF 機(jī)制中的屬性信息都是以明文形式進(jìn)行存儲(chǔ)的,因此下一步將對(duì)屬性信息的加密方式進(jìn)行研究,在保證用戶數(shù)據(jù)隱私的情況下實(shí)現(xiàn)更安全高效且動(dòng)態(tài)細(xì)粒度的訪問(wèn)。