劉敖迪,杜學(xué)繪,王 娜,李少卓
1(信息工程大學(xué),河南 鄭州 450001)
2(河南省信息安全重點(diǎn)實(shí)驗(yàn)室,河南 鄭州 450001)
通訊作者:杜學(xué)繪,E-mail:dxh37139@sina.com
目前,大數(shù)據(jù)已經(jīng)在生產(chǎn)生活中得到了非常廣泛的應(yīng)用,所帶來的社會變革也已深入到我們生活的方方面面.例如:通過分析大量病人的臨床醫(yī)療大數(shù)據(jù)[1],能夠使醫(yī)生更好地理解病癥,實(shí)現(xiàn)病情的精準(zhǔn)診斷與治療,并且能夠提高流行病的預(yù)警能力,有助于采取有效措施預(yù)防流行病的爆發(fā);通過將能源大數(shù)據(jù)[2]與人口、地理、氣象等相關(guān)領(lǐng)域數(shù)據(jù)進(jìn)行整合及分析利用,能夠?qū)崿F(xiàn)能源生產(chǎn)、運(yùn)營、消費(fèi)產(chǎn)出的最大化,促進(jìn)能源產(chǎn)業(yè)發(fā)展及商業(yè)模式創(chuàng)新;通過對大量網(wǎng)絡(luò)交易及行為等金融大數(shù)據(jù)[3]的分析,可提高金融企業(yè)在資本管理、交易執(zhí)行、安全和反欺詐等方面的數(shù)據(jù)洞察力,提高企業(yè)核心競爭力.由此可見,在大數(shù)據(jù)時代,數(shù)據(jù)已成為一種能夠流動的資產(chǎn)寶庫,通過分析、利用大數(shù)據(jù),能夠創(chuàng)造出巨大的社會和經(jīng)濟(jì)價值,并且數(shù)據(jù)量越大、來源越廣泛,產(chǎn)生的價值也會越大.
然而,大數(shù)據(jù)在帶來新的發(fā)展機(jī)遇的同時,也面臨著嚴(yán)峻的數(shù)據(jù)安全挑戰(zhàn):一方面,為了更好地挖掘數(shù)據(jù)中的價值,離不開分布式數(shù)據(jù)源間數(shù)據(jù)的流通與共享,但由此必然會打破原有數(shù)據(jù)管理的安全邊界,增加了數(shù)據(jù)在共享過程中所面臨的安全風(fēng)險;另一方面,由于大數(shù)據(jù)資源具有巨大的經(jīng)濟(jì)價值,針對大數(shù)據(jù)資源的竊取、攻擊與濫用等行為越來越嚴(yán)重,對國家及相關(guān)機(jī)構(gòu)數(shù)據(jù)安全防護(hù)能力提出了更高的要求.在多因素壓力下,導(dǎo)致大數(shù)據(jù)安全事故頻發(fā).特別是近期引起廣泛關(guān)注的Facebook 數(shù)據(jù)外泄事件,使大數(shù)據(jù)資源的非授權(quán)使用問題引起了安全專家的廣泛關(guān)注.2018 年3 月曝出,Facebook 超過5 000 萬用戶信息數(shù)據(jù)遭到外泄,一家名為Cambridge Analytica 的數(shù)據(jù)分析公司在未經(jīng)過用戶授權(quán)的前提下搜集了超過5 000 萬用戶的個人數(shù)據(jù),并利用該數(shù)據(jù)建立數(shù)學(xué)模型來分析用戶的政治偏好,通過有針對性地向美國選民投放精準(zhǔn)政治廣告的形式,從而影響了2016 年美國總統(tǒng)大選的結(jié)果.由此可以看出:大數(shù)據(jù)的非授權(quán)共享不單會影響用戶自身的數(shù)據(jù)安全,更會對國家安全造成嚴(yán)重的安全威脅.實(shí)現(xiàn)安全、可控的大數(shù)據(jù)資源流通與共享,是大數(shù)據(jù)應(yīng)用及其發(fā)展所面臨的核心科學(xué)問題.
作為保護(hù)數(shù)據(jù)安全的重要手段,訪問控制技術(shù)通過對用戶權(quán)限進(jìn)行管理,使合法用戶只能依照其所擁有的權(quán)限訪問系統(tǒng)內(nèi)相應(yīng)的數(shù)據(jù),禁止用戶對數(shù)據(jù)的非授權(quán)訪問,從而保障數(shù)據(jù)安全和業(yè)務(wù)系統(tǒng)的正常運(yùn)轉(zhuǎn).在大數(shù)據(jù)時代,訪問控制技術(shù)[4,5]仍將作為保護(hù)大數(shù)據(jù)安全、可控共享的重要手段.但大數(shù)據(jù)的分布式、動態(tài)性環(huán)境[6],使大數(shù)據(jù)的管理場景和安全需求變得更加復(fù)雜,傳統(tǒng)的訪問控制技術(shù)已不再適用.大數(shù)據(jù)訪問控制面臨訪問控制策略制定以及授權(quán)管理難度增加、訪問控制客體描述困難、受訪問數(shù)據(jù)的主體集合構(gòu)成復(fù)雜、訪問控制對數(shù)據(jù)客體中個人隱私保護(hù)難度高、缺乏對大數(shù)據(jù)分析過程安全性考慮等若干挑戰(zhàn)[7].不同于針對上述挑戰(zhàn)的研究,本文主要針對其分布式訪問控制需求、訪問控制動態(tài)性需求這兩個易被忽略的需求挑戰(zhàn)展開研究:
(1)分布式訪問控制需求挑戰(zhàn).
大數(shù)據(jù)由眾多分布式的數(shù)據(jù)源匯聚生成,不同的數(shù)據(jù)源可能位于不同的機(jī)構(gòu)、公司以及組織內(nèi)部,不同機(jī)構(gòu)基于自身的數(shù)據(jù)安全保護(hù)需求,不可能直接與其他機(jī)構(gòu)共享所有大數(shù)據(jù)資源,大數(shù)據(jù)資源具有藩籬化特征,需要在分布式復(fù)雜環(huán)境下實(shí)現(xiàn)對共享大數(shù)據(jù)資源有效的訪問控制,其分布式體現(xiàn)在如下兩個方面.
a)訪問控制策略分布式制定:為提高訪問控制策略的管理效率,傳統(tǒng)集中式的訪問控制機(jī)制需要由安全管理員統(tǒng)一進(jìn)行策略管理,難以滿足分布式大數(shù)據(jù)的安全共享需求,大數(shù)據(jù)共享與流通需要由資源的擁有者制定并維護(hù)其所擁有數(shù)據(jù)資源的訪問控制策略,實(shí)現(xiàn)由擁有者驅(qū)動的訪問控制策略分布式制定.另外,由于開放共享更有助于大數(shù)據(jù)價值的挖掘,這就要求大數(shù)據(jù)資源的策略需要進(jìn)行可信公開,便于資源使用方進(jìn)行策略查詢與其真實(shí)性驗(yàn)證,促進(jìn)大數(shù)據(jù)資源在擁有訪問權(quán)限的資源使用方間高效流通和共享;
b)訪問控制分布式判決:大數(shù)據(jù)不宜只存在一個集中式的權(quán)限判決點(diǎn),集中式權(quán)限判決不符合大數(shù)據(jù)的應(yīng)用場景,大數(shù)據(jù)的流通與共享是由多方參與、群智感知的應(yīng)用過程,需要參與方的多元交互,才能充分挖掘大數(shù)據(jù)價值,提高大數(shù)據(jù)資源利用率.并且,傳統(tǒng)由第三方機(jī)構(gòu)進(jìn)行的單一權(quán)限判決,可能存在用戶不可知的越權(quán)行為,存在權(quán)限判決透明度的問題.另外,當(dāng)單一權(quán)限判決點(diǎn)發(fā)生故障時,將導(dǎo)致整個大數(shù)據(jù)系統(tǒng)停止運(yùn)轉(zhuǎn),也存在單點(diǎn)故障的問題.
(2)訪問控制動態(tài)性需求挑戰(zhàn).
大數(shù)據(jù)動態(tài)產(chǎn)生且增長速度快,需要對動態(tài)生成的新數(shù)據(jù)及時進(jìn)行訪問控制管理.傳統(tǒng)集中式的訪問控制機(jī)制一般針對靜態(tài)資源進(jìn)行管理,動態(tài)擴(kuò)展能力弱,靈活性低且存在數(shù)據(jù)訪問控制管理的滯后性,無法對新生成的數(shù)據(jù)資源進(jìn)行高時效的訪問控制管理.
近年來,區(qū)塊鏈[8]作為一項(xiàng)從數(shù)字加密貨幣領(lǐng)域誕生的新興技術(shù),引起了各領(lǐng)域研究人員的廣泛關(guān)注.傳統(tǒng)社會的信任建立在可信第三方信用背書的信任機(jī)制下,而區(qū)塊鏈技術(shù)通過將P2P 網(wǎng)絡(luò)、密碼學(xué)技術(shù)、共識機(jī)制以及智能合約等多種技術(shù)進(jìn)行深度整合,解決了去中心化系統(tǒng)節(jié)點(diǎn)間信任建立的問題,實(shí)現(xiàn)了去中心化、分布式、信息不可篡改的信任建立機(jī)制,能夠在信息傳輸?shù)耐瑫r完成價值的轉(zhuǎn)移.區(qū)塊鏈技術(shù)的分布式架構(gòu)與智能合約技術(shù)恰好與大數(shù)據(jù)環(huán)境下分布式、動態(tài)訪問控制需求相吻合,基于此,本文針對大數(shù)據(jù)訪問控制中所面臨的挑戰(zhàn),基于區(qū)塊鏈的事務(wù)管理和智能合約技術(shù)實(shí)現(xiàn)了對分布式環(huán)境下大數(shù)據(jù)資源動態(tài)、靈活的訪問控制.本文的主要工作包括:將區(qū)塊鏈技術(shù)與ABAC 模型[9,10]相結(jié)合,提出了一種基于區(qū)塊鏈的分布式大數(shù)據(jù)訪問控制機(jī)制BBAC-BD(blockchain-based access control mechanism for big data environment),通過改進(jìn)區(qū)塊鏈?zhǔn)聞?wù)存儲結(jié)構(gòu),利用區(qū)塊鏈?zhǔn)聞?wù)來實(shí)現(xiàn)訪問控制策略的分布式管理,針對策略管理效率較低的問題,提出了基于Bloom Filter 的策略管理方法,以實(shí)現(xiàn)訪問控制策略的快速檢索;利用智能合約技術(shù)實(shí)現(xiàn)策略的分布式自動、可信判決,以此實(shí)現(xiàn)用戶對大數(shù)據(jù)資源的靈活管控,在禁止非法用戶對數(shù)據(jù)資源訪問的同時,提高大數(shù)據(jù)資源的共享與流通效率,實(shí)現(xiàn)面向分布式大數(shù)據(jù)資源的高效、透明、安全的自動化訪問控制.
本文將區(qū)塊鏈應(yīng)用于訪問控制技術(shù)主要有以下5 個方面的優(yōu)勢:(1)資源的管理使用權(quán)真正掌握在資源擁有者手中,存儲在區(qū)塊鏈上的策略信息對所有主體可見,策略的可信公開更利于促進(jìn)大數(shù)據(jù)資源的共享,有助于大數(shù)據(jù)資源價值的挖掘與利用;(2)基于智能合約,能夠?qū)崿F(xiàn)對大數(shù)據(jù)資源自動化、可信的訪問控制,無需安全管理員人為參與,基于資源擁有者發(fā)布的策略進(jìn)行訪問控制,判決過程公開透明;(3)基于ABAC 模型,策略由資源擁有者發(fā)布到區(qū)塊鏈上,隨著大數(shù)據(jù)資源的動態(tài)變化,資源擁有者可及時生成、調(diào)整所屬資源的訪問控制策略,提高訪問控制的靈活性與可擴(kuò)展性;(4)區(qū)塊鏈基于分布式共享總賬技術(shù),能夠有效保證策略制定來源可靠、存儲可信,通過分布式節(jié)點(diǎn)的共識機(jī)制,提高了訪問控制系統(tǒng)的抗攻擊能力,有效防止單點(diǎn)故障的發(fā)生,保證系統(tǒng)可用性;(5)區(qū)塊鏈?zhǔn)且环N只增不刪的數(shù)據(jù)管理模式,事務(wù)數(shù)據(jù)永遠(yuǎn)存儲在區(qū)塊鏈,區(qū)塊鏈上存儲的數(shù)據(jù)無法被篡改,能夠?qū)崿F(xiàn)對共享和流通過程中大數(shù)據(jù)資源的全流程追蹤管控,便于系統(tǒng)審計(jì).
當(dāng)前,針對大數(shù)據(jù)訪問控制領(lǐng)域的研究還處于起步階段,但是在該方向,國內(nèi)外的研究已經(jīng)取得了一定的研究進(jìn)展.針對醫(yī)療大數(shù)據(jù)中安全管理員難以預(yù)測醫(yī)生實(shí)際的數(shù)據(jù)訪問需求、授權(quán)管理難度增加的問題,惠榛等人[11]提出了面向醫(yī)療大數(shù)據(jù)的風(fēng)險自適應(yīng)的訪問控制模型,該模型通過分析醫(yī)生的訪問歷史,使用信息熵和EM(expectation maximization)算法量化醫(yī)生侵犯隱私的風(fēng)險,以此來適應(yīng)性地調(diào)整醫(yī)生的訪問能力,防止過度授權(quán)的發(fā)生.針對傳統(tǒng)訪問控制模型難以描述大數(shù)據(jù)所具有的時空屬性、訪問控制客體描述困難的問題,文獻(xiàn)[12,13]分別提出了基于位置感知的訪問控制模型LARB 與GEO-RBAC,將用戶空間位置信息引入基于角色的訪問控制模型中,結(jié)合用戶位置屬性來授予用戶相應(yīng)的訪問控制權(quán)限.針對大數(shù)據(jù)環(huán)境存在海量角色難以進(jìn)行權(quán)限管理的問題,文獻(xiàn)[14-16]基于角色工程,通過自上向下或自下而上的形式對用戶角色進(jìn)行挖掘,高效地為用戶提供個性化服務(wù),以此提高大數(shù)據(jù)環(huán)境下權(quán)限管理的效率.另外,為了實(shí)現(xiàn)對大數(shù)據(jù)中個人隱私數(shù)據(jù)的保護(hù),以基于屬性加密的訪問控制為代表的密文訪問控制技術(shù),作為一種利用密文機(jī)制實(shí)現(xiàn)訪問控制的方法,也得到了很多學(xué)者[17,18]的廣泛研究.但該技術(shù)還存在策略表達(dá)能力不足、安全性與效率性能不能兼顧等問題,在實(shí)際應(yīng)用中還面臨諸多挑戰(zhàn)[19].
目前,分布式訪問控制的研究主要圍繞分布式實(shí)體間跨域互操作的問題[20],一般采用角色映射或?qū)傩赞D(zhuǎn)換的方法實(shí)現(xiàn)域間權(quán)限轉(zhuǎn)換.根據(jù)域間協(xié)作架構(gòu)的不同,可分為聯(lián)邦式架構(gòu)和松耦合式架構(gòu)[21,22]:聯(lián)邦式架構(gòu)是一種中心式架構(gòu),由單一授權(quán)中心與多個訪問控制代理組成,通過授權(quán)中心設(shè)置面向分布式系統(tǒng)的全局角色來實(shí)現(xiàn)用戶在不同域內(nèi)權(quán)限的轉(zhuǎn)換;松耦合式架構(gòu)是一種多中心式架構(gòu),由多授權(quán)中心與多個訪問控制代理組成,通過各域內(nèi)的授權(quán)中心對域外用戶權(quán)限進(jìn)行轉(zhuǎn)換.角色映射或?qū)傩赞D(zhuǎn)換機(jī)制需要提前進(jìn)行協(xié)商,建立信任關(guān)系,僅適用于少量實(shí)體參與的有限分布式場景中,難以滿足大數(shù)據(jù)環(huán)境高動態(tài)性、強(qiáng)靈活性的需求.
另外,當(dāng)前基于區(qū)塊鏈的訪問控制研究漸漸興起.為了提高分布式訪問控制策略管理的靈活性,Damiano 等人[23]探索使用基于區(qū)塊鏈交易的形式來創(chuàng)建、管理、執(zhí)行訪問控制策略的可行性,并通過比特幣平臺進(jìn)行了實(shí)現(xiàn),但僅僅是將區(qū)塊鏈作為策略管理的數(shù)據(jù)庫,還需要第三方應(yīng)用來提供集中式訪問控制服務(wù).Zyskind[24]基于區(qū)塊鏈技術(shù)實(shí)現(xiàn)了移動應(yīng)用程序的粗粒度權(quán)限管理,交易Taccess用于管理策略,交易Tdata用于存儲和索引數(shù)據(jù),區(qū)塊鏈中每個用戶和服務(wù)都對應(yīng)一個公鑰地址作為身份的憑證,可由用戶公鑰(資源擁有方)與服務(wù)公鑰(資源請求方)共同以聯(lián)合身份的形式對權(quán)限進(jìn)行管理.針對物聯(lián)網(wǎng)數(shù)據(jù)的訪問控制問題,FairAccess[25-28]則將策略以(resource,requester)的形式存儲在區(qū)塊鏈交易中,引入比特幣中Wallet 的概念,為不同的IoT 設(shè)備安裝自己的Wallet.Wallet 起到訪問控制代理的功能,通過向被授權(quán)的訪問請求方賬戶發(fā)送授權(quán)令牌的形式進(jìn)行權(quán)限管理,令牌由資源擁有者使用其私鑰進(jìn)行簽名來保證其不可偽造.針對醫(yī)療數(shù)據(jù)的訪問控制問題,MedRec 框架[29,30]基于以太坊平臺將智能合約與訪問控制相結(jié)合進(jìn)行自動化的權(quán)限管理,實(shí)現(xiàn)了對不同組織的分布式醫(yī)療數(shù)據(jù)的整合和權(quán)限管理.MedRec 框架包括3 個層次的合約:Registrar Contract,Patient Provider Relationship,Summary Contract,但MedRec 權(quán)限管理不夠靈活,且選擇將策略直接存儲在智能合約,隨著策略規(guī)模的增大,智能合約的運(yùn)行成本將變得十分高昂,不適用于大規(guī)模的動態(tài)授權(quán)應(yīng)用場景.
綜上分析可知,當(dāng)前,針對大數(shù)據(jù)訪問控制的研究還處于起步階段,缺少對訪問控制分布式與動態(tài)性特點(diǎn)的考慮,而傳統(tǒng)面向分布式系統(tǒng)訪問控制的研究又難以適用于大數(shù)據(jù)環(huán)境.另外,目前基于區(qū)塊鏈的訪問控制技術(shù)還沒有同時實(shí)現(xiàn)策略管理與訪問控制決策的分布式.
本節(jié)定義基于區(qū)塊鏈的大數(shù)據(jù)訪問控制機(jī)制使用到的預(yù)備知識,為后文闡述方便,主要對區(qū)塊鏈技術(shù)及智能合約的基本概念進(jìn)行簡要介紹,并對基于屬性的訪問控制模型進(jìn)行形式化定義.
區(qū)塊鏈?zhǔn)且环N在對等網(wǎng)絡(luò)環(huán)境下,基于透明和可信共識規(guī)則,并按照時間順序?qū)?shù)據(jù)區(qū)塊以鏈條的方式組合形成的特定數(shù)據(jù)結(jié)構(gòu),并以密碼學(xué)方式保證其數(shù)據(jù)不可篡改、不可偽造、可追溯的去中心化、去信任的分布式共享總賬系統(tǒng).區(qū)塊鏈的“分布式”不僅體現(xiàn)為數(shù)據(jù)備份存儲的分布式,也體現(xiàn)在數(shù)據(jù)記錄的分布式,即:由所有節(jié)點(diǎn)共同參與數(shù)據(jù)維護(hù),單一節(jié)點(diǎn)的數(shù)據(jù)被篡改或被破壞不會對區(qū)塊鏈所存儲的數(shù)據(jù)產(chǎn)生影響,能夠有效避免單點(diǎn)故障的發(fā)生.并且由于大數(shù)據(jù)自身的特點(diǎn),大數(shù)據(jù)的采集、存儲、分析等同樣是分布式的應(yīng)用場景,同樣需要進(jìn)行信息及價值的交換.因此,區(qū)塊鏈技術(shù)與大數(shù)據(jù)的訪問控制需求具有高度的契合點(diǎn).
區(qū)塊鏈并不是單一的技術(shù)創(chuàng)新,而P2P 網(wǎng)絡(luò)技術(shù)、密碼學(xué)技術(shù)、Merkle 樹、共識機(jī)制、智能合約等多種技術(shù)深度整合的結(jié)果,能夠通過透明和可信規(guī)則,實(shí)現(xiàn)事務(wù)的管理.如圖1 所示.
Fig.1 Blockchain technology features圖1 區(qū)塊鏈技術(shù)特點(diǎn)
圖1 中,加密的鏈?zhǔn)浇Y(jié)構(gòu)用來驗(yàn)證和存儲數(shù)據(jù),P2P 網(wǎng)絡(luò)技術(shù)和共識機(jī)制用來實(shí)現(xiàn)分布式節(jié)點(diǎn)的驗(yàn)證和通信,智能合約能夠?qū)崿F(xiàn)復(fù)雜業(yè)務(wù)邏輯功能并對數(shù)據(jù)進(jìn)行自動化操作.這些技術(shù)整合到一起,形成了一種新的數(shù)據(jù)記錄、存儲和表達(dá)的方法.
智能合約[31,32]存儲在區(qū)塊鏈上,是能夠在每個分布式網(wǎng)絡(luò)節(jié)點(diǎn)上自動運(yùn)行的腳本.1994 年,由Szabo 首次提出智能合約的概念,定義其是通過計(jì)算機(jī)執(zhí)行合同條款的交易協(xié)議,即通過代碼程序來自動執(zhí)行合同[33].只要滿足合同條款,交易將無需第三方監(jiān)督自動進(jìn)行.雖然智能合約的概念很早就被提出,但由于缺乏支持可編程智能合約運(yùn)行的信息平臺及相關(guān)技術(shù),智能合約一直停留在概念階段,直到能夠作為信任機(jī)器的區(qū)塊鏈的出現(xiàn),才為智能合約技術(shù)的應(yīng)用落地提供了平臺支撐.由于區(qū)塊鏈具有去中心化、安全、不可篡改、透明可追蹤等優(yōu)點(diǎn),為智能合約提供了可信的執(zhí)行環(huán)境.作為區(qū)塊鏈2.0 的核心特性,智能合約能夠在去信任環(huán)境下,按順序觸發(fā)設(shè)定的合約內(nèi)容并完成一系列安全的自動化操作.同時,區(qū)塊鏈數(shù)據(jù)具有完備可追溯的屬性,還可支持事后審計(jì)以追蹤合約動態(tài).第二大區(qū)塊鏈平臺以太坊[34]設(shè)計(jì)了一種基于EVM 虛擬機(jī)的圖靈完備腳本語言,極大地擴(kuò)寬了區(qū)塊鏈的應(yīng)用領(lǐng)域.智能合約為區(qū)塊鏈提供了應(yīng)用層的擴(kuò)展接口,任何開發(fā)人員都可基于底層區(qū)塊鏈技術(shù),通過腳本實(shí)現(xiàn)其所要實(shí)現(xiàn)的工作,為區(qū)塊鏈的應(yīng)用落地奠定了基礎(chǔ).
針對傳統(tǒng)訪問控制模型難以解決的動態(tài)、細(xì)粒度訪問控制問題,研究人員提出了基于屬性的訪問控制模型(attribute-based access control,簡稱ABAC).ABAC 模型基于實(shí)體屬性而不是用戶身份來判決允許或拒絕用戶對資源的訪問控制請求.ABAC 模型的核心要素包括主體、資源、操作以及環(huán)境約束,這些要素統(tǒng)一使用屬性和屬性值來進(jìn)行表示,屬性間的關(guān)系可以根據(jù)訪問控制需求進(jìn)行靈活的設(shè)置,提高了訪問控制策略語義的表達(dá)能力和模型的靈活性,并且能夠?qū)⑵渌L問控制模型中權(quán)限、安全標(biāo)簽、角色等概念用屬性來進(jìn)行統(tǒng)一描述,適用于解決分布式環(huán)境下動態(tài)大數(shù)據(jù)的訪問控制問題.基于如下原因,我們認(rèn)為,ABAC 模型相比其他模型能更好地適用于大數(shù)據(jù)訪問控制場景.
(1)細(xì)粒度訪問控制:ABAC 模型通過屬性來對實(shí)體及約束進(jìn)行描述,能夠嚴(yán)格控制訪問者取得權(quán)限的各種條件,精確設(shè)定屬性-權(quán)限關(guān)系,實(shí)現(xiàn)最小權(quán)限原則;
(2)自主授權(quán):ABAC 模型可為資源擁有者提供策略管理接口,策略無需由管理員統(tǒng)一設(shè)定,資源擁有者可以根據(jù)自身實(shí)際資源保護(hù)需求發(fā)布、更新、撤銷策略,保證資源能夠按照資源擁有者的意愿被訪問;
(3)動態(tài)訪問控制:ABAC 模型依據(jù)請求者所具有的屬性集合決定是否賦予其訪問權(quán)限,實(shí)現(xiàn)了策略管理和權(quán)限判定的分離,且屬性的設(shè)置與更新具有極大的靈活性和擴(kuò)展性,可滿足不同應(yīng)用場景需求;
(4)較小的系統(tǒng)開銷:在用戶和資源數(shù)量大幅度增加的情形下,傳統(tǒng)DAC,RBAC 等訪問控制模型策略數(shù)目將呈指數(shù)級增長,系統(tǒng)維護(hù)難度及開銷將極大增加.而ABAC 模型中,策略隨用戶和資源的增長呈線性增加,當(dāng)達(dá)到一定規(guī)模后,系統(tǒng)開銷趨于平穩(wěn)[35].
為了便于本文的敘述,給出如下定義.
定義 1.屬性項(xiàng)(attribute item)是表示屬性的基本單元,用{xAttrName=attrValue},(xAttrName∈attrSet,attrValue∈Range(xAttrName),x∈{s,r,a,e})表示,xAttrName表示屬性名,attrValue表示屬性值.為了對不同類型的屬性表示方便,用x表示屬性類型,s,r,a,e分別代表主體屬性、資源屬性、動作屬性和環(huán)境屬性.
定義2.屬性元組(attribute tuple)是同類型屬性項(xiàng)的集合,用xAttrTuple,x∈{s,r,a,e}表示,即:
定義3.屬性訪問請求(attribute access request,簡稱AAR)由一組主體屬性、資源屬性、動作屬性和環(huán)境屬性組成,用AAR:{sAttrTuple∧rAttrTuple∧aAttrTuple∧eAttrTuple}來表示,AAR的含義是:屬性為sAttrTuple的請求者在環(huán)境屬性eAttrTuple下,對資源rAttrTuple請求進(jìn)行操作aAttrTuple.
定義4(訪問控制策略).針對資源的訪問控制規(guī)則,體現(xiàn)了資源擁有者的授權(quán)行為,規(guī)定了訪問受保護(hù)資源所需要具有的屬性集合,記為Policy:result(R,action,pid)←Θ{xAttrTupleSet}signature_owner,x∈{s,r,a,e}.其 中,Θ{xAttrTupleSet}表示由屬性項(xiàng)集合xAttrTupleSet中的屬性通過合取、析取等邏輯關(guān)系構(gòu)成的邏輯表達(dá)式,pid表示策略ID.當(dāng)請求方所擁有的屬性使Θ{xAttrTupleSet}為真時,請求方能夠被允許或拒絕對資源R進(jìn)行action操作,result∈{Permit,Deny}.另外,策略需要被資源擁有者或策略發(fā)行方簽名后在區(qū)塊鏈中保存,從而保證發(fā)布策略的真實(shí)性.
大數(shù)據(jù)訪問控制涉及大數(shù)據(jù)資源的采集、匯聚、管理、控制等.大數(shù)據(jù)訪問控制架構(gòu)主要由數(shù)據(jù)層、資源匯聚層、基礎(chǔ)設(shè)施層、事務(wù)層、共識層、訪問控制合約層6 部分(如圖2 所示)組成.各層結(jié)構(gòu)相互協(xié)同又各司其職,共同構(gòu)成一個完整的大數(shù)據(jù)訪問控制架構(gòu).
Fig.2 Big data access control technology architecture圖2 大數(shù)據(jù)訪問控制技術(shù)架構(gòu)
(1)數(shù)據(jù)層:真實(shí)的大數(shù)據(jù)資源,包括結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù),分布式地存儲于不同的位置,邏輯上受資源匯聚層的統(tǒng)一管理;
(2)資源匯聚層:基于區(qū)塊鏈技術(shù)對大數(shù)據(jù)資源進(jìn)行資源管理,實(shí)現(xiàn)不同來源大數(shù)據(jù)資源的匯聚.雖然真實(shí)的大數(shù)據(jù)資源在實(shí)際上是由不同的數(shù)據(jù)擁有方分布式地存儲,但是通過區(qū)塊鏈技術(shù),在邏輯上形成對大數(shù)據(jù)資源的統(tǒng)一管理.本文的研究重點(diǎn)是訪問控制機(jī)制,資源匯聚層不做詳細(xì)的闡述;
(3)基礎(chǔ)設(shè)施層:由區(qū)塊鏈平臺為大數(shù)據(jù)訪問控制提供基礎(chǔ)設(shè)施,是整個架構(gòu)的基礎(chǔ),需要全網(wǎng)節(jié)點(diǎn)、礦工來維持系統(tǒng)的正常運(yùn)行,是大數(shù)據(jù)訪問控制平臺事務(wù)和智能合約的載體.事務(wù)層、合約層、資源匯聚層都是以區(qū)塊鏈為基礎(chǔ)的上層應(yīng)用;
(4)事務(wù)層:包括數(shù)據(jù)事務(wù)、策略事務(wù)、屬性事務(wù)、合約事務(wù)這4 種類型的訪問控制類事務(wù):數(shù)據(jù)事務(wù)用于對大數(shù)據(jù)資源進(jìn)行管理,服務(wù)于資源匯聚層;策略事務(wù)用于對訪問控制策略的管理,包括策略的發(fā)布、更新和撤銷,為合約層的PAP CONTRACT 提供數(shù)據(jù)支撐;屬性事務(wù)用于對實(shí)體屬性的管理,包括屬性的發(fā)布、更新和撤銷,為合約層AA CONTRACT 提供數(shù)據(jù)支撐;合約事務(wù)用于為智能合約提供運(yùn)行環(huán)境,服務(wù)于合約層;
(5)共識層:主要包括共識機(jī)制,通過各類共識算法來保證分布式節(jié)點(diǎn)間訪問控制數(shù)據(jù)的一致性和真實(shí)性,從而在節(jié)點(diǎn)間達(dá)成穩(wěn)定的共識;
(6)訪問控制合約層:包括 PAP CONTRACT,PDP CONTRACT,AA CONTRACT 這 3 種合約:PAP CONTRACT 用于訪問控制策略管理,PDP CONTRACT 用于訪問控制請求判決,AA CONTRACT 用于實(shí)體屬性管理.
本文提出的基于區(qū)塊鏈的大數(shù)據(jù)訪問控制框架如圖3 所示,框架基于ABAC 模型進(jìn)行了改進(jìn),將區(qū)塊鏈技術(shù)與訪問控制技術(shù)相結(jié)合.框架包括策略執(zhí)行點(diǎn)(policy enforcement point,簡稱 PEP)、屬性權(quán)威(attribute authority,簡稱AA)、策略管理點(diǎn)(point administration point,簡稱PAP)、策略決策點(diǎn)(policy decision point,簡稱PDP)這4 個核心部分.其中,AA,PAP,PDP 用智能合約的方式來實(shí)現(xiàn).為了能夠確保區(qū)塊鏈中訪問控制策略的正確執(zhí)行,用戶需要使用PEP 作為訪問控制客戶端來與區(qū)塊鏈進(jìn)行訪問控制的交互.
Fig.3 BBAC-BD framework圖3 BBAC-BD 框架
BBAC-BD 框架中,訪問控制工作流是對標(biāo)準(zhǔn)ABAC 模型工作流的擴(kuò)展.訪問控制工作流程可分為準(zhǔn)備階段和執(zhí)行階段(如圖3 示).準(zhǔn)備階段主要進(jìn)行訪問控制策略及屬性的管理,包括策略及屬性的發(fā)布、更新、撤銷以及對策略與屬性查詢結(jié)果的響應(yīng);而執(zhí)行階段主要進(jìn)行訪問請求的判決、響應(yīng)與執(zhí)行.
· 準(zhǔn)備階段:(1)由屬性發(fā)布方向區(qū)塊鏈中發(fā)布屬性及屬性關(guān)系信息,由AA CONTRACT 預(yù)先收集、整合區(qū)塊鏈?zhǔn)聞?wù)中屬性信息,以供PEP CLIENT 和PAP CONTRACT 使用;(2)由策略發(fā)布方向區(qū)塊鏈中發(fā)布訪問控制策略,由PAP CONTRACT 結(jié)合屬性信息描述、收集、整合區(qū)塊鏈?zhǔn)聞?wù)中訪問控制策略,以供PDP CONTRACT 進(jìn)行訪問請求的判決;
· 執(zhí)行階段:(1)當(dāng)PEP CLIENT 收到用戶向其發(fā)送對某一資源執(zhí)行某項(xiàng)操作的請求時,PEP CLIENT 分析得到原始訪問請求中主體、客體和操作語義,根據(jù)從AA CONTRACT 得到的屬性信息生成基于屬性的訪問請求AAR,將AAR 發(fā)往PDP CONTRACT;(2)PDP CONTRACT 向PAP CONTRACT 查詢與被請求大數(shù)據(jù)資源相關(guān)的訪問控制策略集,進(jìn)行訪問控制判決,將判決結(jié)果響應(yīng)發(fā)送回PEP CLIENT;(3)由PEP CLIENT 根據(jù)響應(yīng)結(jié)果對大數(shù)據(jù)資源進(jìn)行授權(quán)的訪問操作.
由于訪問控制策略是存儲在區(qū)塊鏈中,策略信息對任何人都是可驗(yàn)證、可追溯且不可篡改的,大數(shù)據(jù)資源的訪問控制擺脫了傳統(tǒng)集中式訪問控制管理可能存在的單點(diǎn)故障和訪問控制判決透明度的問題,實(shí)現(xiàn)了訪問控制策略的分布式管理,有效地提高了系統(tǒng)的魯棒性和可信性.另外,通過智能合約的形式來實(shí)現(xiàn)訪問控制策略的判決過程,無需第三方中心機(jī)構(gòu)參與,避免了第三方中心可能存在的越權(quán)行為,基于區(qū)塊鏈系統(tǒng)實(shí)現(xiàn)共識下的訪問控制自動判決,是一種真正實(shí)現(xiàn)了去中心化的訪問控制機(jī)制,符合大數(shù)據(jù)資源的訪問控制管理需求.
在區(qū)塊鏈中,數(shù)據(jù)以事務(wù)的形式存儲在區(qū)塊鏈中,我們使用區(qū)塊鏈中事務(wù)的形式來對訪問控制策略進(jìn)行管理.如圖4 所示,區(qū)塊中事務(wù)數(shù)據(jù)是以基于哈希算法的Merkle 樹這種數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲,通過哈希算法將大小不一致的事務(wù)數(shù)據(jù)映射成固定大小的字符串,存儲在Merkle 樹的葉子節(jié)點(diǎn)上,Merkle 樹的非葉子節(jié)點(diǎn)存儲的都是其子節(jié)點(diǎn)的哈希值.在P2P 網(wǎng)絡(luò)中,使用Merkle 樹能夠快速的驗(yàn)證數(shù)據(jù)是否被篡改或接收到的數(shù)據(jù)是否損壞,區(qū)塊鏈中所有的事務(wù)數(shù)據(jù)通過Merkle 樹生成唯一的Merkle 根存儲在區(qū)塊頭中.
區(qū)塊鏈包括實(shí)體賬戶、數(shù)據(jù)區(qū)塊、事務(wù)集數(shù)據(jù)、配置數(shù)據(jù)等,它們之間的數(shù)據(jù)視圖關(guān)系如圖5 所示.
1)實(shí)體賬戶:是區(qū)塊鏈中各類事務(wù)請求的發(fā)起者及相關(guān)數(shù)據(jù)的擁有者,是訪問控制機(jī)制中數(shù)據(jù)資源的實(shí)際擁有者,擁有一對由PKI 體系產(chǎn)生的公鑰與私鑰,系統(tǒng)中,賬戶由公鑰唯一進(jìn)行標(biāo)識,由資源擁有者發(fā)布的事務(wù)數(shù)據(jù)都需由實(shí)體賬戶用私鑰對其進(jìn)行簽名,以供其他用戶驗(yàn)證區(qū)塊中事務(wù)的真實(shí)性;
2)數(shù)據(jù)區(qū)塊:是區(qū)塊鏈網(wǎng)絡(luò)中底層的數(shù)據(jù),多個區(qū)塊共同形成鏈?zhǔn)浇Y(jié)構(gòu),以不可篡改的形式將一定時期內(nèi)的事務(wù)處理結(jié)果持久化;
3)事務(wù)集數(shù)據(jù):是基于區(qū)塊鏈的訪問控制機(jī)制中存儲執(zhí)行實(shí)際業(yè)務(wù)活動的數(shù)據(jù),包括訪問控制類事務(wù)和智能合約類事務(wù).訪問控制類事務(wù)用于訪問控制策略的管理,主要涵蓋策略管理中策略信息的發(fā)布、更新與撤銷操作.智能合約類事務(wù)用于訪問控制的判決過程,響應(yīng)訪問請求,生成訪問控制響應(yīng).在區(qū)塊鏈上發(fā)布事務(wù)需要消耗一定數(shù)據(jù)的代幣,作為用戶使用區(qū)塊鏈服務(wù)的開支;
4)配置數(shù)據(jù):是區(qū)塊鏈系統(tǒng)正常運(yùn)行所需的配置信息,包括協(xié)議版本號、通信節(jié)點(diǎn)信息等配置信息.
Fig.4 Merkle tree storing transaction information圖4 存儲事務(wù)信息的Merkle 樹
Fig.5 Entity relationship in the block圖5 區(qū)塊中數(shù)據(jù)視圖實(shí)體間關(guān)系
我們以區(qū)塊鏈中的事務(wù)為載體對訪問控制策略進(jìn)行管理.訪問控制策略管理包括策略信息管理和屬性信息管理,分別以策略類事務(wù)和屬性類事務(wù)的形式發(fā)布到區(qū)塊鏈,包括信息的發(fā)布、更新與撤銷操作.策略管理信息由大數(shù)據(jù)資源的擁有者制定,對大數(shù)據(jù)資源的訪問控制策略權(quán)限信息和屬性及屬性間關(guān)系進(jìn)行管理.數(shù)據(jù)被發(fā)布到區(qū)塊鏈后,可以被任意次更新,直到數(shù)據(jù)被撤銷,才結(jié)束策略或?qū)傩孕畔⒌耐暾芷?無論數(shù)據(jù)當(dāng)前處于何種狀態(tài)(發(fā)布、更新、撤銷),其歷史操作信息都將被永久記錄在區(qū)塊鏈中,便于審計(jì)和掌握訪問控制動態(tài).區(qū)塊鏈非合約事務(wù)的消息格式如圖6 示.其中,
·ID表示事務(wù)消息標(biāo)識號;
·PK表示事務(wù)發(fā)布者公鑰;
·transactionType代表事務(wù)消息類型,用p表示策略類事務(wù)消息,a表示屬性類事務(wù)消息;
·action代表操作類型,用c表示發(fā)布操作,u表示更新操作,r表示撤銷操作;
·transaction_data代表具體的事務(wù)消息數(shù)據(jù),與事務(wù)消息類型相對應(yīng),分別訪問控制策略信息和屬性及屬性關(guān)系信息,根據(jù)事務(wù)消息數(shù)據(jù)規(guī)模的不同,存在鏈上與鏈上鏈下相結(jié)合兩種存儲方法:針對小規(guī)模策略數(shù)據(jù),直接在鏈上存儲策略信息;針對較大規(guī)模策略數(shù)據(jù),在鏈上存儲數(shù)據(jù)摘要Hash 和鏈下數(shù)據(jù)鏈接Url;
·timestamp表示消息發(fā)布的時間戳;
·signature_message表示對前4 項(xiàng)事務(wù)數(shù)據(jù)的消息簽名.
對于發(fā)布操作,需要消耗一定數(shù)量的數(shù)字代幣,更新與撤銷操作無需消耗數(shù)字代幣.
Fig.6 Transaction management level relationship圖6 事務(wù)管理層級關(guān)系
下面是礦工節(jié)點(diǎn)接收事務(wù)數(shù)據(jù)生成新區(qū)塊的具體工作過程.
步驟1:策略信息發(fā)布者向區(qū)塊鏈提交策略事務(wù)請求,并且使用發(fā)布者公鑰作為事務(wù)標(biāo)識;
步驟2:由代表礦工節(jié)點(diǎn)接受策略信息請求,并向節(jié)點(diǎn)網(wǎng)絡(luò)廣播所接受到的信息請求;
步驟3:由當(dāng)值的代表礦工節(jié)點(diǎn)根據(jù)用戶的公鑰將事務(wù)記錄到child_block;
步驟4:由當(dāng)值的代表礦工節(jié)點(diǎn)將child_block的確認(rèn)信息向節(jié)點(diǎn)網(wǎng)絡(luò)進(jìn)行廣播;
步驟5:校驗(yàn)代表礦工節(jié)點(diǎn)對事務(wù)數(shù)據(jù)進(jìn)行校驗(yàn),其他礦工節(jié)點(diǎn)同步更新事務(wù)數(shù)據(jù);
步驟6:每隔一個時間間隔對child_block中的策略事務(wù)數(shù)量進(jìn)行檢查,當(dāng)數(shù)據(jù)達(dá)到5 個時,將所有更新事務(wù)數(shù)據(jù)打包封裝成一個數(shù)據(jù)區(qū)塊,計(jì)算該區(qū)塊的根Merkle 值,并將該區(qū)塊數(shù)據(jù)存入本節(jié)點(diǎn)數(shù)據(jù)庫;
步驟7:返回步驟1.
訪問控制策略以事務(wù)的形式存放在區(qū)塊鏈中,并且每個事務(wù)中可能存在一條或多條訪問控制策略.PAP 需要對區(qū)塊鏈中存儲的策略事務(wù)進(jìn)行整合,將與訪問請求相關(guān)的策略發(fā)送給PDP,以供PDP 進(jìn)行策略判決.如圖7所示,為訪問控制策略的融合流程,圖7 中,在區(qū)塊鏈存儲的每條策略信息的第1 個操作類型字段表示了該策略信息被發(fā)布的意圖,c表示發(fā)布操作,u表示更新操作,r表示撤銷操作.并且每條策略信息都有對應(yīng)的時間戳為該信息增加了時間維度,根據(jù)時間維度,當(dāng)操作類型字段為c時,創(chuàng)建相應(yīng)ID 的新策略信息;當(dāng)操作類型字段為u時,更新相應(yīng)ID 的策略信息;當(dāng)操作類型字段為r時,撤銷相應(yīng)ID 的策略信息.訪問控制策略的融合流程即是沿著相應(yīng)ID 策略的時間維度管理整合策略的過程.策略管理合約PAP CONTRACT 將AAR 所請求資源相關(guān)策略的進(jìn)行整合,為PDP CONTRACT 進(jìn)行訪問控制判決提供策略支撐.
Fig.7 Access control policy fusion process圖7 訪問控制策略融合流程
訪問控制策略分布式存儲后面臨的關(guān)鍵問題是策略查詢效率的問題,為了提高策略管理過程中策略檢索與查詢的效率,本文設(shè)計(jì)了基于Bloom Filter 的策略管理合約(如圖8 所示).作為一種具有極高空間利用效率的概率性數(shù)據(jù)結(jié)構(gòu),Bloom Filter 通過二進(jìn)制向量來描述數(shù)據(jù)集合,能夠快速判斷該集合中是否包含某一特定元素.Bloom Filter 的缺點(diǎn)是存在一定的錯誤查詢概率,Bloom Filter 不會把集合中存在的元素判斷為不存在,但存在把集合中不存在的元素判斷為存在集合中的可能.Bloom Filter 正是通過允許存在少量的錯誤,以此來減少存儲空間,提高查詢效率.在策略管理合約中,允許非相關(guān)策略被判定為相關(guān)策略,這里,該非相關(guān)策略將成為冗余策略,而不允許相關(guān)策略被判定為非相關(guān)策略,這與Bloom Filter 的特點(diǎn)正好吻合.
Bloom Filter 中包括長度為n比特的二進(jìn)制向量BF={b0,b1,…,bn-1}與m個獨(dú)立的哈希函數(shù)H(x)={h0(x),h1(x),…,hm-1(x)},初始化階段,將BF的所有比特位都設(shè)定成0,通過H(x)的計(jì)算,可以得到于0~n-1 范圍內(nèi)分布均勻的哈希值.對于原始策略事務(wù)數(shù)據(jù)集合中的屬性關(guān)鍵字集合DB_SET={DB0,DB1,…,DBk-1},將屬性關(guān)鍵字DBi(0≤i≤k)插入到BF中時,計(jì)算與m個哈希函數(shù)H(x)對應(yīng)的m個哈希值h0(DBi),h1(DBi),…,hm-1(DBi),并將在BF中m個哈希值所相對應(yīng)位置的值設(shè)定成1.當(dāng)需要驗(yàn)證某一資源的相關(guān)策略屬性關(guān)鍵字R是否存在于該BF中時,只需要計(jì)算h0(R),h1(R),…,hm-1(R),并再查看BF中h0(R),h1(R),…,hm-1(R)對應(yīng)位置的值是否全部為1:若不全部為1,則證明該BF中涉及的資源數(shù)據(jù)集合不包含資源R的相關(guān)策略;若對應(yīng)位置的值全部為1,則認(rèn)為資源R相關(guān)策略以(1-PR)的概率存在于該事務(wù)數(shù)據(jù)集合.mop為最優(yōu)哈希個數(shù):
Fig.8 Access control policy management based on Bloom Filter圖8 基于Bloom Filter 訪問控制策略管理
PAP CONTRACT 合約的偽代碼見算法1.
算法1.策略管理合約PAP CONTRACT.
輸入:屬性訪問請求AAR,區(qū)塊鏈blocks;
輸出:資源相關(guān)策略集RELEVANT_POLICY_SET.
PAP CONTRACT 算法流程描述.
1)解析AAR得到所請求的資源屬性信息rAttrTuple;
2)遍歷區(qū)塊鏈各區(qū)塊內(nèi)策略類事務(wù)數(shù)據(jù)塊;
3)獲取策略類事務(wù)數(shù)據(jù)塊所對應(yīng)的屬性布隆過濾器BF;
4)根據(jù)該BF所對應(yīng)的哈希函數(shù),計(jì)算rAttrTuple所對應(yīng)的哈希值;
5)若計(jì)算rAttrTuple得到的哈希值與BF中對應(yīng)位全部為1,則在RELEVANT_POLICY_SET中添加該數(shù)據(jù)塊內(nèi)策略;否則,該數(shù)據(jù)塊中無rAttrTuple的相關(guān)策略;
6)當(dāng)對所有區(qū)塊內(nèi)策略類事務(wù)遍歷完成后,向PDP 返回資源相關(guān)策略集RELEVANT_POLICY_SET用于權(quán)限判決.
· 訪問控制的判決結(jié)果分為兩種類型,分別是允許訪問(PERMIT)和拒絕訪問(DENY):針對PDP 收到的AAR,若該AAR滿足某一訪問控制策略中的約束和謂詞,則此判決請求為滿足策略,根據(jù)策略描述來PERMIT(PID)或DENY(PID)該AAR請求;
· 如果判決請求不滿足策略,則包括兩種情況:一是AAR中所提供的請求屬性信息不足,從而無法做出判決,使用表示UNKNOWN;另一類是策略集沒有任何一條策略能夠與AAR進(jìn)行匹配,從而無法做出判決UNSATISFY.
因此,訪問控制策略判決階段包括4 類判決結(jié)果PERMIT,DENY,UNKNOWN 和UNSATISFY.
AAR所包括的全部屬性構(gòu)成了訪問請求的關(guān)聯(lián)屬性集,用ATTR_SETAAR來表示.訪問控制策略policy中所包括的全部屬性構(gòu)成了訪問控制策略的關(guān)聯(lián)屬性集,用AAT_SETpolicy來表示.針對特定的訪問請求,訪問控制的判決PolicyDecide可以表示成如下形式:
PolicyDecide流程如下.
1)若AAT_SETpolicy?ATTR_SETAAR,PolicyDecide(policy)=UNKNOWN;
2)若AAT_SETpolicy?ATTR_SETAAR,且ATTR_SETAAR中屬性值范圍全部符合AAT_SETpolicy中策略屬性約束要求,則PolicyDecide(policy)=SATISFY,SATISFY∈{PERMIT,DENY};
3)若AAT_SETpolicy?ATTR_SETAAR,且ATTR_SETAAR中存在至少一個屬性值不符合AAT_SETpolicy中策略屬性約束要求,則PolicyDecide(policy)=UNSATISFY.
策略判決過程由策略判決合約PDP CONTRACT 來進(jìn)行,合約的偽代碼見算法2.
算法2.策略判決合約PDP CONTRACT.
輸入:屬性訪問請求AAR,訪問控制策略集POLICY_SET;
輸出:策略判決結(jié)果PERMIT,DENY,UNKNOWN,UNSATISFY.
PDP CONTRACT 算法流程描述.
1)將所有待判決策略放入UNKNOWN_SET,作為預(yù)判決策略集;
2)遍歷預(yù)判決策略,分別得到 4 個策略判決結(jié)果集:PERMINT_RESULT_SET,DENY_RESULT_SET,UNSATISFY_RESULT_SET,UNKNOWN_RESULT_SET;
3)根據(jù)判決結(jié)果集,得出AAR請求的最終判決結(jié)果:若存在沖突的判決結(jié)果,進(jìn)行沖突處理后,得到最后的判決結(jié)果.沖突處理可依據(jù)肯定優(yōu)先或否定優(yōu)先等處理原則進(jìn)行沖突消解.
PEP,AAR,PDP 中,屬性語義與屬性值賦值都來源于屬性權(quán)威AA.系統(tǒng)中可能存在多個AA,AA 中存儲主體屬性、資源屬性、動作屬性和環(huán)境屬性的屬性值和屬性間關(guān)系的列表.表1 左側(cè)數(shù)據(jù)表示相關(guān)屬性的屬性值,右側(cè)表示相關(guān)屬性間的屬性關(guān)系.
Table 1 Attribute and attribute relationship表1 屬性及屬性關(guān)系
屬性信息同樣是以事務(wù)的形式存儲在區(qū)塊鏈中,基于Bloom Filter 進(jìn)行屬性管理,AA CONTRACT 相當(dāng)于提供AA 查詢服務(wù)的代理,合約的偽代碼見表3.
算法3.屬性權(quán)威合約AA CONTRACT.
輸入:屬性類事務(wù)atribute_transaction,屬性請求attributeRequest;
輸出:相關(guān)屬性集RELEVANT_ATTRIBUTE_SET.
AA CONTRACT 算法流程描述.
1)接收屬性查詢請求attributeRequest;
2)遍歷區(qū)塊鏈各區(qū)塊內(nèi)屬性類事務(wù)數(shù)據(jù)塊;
3)獲取屬性類事務(wù)數(shù)據(jù)塊所對應(yīng)的屬性布隆過濾器BF;
4)根據(jù)該BF所對應(yīng)的哈希函數(shù),計(jì)算對應(yīng)屬性的哈希值;
5)若計(jì)算得到的哈希值與BF中對應(yīng)位全部為1,則在RELEVANT_ATTRIBUTE_SET中添加該數(shù)據(jù)塊內(nèi)屬性信息;否則,該數(shù)據(jù)塊中無相關(guān)屬性信息;
6)當(dāng)對所有區(qū)塊內(nèi)屬性類事務(wù)遍歷完成后,將RELEVANT_POLICY_SET作為響應(yīng)進(jìn)行返回.
通過仿真實(shí)驗(yàn)對本文所提出的BBAC-BD 機(jī)制有效性進(jìn)行測試,以驗(yàn)證BBAC-BD 機(jī)制是否能夠?qū)崿F(xiàn)訪問控制策略管理與訪問控制策略判決功能.本文基于XACML 提供的標(biāo)準(zhǔn)策略一致性測試包中屬性集和策略集進(jìn)行測試,1 組~6 組的Policy Sample 分別與1 000,2 000,3 000,4 000,5 000,8 000 條單一策略測試集樣本對應(yīng),對開源區(qū)塊鏈平臺EbCoin 進(jìn)行了擴(kuò)展與改進(jìn),改用PoW 機(jī)制,將PAP CONTRACT,PDP CONTRACT,AA CONTRACT 這3 部分合約代碼與EbCoin 進(jìn)行整合在PC 機(jī)上構(gòu)建3 節(jié)點(diǎn)仿真實(shí)驗(yàn)環(huán)境.實(shí)驗(yàn)環(huán)境如下:操作系統(tǒng)為Windows 10 家庭中文版64 位,CPU 為Intel(R)Core(TM)i7-4710MQ@2.50GHz,內(nèi)存大小為16.00GB,nodejs版本為v8.11.1,npm 版本為5.6.0.
本實(shí)驗(yàn)針對基于Bloom Filter 策略管理方法對策略檢索效率的優(yōu)化效果進(jìn)行性能測試,實(shí)驗(yàn)分別針對不同查詢規(guī)模的測試集進(jìn)行匹配查詢測試,為Bloom Filter 設(shè)置不同參數(shù)進(jìn)行誤差率與檢索時延的測試,用于評估Bloom Filter 不同參數(shù)對檢索性能的影響.單次時延的計(jì)算方法是總時延/總的匹配次數(shù).優(yōu)化效果主要通過策略管理合約中策略的檢索時延進(jìn)行衡量,時延越小,其執(zhí)行效率越高,檢索優(yōu)化的效果越好.
由表2 測試結(jié)果可知,n/k的比值越大,優(yōu)化效果越好.比值越大,所對應(yīng)的誤判率會越低,但同時也會占用更多的空間成本.同時,誤判率的真實(shí)值一般小于誤判率的理論值.
圖9 與圖10 結(jié)果表明,當(dāng)Hash 的性能較好,即Hash 分布結(jié)果較均勻時,在m=3 的條件下,就能夠達(dá)到預(yù)期使用所能接受的誤判率,Hash 次數(shù)的增加并不會帶來明顯的收益增加.因此,在條件允許的情況下,盡量擴(kuò)大n/k的值,能夠有效提高查詢性能.這主要是由于Bloom Filter 在策略檢測的屬性關(guān)鍵字過濾過程中,其檢索時間受策略集合規(guī)模影響較小,故相比于遍歷檢索過程,基于Bloom Filter 的策略檢索與匹配能夠達(dá)到較高的性能,基于Bloom Filter 的策略檢索能夠有效節(jié)約緩存空間,減少對緩存的請求次數(shù),提升策略查詢效率以及策略管理業(yè)務(wù)隔離性.
Table 2 Policy retrieval test results表2 策略檢索測試結(jié)果
Fig.9 Policy retrieval performance圖9 策略檢索性能比較
Fig.10 Effect of m value on the accuracy圖10 m值對檢索結(jié)果準(zhǔn)確性的影響
為了驗(yàn)證BBAC-BD 訪問控制機(jī)制的有效性,本文在不同策略規(guī)模下,對基于智能合約的訪問控制策略判決功能進(jìn)行了功能性測試,測試內(nèi)容包括策略判決的效率與判決結(jié)果的成功率.1 組~5 組的Policy Sample 分別與1 000,2 000,3 000,4 000,5 000 條單一策略測試集樣本對應(yīng).測試集樣本面向80 個用戶標(biāo)識構(gòu)建800 次不同的訪問請求,每個標(biāo)識平均擁有5 個屬性值,每個請求共隨機(jī)發(fā)送5 次,策略判決時延通過計(jì)算所有請求的平均響應(yīng)時延得到.
由圖11 可知,策略判決時延與策略規(guī)模直接相關(guān),隨著策略規(guī)則的增加,訪問控制判決時延增長較為明顯.同時,由圖12 可知,隨著策略規(guī)則的增加,策略判決成功率有所下降,這是由于策略集中存在部分沖突策略,針對沖突策略,策略判決合約無法得到一致性的判決結(jié)果.需要說明的是,本文還未將策略沖突處理部分引入策略判決合約,沖突策略的消解還未有效解決,這部分內(nèi)容將在后續(xù)研究工作中繼續(xù)完善.
Fig.11 Policy decision performance圖11 策略判決性能比較
Fig.12 Policy decision success rate圖12 策略判決結(jié)果成功率比較
由于區(qū)塊鏈所面臨的主要安全風(fēng)險來源于攻擊者對共識機(jī)制的攻擊,以此來達(dá)到修改區(qū)塊數(shù)據(jù)的攻擊目標(biāo).為了對區(qū)塊鏈自身抗攻擊安全性進(jìn)行分析,以采用普遍的PoW 共識機(jī)制為例,采取文獻(xiàn)[36,37]提出的攻擊模型來分析區(qū)塊鏈所面臨的潛在安全風(fēng)險.誠實(shí)節(jié)點(diǎn)可信鏈與惡意節(jié)點(diǎn)攻擊鏈間的競爭關(guān)系可以用Binomial Random Walk 過程來進(jìn)行描述,攻擊者偽造的攻擊鏈長度成功超過可信鏈長度,從而彌補(bǔ)z個區(qū)塊差距可能性的問題可被近似地當(dāng)成Gambler’s Ruin Problem.所以,攻擊者成功彌補(bǔ)z個區(qū)塊差距,成功完成對區(qū)塊鏈數(shù)據(jù)篡改攻擊的概率計(jì)算方法如下:
其中,p表示誠實(shí)節(jié)點(diǎn)獲得下一區(qū)塊記賬權(quán)的概率,q表示攻擊者獲得下一區(qū)塊記賬權(quán)的概率,且p+q=1;qz表示攻擊者最終成功彌補(bǔ)z個區(qū)塊差距的概率.我們假設(shè)誠實(shí)節(jié)點(diǎn)以平均預(yù)期時間生成一個新區(qū)塊,攻擊者潛在區(qū)塊鏈延伸長度符合泊松分布,其期望值如下:
為了計(jì)算攻擊者所生成的區(qū)塊鏈長度追趕上誠實(shí)節(jié)點(diǎn)所生成區(qū)塊鏈長度的概率,將攻擊者所生成區(qū)塊長度的泊松分布概率密度與該時刻攻擊者能夠成功追趕誠實(shí)節(jié)點(diǎn)可信鏈的概率相乘,即為攻擊者成功篡改區(qū)塊數(shù)據(jù)的概率pa為
通過Matlab 進(jìn)行仿真,分析攻擊者成功篡改區(qū)塊數(shù)據(jù)的概率pa與區(qū)塊差距z及攻擊者獲得下一區(qū)塊記賬權(quán)的概率p之間的關(guān)系如圖13 所示.由仿真結(jié)果可知:攻擊者成功篡改區(qū)塊數(shù)據(jù)概率隨著區(qū)塊鏈距離的增加呈現(xiàn)指數(shù)下降趨勢,并且當(dāng)區(qū)塊距離相同時,成功篡改區(qū)塊概率隨著攻擊者攻擊能力的提升顯著增加,當(dāng)攻擊者獲取區(qū)塊鏈網(wǎng)絡(luò)內(nèi)50%以上的奪取記賬權(quán)能力時,才能夠控制整個區(qū)塊鏈全部數(shù)據(jù).當(dāng)攻擊者所掌握的奪取記賬權(quán)能力較低時,通過采取適當(dāng)?shù)膮^(qū)塊距離,區(qū)塊鏈能夠達(dá)到較好的抗攻擊效果.
Fig.13 Attacker success probability圖13 攻擊者成功概率
本文提出一種面向大數(shù)據(jù)資源的訪問控制機(jī)制BBAC-BD,該機(jī)制將區(qū)塊鏈技術(shù)與ABAC 模型相結(jié)合,借助區(qū)塊鏈所具有的可追溯、不可篡改等特點(diǎn),通過區(qū)塊鏈?zhǔn)聞?wù)管理訪問控制策略及屬性,實(shí)現(xiàn)了策略發(fā)布、更新以及撤銷全流程的策略管理與追蹤.策略以公開、透明的形式存放在區(qū)塊鏈中,任何用戶都可以對其進(jìn)行查詢,從傳統(tǒng)基于第三方提供訪問控制服務(wù)的模式中解脫出來,解決了權(quán)限判決透明度的問題.同時,通過智能合約,基于資源擁有者發(fā)布到區(qū)塊鏈上的策略,實(shí)現(xiàn)對大數(shù)據(jù)資源自動化的訪問控制,判決過程更加靈活、判決結(jié)果更加可信.BBAC-BD 機(jī)制實(shí)現(xiàn)了安全、可靠、透明的新型訪問控制架構(gòu),能夠有效促進(jìn)大數(shù)據(jù)的安全流通與共享.