張江徽,崔 波,李 茹,史錦山
(1.內(nèi)蒙古大學(xué)計(jì)算機(jī)學(xué)院,呼和浩特 010021;2.內(nèi)蒙古自治區(qū)無線網(wǎng)絡(luò)與移動(dòng)計(jì)算重點(diǎn)實(shí)驗(yàn)室,呼和浩特 010021)
物聯(lián)網(wǎng)是以通信網(wǎng)與互聯(lián)網(wǎng)為基礎(chǔ),為物理設(shè)備提供信息交互和無縫連接的互聯(lián)網(wǎng)絡(luò),在該網(wǎng)絡(luò)中物理設(shè)備可以實(shí)現(xiàn)設(shè)備之間的精確協(xié)作與人機(jī)之間的實(shí)時(shí)聯(lián)動(dòng)。目前物聯(lián)網(wǎng)已經(jīng)進(jìn)入相對(duì)成熟的發(fā)展階段,物聯(lián)網(wǎng)設(shè)備可隨時(shí)接入到互聯(lián)網(wǎng)中被用戶所使用。但是物聯(lián)網(wǎng)設(shè)備在使用過程中會(huì)產(chǎn)生大量的數(shù)據(jù),這些海量數(shù)據(jù)中包含著具有明顯指向性的個(gè)人隱私數(shù)據(jù),若這些隱私數(shù)據(jù)發(fā)生泄漏,則代表著用戶隱私的消失。訪問控制作為數(shù)據(jù)保護(hù)的基石性技術(shù)之一,可保障數(shù)據(jù)僅能被擁有相應(yīng)權(quán)限的用戶訪問[1]。但是當(dāng)前的訪問控制方法采用集中式的授權(quán)決策實(shí)體進(jìn)行訪問控制決策,即使用中央可信實(shí)體授予訪問控制權(quán)限,在這種情況下容易出現(xiàn)單點(diǎn)故障問題,可靠性較低。
區(qū)塊鏈?zhǔn)且环N去中心化的分布式技術(shù),區(qū)塊鏈中存儲(chǔ)的數(shù)據(jù)具有可追溯與不可篡改的特性,它可在無信任中心的網(wǎng)絡(luò)環(huán)境中建立信任關(guān)系。區(qū)塊鏈從技術(shù)上解決了使用集中式授權(quán)決策實(shí)體帶來的安全問題,其與訪問控制結(jié)合,可以降低訪問控制對(duì)單一可信實(shí)體的依賴程度,提高訪問控制的可靠性和數(shù)據(jù)的安全性。
2016 年出現(xiàn)了將物聯(lián)網(wǎng)下的訪問控制與區(qū)塊鏈相結(jié)合的方法。文獻(xiàn)[2-3]使用比特幣中的授權(quán)令牌代表訪問權(quán)限,文獻(xiàn)[4]將機(jī)器學(xué)習(xí)與基于比特幣的訪問控制相結(jié)合,文獻(xiàn)[5]則在區(qū)塊鏈中存儲(chǔ)訪問控制信息,而文獻(xiàn)[6]提出了一種基于屬性的物聯(lián)網(wǎng)訪問控制方法。但上述研究中的訪問控制決策過程依然是由一個(gè)集中式的中央實(shí)體來完成[7]。
在以太坊與訪問控制結(jié)合的研究中,文獻(xiàn)[8]通過智能合約驗(yàn)證用戶訪問控制權(quán)限的合法性,文獻(xiàn)[9]則使用智能合約實(shí)現(xiàn)了傳統(tǒng)的訪問控制方法,文獻(xiàn)[10]利用智能合約完成訪問控制信息的記錄,文獻(xiàn)[11]設(shè)計(jì)了3 個(gè)智能合約共同實(shí)現(xiàn)訪問控制的全部功能。上述研究中存在的問題是側(cè)重對(duì)物聯(lián)網(wǎng)設(shè)備的保護(hù),并且在以太坊中執(zhí)行智能合約需要花費(fèi)數(shù)字貨幣,使得系統(tǒng)使用限制較多。
超級(jí)賬本中不存在數(shù)字貨幣,并且它對(duì)應(yīng)用環(huán)境中的算力規(guī)模并沒有嚴(yán)格的要求,因此超級(jí)賬本更適用于物聯(lián)網(wǎng)環(huán)境下的訪問控制,文獻(xiàn)[12]將超級(jí)賬本與訪問控制相結(jié)合,通過智能合約管理訪問控制策略。但該研究對(duì)于訪問控制權(quán)限的劃分粒度較粗,對(duì)于物聯(lián)網(wǎng)設(shè)備的擁有者容易出現(xiàn)越權(quán)訪問、過度授權(quán)等情況。
本文分析當(dāng)前物聯(lián)網(wǎng)環(huán)境下區(qū)塊鏈結(jié)合訪問控制研究存在的不足,設(shè)計(jì)并實(shí)現(xiàn)一種基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng),在使用智能合約進(jìn)行訪問控制決策的基礎(chǔ)上提供細(xì)粒度的訪問控制,并嚴(yán)格審查訪問控制權(quán)限。本文選擇超級(jí)賬本作為執(zhí)行智能合約的區(qū)塊鏈平臺(tái)。
2008 年,中本聰提出了一個(gè)完全去中心化的數(shù)字貨幣系統(tǒng),這種數(shù)字貨幣稱為比特幣[13]。比特幣適用于電子金融領(lǐng)域,可以在弱信任環(huán)境甚至無信任環(huán)境中為參與交易的各方建立起信任關(guān)系,每一筆交易需要同一網(wǎng)絡(luò)中所有節(jié)點(diǎn)確認(rèn)之后才能生效。比特幣使用橢圓曲線算法加密數(shù)據(jù),運(yùn)用P2P網(wǎng)絡(luò)來實(shí)現(xiàn)數(shù)據(jù)的分布式存儲(chǔ),以區(qū)塊為單位采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),憑借共識(shí)算法保證各個(gè)參與方數(shù)據(jù)的一致性。比特幣具有的去中心化、數(shù)據(jù)不可篡改等特點(diǎn),為區(qū)塊鏈的發(fā)展奠定了理論與技術(shù)基礎(chǔ)。比特幣被稱為區(qū)塊鏈1.0。
文獻(xiàn)[14-15]提出以太坊作為下一代的區(qū)塊鏈網(wǎng)絡(luò)架構(gòu)。以太坊在擁有區(qū)塊鏈技術(shù)特性的基礎(chǔ)上增加了具有圖靈完備功能的智能合約。
智能合約是以太坊網(wǎng)絡(luò)上的可執(zhí)行程序,以太坊用戶將設(shè)計(jì)好的業(yè)務(wù)邏輯編寫成智能合約部署在以太坊中,由以太坊虛擬機(jī)(Ethereum Virtual Machine,EVM)自動(dòng)調(diào)用與執(zhí)行[16-17]。在以太坊中部署與調(diào)用智能合約需要支付以數(shù)字貨幣結(jié)算的費(fèi)用。智能合約可實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,擴(kuò)大了區(qū)塊鏈的應(yīng)用范圍,使得各種傳統(tǒng)業(yè)務(wù)開始與訪問控制、供應(yīng)鏈溯源、公證業(yè)務(wù)等區(qū)塊鏈融合。以太坊是區(qū)塊鏈2.0 的代表。
比特幣與以太坊允許任意未知身份的節(jié)點(diǎn)加入到網(wǎng)絡(luò)中,但對(duì)應(yīng)用環(huán)境中的算力規(guī)模有著極高的要求,以保證共識(shí)算法的正常運(yùn)行,維護(hù)區(qū)塊鏈網(wǎng)絡(luò)的完全性和穩(wěn)定性。然而,傳統(tǒng)領(lǐng)域一般不具備強(qiáng)大的算力,卻又需要借助區(qū)塊鏈的數(shù)據(jù)不可逆、不可篡改以及分布式對(duì)等網(wǎng)絡(luò)等特點(diǎn)。因此,研究人員提出了新一代的區(qū)塊鏈技術(shù)——超級(jí)賬本。超級(jí)賬本稱為區(qū)塊鏈3.0。
超級(jí)賬本是Linux 基金會(huì)在2015 年發(fā)起的一個(gè)開源項(xiàng)目,它是一個(gè)分布式賬本平臺(tái),具有無幣、功能模塊化等特點(diǎn)。超級(jí)賬本[18-19]由以下6 個(gè)部分組成:
1)客戶端:使用者通過客戶端實(shí)現(xiàn)應(yīng)用與區(qū)塊鏈網(wǎng)絡(luò)之間的交互,客戶端可以向區(qū)塊鏈網(wǎng)絡(luò)發(fā)出一系列操作命令,如提交交易、建立通道、創(chuàng)建節(jié)點(diǎn)等。
2)證書頒發(fā)機(jī)構(gòu)(Certificate Authority,CA):負(fù)責(zé)管理超級(jí)賬本網(wǎng)絡(luò)中的所有成員身份,CA 也稱為Fabric CA,是成員服務(wù)提供者(Member Service Provider,MSP)的具體實(shí)現(xiàn),MSP 在超級(jí)賬本中是管理成員的系統(tǒng)抽象組件。
3)通道(Channel):將一個(gè)完整的區(qū)塊鏈網(wǎng)絡(luò)分割成不同的私有子網(wǎng),每一個(gè)通道存在不同的節(jié)點(diǎn),實(shí)現(xiàn)了數(shù)據(jù)的隱私性。
4)peer 節(jié)點(diǎn):根據(jù)節(jié)點(diǎn)的作用劃分為背書節(jié)點(diǎn)、提交節(jié)點(diǎn)、錨節(jié)點(diǎn)和領(lǐng)導(dǎo)者節(jié)點(diǎn)。背書節(jié)點(diǎn)負(fù)責(zé)模擬執(zhí)行客戶端所提交的交易并對(duì)執(zhí)行通過的交易簽名,提交節(jié)點(diǎn)將新的區(qū)塊加入到區(qū)塊鏈中,錨節(jié)點(diǎn)用來發(fā)現(xiàn)通道中的所有peer 節(jié)點(diǎn),領(lǐng)導(dǎo)者節(jié)點(diǎn)則是將新的區(qū)塊信息廣播給組織內(nèi)的所有peer 節(jié)點(diǎn)。
5)排序服務(wù):驗(yàn)證背書節(jié)點(diǎn)的簽名后,對(duì)交易進(jìn)行排序,并打包成新的區(qū)塊發(fā)送給提交節(jié)點(diǎn),排序服務(wù)可由一個(gè)排序節(jié)點(diǎn)組成,也可由多個(gè)排序節(jié)點(diǎn)共同組成。
6)鏈碼:在超級(jí)賬本中運(yùn)行的智能合約。
超級(jí)賬本實(shí)現(xiàn)一次完整交易的過程如下:
1)客戶端構(gòu)建交易,并將交易打包發(fā)送給背書節(jié)點(diǎn)。
2)背書節(jié)點(diǎn)對(duì)接收到的交易進(jìn)行驗(yàn)證并模擬執(zhí)行,驗(yàn)證通過后對(duì)該交易簽名,將結(jié)果返回給客戶端。
3)客戶端將模擬結(jié)果發(fā)送給排序節(jié)點(diǎn),驗(yàn)證背書節(jié)點(diǎn)的簽名后,新的交易被排序節(jié)點(diǎn)打包至新的區(qū)塊中,發(fā)送給提交節(jié)點(diǎn)。
4)提交節(jié)點(diǎn)將新的區(qū)塊寫入?yún)^(qū)塊鏈中。
5)領(lǐng)導(dǎo)者節(jié)點(diǎn)在接收到新區(qū)塊寫入的消息后,將消息廣播給組織內(nèi)的其他peer 節(jié)點(diǎn)。
超級(jí)賬本適用于存在多個(gè)參與方同時(shí)又不具備強(qiáng)大算力的環(huán)境中,在這種環(huán)境下其仍然具有區(qū)塊鏈的所有特性。
1.2.1 基于比特幣的訪問控制
最初將訪問控制與區(qū)塊鏈技術(shù)相結(jié)合的研究是于2016 年開始的,研究者將訪問控制與比特幣相結(jié)合。文獻(xiàn)[2-3]將訪問控制模型和區(qū)塊鏈機(jī)制相結(jié)合,提出一種物聯(lián)網(wǎng)場(chǎng)景下的分布式隱私保護(hù)訪問控制框架FairAccess,使用比特幣的授權(quán)令牌代表訪問權(quán)限,通過授權(quán)令牌的方式來實(shí)現(xiàn)權(quán)限的傳遞,在FairAccess 中,區(qū)塊鏈被認(rèn)為是存儲(chǔ)所有訪問控制策略的數(shù)據(jù)庫。有學(xué)者在FairAccess 的基礎(chǔ)上,將機(jī)器學(xué)習(xí)領(lǐng)域中的強(qiáng)化學(xué)習(xí)結(jié)合物聯(lián)網(wǎng)環(huán)境下的訪問控制提出一種動(dòng)態(tài)的、分布式的安全策略[4]。文獻(xiàn)[5]將比特幣與基于屬性的訪問控制相結(jié)合,將訪問控制策略與資源部署在區(qū)塊鏈上并公開可見,任何用戶都可以隨時(shí)查詢與資源配對(duì)的策略以及有權(quán)訪問資源的客體屬性。文獻(xiàn)[6]提出一種基于屬性的物聯(lián)網(wǎng)訪問控制方法,該方法運(yùn)用區(qū)塊鏈存儲(chǔ)屬性數(shù)據(jù),避免了數(shù)據(jù)被非法篡改,同時(shí)簡(jiǎn)化了訪問控制協(xié)議,以滿足物聯(lián)網(wǎng)設(shè)備的計(jì)算能力和功耗要求。
訪問控制與比特幣的結(jié)合只是將區(qū)塊鏈作為存儲(chǔ)控制策略和決策結(jié)果的數(shù)據(jù)庫,以達(dá)到策略執(zhí)行結(jié)果可追溯和不可篡改,保障了訪問控制策略和決策結(jié)果的安全性[7]。但訪問控制的決策過程是由集中式的授權(quán)實(shí)體完成,仍然存在單點(diǎn)故障問題。
1.2.2 基于以太坊的訪問控制
智能合約提出后,有學(xué)者開始研究基于智能合約的訪問控制方法。文獻(xiàn)[8]將智能合約作為用戶使用物聯(lián)網(wǎng)設(shè)備的權(quán)限驗(yàn)證服務(wù)器,當(dāng)用戶發(fā)出使用請(qǐng)求時(shí),智能合約將用戶的權(quán)限令牌與物聯(lián)網(wǎng)設(shè)備對(duì)應(yīng)的令牌進(jìn)行比對(duì),驗(yàn)證用戶的合法性,通過驗(yàn)證后將設(shè)備的全部使用權(quán)限返回給用戶。研究者將基于權(quán)能的訪問控制(Capability-Based Access Control,CapBAC)與基于身份的訪問控制(Identity-Based Access Control,IBAC)融合并通過智能合約實(shí)現(xiàn),使用令牌(Token)代表用戶的訪問控制權(quán)限[9]。文獻(xiàn)[10]使用以太坊私有鏈對(duì)物聯(lián)網(wǎng)設(shè)備的配置文件進(jìn)行分布式管理,同時(shí)將設(shè)備的配置文件存儲(chǔ)在區(qū)塊鏈中,并使用智能合約記錄物聯(lián)網(wǎng)設(shè)備的訪問控制操作。文獻(xiàn)[11]提出一種基于以太坊智能合約的訪問控制方案,包括訪問控制合約(Access Control Contract,ACC)、判斷合約(Judge Contract,JC)和注冊(cè)合約(Register Contract,RC)3 種智能合約。訪問控制合約通過檢查請(qǐng)求者的行為實(shí)現(xiàn)基于策略的授權(quán),判斷合約檢查請(qǐng)求者的錯(cuò)誤行為并對(duì)請(qǐng)求者進(jìn)行相應(yīng)的懲罰,注冊(cè)合約用于注冊(cè)上述兩個(gè)智能合約并提供更新、刪除和其他操作。
以太坊中的智能合約技術(shù)不僅可以將訪問控制策略、決策結(jié)果等關(guān)鍵數(shù)據(jù)寫入到區(qū)塊鏈中,還可以將訪問控制策略轉(zhuǎn)換成智能合約[20],由以太坊中的所有節(jié)點(diǎn)共同完成訪問控制權(quán)限的授予,避免了使用集中式授權(quán)實(shí)體所帶來的單點(diǎn)故障問題。但是上述研究側(cè)重的是提高物聯(lián)網(wǎng)設(shè)備的安全性,對(duì)于訪問控制權(quán)限部分沒有過多的考慮。
由于以太坊中發(fā)布與執(zhí)行智能合約需要花費(fèi)一定的費(fèi)用,而這些費(fèi)用是以以太坊中產(chǎn)出的數(shù)字貨幣結(jié)算,以太坊用戶花費(fèi)完后則無法申請(qǐng)使用資源或者對(duì)資源進(jìn)行管理操作。此外,以太坊對(duì)算力要求較高,對(duì)于硬件性能有限的物聯(lián)網(wǎng)環(huán)境并不適用。
1.2.3 基于超級(jí)賬本的訪問控制
文獻(xiàn)[12]設(shè)計(jì)的基于超級(jí)賬本的訪問控制系統(tǒng),被命名為Fabric-IoT,該系統(tǒng)包含設(shè)備合約、策略合約和訪問合約3 種智能合約。設(shè)備合約負(fù)責(zé)存儲(chǔ)物聯(lián)網(wǎng)設(shè)備的統(tǒng)一資源定位符(Uniform Resource Locator,URL)以及查詢?cè)O(shè)備功能,策略合約為管理員用戶提供管理訪問控制策略的功能,訪問合約負(fù)責(zé)普通用戶的全部訪問控制過程。
超級(jí)賬本中不存在數(shù)字貨幣,無需考慮執(zhí)行智能合約的費(fèi)用問題,并且它對(duì)算力并沒有嚴(yán)格的要求,因此適用于硬件性能有限的物聯(lián)網(wǎng)環(huán)境。上述研究雖然將工作重心放在訪問控制與超級(jí)賬本的結(jié)合上,但其設(shè)計(jì)的訪問控制策略在物聯(lián)網(wǎng)設(shè)備的訪問控制權(quán)限劃分上存在著粒度過粗的問題,使用者請(qǐng)求訪問控制權(quán)限時(shí)會(huì)出現(xiàn)過度授權(quán)、越權(quán)訪問等不安全情況。
針對(duì)上述問題,本文在選擇超級(jí)賬本作為執(zhí)行智能合約的區(qū)塊鏈平臺(tái)的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng),使用智能合約進(jìn)行訪問控制決策,同時(shí)為物聯(lián)網(wǎng)設(shè)備設(shè)計(jì)了一個(gè)訪問控制策略模型FACP,該模型同樣是在超級(jí)賬本中建立的。本文所設(shè)計(jì)的系統(tǒng)通過該模型可以實(shí)現(xiàn)細(xì)粒度的訪問控制,防止出現(xiàn)越權(quán)訪問、過度授權(quán)等情況。
本節(jié)主要介紹系統(tǒng)的設(shè)計(jì)思路,具體內(nèi)容分為系統(tǒng)架構(gòu)、系統(tǒng)業(yè)務(wù)工作流程、訪問控制策略模型的組成以及實(shí)現(xiàn)系統(tǒng)功能的智能合約設(shè)計(jì)。
基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng)可實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備權(quán)限的訪問控制管理。系統(tǒng)架構(gòu)分為用戶端、區(qū)塊鏈和設(shè)備端三部分,如圖1 所示。
圖1 系統(tǒng)架構(gòu)Fig.1 Architecture of system
本文系統(tǒng)架構(gòu)主要包括以下3 個(gè)部分:
1)用戶端。包含4 個(gè)模塊,分別是資源管理模塊、資源請(qǐng)求模塊、資源授予模塊和資源使用模塊。系統(tǒng)中的用戶分為資源請(qǐng)求者和資源擁有者兩類。每個(gè)模塊涉及的功能如下:
(1)資源管理模塊
上傳權(quán)限功能:物聯(lián)網(wǎng)設(shè)備的所有者被稱為資源擁有者,資源擁有者可以將準(zhǔn)備提供給他人使用的物聯(lián)網(wǎng)設(shè)備信息上傳到區(qū)塊鏈中。
設(shè)置訪問控制策略功能:資源擁有者輸入FACP需要的屬性信息,為該設(shè)備設(shè)置多條訪問控制策略以滿足不同的資源請(qǐng)求者的使用請(qǐng)求,每條策略都會(huì)明確規(guī)定滿足何種屬性的資源請(qǐng)求者在何種情況下方可獲取該設(shè)備的訪問控制權(quán)限。
撤回權(quán)限功能:資源擁有者若不再繼續(xù)共享某個(gè)物聯(lián)網(wǎng)設(shè)備的訪問控制權(quán)限,則可通過系統(tǒng)刪除區(qū)塊鏈中存儲(chǔ)的訪問控制權(quán)限信息,刪除之后系統(tǒng)將無法搜索到有關(guān)該設(shè)備的訪問控制權(quán)限信息,資源請(qǐng)求者也無法再使用該設(shè)備。
(2)資源請(qǐng)求模塊
請(qǐng)求資源功能:需要獲取某一個(gè)物聯(lián)網(wǎng)設(shè)備訪問權(quán)限的用戶被稱為資源請(qǐng)求者,系統(tǒng)會(huì)在區(qū)塊鏈中為資源請(qǐng)求者查找符合其條件的物聯(lián)網(wǎng)設(shè)備的訪問控制權(quán)限,資源請(qǐng)求者可對(duì)這項(xiàng)權(quán)限發(fā)起訪問請(qǐng)求。
(3)資源授予模塊
權(quán)限授予功能:資源請(qǐng)求者對(duì)物聯(lián)網(wǎng)設(shè)備的訪問控制權(quán)限發(fā)起請(qǐng)求時(shí),系統(tǒng)會(huì)查詢資源擁有者為物聯(lián)網(wǎng)設(shè)備設(shè)置的訪問控制策略,將資源請(qǐng)求者的屬性信息與訪問控制策略中的屬性信息進(jìn)行比對(duì),全部符合后,將該設(shè)備的訪問控制權(quán)限授予資源請(qǐng)求者。
(4)資源使用模塊
權(quán)限使用功能:資源請(qǐng)求者滿足訪問控制策略,當(dāng)被授予訪問控制權(quán)限時(shí),會(huì)在區(qū)塊鏈中生成記錄,當(dāng)資源請(qǐng)求者需要使用物聯(lián)網(wǎng)設(shè)備時(shí),系統(tǒng)會(huì)在區(qū)塊鏈中查詢用戶是否獲取該設(shè)備的訪問控制權(quán)限,只有查詢到結(jié)果,資源請(qǐng)求者才被系統(tǒng)允許使用該設(shè)備。
2)區(qū)塊鏈。區(qū)塊鏈部分是系統(tǒng)中邏輯處理的核心,使用超級(jí)賬本作為區(qū)塊鏈網(wǎng)絡(luò)架構(gòu),并通過智能合約進(jìn)行訪問控制的邏輯判斷。它主要具有以下3 個(gè)作用:
(1)負(fù)責(zé)用戶端的資源管理模塊、資源請(qǐng)求模塊、資源授予模塊和資源使用模塊的邏輯處理。
(2)存儲(chǔ)訪問控制策略、決策結(jié)果以及系統(tǒng)使用過程中產(chǎn)生的數(shù)據(jù),如用戶信息、用戶權(quán)限信息等。
(3)提高系統(tǒng)可靠性,通過智能合約實(shí)現(xiàn)了分布式的訪問控制決策,避免了單點(diǎn)故障問題。
3)設(shè)備端。區(qū)塊鏈網(wǎng)絡(luò)存在無數(shù)的參與節(jié)點(diǎn),每個(gè)參與節(jié)點(diǎn)需要具有一定的計(jì)算能力與存儲(chǔ)能力,以存儲(chǔ)當(dāng)前區(qū)塊鏈內(nèi)的所有交易數(shù)據(jù),并且共同完成區(qū)塊鏈網(wǎng)絡(luò)內(nèi)的每一次共識(shí)任務(wù),以此保證所有節(jié)點(diǎn)數(shù)據(jù)的一致性[21],而物聯(lián)網(wǎng)設(shè)備計(jì)算和存儲(chǔ)能力較弱,并且這些計(jì)算和存儲(chǔ)能力主要是為物聯(lián)網(wǎng)設(shè)備自身的功能服務(wù),無法將其作為區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn),因此本文中的物聯(lián)網(wǎng)設(shè)備不會(huì)以節(jié)點(diǎn)的身份參與到區(qū)塊鏈網(wǎng)絡(luò)中,每一個(gè)設(shè)備擁有唯一的設(shè)備ID,以便與其他設(shè)備區(qū)分,它們會(huì)接收系統(tǒng)所傳遞的訪問控制信息,并執(zhí)行相應(yīng)的動(dòng)作。
本文系統(tǒng)具體業(yè)務(wù)工作流程如圖2 所示。
圖2 本文系統(tǒng)業(yè)務(wù)工作流程Fig.2 Business workflow of the proposed system
業(yè)務(wù)工作流程由資源管理、資源請(qǐng)求、資源授予和資源使用4 個(gè)部分共同處理,每一部分負(fù)責(zé)處理用戶端的相應(yīng)功能模塊的工作請(qǐng)求,具體步驟如下:
步驟1資源所有者通過策略信息點(diǎn)(Policy Information Point,PIP)組件和策略管理點(diǎn)(Policy Administration Point,PAP)組件上傳資源的訪問控制權(quán)限信息和為該資源設(shè)置的訪問控制策略,并存儲(chǔ)在區(qū)塊鏈中。
步驟2系統(tǒng)搜索符合條件的資源信息,資源請(qǐng)求者通過策略執(zhí)行點(diǎn)(Policy Enforcement Point,PEP)組件發(fā)起對(duì)資源的訪問請(qǐng)求。
步驟3策略決策點(diǎn)(Policy Decision Point,PDP)組件通過PAP 組件獲得該資源的訪問控制策略,通過PIP 獲得資源請(qǐng)求者的屬性信息。
步驟4PDP 組件比對(duì)資源請(qǐng)求者的屬性信息和該資源的訪問控制策略中設(shè)定的屬性信息,若決策結(jié)果是允許,它會(huì)將結(jié)果返回給PEP 組件。
步驟5PEP 組件接收PDP 組件的決策結(jié)果,并將訪問控制策略中規(guī)定的權(quán)限返回給資源請(qǐng)求者,資源請(qǐng)求者獲得訪問控制權(quán)限。
步驟6資源請(qǐng)求者向PEP 組件發(fā)出使用權(quán)限申請(qǐng)。
步驟7PEP 組件向PDP 組件發(fā)送資源請(qǐng)求者的資源使用申請(qǐng)。
步驟8PDP 組件查找資源請(qǐng)求者的已獲取資源列表,確認(rèn)通過后,向PEP 組件返回確認(rèn)信息。
步驟9PEP 組件向資源請(qǐng)求者返回允許調(diào)用信息,同時(shí)資源請(qǐng)求者使用該資源。
業(yè)務(wù)工作流程中所涉及的名詞及含義如表1所示。
表1 工作流程涉及的名詞及具體含義Table 1 Nouns and specific meanings involved in the workflow
策略是由一組規(guī)則組成的,它們定義了實(shí)現(xiàn)特定結(jié)果所需要的實(shí)體屬性,在將物聯(lián)網(wǎng)設(shè)備的訪問控制權(quán)限授予資源請(qǐng)求者的過程中,若訪問控制策略對(duì)于權(quán)限的劃分過于簡(jiǎn)單,將會(huì)造成授權(quán)范圍過大、資源請(qǐng)求者獲得的訪問控制權(quán)限超出其權(quán)限范圍、發(fā)生過度授權(quán)、出現(xiàn)隱私數(shù)據(jù)泄露等風(fēng)險(xiǎn),所以需要將訪問控制權(quán)限進(jìn)行細(xì)粒度劃分。
為實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備訪問權(quán)限的細(xì)粒度劃分,本文設(shè)計(jì)了基于超級(jí)賬本的訪問控制策略模型FACP,如圖3 所示。
圖3 FACP 訪問控制策略模型Fig.3 FACP access control policy model
FACP 訪問控制策略模型的組成如下:
1)策略:資源請(qǐng)求者為物聯(lián)網(wǎng)設(shè)備設(shè)置一組訪問控制規(guī)則,每個(gè)規(guī)則對(duì)應(yīng)一種訪問情況,使資源擁有者可以對(duì)物聯(lián)網(wǎng)設(shè)備做一個(gè)更精細(xì)的權(quán)限控制。
2)規(guī)則由靶標(biāo)、先決條件、有效期限、決策結(jié)果和規(guī)則聯(lián)合算法組成:
(1)靶標(biāo)
資源:被請(qǐng)求設(shè)備的訪問控制權(quán)限。
主體:請(qǐng)求資源的訪問控制權(quán)限的個(gè)人或組織,資源擁有者需要確定申請(qǐng)?jiān)O(shè)備的訪問控制權(quán)限的請(qǐng)求者,保證設(shè)備被指定的資源請(qǐng)求者使用。
操作:資源的權(quán)限,如開關(guān)權(quán)限、讀寫數(shù)據(jù)權(quán)限,對(duì)權(quán)限整體進(jìn)行細(xì)粒度劃分,不需要的權(quán)限則不會(huì)授予。
關(guān)系:需要通過資源擁有者的關(guān)系屬性區(qū)分相同主體名稱的不同主體的訪問請(qǐng)求,防止規(guī)則被錯(cuò)誤使用。
(2)先決條件:對(duì)規(guī)則的應(yīng)用時(shí)間、應(yīng)用空間、設(shè)備的使用原因等一些客觀條件做出限定。
(3)有效期限:規(guī)定該規(guī)則的使用次數(shù)或使用時(shí)間,避免出現(xiàn)無限使用該設(shè)備情況的發(fā)生。
(4)決策結(jié)果:當(dāng)資源請(qǐng)求者的屬性滿足靶標(biāo)中的屬性,并且客觀條件滿足先決條件中的設(shè)定時(shí),系統(tǒng)會(huì)將決策結(jié)果與有效期限返回給資源請(qǐng)求者。
(5)規(guī)則聯(lián)合算法:為防止規(guī)則應(yīng)用沖突情況的發(fā)生,采用許可優(yōu)先算法,只要有一個(gè)規(guī)則的決策結(jié)果是允許,資源請(qǐng)求者就可以獲得對(duì)應(yīng)的訪問控制權(quán)限。
資源擁有者不需要了解FACP,在系統(tǒng)中的輸入框填入所有的屬性信息,系統(tǒng)會(huì)根據(jù)FACP 自動(dòng)生成該設(shè)備專屬的訪問控制策略,實(shí)現(xiàn)細(xì)粒度的訪問控制,防止資源請(qǐng)求者的訪問控制權(quán)限超出資源擁有者對(duì)于該設(shè)備所設(shè)置的權(quán)限共享范圍。
為完成分布式訪問控制決策,本文將物聯(lián)網(wǎng)設(shè)備訪問控制權(quán)限的決策授權(quán)以及訪問控制策略的設(shè)置和用戶信息的管理等操作交由4 個(gè)部署在超級(jí)賬本中的智能合約完成,分別是PIP 合約、PAP 合約、PDP 合約和PEP 合約,本節(jié)將介紹實(shí)現(xiàn)訪問控制功能的合約與函數(shù)。
1)PIP 合約。資源擁有者通過該合約管理物聯(lián)網(wǎng)設(shè)備的訪問控制權(quán)限以及注冊(cè)用戶身份,PIP 合約包含以下函數(shù):
(1)AddResource()函數(shù):資源擁有者上傳物聯(lián)網(wǎng)設(shè)備的訪問控制權(quán)限時(shí)觸發(fā)AddResource()函數(shù),該函數(shù)將設(shè)備的訪問控制權(quán)限信息寫入?yún)^(qū)塊鏈中,一個(gè)合法的訪問控制權(quán)限信息需要4 個(gè)參數(shù),如算法1 所示。
算法1AddResource()函數(shù)
(2)DeleteResource()函數(shù):在某種情況下,資源擁有者不再繼續(xù)共享設(shè)備的訪問控制權(quán)限,通過該函數(shù)輸入要撤銷的資源ID,系統(tǒng)在區(qū)塊鏈中刪除對(duì)應(yīng)的資源信息,完成對(duì)資源的撤銷,資源申請(qǐng)者將無法在區(qū)塊鏈搜索到關(guān)于該資源的信息。
(3)UserRegister()函數(shù):使用者在用戶注冊(cè)頁面中輸入用戶姓名和用戶ID,系統(tǒng)通過該函數(shù)注冊(cè)用戶身份信息,并在區(qū)塊鏈中保存,以便后續(xù)系統(tǒng)操作的進(jìn)行。
2)PAP 合約。PAP 合約負(fù)責(zé)為已共享的物聯(lián)網(wǎng)設(shè)備設(shè)置訪問控制策略,該合約由AddPolicy()函數(shù)構(gòu)成。AddPolicy()函數(shù)負(fù)責(zé)提供FACP 所需要的7 個(gè)屬性信息,偽代碼如算法2 所示。
算法2AddPolicy()函數(shù)
3)PDP 合約。PDP 合約負(fù)責(zé)判斷資源請(qǐng)求者是否匹配所申請(qǐng)?jiān)O(shè)備的訪問控制策略,判斷當(dāng)前的資源請(qǐng)求者是否為該設(shè)備的已授權(quán)用戶。該合約所包含的函數(shù)如下:
(1)MatchPolicy()函數(shù):主要負(fù)責(zé)將資源請(qǐng)求者的屬性信息與其請(qǐng)求的物聯(lián)網(wǎng)設(shè)備的訪問控制策略中的屬性信息做比較,判斷其能否獲得該設(shè)備的訪問控制權(quán)限,該函數(shù)在資源請(qǐng)求者申請(qǐng)資源的訪問控制權(quán)限時(shí)由PEP 合約中的GetPermission()函數(shù)調(diào)用,MatchPolicy()函數(shù)偽代碼如算法3 所示。
算法3MatchPolicy()函數(shù)
(2)JudgeUser()函數(shù):負(fù)責(zé)判斷當(dāng)前的資源請(qǐng)求者是否為該設(shè)備的已授權(quán)用戶之一,并將判斷結(jié)果傳遞給PEP 合約,判斷過程與MatchPolicy()函數(shù)類似,因此不再贅述。
4)PEP 合約。PEP 合約負(fù)責(zé)接收PDP 合約返回的結(jié)果,并根據(jù)結(jié)果執(zhí)行相應(yīng)的動(dòng)作,PEP 合約包含以下4 個(gè)函數(shù):
(1)ShowResource()函數(shù):根據(jù)輸入的用戶姓名顯示已獲得的訪問控制權(quán)限。
(2)UseResource()函數(shù):根據(jù)PDP合約中JudgeUser()函數(shù)返回的結(jié)果,確定用戶的可使用資源列表中是否包含該設(shè)備。
(3)FindResourceByRes_ID()函數(shù):在資源請(qǐng)求者搜索可申請(qǐng)?jiān)O(shè)備時(shí)由系統(tǒng)調(diào)用,根據(jù)輸入的資源ID 顯示對(duì)應(yīng)的搜索結(jié)果。
(4)GetPermission()函數(shù)如算法4 所示,它根據(jù)PDP 合約中MatchPolicy()函數(shù)返回的結(jié)果,將設(shè)備的訪問控制權(quán)限授予資源請(qǐng)求者,同時(shí)將資源請(qǐng)求者所獲得的權(quán)限信息上傳至區(qū)塊鏈中。
算法4GetPermission()函數(shù)
本文在主機(jī)上安裝虛擬機(jī),在虛擬機(jī)中搭建超級(jí)賬本所需要的運(yùn)行環(huán)境,將超級(jí)賬本部署在虛擬機(jī)中,虛擬機(jī)的軟件環(huán)境配置如表2 所示,硬件環(huán)境配置如表3 所示。
表2 軟件環(huán)境Table 2 Software environment
表3 硬件環(huán)境Table 3 Hardware environment
在為超級(jí)賬本搭建的運(yùn)行環(huán)境中,本文設(shè)置了4 種不同類型的節(jié)點(diǎn),如表4 所示。
表4 超級(jí)賬本節(jié)點(diǎn)類型Table 4 Node type of hyperledger fabric
超級(jí)賬本的運(yùn)行環(huán)境搭建過程如下:
1)使用超級(jí)賬本中的加密工具cryptogen 為peer節(jié)點(diǎn)和orderer 節(jié)點(diǎn)生成證書和密鑰。本文中設(shè)置了2 個(gè)peer 組織,每個(gè)組織包含2 個(gè)節(jié)點(diǎn),并設(shè)置1 個(gè)orderer 節(jié)點(diǎn)。
2)使用加密工具configtxgen 讀取configtx.yaml文件中的配置信息:
(1)生成orderer 節(jié)點(diǎn)需要的創(chuàng)世區(qū)塊,當(dāng)系統(tǒng)啟動(dòng)時(shí),該區(qū)塊將被寫入到區(qū)塊鏈中,確保peer 節(jié)點(diǎn)與orderer 節(jié)點(diǎn)的身份信息不會(huì)被篡改。
(2)生成通道的配置信息,每一個(gè)通道都保存自己的賬本信息,通道之間數(shù)據(jù)獨(dú)立,保證數(shù)據(jù)的隱私性。
(3)為每一個(gè)peer 節(jié)點(diǎn)組織生成錨節(jié)點(diǎn)的配置信息,超級(jí)賬本中的組織通過錨節(jié)點(diǎn)與外部組織進(jìn)行信息交流。
其中第(1)步與第(2)步中的操作已集中在一個(gè)generate 的shell 腳本中,執(zhí)行該腳本即可自動(dòng)完成上述操作。
3)讀取通道的配置信息創(chuàng)建通道,讀取每一個(gè)錨節(jié)點(diǎn)配置信息,為每一個(gè)組織設(shè)置錨節(jié)點(diǎn),與外部組織通信。根據(jù)docker compose 中的配置信息啟動(dòng)鏡像創(chuàng)建容器,將每一個(gè)節(jié)點(diǎn)加入到創(chuàng)建的通道中,至此完成對(duì)超級(jí)賬本運(yùn)行環(huán)境的搭建。
超級(jí)賬本的網(wǎng)絡(luò)運(yùn)行環(huán)境搭建結(jié)束后,需要安裝和實(shí)例化鏈碼,鏈碼才可正常使用,鏈碼安裝過程如下:
1)將編寫完成的鏈碼復(fù)制到安裝超級(jí)賬本的文件夾下。
2)執(zhí)行命令將鏈碼打包并簽署,安裝到超級(jí)賬本的每一個(gè)peer 節(jié)點(diǎn)上。
3)通過任意一個(gè)peer節(jié)點(diǎn)執(zhí)行實(shí)例化鏈碼操作,在實(shí)例化操作的同時(shí)執(zhí)行背書策略。在完成實(shí)例化鏈碼后,所有身份對(duì)等節(jié)點(diǎn)均可對(duì)鏈碼進(jìn)行調(diào)用。
對(duì)鏈碼進(jìn)行修改后,可執(zhí)行升級(jí)鏈碼操作使新鏈碼生效,升級(jí)過程與安裝過程類似。
普通用戶使用系統(tǒng)時(shí)不需要直接操作超級(jí)賬本,用戶通過最上層的用戶端使用系統(tǒng)功能,由系統(tǒng)完成對(duì)相應(yīng)智能合約的調(diào)用,這個(gè)過程涉及到與超級(jí)賬本的交互,本文選擇超級(jí)賬本官方提供的SDK完成對(duì)超級(jí)賬本的相關(guān)操作。
本文中的系統(tǒng)使用Fabric-Node-SDK 實(shí)現(xiàn)對(duì)智能合約的調(diào)用及其他數(shù)據(jù)交互。
1)創(chuàng)建一個(gè)新的CA 客戶端與CA 節(jié)點(diǎn)管理超級(jí)賬本中的成員身份,通過CA 節(jié)點(diǎn)注冊(cè)管理員,并創(chuàng)建一個(gè)新的基于文件系統(tǒng)的錢包存儲(chǔ)管理員身份信息。
2)使用已存在的管理員身份注冊(cè)普通用戶,將普通用戶的身份信息導(dǎo)入到錢包中,并運(yùn)行客戶端。
3)通過已注冊(cè)的普通用戶身份連接到peer 節(jié)點(diǎn)上,運(yùn)用3.2.1 節(jié)中創(chuàng)建的通道獲取到已部署好的鏈碼,調(diào)用指定的函數(shù)。
注冊(cè)用戶身份信息需要調(diào)用PIP 合約中的UserRegister()函數(shù),如圖4 所示。
圖4 用戶身份注冊(cè)Fig.4 User identity registration
以用戶ID為標(biāo)識(shí),調(diào)用PIP合約的AddResource()函數(shù),上傳共享的物聯(lián)網(wǎng)設(shè)備,如圖5 所示。
圖5 物聯(lián)網(wǎng)設(shè)備的上傳Fig.5 Upload of IoT devices
調(diào)用 PAP 合約的 AddPolicy()函數(shù),以AddResource()函數(shù)上傳的物聯(lián)網(wǎng)設(shè)備信息為主體,為其設(shè)置訪問控制策略,如圖6 所示。
圖6 訪問控制策略的設(shè)置Fig.6 Setting of access control policy
調(diào)用PIP 合約的DeleteResource()函數(shù),可刪除不再繼續(xù)共享的物聯(lián)網(wǎng)設(shè)備,如圖7 所示。
圖7 物聯(lián)網(wǎng)設(shè)備的刪除Fig.7 Deletion of IoT devices
PEP 合約的FindResourceByRes_ID()函數(shù)為資源請(qǐng)求者查找需要的物聯(lián)網(wǎng)設(shè)備,如圖8 所示。
圖8 可申請(qǐng)?jiān)O(shè)備的查找Fig.8 Finding of available equipment
PEP 合約的GetPermission()函數(shù)根據(jù)資源請(qǐng)求者的屬性信息,判斷其可否獲取該設(shè)備的訪問控制權(quán)限,如圖9 所示。
圖9 資源擁有者的屬性檢查Fig.9 Property check of resource owner
資源請(qǐng)求者通過PEP 合約的ShowCanUse()函數(shù)查看可使用的資源,如圖10 所示。
圖10 已擁有資源的查看Fig.10 View of already owned resources
資源請(qǐng)求者訪問某物聯(lián)網(wǎng)設(shè)備時(shí),通過PEP 合約的UseResource()函數(shù),判斷該設(shè)備是否在其已獲取資源列表中,如圖11 所示。
圖11 已獲得物聯(lián)網(wǎng)設(shè)備的使用Fig.11 Using of acquired IoT devices
本節(jié)分別對(duì)訪問控制策略模型的應(yīng)用性能及系統(tǒng)性能做了詳細(xì)的測(cè)試與分析,并且對(duì)本文所設(shè)計(jì)的基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng)與Fabric-IoT在系統(tǒng)性能上進(jìn)行了對(duì)比實(shí)驗(yàn)與分析。
3.4.1 訪問控制策略模型應(yīng)用測(cè)試
本文所設(shè)計(jì)的系統(tǒng)根據(jù)訪問控制策略模型與用戶在系統(tǒng)中輸入的信息生成對(duì)應(yīng)的訪問控制策略。為測(cè)試訪問控制策略的生成速度,本文進(jìn)行了訪問次數(shù)分別為20 次、50 次、100 次、500 次、1 000 次的并發(fā)訪問實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖12 所示。
圖12 訪問控制策略生成時(shí)間Fig.12 Generation time of access control policy
從圖12 可以看出,在并發(fā)訪問次數(shù)為50 次時(shí),生成訪問控制策略所需時(shí)間最長(zhǎng),之后所需時(shí)間逐漸下降,在并發(fā)訪問次數(shù)為1 000 次時(shí)所需時(shí)間最少,說明系統(tǒng)根據(jù)本文所設(shè)計(jì)的訪問控制策略模型能夠以較低的時(shí)延為用戶生成對(duì)應(yīng)的訪問控制策略。
本文中的訪問控制策略模型是一個(gè)抽象的存在,系統(tǒng)根據(jù)該模型生成訪問控制策略時(shí),需要將生成的數(shù)據(jù)寫入?yún)^(qū)塊鏈中,每一次寫入都是在重復(fù)一次交易提交的過程,因此策略生成的速度會(huì)受到該過程的影響,但時(shí)延較短,不會(huì)影響下一個(gè)策略的生成。
3.4.2 系統(tǒng)性能測(cè)試與分析
為測(cè)試基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng)的使用性能,本文使用hyperledger caliper 作為測(cè)試工具,并準(zhǔn)備兩組模擬多線程客戶端對(duì)系統(tǒng)進(jìn)行并發(fā)訪問的實(shí)驗(yàn),請(qǐng)求訪問次數(shù)分別為20次、50次、100次、500 次,第1 組測(cè)試寫入數(shù)據(jù)函數(shù)的平均延遲與吞吐量分別如圖13、圖14 所示,第2 組測(cè)試查詢數(shù)據(jù)函數(shù)的平均延遲與吞吐量分別如圖15、圖16 所示。
圖13 寫入數(shù)據(jù)函數(shù)的平均延遲Fig.13 Average delay of data writing function
圖14 寫入數(shù)據(jù)函數(shù)的吞吐量Fig.14 Throughput of data writing function
圖15 查詢數(shù)據(jù)函數(shù)的平均延遲Fig.15 Average delay of data querying function
圖16 查詢數(shù)據(jù)函數(shù)的吞吐量Fig.16 Throughput of data querying function
圖13 為寫入數(shù)據(jù)函數(shù)的平均延遲,從圖13 可以看出,寫入數(shù)據(jù)函數(shù)平均延遲穩(wěn)定在0.35 s 以下,并且在請(qǐng)求次數(shù)為500 次時(shí),系統(tǒng)平均延遲最小,說明本文所設(shè)計(jì)的系統(tǒng)向區(qū)塊鏈中寫入數(shù)據(jù)時(shí)具有較低的平均延遲。
寫入數(shù)據(jù)函數(shù)吞吐量的變化如圖14 所示,從圖14可以看出,寫入數(shù)據(jù)函數(shù)的吞吐量在請(qǐng)求次數(shù)為20 次時(shí)達(dá)到峰值,隨著訪問次數(shù)的增加,吞吐量有稍許的下降,但隨著請(qǐng)求次數(shù)增加,吞吐量逐漸趨于穩(wěn)定。
外部數(shù)據(jù)向超級(jí)賬本中寫入時(shí),首先客戶端將數(shù)據(jù)打包成一個(gè)新的交易,并向背書節(jié)點(diǎn)發(fā)送寫入數(shù)據(jù)交易,在所有背書節(jié)點(diǎn)模擬執(zhí)行通過并簽名后,返回給客戶端,客戶端向排序節(jié)點(diǎn)提交已經(jīng)模擬執(zhí)行過的交易,排序節(jié)點(diǎn)驗(yàn)證背書節(jié)點(diǎn)的簽名后,將交易打包至新的區(qū)塊內(nèi),發(fā)送給提交節(jié)點(diǎn),提交節(jié)點(diǎn)在確認(rèn)排序結(jié)果后,將新的區(qū)塊加入到區(qū)塊鏈中。每一次的寫入數(shù)據(jù)都會(huì)重復(fù)此過程,因此寫入數(shù)據(jù)函數(shù)的吞吐量和平均延遲會(huì)受到該過程的影響,但仍在可接受的范圍內(nèi)。
圖15 為查詢數(shù)據(jù)函數(shù)的平均延遲,從圖15 可以看出,查詢數(shù)據(jù)的函數(shù)的平均延遲在0.10 s 以下,隨著請(qǐng)求次數(shù)的增加會(huì)出現(xiàn)小幅波動(dòng),在請(qǐng)求次數(shù)為500 次時(shí),平均延遲達(dá)到最低。
圖16為查詢數(shù)據(jù)函數(shù)的吞吐量,從圖16可以看出,查詢數(shù)據(jù)函數(shù)的吞吐量隨著請(qǐng)求次數(shù)的增加呈現(xiàn)上升的趨勢(shì),說明本文所設(shè)計(jì)的基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng)可以承受較大規(guī)模的訪問請(qǐng)求。
在超級(jí)賬本查詢數(shù)據(jù)的過程中,不需要提交新的交易,不會(huì)與排序節(jié)點(diǎn)、提交節(jié)點(diǎn)等進(jìn)行交互。查詢過程是以用戶的身份查詢需要的數(shù)據(jù),不涉及到區(qū)塊的寫入,因此查詢函數(shù)的吞吐量和平均延遲均優(yōu)于寫入數(shù)據(jù)函數(shù)。
上述兩組實(shí)驗(yàn)結(jié)果說明,本文所設(shè)計(jì)的基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng),在請(qǐng)求次數(shù)不斷上升的過程中能夠以較大的吞吐量和較低的延遲,保證系統(tǒng)的正常使用。
3.4.3 性能對(duì)比實(shí)驗(yàn)與分析
本文設(shè)計(jì)的系統(tǒng)與Fabric-IoT 的性能對(duì)比實(shí)驗(yàn),以本文計(jì)算的硬件環(huán)境與軟件環(huán)境為標(biāo)準(zhǔn),選擇負(fù)責(zé)訪問控制方法的讀寫函數(shù)作為對(duì)比對(duì)象,查詢數(shù)據(jù)函數(shù)的吞吐量與延遲時(shí)間的對(duì)比實(shí)驗(yàn)結(jié)果如圖17和圖18 所示。可以看出,讀寫函數(shù)的性能極其接近,但在寫入數(shù)據(jù)函數(shù)的對(duì)比實(shí)驗(yàn)中,本文所設(shè)計(jì)的系統(tǒng)的吞吐量與平均延遲要優(yōu)于Fabric-IoT。
圖17 吞吐量對(duì)比結(jié)果Fig.17 Throughput comparison results
圖18 平均延遲對(duì)比結(jié)果Fig.18 Average delay comparison results
圖17 中的AddPolicy()函數(shù)與AddResource()函數(shù)表示本文設(shè)計(jì)系統(tǒng)的寫入函數(shù)吞吐量,AddURL()函數(shù)與AddStragedy()函數(shù)表示Fabric-IoT 中寫入數(shù)據(jù)函數(shù)的吞吐量,實(shí)驗(yàn)數(shù)據(jù)顯示,本文所設(shè)計(jì)的系統(tǒng)的寫入數(shù)據(jù)吞吐量要優(yōu)于Fabric-IoT,可以承受較大的流量訪問。
圖18 中的AddURL()函數(shù)與AddStragedy()函數(shù)表示Fabric-IoT 的平均延遲數(shù)據(jù),AddPolicy()函數(shù)與AddResource()函數(shù)表示本文設(shè)計(jì)的系統(tǒng)寫入數(shù)據(jù)的平均延遲,圖中的實(shí)驗(yàn)數(shù)據(jù)說明本文設(shè)計(jì)系統(tǒng)的寫入數(shù)據(jù)平均延遲時(shí)間要低于Fabric-IoT,并且隨著訪問次數(shù)的增加,平均延遲時(shí)間也呈現(xiàn)出穩(wěn)定的趨勢(shì)。
本文所設(shè)計(jì)的基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng)獲取用戶本身的屬性信息作為訪問控制策略中的相關(guān)信息,而在Fabric-IoT 中需要物聯(lián)網(wǎng)設(shè)備的IP地址與MAC 地址作為訪問控制策略的屬性信息,這兩項(xiàng)參數(shù)在獲取時(shí)需要花費(fèi)一定的時(shí)間,該獲取過程會(huì)影響Fabric-IoT 寫入數(shù)據(jù)時(shí)的吞吐量與平均延遲。對(duì)比實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的系統(tǒng)在寫入數(shù)據(jù)方面的性能要優(yōu)于Fabric-IoT,在實(shí)現(xiàn)細(xì)粒度的訪問控制的情況下,可以更好地應(yīng)用于有大規(guī)模寫入數(shù)據(jù)請(qǐng)求的物聯(lián)網(wǎng)場(chǎng)景。
本文設(shè)計(jì)并實(shí)現(xiàn)一種基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng)。該系統(tǒng)將區(qū)塊鏈技術(shù)與訪問控制相結(jié)合,解決了傳統(tǒng)訪問控制中所面臨的中央信任實(shí)體問題,提高了訪問控制的可靠性與安全性,并且用戶根據(jù)本文所設(shè)計(jì)的FACP 訪問控制策略模型,可為每一個(gè)物聯(lián)網(wǎng)設(shè)備設(shè)置訪問控制策略,達(dá)到細(xì)粒度的訪問控制,防止過度授權(quán)、越權(quán)訪問等情況的發(fā)生。同時(shí)本文采用超級(jí)賬本作為執(zhí)行智能合約的區(qū)塊鏈平臺(tái),在保留區(qū)塊鏈特性的情況下,使系統(tǒng)更加靈活。性能測(cè)試結(jié)果表明,該系統(tǒng)具有較高的吞吐量、較低的延遲時(shí)間及訪問控制策略生成時(shí)間,可以滿足較大規(guī)模請(qǐng)求場(chǎng)景的使用需求。下一步將設(shè)計(jì)一個(gè)改進(jìn)數(shù)據(jù)保護(hù)方案保護(hù)訪問控制策略,實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備訪問控制策略與其他數(shù)據(jù)的隔離,提高訪問控制策略的隱私性,以防止被他人非法利用。