史錦山,李 茹*,松婷婷
(1. 內(nèi)蒙古大學(xué)計(jì)算機(jī)學(xué)院,呼和浩特010021;2. 內(nèi)蒙古自治區(qū)無(wú)線網(wǎng)絡(luò)與移動(dòng)計(jì)算重點(diǎn)實(shí)驗(yàn)室(內(nèi)蒙古大學(xué)),呼和浩特010021)
(?通信作者電子郵箱csliru@imu.edu.cn)
物聯(lián)網(wǎng)中產(chǎn)生了海量的數(shù)據(jù),其中含有大量的個(gè)人隱私,這些隱私信息一旦泄漏會(huì)給用戶(hù)帶來(lái)巨大的損失。作為數(shù)據(jù)保護(hù)的基石性技術(shù)之一,訪問(wèn)控制可保障數(shù)據(jù)僅能被擁有相應(yīng)權(quán)限的用戶(hù)訪問(wèn)[1]。因此,物聯(lián)網(wǎng)下的訪問(wèn)控制機(jī)制也就成為了物聯(lián)網(wǎng)安全和隱私保護(hù)的重要研究?jī)?nèi)容之一。
區(qū)塊鏈?zhǔn)且环N去中心化的分布式技術(shù),從技術(shù)上解決了基于信任的中心化模型帶來(lái)的安全問(wèn)題,因此研究者將區(qū)塊鏈與訪問(wèn)控制結(jié)合來(lái)作為物聯(lián)網(wǎng)數(shù)據(jù)保護(hù)的關(guān)鍵技術(shù)。
目前將區(qū)塊鏈應(yīng)用到訪問(wèn)控制中的研究可以分為兩類(lèi):一類(lèi)是區(qū)塊鏈技術(shù)與現(xiàn)有的物聯(lián)網(wǎng)訪問(wèn)控制模型相結(jié)合[2-10],另一類(lèi)是在區(qū)塊鏈平臺(tái)上重新設(shè)計(jì)訪問(wèn)控制模型[11-23]。
與現(xiàn)有物聯(lián)網(wǎng)訪問(wèn)控制模型相結(jié)合的研究主要是為了解決現(xiàn)有訪問(wèn)控制模型的集中式授權(quán)決策實(shí)體帶來(lái)的多機(jī)構(gòu)間安全信任問(wèn)題[2-6]和單點(diǎn)故障問(wèn)題[7-10]。區(qū)塊鏈在互不信任的節(jié)點(diǎn)間構(gòu)建了一個(gè)可信的環(huán)境,研究者目前已經(jīng)解決了基于角色的訪問(wèn)控制(Role-Based Access Control,RBAC)[2]、基于屬性的訪問(wèn)控制(Attributes Based Access Control,ABAC)[3-5]、基于權(quán)能的訪問(wèn)控制(Capability-Based Access Control,CapBAC)[6]中因?yàn)樾湃味鴰?lái)的一些問(wèn)題。另一些研究者則利用區(qū)塊鏈去中心的特征解決了CapBAC[7-8]、CP-ABE(Ciphertext Policy Attribute Based Encryption)[9]、SmartOrBAC(Smart Organization-Based Access Control)[10]中 的 單 點(diǎn) 故 障問(wèn)題。
在區(qū)塊鏈平臺(tái)上重新設(shè)計(jì)訪問(wèn)控制模型,這類(lèi)研究充分利用區(qū)塊鏈的去中心化、不可篡改、可溯源和智能合約的特性,將區(qū)塊鏈作為可信實(shí)體構(gòu)建訪問(wèn)控制模型[11-23]。研究者們首先初步探索了在區(qū)塊鏈上設(shè)計(jì)新的框架的可行性,如文獻(xiàn)[11-15]在區(qū)塊鏈上提出了各自重新設(shè)計(jì)的訪問(wèn)控制模型。接著,研究者們提出了更詳細(xì)的訪問(wèn)過(guò)程而不僅限于框架:Zhang 等[16]提出了一種靜態(tài)的訪問(wèn)控制模型;Ramachandran等[17]提出了一種科學(xué)數(shù)據(jù)來(lái)源的管理方法;Ali等[18]提出了一種物聯(lián)網(wǎng)下的訪問(wèn)控制模型,并對(duì)事件和查詢(xún)基礎(chǔ)權(quán)限委托提出了要求。更進(jìn)一步,研究者們解決了物聯(lián)網(wǎng)環(huán)境中的關(guān)鍵問(wèn)題:Dorri 等[19]提出一種方法使用token 來(lái)緩解區(qū)塊鏈存在時(shí)間、計(jì)算和存儲(chǔ)開(kāi)銷(xiāo)巨大的問(wèn)題;Lin 等[20]解決了細(xì)粒度訪問(wèn);Novo 等[21]提出的模型具有可伸縮性;Alphand 等[22]的模型具有靈活性;Ma等[23]提出的模型可跨域訪問(wèn)。
盡管進(jìn)行了許多將區(qū)塊鏈與訪問(wèn)控制相結(jié)合的研究,但是目前這些訪問(wèn)控制模型并不成熟,沒(méi)有統(tǒng)一考慮物聯(lián)網(wǎng)海量性、動(dòng)態(tài)性和設(shè)備輕量級(jí)的特征。事實(shí)上這三個(gè)特征在物聯(lián)網(wǎng)中是內(nèi)在聯(lián)系并同時(shí)存在的,物聯(lián)網(wǎng)中存在海量的用戶(hù),用戶(hù)會(huì)隨時(shí)移動(dòng),每個(gè)用戶(hù)通常都擁有多個(gè)物聯(lián)網(wǎng)終端設(shè)備,且這些設(shè)備多數(shù)是輕量級(jí)的。因此本文將這三個(gè)特征放在一起討論,其中:海量性為訪問(wèn)控制帶來(lái)了更為復(fù)雜的管理難度,需要管理海量的用戶(hù)、終端設(shè)備和多樣的設(shè)備種類(lèi)、數(shù)據(jù)類(lèi)型以及更復(fù)雜的應(yīng)用;動(dòng)態(tài)性代表著訪問(wèn)控制必須支持節(jié)點(diǎn)的移動(dòng)和動(dòng)態(tài)接入;設(shè)備輕量級(jí)則代表著設(shè)備并不能為訪問(wèn)控制提供太多的計(jì)算和存儲(chǔ)能力。
因此,本文提出了一種基于區(qū)塊鏈的物聯(lián)網(wǎng)訪問(wèn)控制(Blockchain-based IoT Access Control,BBIAC)框架,該框架包括BBIAC 模型和工作流程。為了滿(mǎn)足海量性的要求,BBIAC模型參考了ABAC 中關(guān)于屬性的概念,將主體和客體的屬性作為基本的決策要素,通過(guò)構(gòu)建{屬性,權(quán)限}關(guān)聯(lián)關(guān)系簡(jiǎn)化了大規(guī)模用戶(hù)的管理難度。接著,區(qū)塊鏈自身分布式結(jié)構(gòu)和身份認(rèn)證方式為BBIAC 提供了節(jié)點(diǎn)的移動(dòng)性和節(jié)點(diǎn)的動(dòng)態(tài)接入的功能,同時(shí)提供權(quán)限傳遞功能滿(mǎn)足了物聯(lián)網(wǎng)中權(quán)限的動(dòng)態(tài)轉(zhuǎn)移。最后,由區(qū)塊鏈所提供的安全性和多機(jī)構(gòu)間的信任,使BBIAC 可以將需要大規(guī)模計(jì)算和存儲(chǔ)的部分部署在區(qū)塊鏈中,因此本模型支持輕量級(jí)的物聯(lián)網(wǎng)設(shè)備。
本文的工作主要有:1)提出了一種物聯(lián)網(wǎng)下的訪問(wèn)控制模型,結(jié)合了ABAC 中屬性的概念和CapBAC 中令牌的概念,以區(qū)塊鏈為主體解決了物聯(lián)網(wǎng)三種環(huán)境特征帶來(lái)的挑戰(zhàn),并給出模型對(duì)應(yīng)的工作流程;2)利用著色Perti 網(wǎng)(Colored Petri Net,CPN)對(duì)BBIAC模型進(jìn)行形式化的安全性證明;3)通過(guò)實(shí)驗(yàn)分析驗(yàn)證了BBIAC 對(duì)海量性、動(dòng)態(tài)性和設(shè)備輕量級(jí)的支持,實(shí)驗(yàn)結(jié)果表明BBIAC 適用于物聯(lián)網(wǎng)環(huán)境,并通過(guò)實(shí)驗(yàn)測(cè)試了不同共識(shí)算法對(duì)模型性能的影響。
物聯(lián)網(wǎng)環(huán)境具有海量性、動(dòng)態(tài)性、設(shè)備輕量級(jí)的特征,BBIAC 作為物聯(lián)網(wǎng)下的訪問(wèn)控制模型,需要適應(yīng)這些特征。因此BBIAC 模型在設(shè)計(jì)時(shí)同時(shí)兼顧了物聯(lián)網(wǎng)海量性、動(dòng)態(tài)性和設(shè)備輕量級(jí)的特征。
BBIAC 模型的設(shè)計(jì)思想如下:1)針對(duì)物聯(lián)網(wǎng)的海量性,BBIAC 模型吸收了ABAC 中屬性的概念,將屬性作為基本的決策要素,并在ABAC 的基礎(chǔ)上進(jìn)行了擴(kuò)展;2)由區(qū)塊鏈數(shù)字簽名實(shí)現(xiàn)的身份認(rèn)證和P2P(Peer-to-Peer)網(wǎng)絡(luò)結(jié)構(gòu)滿(mǎn)足了物聯(lián)網(wǎng)的動(dòng)態(tài)性,同時(shí)提供了權(quán)限的動(dòng)態(tài)轉(zhuǎn)移;3)區(qū)塊鏈所提供的多機(jī)構(gòu)間的信任,使BBIAC 可以將需要大規(guī)模計(jì)算和存儲(chǔ)的部分部署在安全可信的區(qū)塊鏈中,因此本模型支持輕量級(jí)的物聯(lián)網(wǎng)設(shè)備;4)為了克服區(qū)塊鏈響應(yīng)時(shí)間過(guò)慢的缺點(diǎn),將權(quán)限映射為token,然后通過(guò)token 提前申請(qǐng)、多次使用的訪問(wèn)方法,減小區(qū)塊鏈對(duì)訪問(wèn)控制性能的影響。
綜合以上的考慮,訪問(wèn)控制模型設(shè)計(jì)如圖1 所示,由以下三部分組成:
1)實(shí)體。包括主體(Subject,S)、客體(Object,O)、權(quán)限(Permission,P)、資源擁有者(Resource Owner,R)、Token 和事件(Event,E)。
2)實(shí)體間的關(guān)系。包括主體和Token 的關(guān)系(ST)、Token和權(quán)限(TP)、權(quán)限和客體(PO)、客體和資源擁有者(OR),以及事件與其他主體之間的關(guān)系。由于事件的不同,各種事件與主體之間的關(guān)系也各不相同。
3)屬性。包括實(shí)體屬性和環(huán)境屬性?xún)深?lèi),實(shí)體屬性會(huì)出現(xiàn)繼承的現(xiàn)象,后文詳細(xì)介紹。
圖1 基于區(qū)塊鏈的物聯(lián)網(wǎng)訪問(wèn)控制模型Fig. 1 Blockchain-based IoT access control model
實(shí)體是訪問(wèn)控制模型中實(shí)際參與訪問(wèn)控制的集合。模型通過(guò)六元組(S,O,P,R,Token,E)表示物聯(lián)網(wǎng)中的訪問(wèn)控制所涉及到的實(shí)體。
主體是主動(dòng)發(fā)起訪問(wèn)請(qǐng)求的實(shí)體集合,通過(guò)S(t)={s1,s2,…,sn}表示t時(shí)刻物聯(lián)網(wǎng)中的某個(gè)主動(dòng)發(fā)起訪問(wèn)請(qǐng)求的主體si的集合。
客體是物聯(lián)網(wǎng)中可被訪問(wèn)的實(shí)體集合,這里的客體可以是數(shù)據(jù)、文件、程序、物聯(lián)網(wǎng)設(shè)備等虛擬和現(xiàn)實(shí)中所有可被訪問(wèn)的資源,通過(guò)O(t)={o1,o2,…,on}表示t 時(shí)刻物聯(lián)網(wǎng)中可被訪問(wèn)的資源oi的集合。
權(quán)限是主體S 對(duì)客體O 操作的范圍和程度的實(shí)體集合,通過(guò)P={p1,p2,…,pn}表示物聯(lián)網(wǎng)中的權(quán)限,包括數(shù)據(jù)的讀、寫(xiě)、新建、刪除和對(duì)物聯(lián)網(wǎng)設(shè)備的操作等。
資源擁有者R 是客體O 擁有者的實(shí)體集合,客體的訪問(wèn)策略都是由其資源擁有者制定,通過(guò)R(t)={r1,r2,…,rn}表示t時(shí)刻物聯(lián)網(wǎng)中的資源擁有者ri的集合。
Token是訪問(wèn)控制策略對(duì)主體授予的權(quán)限的實(shí)體集合,通過(guò)Tokenij(p,tstart,tend)={tokenij(p,tstart,tend)|i∈S(tstart),j∈O(tstart),p∈P}表示,tokenij(p,tstart,tend)表示tstart到tend期間主體si擁有對(duì)客體oj的操作權(quán)限p。
事件是訪問(wèn)控制模型中對(duì)token 操作的一組智能合約的集合,通過(guò)E={e1,e2,…,en}表示,事件包括請(qǐng)求訪問(wèn)事件、token 生成事件、token 傳遞事件和token 使用事件等。之所以將操作token 的數(shù)個(gè)合約抽象出來(lái)形成事件實(shí)體,是因?yàn)閷?duì)token的操作是訪問(wèn)控制模型的核心。
主體S 和Token 的關(guān)系通過(guò)ST?S×Token 表示,主體與Token 是一對(duì)多的關(guān)系,即每個(gè)主體可以同時(shí)擁有多個(gè)token,每個(gè)token只能對(duì)應(yīng)一個(gè)主體。
Token 和權(quán)限P 的關(guān)系通過(guò)TP?Token×P 表示,Token 和權(quán)限是多對(duì)多的關(guān)系,一個(gè)token 可以對(duì)應(yīng)一個(gè)客體的多個(gè)權(quán)限,同時(shí)一個(gè)客體的權(quán)限可以生成多個(gè)token 分發(fā)給多個(gè)主體。
權(quán)限P 和客體O 的關(guān)系通過(guò)PO?P×O 表示,權(quán)限和客體是多對(duì)一的關(guān)系,一個(gè)客體可能會(huì)映射出多個(gè)可被訪問(wèn)的權(quán)限。例如對(duì)于網(wǎng)絡(luò)攝像頭來(lái)說(shuō)其權(quán)限有開(kāi)、關(guān)、轉(zhuǎn)動(dòng)方向等操作權(quán)限。
客體O 和資源擁有者R 的關(guān)系通過(guò)OR?O×R 表示,客體和資源擁有者是多對(duì)一的關(guān)系,即一個(gè)客體對(duì)應(yīng)一個(gè)資源擁有者,一個(gè)資源擁有者可能擁有多個(gè)客體。
事件E 與其他實(shí)體間的關(guān)系較為復(fù)雜,且不同事件與其他實(shí)體的關(guān)系也是不同的。
請(qǐng)求訪問(wèn)事件與主體S、客體O 和權(quán)限P 有直接關(guān)系,通過(guò)AccessRequest(s,o,p)表示,其中訪問(wèn)請(qǐng)求事件與主體S 和客體O 都是一對(duì)一的關(guān)系,與權(quán)限P 是一對(duì)多的關(guān)系,因?yàn)橹黧w可以同時(shí)請(qǐng)求客體的多項(xiàng)權(quán)限。
token 生成事件與客體O、權(quán)限P 和Token 有直接關(guān)系,通過(guò)CreateToken(o,p)->token(p,tstart,tend)表示。token 生成事件與Token 是一對(duì)一的關(guān)系,每個(gè)token 生成事件會(huì)創(chuàng)建一個(gè)新的token。在生成token 時(shí)需要確定token 所對(duì)應(yīng)的客體和權(quán)限,一個(gè)token 對(duì)應(yīng)一個(gè)客體,但是可以對(duì)應(yīng)同一客體下的多個(gè)權(quán)限,這些權(quán)限必須是客體自身的權(quán)限的子集。
token 傳遞事件與主體和Token 有直接關(guān)系,通過(guò)TransferToken(sfrom,sto,token(p,tstart,tend))->token(p,tstart,tend)表示。每個(gè)token 傳遞事件和主體是1∶2 的關(guān)系,即一個(gè)主體發(fā)起傳遞,一個(gè)主體接收token。token 傳遞事件和Token 是一對(duì)一的關(guān)系,每個(gè)token傳遞事件只能傳遞一個(gè)token。
token 使用事件同樣僅與主體和Token 有關(guān)聯(lián),通過(guò)UseToken(s,tokensj(p,tstart,tend))->pj表示,不同的是token使用事件與主體是一對(duì)一的關(guān)系,和Token同樣也是一對(duì)一的關(guān)系。
屬性是對(duì)物聯(lián)網(wǎng)中的事物以訪問(wèn)控制為視角的抽象,提取出的與訪問(wèn)控制相關(guān)的性質(zhì)。模型中的屬性分為實(shí)體屬性和環(huán)境屬性?xún)深?lèi)。
這里首先需要對(duì)本文中屬性間的繼承和約束作出定義,然后逐一介紹各項(xiàng)屬性。
定義1 屬性繼承。實(shí)體間的屬性存在繼承的現(xiàn)象,即繼承者實(shí)體的屬性分為兩部分:一部分屬性繼承自被繼承者實(shí)體;一部分是自己特有的屬性,自己特有的屬性不會(huì)和繼承屬性沖突。
定義2 屬性間的約束。繼承者實(shí)體在繼承了被繼承者實(shí)體的屬性后,會(huì)受到被繼承者實(shí)體屬性的約束,或者說(shuō)它的行為必須滿(mǎn)足它所繼承的屬性。
例如對(duì)于固定安裝的網(wǎng)絡(luò)攝像頭來(lái)說(shuō)是不存在移動(dòng)和存儲(chǔ)功能的,因此它的權(quán)限也不包括移動(dòng)和寫(xiě)入,而是只有讀取、開(kāi)關(guān)機(jī)、轉(zhuǎn)動(dòng)方向等權(quán)限。因此,根據(jù)客體的不同,其分化出的權(quán)限的子集也是不同的。屬性與約束的關(guān)系如圖2所示。
主體的屬性是指主體自身固有的、與環(huán)境變化無(wú)關(guān)的、與訪問(wèn)控制有關(guān)的屬性,如年齡、性別、職業(yè)、職務(wù)等。使用SA表示主體屬性的集合,對(duì)于某個(gè)主體si的屬性集合表示為si.a={aj|aj∈si.SA},其中si∈S(t)。
圖2 實(shí)體屬性與約束范圍的關(guān)系示意圖Fig. 2 Schematic diagram of relationship between entity attributes and constraint range
客體的屬性是指客體自身固有的、與環(huán)境變化無(wú)關(guān)的、與訪問(wèn)控制有關(guān)的屬性。在物聯(lián)網(wǎng)中客體的屬性的多種多樣的。例如對(duì)于公共會(huì)議室的門(mén)禁系統(tǒng),同一時(shí)間段內(nèi)應(yīng)該只允許一個(gè)使用者,因此會(huì)議室在同一時(shí)間段只能發(fā)出一個(gè)token;而像手機(jī)中三軸加速傳感器,可以同時(shí)給多個(gè)App傳遞用戶(hù)的步數(shù),因此同一時(shí)間段可以發(fā)出多個(gè)token。使用OA表示客體屬性的集合,對(duì)于某個(gè)客體oi的屬性表示為:oi. a={ai|ai∈oi.OA}。
權(quán)限的屬性包括自身固有屬性和繼承自其對(duì)應(yīng)客體的屬性,使用PA表示權(quán)限屬性的集合,對(duì)于某個(gè)客體oi的權(quán)限pj的屬性表示為:oi.pj.a={ak|ak∈pj.PA},同時(shí)oi.a?oi. pj.a。權(quán)限自身固有的屬性包括權(quán)限是永久賦予、按時(shí)間賦予還是按次數(shù)賦予等,權(quán)限繼承自其對(duì)應(yīng)客體的屬性受客體屬性的約束。
Token 的屬性包括自身固有屬性和從對(duì)應(yīng)權(quán)限繼承的屬性?xún)刹糠?。自身固有屬性包括token 擁有者、有效時(shí)間、是否可傳遞等。從對(duì)應(yīng)權(quán)限繼承的屬性受權(quán)限屬性的約束,同時(shí)從對(duì)應(yīng)權(quán)限繼承的屬性會(huì)影響token 的自身固有屬性。以公共會(huì)議室為例,主體sA得到的token 是某日上午8:00—12:00的使用權(quán)限,如果sA在10:00時(shí)會(huì)議結(jié)束,則可以將token傳遞給需要的sB,前提是sB符合token的使用要求。使用TA表示權(quán)限屬性的集合,對(duì)于某個(gè)tokeni的屬性表示為:tokeni.a={aj|aj∈tokeni.PA},其中oi.pj.a?tokeni.a。
環(huán)境屬性是指除實(shí)體屬性外對(duì)物聯(lián)網(wǎng)訪問(wèn)控制有影響的環(huán)境因素。通過(guò)EA 表示環(huán)境屬性的集合。對(duì)物聯(lián)網(wǎng)來(lái)說(shuō)常見(jiàn)的環(huán)境屬性有時(shí)間、位置、光照、溫度、聲音等。
資源擁有者和事件實(shí)體的屬性對(duì)訪問(wèn)控制的影響微乎其微,這里并沒(méi)有將其單獨(dú)列出。
上文描述了模型的形式化定義,這里將詳細(xì)介紹模型的工作流程。訪問(wèn)控制流程分為如下4 個(gè)部分:用戶(hù)注冊(cè)、請(qǐng)求訪問(wèn)、訪問(wèn)資源和權(quán)限傳遞(permission delegation)。
首先是用戶(hù)注冊(cè)流程,系統(tǒng)中的每個(gè)主體和客體都需要在BBIAC 中注冊(cè)。主體的注冊(cè)僅需要用戶(hù)在部署訪問(wèn)控制的區(qū)塊鏈中注冊(cè)賬戶(hù)即可,這里就不再贅述了。而客體的注冊(cè)是由資源擁有者主動(dòng)執(zhí)行的,注冊(cè)的內(nèi)容包括為客體取得一個(gè)ID 以及設(shè)置客體的屬性和訪問(wèn)控制策略等。具體流程如算法1所示。
算法1 的第1)~3)中,資源擁有者r 將自己所擁有的資源作為訪問(wèn)客體發(fā)布在BBIAC 中。第4)步檢測(cè)發(fā)布的內(nèi)容是否合法,主要檢測(cè)訪問(wèn)控制策略是否與客體屬性有沖突,例如對(duì)于溫度傳感器來(lái)說(shuō),如果資源擁有者在其屬性設(shè)置時(shí)只為其設(shè)置了讀屬性,但是在其訪問(wèn)控制策略中卻有讀和寫(xiě)兩個(gè)權(quán)限,這就屬于策略和客體屬性沖突,需要重新上傳正確的訪問(wèn)策略。
考慮到某些情況需要更改屬性和訪問(wèn)策略,因此提供了更新客體屬性和訪問(wèn)策略的方法。屬性的更新和訪問(wèn)策略的更新都會(huì)觸發(fā)相應(yīng)的事件,因此都會(huì)被區(qū)塊鏈記錄并永久保存。
訪問(wèn)請(qǐng)求的完整表述是主體s 請(qǐng)求客體o 的訪問(wèn)權(quán)限。因此主體需要發(fā)送一個(gè)四元組的消息(s,r,o,{o. p1,o. p2,…,o.pi})給區(qū)塊鏈,分別是消息的發(fā)起者請(qǐng)求主體s、客體o、o的擁有者r 和所請(qǐng)求的權(quán)限組{o.p1,o.p2,…,o.pi},其中所請(qǐng)求的權(quán)限可以是一個(gè)也可以是多個(gè)。具體流程如算法2所示。
算法2 中,主體s 發(fā)送訪問(wèn)請(qǐng)求消息(s,r,o,{o.p1,o.p2,…,o.pi})給BBIAC,BBIAC 收到消息后首先驗(yàn)證消息是否正確,驗(yàn)證通過(guò)后BBIAC 根據(jù)訪問(wèn)請(qǐng)求消息獲得的參數(shù)查找主體和客體的屬性s.a 和o.a,同時(shí)調(diào)用GetEnvironmentAttr()獲取當(dāng)前的環(huán)境屬性進(jìn)入決策階段,Decision()利用獲取到的o. a,s.a,e.a,{o.p1,o.p2,…,o.pi}作出決策,判斷是否授予權(quán)限。如果決定授予權(quán)限,則BBIAC 生成一個(gè)對(duì)應(yīng)的tokenso,并將該tokenso傳遞給主體。
其中決策過(guò)程Decision()如算法3 所示。BBIAC 根據(jù)主體屬性s.a、客體屬性o.a、環(huán)境屬性e.a、請(qǐng)求的權(quán)限{o.p1,o.p2,…,o.pi}來(lái)決策是否授予主體訪問(wèn)權(quán)限。
主體在得到tokenso后,可以憑借tokenso訪問(wèn)該tokenso所對(duì)應(yīng)的客體資源。訪問(wèn)資源需要主體發(fā)送一個(gè)五元組的消息(s,r,o,tokenso,{o.p1,o.p2,…,o.pi})給區(qū)塊鏈,分別是消息的發(fā)起者請(qǐng)求主體s,被訪問(wèn)者也就是客體o 的擁有者r,客體o,所使用的tokenso和將要使用的權(quán)限{o. p1,o. p2,…,o. pi}。流程如算法4所示。
算法4 中,主體s 發(fā)送訪問(wèn)資源的五元組消息(s,r,o,tokenso,{o.p1,o.p2,…,o.pi})給BBIAC,BBIAC 收到消息后首先驗(yàn)證消息是否正確,驗(yàn)證通過(guò)則判斷{o.p1,o.p2,…,o.pi}?{o.px,…,o.py}是否成立,是則主體擁有{o.p1,o.p2,…,o.pi}權(quán)限訪問(wèn)客體。
權(quán)限傳遞使物聯(lián)網(wǎng)中的權(quán)限管理更加靈活。主體s 發(fā)送一個(gè)三元組的消息(sfrom,sto,tokenso)給BBIAC,分別是消息的發(fā)起者主體同時(shí)也是tokenso的擁有者sfrom,傳遞的目的地主體sto和所傳遞的tokenso。具體流程如算法5所示。
算法5 中,首先發(fā)起傳遞tokenso的主體sfrom,發(fā)送tokenso傳遞的三元組消息(sfrom,sto,tokenso)給BBIAC,合法性驗(yàn)證通過(guò)后進(jìn)行權(quán)限約束性檢測(cè),即主體sto是否有資格使用tokenso,如果確認(rèn)有資格使用則將tokenso由主體傳sfrom遞給主體sto。
BBIAC模型的安全性評(píng)價(jià)指標(biāo)主要從以下三個(gè)方面展開(kāi)分析:
首先是簡(jiǎn)單安全問(wèn)題,是指訪問(wèn)控制模型在任意一個(gè)狀態(tài)下,都不存在未授權(quán)用戶(hù)對(duì)指定資源訪問(wèn)的情況,也就是說(shuō)不存在權(quán)限的泄露,如果存在則模型是不安全的[24]。
第二個(gè)問(wèn)題是簡(jiǎn)單可用性問(wèn)題,指訪問(wèn)控制模型在可達(dá)的系統(tǒng)狀態(tài)中,已授權(quán)用戶(hù)可以訪問(wèn)指定資源,如果是則該模型是安全的。簡(jiǎn)單可用性問(wèn)題保證了模型的正確性,即已授權(quán)用戶(hù)可以使用該權(quán)限訪問(wèn)指定資源[24]。
第三個(gè)問(wèn)題是約束繼承問(wèn)題,是指模型中的約束條件是向下繼承的,權(quán)限授予時(shí)不能越過(guò)約束條件,如果越過(guò)約束條件則模型是不安全的。
其中:前兩項(xiàng)來(lái)自于文獻(xiàn)[24],是所有訪問(wèn)控制模型必須要滿(mǎn)足的條件;第三項(xiàng)是針對(duì)BBIAC模型提出的安全條件。
為了分析模型是否滿(mǎn)足上述三個(gè)安全性問(wèn)題,需要通過(guò)數(shù)學(xué)模型分析BBIAC 模型設(shè)計(jì)和工作流程。本文選擇了具有嚴(yán)格數(shù)學(xué)定義的數(shù)學(xué)建模工具Petri網(wǎng)進(jìn)行建模。
CPN 通過(guò)九元組(Places,T,A,∑,V,C,G,E,I)模型來(lái)表述。這里對(duì)BBIAC 建立了一個(gè)三層結(jié)構(gòu)的CPN 模型,圖形化表示如圖3~10 所示。接下來(lái)將介紹CPN 九元組的組成。需要注意的是,token 同時(shí)也是Petri 網(wǎng)中的一個(gè)原語(yǔ),為了防止本文中概念的沖突,本文中所有Petri 網(wǎng)中的token 都用Petri_token表示。
3.2.1 顏色集和變量集
首先介紹的是顏色集∑,根據(jù)BBIAC 建模的需要定義了9個(gè)顏色集,具體定義及含義如表1所示。
變量集V 中的變量用在弧表達(dá)式中,變量所對(duì)應(yīng)的顏色集如表2所示。
表1 BBIAC中的Petri網(wǎng)顏色集定義Tab. 1 Petri net color set definition in BBIAC
表2 變量集Tab. 2 Variable set
3.2.2 位置集、變遷集、弧集以及相關(guān)函數(shù)
CPN 圖中橢圓形為位置集Places,也稱(chēng)為庫(kù)所集。庫(kù)所右上角是初始化函數(shù)I,右下角是著色函數(shù)C。
CPN 圖中矩形為變遷集T,其中矩形線條是雙線的是替代變遷,表示這個(gè)變遷下還有一層模型。變遷的左上方是該變遷的防衛(wèi)函數(shù)G。
CPN 圖中庫(kù)所與變遷直接由弧所連接,所有的弧組成弧集A。每個(gè)弧上都有弧表達(dá)式函數(shù)E。
頂層模型如圖3 所示具有8 個(gè)庫(kù)所,5 個(gè)替代變遷,由28條弧將其連接起來(lái)。
其中替代變遷RegisteredSubject 的子頁(yè)模型如圖4 所示,其中RepeatabilityTest 變遷點(diǎn)火用來(lái)檢測(cè)主體是否已注冊(cè),如果沒(méi)有則可以點(diǎn)火RegisteredSubject 來(lái)在系統(tǒng)中注冊(cè)新的主體。
替代變遷RegisteredObject 的子頁(yè)模型如圖5 所示,首先通過(guò)RepeatabilityTest 變遷點(diǎn)火用來(lái)檢測(cè)客體是否合法,然后通過(guò)CollisionDetetion 變遷檢測(cè)客體屬性和策略是否沖突,如果前兩個(gè)變遷點(diǎn)火成功,則通過(guò)RegisteredResources 變遷注冊(cè)新的客體。
替代變遷RequestAccess 的子頁(yè)模型如圖6 所示,其中GetObject 和GetSubject 變遷點(diǎn)火獲取到當(dāng)前系統(tǒng)中的客體和主體。RequestAccess 變遷點(diǎn)火表示主體請(qǐng)求客體的某個(gè)請(qǐng)求。Get_s_att 替代變遷點(diǎn)火用來(lái)獲取主體的屬性,其中Get_s_attl 變遷的點(diǎn)火是準(zhǔn)備主體的屬性集。Get_op_att 替代變遷用來(lái)獲取被請(qǐng)求的客體權(quán)限的屬性,其中Get_p_attl變遷的點(diǎn)火是準(zhǔn)備客體權(quán)限的屬性集。Decision 變遷點(diǎn)火判斷主體是否有權(quán)訪問(wèn)客體。AuthorityGrantingDecision 變遷點(diǎn)火做出決策是否將客體的權(quán)限授予主體,如果授予則生成對(duì)應(yīng)的token。
替代變遷AccessResources 的子頁(yè)模型如圖7 所示,GetToken 變遷點(diǎn)火表示主體查找自己已經(jīng)得到的token,AccessResources變遷點(diǎn)火表示使用token訪問(wèn)某資源。
替代變遷TransferAccess 的子頁(yè)模型如圖8 所示,其中Control 變遷是用來(lái)控制TransferAccess 變遷的點(diǎn)火時(shí)間,TransferAccess 變遷點(diǎn)火表示系統(tǒng)收到權(quán)限傳遞消息。Test變遷模擬系統(tǒng)檢測(cè)權(quán)限傳遞的合法性。RemoveToken 變遷點(diǎn)火表示刪除舊的token,AddNewToken 變遷點(diǎn)火表示添加新的token,以此模擬token的傳遞。
本模型中第三層僅有兩個(gè)子頁(yè),且都在替代變遷RequestAccess 的子頁(yè)中。Get_s_att 替代變遷的子頁(yè)模型如圖9 所示,GetSData 變遷點(diǎn)火獲取系統(tǒng)當(dāng)前的主體屬性集和需要搜索的主體,Result 變遷點(diǎn)火實(shí)現(xiàn)搜索并輸出結(jié)果。Get_op_att 替代變遷的子頁(yè)模型如圖10 所示,GetOData 變遷點(diǎn)火獲取系統(tǒng)當(dāng)前的客體屬性集和需要搜索的客體,Result變遷點(diǎn)火實(shí)現(xiàn)搜索并輸出結(jié)果。這里作了一定程度的抽象,在不流失BBIAC 關(guān)鍵要素的前提下,忽略了一些數(shù)據(jù)處理的細(xì)節(jié)。
圖3 BBIAC頂層模型Fig. 3 BBIAC top-level model
圖4 RegisteredSubject子頁(yè)模型Fig. 4 RegisteredSubject subpage model
圖5 RegisteredObject子頁(yè)模型Fig. 5 RegisteredObject subpage model
圖6 RequestAccess子頁(yè)模型Fig. 6 RequestAccess subpage model
圖7 AccessResources子頁(yè)模型Fig. 7 AccessResources subpage model
圖8 TransferAccess子頁(yè)模型Fig. 8 TransferAccess subpage model
圖9 Get_s_att子頁(yè)模型Fig. 9 Get_s_att subpage model
圖10 Get_op_att子頁(yè)模型Fig. 10 Get_op_att subpage model
3.3.1 簡(jiǎn)單安全問(wèn)題
定義3 簡(jiǎn)單安全問(wèn)題。對(duì)于任意的變遷點(diǎn)火序列R(M),如果存在M[AccessResources >,必然在其前面存在M[AuthorityGrantingDecision >M′,否則該模型就是不安全的。
證明
對(duì) 于 BBIAC 的 CPN 模 型 , 如 果 想 要M[AccessResources >,即AccessResources 為可點(diǎn)火(enabled)狀態(tài),需要AccessResources變遷的三個(gè)輸入庫(kù)所log、tokens和subject 都非空。這里非空的意思是庫(kù)所中擁有petri_token,因此petri_token的值為空并不等于庫(kù)所是非空的。
其中l(wèi)og 庫(kù)所都由初始化函數(shù)賦予了初始值,在M0 時(shí)是非空的,同時(shí)log 庫(kù)所在作為日志在設(shè)計(jì)時(shí)并沒(méi)有刪除的功能,所以log庫(kù)所是非空的。
而tokens 庫(kù)所在M0 時(shí)的初始值是[],在M0 時(shí)是一張空表。只 有 點(diǎn) 火 且E(AuthorityGrantingDecision,tokens)<if authority>= policy then 1`((subject,object,authority)::tokenlist)else 1`tokenlist>= 1`((subject,object,authority)::tokenlist)才會(huì)在tokens 庫(kù)所中填入新的值。雖然模型中的token 僅僅只在傳遞時(shí)會(huì)由RemoveToken 變遷實(shí)現(xiàn)token 刪除操作,但會(huì)馬上由AddNewToken 變遷將新的token 添加到tokens 庫(kù)所中。同時(shí)系統(tǒng)中設(shè)置的傳遞token 的比例較小,不會(huì)出現(xiàn)所有token都被刪除的情況。因此tokens是非空的。
subject 庫(kù)所的值由GetToken 變遷點(diǎn)火生成,而GetToken變遷的輸入庫(kù)所是tokens,如果輸入值為[]則輸出弧的弧表達(dá)式函數(shù)會(huì)將輸出變?yōu)榭?,因此只有?dāng)E(tokens,GetToken)<token::tokenlist>≠1`[]時(shí),subject 庫(kù)所才可能會(huì)非空。而想要E(tokens,GetToken)<token::tokenlist>≠1`[]就必須滿(mǎn)足tokens≠1`[]。而 想 要tokens≠1`[]就 必 須 滿(mǎn) 足 之 前 存 在E(AuthorityGrantingDecision,tokens)<if authority>= policy then 1`((subject,object,authority)::tokenlist)else 1`tokenlist>=1`((subject,object,authority)::tokenlist)。
綜 上 所 述 , BBIAC 模 型 中 只 有 存 在M [AuthorityGrantingDecision > M′ 且 出 現(xiàn)E(AuthorityGrantingDecision,tokens)<if authority>= policy then 1`((subject,object,authority)::tokenlist)else 1`tokenlist>=1`((subject,object,authority)::tokenlist)才 會(huì) 出 現(xiàn)M[AccessResources>,因此模型在簡(jiǎn)單安全問(wèn)題1方面是安全的。 證畢。3.3.2 簡(jiǎn)單可用性問(wèn)題
簡(jiǎn)單可用性問(wèn)題在CPN 環(huán)節(jié)中可以轉(zhuǎn)化為可達(dá)性問(wèn)題,即模型可以從標(biāo)識(shí)Mi經(jīng)過(guò)某些點(diǎn)火序列后到達(dá)標(biāo)識(shí)Mj,其中j>i。因此簡(jiǎn)單可用性問(wèn)題的定義如下:
定義4 簡(jiǎn)單可用性問(wèn)題。對(duì)于任意標(biāo)識(shí)序列R(M),當(dāng)M [AuthorityGrantingDecision > M′ 且 出 現(xiàn)E(AuthorityGrantingDecision,tokens)<if authority>= policy then 1`((subject,object,authority)::tokenlist)else 1`tokenlist>=1`((subject,object,authority)::tokenlist),必然存在變遷點(diǎn)火序列[ti,ti+1,…,ti+n]使M[AccessResources>出現(xiàn)。否則該模型就是不安全的。
證明
這個(gè)問(wèn)題通過(guò)模型的狀態(tài)空間圖可以很容易地證明,但是由于狀態(tài)空間圖太大這里不容易說(shuō)明問(wèn)題,所以這里使用標(biāo)識(shí)序列圖來(lái)證明。一次典型的點(diǎn)火序列如表3 所示。其中:第1~3步的作用是在RegisteredObject 子頁(yè)中注冊(cè)客體;第4~5 步變遷點(diǎn)火是在RegisteredSubject 子頁(yè)中注冊(cè)主體;第6~14 步變遷點(diǎn)火是在RequestAccess 子頁(yè)中實(shí)現(xiàn)的用戶(hù)請(qǐng)求訪問(wèn)權(quán)限的過(guò)程;第15~19 步變遷點(diǎn)火是在TransferAccess 子頁(yè)中傳遞token;第20~21 步變遷點(diǎn)火是在AccessResources 子頁(yè)中使用token訪問(wèn)資源。
由于第15~19 步變遷點(diǎn)火序列是為了傳遞token,所以這個(gè)序列段可以重復(fù)執(zhí)行,也可以不執(zhí)行,根據(jù)使用場(chǎng)景變化而改變,但是并不影響證明。
在上述的標(biāo)識(shí)序列中,M13 標(biāo)識(shí)相當(dāng)于簡(jiǎn)單可用性問(wèn)題中 的 M [AuthorityGrantingDecision >M′, 而 E(AuthorityGrantingDecision,tokens)<if authority>= policy then 1`((subject,object,authority)::tokenlist)else 1`tokenlist>=1`((subject,object, authority)::tokenlist)則 表 明AuthorityGrantingDecision 變遷點(diǎn)火成功生成了一個(gè)token,因此無(wú)論后面的變遷點(diǎn)火序列是什么,最終都會(huì)到第21步,M20[AccessResources>M21,使用token訪問(wèn)客體,唯一的不同在于有可能主體拿到token 直接自己使用,也有可能將token 傳遞給其他主體,由其他主體使用token。同時(shí),通過(guò)cpn tools進(jìn)行的仿真結(jié)果表示,BBIAC 模型滿(mǎn)足簡(jiǎn)單可用性。因此模型在簡(jiǎn)單可用性問(wèn)題方面是安全的。 證畢。
表3 典型的變遷點(diǎn)火序列Tab. 3 Typical transition firing sequence
3.3.3 約束繼承問(wèn)題
定義5 數(shù)據(jù)流。在任意變遷點(diǎn)火序列中,含有相同主體地址值的所有Petri_token,稱(chēng)之為相關(guān)的數(shù)據(jù)流。
數(shù)據(jù)流間接反映了與該主體相關(guān)的所有操作。
定義6 約束繼承問(wèn)題。對(duì)于標(biāo)識(shí)序列中的任意主體產(chǎn)生 的 相 關(guān) 數(shù) 據(jù) 流,都 滿(mǎn) 足subject. att≥token. att≥policy. att≥object.att,即屬性約束在訪問(wèn)控制過(guò)程中是向下繼承的,否則該模型就是不安全的。
證明
在BBIAC 的CPN 模型中,?subject. add∈subjectAddress。對(duì)于模型中所有與subject.add 相關(guān)的數(shù)據(jù),其對(duì)應(yīng)的屬性由變遷的防衛(wèi)函數(shù)或者弧表達(dá)式約束。
首先在替代變遷RequestAccess 的子頁(yè)模型中,由
E(Decision,results)<if attri>=authority then 1`(object,authority)else 1`(0,0)>確保了subject.att≥token.att,其中attri是subject的屬性,authority為將來(lái)生成的token的屬性。
然后,在替代變遷RegisteredObject 中,CollisionDetection變遷的防衛(wèi)函數(shù)[attri <= policy]確保了policy.att≥object.att,這里attri是客體object的屬性。
最后,在替代變遷TransferAccess 中,由Test變遷確保了模型在token 傳遞時(shí)其約束也是被繼承下去的,即subjectto.att≥subjectfrom. att,本文將這個(gè)過(guò)程進(jìn)行了適當(dāng)?shù)某橄蠛?jiǎn)化,由Test變遷表示這個(gè)含義。
綜上所述,在替代變遷RequestAccess 中確保了token.att≥policy. att 和 policy. att≥object. att,在 替 代 變 遷RegisteredObject 中確保了policy. att≥object. att,在替代變遷TransferAccess 中確保了subjectto.att≥subjectfrom.att。因此模型滿(mǎn)足subject.att≥token.att≥policy.att≥object.att,在約束繼承問(wèn)題方面是安全的。 證畢。
在完成模型安全性的理論性證明后,這里通過(guò)實(shí)驗(yàn)驗(yàn)證BBIAC 框架確實(shí)可以滿(mǎn)足物聯(lián)網(wǎng)環(huán)境下海量性、動(dòng)態(tài)性和設(shè)備輕量級(jí)特性的挑戰(zhàn)。
分析BBIAC 框架對(duì)海量性的支持程度,因?yàn)閰^(qū)塊鏈對(duì)海量性用戶(hù)的支持并不是本文的工作,所以本實(shí)驗(yàn)僅反映模型架構(gòu)對(duì)海量性的支持,其中將物聯(lián)網(wǎng)規(guī)模的增加映射為訪問(wèn)控制策略數(shù)的增加。
策略數(shù)分別設(shè)為1 000、2 000、4 000、6 000、8 000、10 000,以此映射物聯(lián)網(wǎng)中用戶(hù)和設(shè)備不斷增加。選擇了以太坊和超級(jí)賬本這兩種區(qū)塊鏈平臺(tái),分別對(duì)應(yīng)了POW(Proof of Work)和PBFT(Practical Byzantine Fault Tolerance)兩種共識(shí)算法。實(shí)驗(yàn)的內(nèi)容是主體s1對(duì)客體o1進(jìn)行20 次訪問(wèn)。每組進(jìn)行20次實(shí)驗(yàn)取平均。實(shí)驗(yàn)中POW 和PBFT 的共識(shí)時(shí)間來(lái)自文獻(xiàn)[25],因?yàn)楸緦?shí)驗(yàn)搭建的區(qū)塊鏈環(huán)境并不能客觀地反映這兩種共識(shí)算法的時(shí)間性能。
圖11 為不同訪問(wèn)控制策略數(shù)下使用POW 和PBFT 共識(shí)算法的BBIAC 的第一次訪問(wèn)響應(yīng)時(shí)間。圖11 中黑色的其他開(kāi)銷(xiāo)中包括網(wǎng)絡(luò)傳播時(shí)間和客戶(hù)端編譯時(shí)間,每組的時(shí)間基本相同。由圖11 可知影響訪問(wèn)控制響應(yīng)時(shí)間的主要變量是決策時(shí)間,當(dāng)策略數(shù)增加后,決策時(shí)間也會(huì)隨之增加,決策時(shí)間會(huì)成為影響訪問(wèn)控制響應(yīng)時(shí)間的主要因素。
選擇訪問(wèn)決策同樣是基于主體和客體屬性的ABAC 作為對(duì)比對(duì)象,在策略數(shù)為10 000 時(shí)對(duì)比ABAC 和BBIAC 的響應(yīng)時(shí)間和累計(jì)時(shí)間。
由圖12可知:在第一次訪問(wèn)時(shí)ABAC所用時(shí)間最短,因?yàn)樗鼪](méi)有區(qū)塊鏈共識(shí)的時(shí)間。而B(niǎo)BIAC+POW 的響應(yīng)時(shí)間是最長(zhǎng),因?yàn)樗粌H需要訪問(wèn)決策而且還需要區(qū)塊鏈共識(shí),同時(shí)POW 共識(shí)所需的時(shí)間最長(zhǎng)。BBIAC+PBFT 的響應(yīng)時(shí)間比ABAC 略長(zhǎng)但比BBIAC+POW 短,因?yàn)镻BFT 共識(shí)所需的時(shí)間較POW 會(huì)短很多。而B(niǎo)BIAC+POW 和BBIAC+PBFT 在第一次訪問(wèn)后的訪問(wèn)響應(yīng)時(shí)間都較短且平滑是因?yàn)樵谥黧ws1得到客體token 后,只需要進(jìn)行算法4 的過(guò)程即可,即客體可以先授權(quán)后共識(shí),這一過(guò)程較為簡(jiǎn)單。ABAC 響應(yīng)時(shí)間的波動(dòng)是因?yàn)槊看螌?shí)驗(yàn)初始化的策略和請(qǐng)求的客體都不同,因此會(huì)有誤差。
圖11 第一次訪問(wèn)控制的響應(yīng)時(shí)間Fig. 11 Response time for first access control
圖12 訪問(wèn)控制響應(yīng)時(shí)間對(duì)比Fig. 12 Comparison of access control response time
同樣由圖13 可知,在策略數(shù)為10 000 時(shí),僅第一次訪問(wèn)ABAC占微小的優(yōu)勢(shì),隨著token使用次數(shù)的增加,BBIAC累計(jì)時(shí)間大幅少于ABAC。
圖13 訪問(wèn)控制累計(jì)時(shí)間Fig. 13 Cumulative time of access control
實(shí)驗(yàn)結(jié)果表明BBIAC 適用于物聯(lián)網(wǎng),尤其是擁有大規(guī)模節(jié)點(diǎn)、訪問(wèn)控制規(guī)則復(fù)雜的物聯(lián)網(wǎng)。
當(dāng)前場(chǎng)景下的狹義的動(dòng)態(tài)性指的是由于物聯(lián)網(wǎng)用戶(hù)和設(shè)備移動(dòng)造成的節(jié)點(diǎn)動(dòng)態(tài)接入問(wèn)題,這個(gè)問(wèn)題在選擇區(qū)塊鏈作為訪問(wèn)控制搭建平臺(tái)時(shí)就由區(qū)塊鏈自身的特性解決了,因此這里的動(dòng)態(tài)性指的是權(quán)限的動(dòng)態(tài)傳遞。
設(shè)計(jì)三組實(shí)驗(yàn),策略數(shù)設(shè)為1 000,實(shí)驗(yàn)場(chǎng)景為連續(xù)訪問(wèn)20 次,分別傳遞1 次、2 次和3 次token,傳遞發(fā)生在訪問(wèn)的第3、5、7次。策略數(shù)選擇設(shè)為1 000而不是10 000是因?yàn)楫?dāng)策略數(shù)為10 000時(shí)數(shù)據(jù)無(wú)法體現(xiàn)動(dòng)態(tài)性變化趨勢(shì)。
使用POW 共識(shí)算法時(shí)累計(jì)訪問(wèn)花費(fèi)的時(shí)間如圖14 所示,傳遞1 次token 時(shí)在第9 次訪問(wèn)后BBIAC 的累計(jì)時(shí)間較開(kāi)始比ABAC 短。共識(shí)算法使用PBFT 的實(shí)驗(yàn)中僅第一次訪問(wèn)ABAC占優(yōu),這是由于PBFT的共識(shí)時(shí)間較短。
token 傳遞為BBIAC 節(jié)省了決策的時(shí)間開(kāi)銷(xiāo),在策略數(shù)較大的情況下節(jié)省的時(shí)間是很可觀的。但是token 傳遞需要區(qū)塊鏈共識(shí),因此當(dāng)token頻繁傳遞時(shí)會(huì)導(dǎo)致多次共識(shí)時(shí)間增加了BBIAC的時(shí)間開(kāi)銷(xiāo)。
圖14 權(quán)限多次傳遞對(duì)累計(jì)響應(yīng)時(shí)間的影響Fig. 14 Impact of multiple permission transfers on cumulative response time
這里只討論物聯(lián)網(wǎng)中的輕量級(jí)設(shè)備。例如各類(lèi)傳感器等設(shè)備,雖然作為數(shù)據(jù)源向網(wǎng)絡(luò)中上傳數(shù)據(jù),但是其設(shè)備自身的物理性質(zhì)使其無(wú)法直接連接在本模型中,而是需要一個(gè)管理節(jié)點(diǎn)。而更多的輕量級(jí)設(shè)備是有一定計(jì)算和存儲(chǔ)能力的。因此,部分設(shè)備可以在其上部署以太坊客戶(hù)端與以太坊網(wǎng)絡(luò)中部署的BBIAC智能合約進(jìn)行交互。
主流的區(qū)塊鏈平臺(tái)都支持輕量級(jí)客戶(hù)端,如以太坊的imToken、MetaMask和Hyperledger的lroha等項(xiàng)目,因此物聯(lián)網(wǎng)設(shè)備設(shè)備只要能夠連接到網(wǎng)絡(luò)即可發(fā)起交易。
BBIAC 模型將區(qū)塊鏈作為訪問(wèn)決策的實(shí)體,可以滿(mǎn)足物聯(lián)網(wǎng)設(shè)備輕量級(jí)的挑戰(zhàn)。
本文提出了一種滿(mǎn)足物聯(lián)網(wǎng)海量性、動(dòng)態(tài)性和設(shè)備輕量級(jí)的基于區(qū)塊鏈的物聯(lián)網(wǎng)訪問(wèn)控制框架。首先提出了形式化的BBIAC 模型設(shè)計(jì),并詳細(xì)介紹了模型的工作流程設(shè)計(jì)。然后通過(guò)CPN 證明了BBIAC 的安全性,首先為BBIAC 建立了CPN模型,然后通過(guò)CPN從簡(jiǎn)單安全問(wèn)題、簡(jiǎn)單可用性問(wèn)題和約束繼承問(wèn)題這三個(gè)方面證明了BBIAC 模型的安全性。最后通過(guò)實(shí)驗(yàn)驗(yàn)證了BBIAC滿(mǎn)足其在設(shè)計(jì)時(shí)的目的。
我們的下一步工作是進(jìn)一步細(xì)化本文所提出的框架,研究適用于物聯(lián)網(wǎng)的多中心結(jié)構(gòu)的屬性挖掘和授予機(jī)制。