王靜宇,楊 力
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014010)
在傳統(tǒng)的訪問(wèn)控制方法中主要分為兩種:一種是自主訪問(wèn)控制(discretionary access control,DAC),另外一種是強(qiáng)訪問(wèn)控制技術(shù)(mandatory access control,MAC),兩者都是面向特定的非開(kāi)放環(huán)境,所制定的訪問(wèn)控制策略粒度比較粗放,難以適應(yīng)當(dāng)前的數(shù)據(jù)共享的挑戰(zhàn)。DAC是指對(duì)某個(gè)客體具有控制權(quán)的主體能夠?qū)?duì)客體的一種訪問(wèn)權(quán)自主地授予其它主體,并隨時(shí)可將其授予的權(quán)限收回。雖然具有靈活性、易用性與可擴(kuò)展性,但其開(kāi)銷過(guò)大、效率低效、自主性強(qiáng),不適合復(fù)雜的系統(tǒng)。MAC是由系統(tǒng)管理員制定相關(guān)的訪問(wèn)策略,以此來(lái)進(jìn)行多層級(jí)別的訪問(wèn)控制操作,但由于MAC中的訪問(wèn)策略缺乏靈活性,導(dǎo)致此方法應(yīng)用率過(guò)低。以目前情況分析,訪問(wèn)控制的方法分為兩類:一類為角色訪問(wèn)控制[1,2](role-based access control,RBAC)模型,另一類為屬性訪問(wèn)控制[3,4](attribute based access control,ABAC)模型,以RBAC為例,其通過(guò)用戶-角色-權(quán)限進(jìn)行相關(guān)的授權(quán)操作,用戶通過(guò)角色聚攏的過(guò)程達(dá)到訪問(wèn)客體資源目的,故RBAC在一定的程度上使授權(quán)的復(fù)雜性和管理開(kāi)銷有所降低。由于RBAC不能根據(jù)自身屬性和環(huán)境屬性對(duì)用戶進(jìn)行動(dòng)態(tài)授權(quán),只是對(duì)用戶身份進(jìn)行標(biāo)識(shí),在RBAC的使用范圍上有局限性。ABAC通過(guò)考慮各種不同實(shí)體屬性來(lái)實(shí)現(xiàn)更加細(xì)粒度的數(shù)據(jù)共享與訪問(wèn)控制,許多研究者對(duì)ABAC模型[5-11]進(jìn)行了相關(guān)研究。Jemel等[12]在區(qū)塊鏈和密文策略屬性加密基礎(chǔ)上,提出一種通過(guò)廣播交易將帶有時(shí)間屬性的訪問(wèn)控制發(fā)布到區(qū)塊鏈。只有在特定時(shí)間內(nèi),用戶屬性滿足訪問(wèn)策略請(qǐng)求者才能獲得解密密鑰,但該方案難以實(shí)時(shí)部署眾多的訪問(wèn)策略,易被惡意節(jié)點(diǎn)攻擊。Ouaddah等[13]提出方案中將策略存儲(chǔ)在區(qū)塊鏈交易中,并引入比特幣錢(qián)包概念,為不同的物聯(lián)網(wǎng)設(shè)備配置自己的錢(qián)包,并授權(quán)令牌的形式進(jìn)行權(quán)限管理,令牌通過(guò)資源擁有者的私鑰簽名來(lái)保證其不可偽造。Maesa DDF等[14]利用區(qū)塊鏈實(shí)現(xiàn)一種基于屬性的訪問(wèn)控制方案,該方案通過(guò)策略創(chuàng)建交易和權(quán)限轉(zhuǎn)移交易實(shí)現(xiàn)策略的創(chuàng)建、更新和撤銷,但該方案需要的算力運(yùn)行開(kāi)銷較大。
綜上所述,對(duì)于現(xiàn)有技術(shù)中存在的不足,本文以ABAC模型為基礎(chǔ),結(jié)合區(qū)塊鏈技術(shù)和策略分級(jí),提出了基于區(qū)塊鏈和策略分級(jí)的訪問(wèn)控制模型(ABAC based on blockchain and policy grading,BP-ABAC)。本方案將訪問(wèn)控制策略和智能合約相結(jié)合,在合約中進(jìn)行策略分級(jí)。對(duì)數(shù)據(jù)請(qǐng)求者進(jìn)行等級(jí)評(píng)估,通過(guò)用戶等級(jí)評(píng)估結(jié)果獲得相應(yīng)的策略集的訪問(wèn)權(quán)限。區(qū)塊作為一種去中心化、分布式策略存儲(chǔ)系統(tǒng)。通過(guò)這兩者結(jié)合使得該方案具有良好的查詢效率、動(dòng)態(tài)性、安全性。
與基于角色的訪問(wèn)控制(RBAC)不同的是,基于屬性的訪問(wèn)控制(ABAC)是通過(guò)實(shí)體屬性而不是用戶身份來(lái)判決允許或拒絕用戶對(duì)資源的訪問(wèn)控制請(qǐng)求。ABAC的突出優(yōu)點(diǎn)是它具備強(qiáng)大的表達(dá)能力。具體表現(xiàn)在3個(gè)方面:聚合度高、靈活性高、可擴(kuò)展性高。模型中主要有主體屬性、客體屬性、操作屬性、環(huán)境屬性四大核心屬性。在ABAC模型中,主體和客體都是通過(guò)各自的屬性集來(lái)描述的,而屬性集是用屬性和對(duì)應(yīng)的屬性值來(lái)表示。如圖1所示。

圖1 ABAC授權(quán)模型
以下為其進(jìn)行形式化定義:
定義1 屬性項(xiàng):用 {AttrName=AttrValue} 表示,AttrName表示屬性名,AttrName表示屬性值,引用前綴 (S,O,E,P) 區(qū)分實(shí)體屬性類型
定義2 屬性訪問(wèn)請(qǐng)求(attribute access request,AAR):其含義是訪問(wèn)時(shí),主體屬性(SA)在環(huán)境屬性(EA)下對(duì)資源客體屬性(OA)進(jìn)行操作,即: AAR={sattr,oattr,eattr,pattr}。
定義3 訪問(wèn)控制策略(Policy):根據(jù)訪問(wèn)請(qǐng)求相關(guān)屬性預(yù)先設(shè)定的訪問(wèn)判定規(guī)則,判定結(jié)果主要為允許(Permit)、拒絕(Refuse)、未知(Unknow)3種狀態(tài)。
結(jié)合當(dāng)前的系統(tǒng)的復(fù)雜性和實(shí)時(shí)變化的特征,需要對(duì)細(xì)粒度訪問(wèn)控制進(jìn)行優(yōu)化,同時(shí)更好應(yīng)對(duì)大規(guī)模的用戶擴(kuò)展機(jī)制問(wèn)題。在訪問(wèn)控制策略描述、模型設(shè)計(jì)和完成授權(quán)機(jī)制3個(gè)方面都對(duì)主體、客體、環(huán)境、和操作屬性統(tǒng)一建模形成實(shí)體屬性(組)的概念。以此對(duì)授權(quán)和訪問(wèn)控制約束進(jìn)行描述,使其擁有良好的靈活性和可擴(kuò)展性。
區(qū)塊鏈系統(tǒng)架構(gòu)是由數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、合約層和應(yīng)用層組成。區(qū)塊鏈技術(shù)是將P2P網(wǎng)絡(luò)技術(shù)、密碼學(xué)技術(shù)、共識(shí)機(jī)制、智能合約等多種技術(shù)結(jié)合而形成的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),如圖2所示。本質(zhì)上區(qū)塊鏈?zhǔn)且环N去中心化的、分布式的共享賬本和數(shù)據(jù)庫(kù)。數(shù)據(jù)區(qū)塊根據(jù)時(shí)間戳的先后順序以鏈條的形式鏈接起來(lái)形成特定的數(shù)據(jù)結(jié)構(gòu)。整個(gè)系統(tǒng)沒(méi)有明確中心節(jié)點(diǎn),任何節(jié)點(diǎn)都可以參與和獲得完整的數(shù)據(jù)副本并存儲(chǔ),實(shí)現(xiàn)了去中心化的數(shù)據(jù)管理方式。通過(guò)所有參與節(jié)點(diǎn)維護(hù)和保證數(shù)據(jù)鏈條不斷增加,以及非集中式的共識(shí)機(jī)制來(lái)實(shí)現(xiàn)事物的持久性,并保證數(shù)據(jù)的可信性和安全性。區(qū)塊分為區(qū)塊頭和區(qū)塊體,區(qū)塊頭中封裝了快高度、時(shí)間戳、Merkle樹(shù)、塊哈希、前一個(gè)塊的哈希值等。基于以上特特征,區(qū)塊鏈具有以下性質(zhì):去中心化、不可篡改、集體維護(hù)等。

圖2 區(qū)塊鏈基礎(chǔ)構(gòu)架
智能合約(Smart Contract),定義為:智能合約是將合約內(nèi)容以數(shù)字方式的實(shí)現(xiàn)承諾,包括合約參與方可按照合約規(guī)定內(nèi)容執(zhí)行承諾的協(xié)議[15]。其存儲(chǔ)在區(qū)塊鏈上,是能夠在每個(gè)分布式網(wǎng)絡(luò)節(jié)點(diǎn)上自動(dòng)運(yùn)行的腳本。只要滿足合同協(xié)議條款,交易不需要第三方信任平臺(tái)監(jiān)督,按順序觸發(fā)設(shè)定的合約內(nèi)容并完成一系列安全的自動(dòng)化操作,執(zhí)行相關(guān)條款。將智能合約以數(shù)字化的形式寫(xiě)入?yún)^(qū)塊鏈中,可以避免惡意行為對(duì)合約正常執(zhí)行的干擾。結(jié)合區(qū)塊鏈的共識(shí)算法構(gòu)建的狀態(tài)機(jī)系統(tǒng),不但保證合約在存儲(chǔ)、讀取和執(zhí)行的過(guò)程中狀態(tài)機(jī)制透明、可追蹤和不可篡改的特性,也可以使智能合約保持高效運(yùn)行。
本方案提出的基于區(qū)塊鏈和策略分級(jí)的訪問(wèn)控制框架,如圖3所示。在傳統(tǒng)的ABAC模型基礎(chǔ)上與區(qū)塊鏈和智能合約相結(jié)合,以及在用戶等級(jí)和策略分級(jí)的前提下對(duì)數(shù)據(jù)資源進(jìn)行訪問(wèn)控制。前期根據(jù)屬性收集和屬性間關(guān)系對(duì)區(qū)塊鏈?zhǔn)聞?wù)中訪問(wèn)控制策略進(jìn)行描述、整合和管理。包括對(duì)訪問(wèn)控制策略的發(fā)布、更新、撤銷的管理。同時(shí)將相關(guān)策略集和用戶等級(jí)權(quán)限以智能合約的方式發(fā)布到區(qū)塊鏈上。
圖中模塊均使用區(qū)塊鏈中的智能合約的方式來(lái)實(shí)現(xiàn),功能模塊解釋如下:
(1)策略信息點(diǎn)(policy information point,PIP):獲取資源請(qǐng)求者(Subject)、資源及資源發(fā)布者(Object)等相關(guān)實(shí)體屬性,并上傳資源的訪問(wèn)控制權(quán)限。
(2)策略管理點(diǎn)(policy administration point,PAP):負(fù)責(zé)對(duì)資源擁有者發(fā)布的策略及整個(gè)策略集的管理和維護(hù)。
(3)策略決策點(diǎn)(policy decision point,PDP):根據(jù)Subject的等級(jí)確定其是否有相關(guān)的訪問(wèn)權(quán)限,同時(shí)根據(jù)Subject的實(shí)體屬性和資源的訪問(wèn)控制策略及系統(tǒng)當(dāng)前的狀態(tài)做出授權(quán)決定。
(4)策略執(zhí)行點(diǎn)(policy enforcement point,PEP):負(fù)責(zé)接收資源請(qǐng)求者的訪問(wèn)請(qǐng)求,并結(jié)合實(shí)體屬性生成AAR。接受策略決策點(diǎn)對(duì)資源請(qǐng)求者的決策,并執(zhí)行PDP的決策,允許或拒絕訪問(wèn)。

圖3 BP-ABAC框架
BP-ABAC訪問(wèn)控制流程步驟描述如下:
(1)當(dāng)PEP模塊收到資源請(qǐng)求者發(fā)來(lái)的訪問(wèn)請(qǐng)求,分析后根據(jù)訪問(wèn)請(qǐng)求中的實(shí)體屬性以及從AA中得到的屬性信息生成AAR,并將AAR發(fā)送給PDP模塊。
(2)PDP模塊收到AAR后通過(guò)智能合約發(fā)起策略信息查詢,請(qǐng)求判斷資源請(qǐng)求者用戶是否合法。若不合法,則此次訪問(wèn)請(qǐng)求終止。
(3)若合法,獲取該用戶的等級(jí)權(quán)限,以此作為向PIP模塊發(fā)起獲取資源請(qǐng)求者的屬性信息的請(qǐng)求,向PAP模塊發(fā)起獲取該資源的訪問(wèn)控制策略的請(qǐng)求。根據(jù)用戶等級(jí)匹配相應(yīng)訪問(wèn)控制策略集,若同等級(jí)的策略集無(wú)法匹配成功,則獲取下一等級(jí)的策略集進(jìn)行策略匹配。
(4)PDP模塊使該資源的訪問(wèn)控制策略屬性與資源請(qǐng)求者的屬性信息進(jìn)行對(duì)比判決,將判決結(jié)果發(fā)送給PEP模塊。
(5)資源請(qǐng)求者根據(jù)PEP的判決結(jié)果對(duì)數(shù)據(jù)資源進(jìn)行相關(guān)的授權(quán)操作。
基于區(qū)塊鏈的智能合約包括合約參與者、合約資源集合、自動(dòng)狀態(tài)機(jī)、合約事務(wù)集合4部分組成。將數(shù)據(jù)信息以事件的形式進(jìn)行描述,發(fā)送的數(shù)據(jù)則是相對(duì)應(yīng)的事務(wù)。整個(gè)事務(wù)的保存和自身狀態(tài)的處理都需要在區(qū)塊鏈進(jìn)行。當(dāng)事務(wù)以及相關(guān)的事件數(shù)據(jù)信息傳入智能合約后,合約中的資源會(huì)進(jìn)行狀態(tài)更新處理,以此觸發(fā)智能合約的狀態(tài)判斷機(jī)制。假如自動(dòng)狀態(tài)機(jī)能滿足某些指令的觸發(fā)條件,狀態(tài)機(jī)則會(huì)根據(jù)先前預(yù)設(shè)的信息選擇對(duì)應(yīng)的合約指令執(zhí)行。
合約參與者模塊:
AddUser()函數(shù):主要在智能合約中添加用戶的身份屬性,并將用戶信息傳送到區(qū)塊鏈上保存。以便后面PIP合約對(duì)用戶屬性進(jìn)行調(diào)用。
DeleteUser()函數(shù):因某種原因需要撤銷該用戶的訪問(wèn)控制權(quán)限或完全刪除用戶。則通過(guò)該函數(shù)在區(qū)塊鏈中刪除對(duì)應(yīng)的用戶屬性。
合約資源集合模塊:
AddResource()函數(shù):由資源擁有者發(fā)送與共享數(shù)據(jù)相關(guān)的訪問(wèn)控制權(quán)限,通過(guò)此函數(shù)將訪問(wèn)控制策略存入?yún)^(qū)塊鏈中,當(dāng)智能合約觸發(fā)時(shí),以供PAP傳送訪問(wèn)客體資源時(shí)需要的策略信息。函數(shù)偽代碼如算法1所示。
DeleteResource()函數(shù):出于某種因素,資源擁有者想收回共享數(shù)據(jù)的訪問(wèn)控制權(quán)限,通過(guò)此函數(shù)可以將區(qū)塊鏈中的相關(guān)數(shù)據(jù)信息刪除,完成共享權(quán)限策略的撤銷。
算法1: AddResource()函數(shù)算法
INPUT: ResourceName,ResourceId,Action,SubjectId
OUTPUT: Add resource success/failed
(1)if input==null
(2) return error
(3)end if
(4)err=ARIstub.GetState(ResourceId)
(5)if err!=nil
(6) return resource not exist
(7)end if
(8)ResourceBytes=json.Marshal(resource)
(9)err=ARIstub.PutState(ResourceId,ResourceBytes)
(10)if err=nil
(11) return Add resource success
(12)else if
(13) return Add resource failed
(14)end if
自動(dòng)狀態(tài)機(jī)模塊:
自動(dòng)狀態(tài)機(jī)能夠根據(jù)控制協(xié)議產(chǎn)生控制信號(hào),使其按照預(yù)先設(shè)定的狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)移,進(jìn)而完成特定操作的控制中心。狀態(tài)機(jī)觸發(fā)過(guò)程如圖4所示:

圖4 智能合約的狀態(tài)機(jī)觸發(fā)過(guò)程
JudgeLevel()函數(shù):首先檢查此次訪問(wèn)是否合法。其次,結(jié)合實(shí)體屬性對(duì)資源請(qǐng)求者的用戶等級(jí)進(jìn)行判定,根據(jù)結(jié)果觸發(fā)狀態(tài)機(jī),查詢匹配相應(yīng)等級(jí)的策略或者策略集。
PolicySet()函數(shù):負(fù)責(zé)提供訪問(wèn)控制時(shí)所需要的屬性信息和為共享數(shù)據(jù)設(shè)置訪問(wèn)控制策略,為后面Compare-Policy()函數(shù)提供屬性和策略。
合約事務(wù)集集合模塊:
ComparePolicy()函數(shù):主要負(fù)責(zé)將資源請(qǐng)求者的實(shí)體屬性信息與資源發(fā)布者的訪問(wèn)控制策略的實(shí)體屬性信息進(jìn)行一個(gè)對(duì)比,通過(guò)判斷兩者的相同性來(lái)決定資源請(qǐng)求者是否能獲得該客體資源的訪問(wèn)控制權(quán)限。函數(shù)偽代碼如算法2所示。
GetPermission()函數(shù):主要根據(jù)PDP合約中的ComparePolicy()函數(shù)返回的結(jié)果,將客體資源的訪問(wèn)權(quán)限授予資源請(qǐng)求者,同時(shí)將此次“交易”上傳到區(qū)塊鏈。
ExecuteRequest()函數(shù):當(dāng)資源請(qǐng)求者根據(jù)PEP合約中的GetPermission()函數(shù)返回的結(jié)果,來(lái)對(duì)資源客體執(zhí)行相關(guān)訪問(wèn)操作(Permit、Refuse、Unkonw)
算法2: ComparePolicy()函數(shù)算法
INPUT: PolicySet()函數(shù)提供的屬性、 策略參數(shù)
OUTPUT: allowAccess,AccessTime
(1)if input==null
(2) return error
(3)end if
(4)resultIterator=ARIstub.GetHistoryForKey(ResourceId)
(5)for resultIterator.next do
(6) querySet= resultIterator.Next()
(7) Json.unmarshel(querySet.value,&plo)
(8) policy_set=pol
(9)end for
(10)AllowAccess=false
(11)for j=0;j (12) if input∈policy_set[j] (13) AllowAccess=true (14) Access.Time=policy_set[j].AccessTime (15) break (16)end for (17)return AllowAccess,AccessTime 每條策略對(duì)于不同的實(shí)體屬性擁有不同的可信值,可信值會(huì)受到訪問(wèn)請(qǐng)求和系統(tǒng)交互行為的影響。當(dāng)訪問(wèn)請(qǐng)求對(duì)客體資源進(jìn)行正常或者惡意訪問(wèn)時(shí),對(duì)應(yīng)的策略的可信值會(huì)進(jìn)行提升或者降低。當(dāng)策略的可信值提高或者降低到一定數(shù)值時(shí),會(huì)映射到不同的可信等級(jí)。每條策略的可信值根據(jù)初始可信值和歷史可信值得出最終可信值,以其作為策略可信等級(jí)的映射依據(jù)。 每次當(dāng)策略擁有者發(fā)布訪問(wèn)控制策略,系統(tǒng)都會(huì)根據(jù)該策略的主體屬性和環(huán)境安全的關(guān)聯(lián)度R(s,e), 客體屬性和環(huán)境安全的關(guān)聯(lián)度R(o,e), 操作行為和環(huán)境安全關(guān)聯(lián)度R(a,e) 進(jìn)行加權(quán)計(jì)算,得出該策略的初始可信值 (1) 當(dāng)訪問(wèn)控制策略第一次進(jìn)行授權(quán)時(shí),會(huì)產(chǎn)生首個(gè)歷史可信值。隨著后面的策略訪問(wèn)授權(quán)的次數(shù)增加,策略的歷史可信值則需要根據(jù)時(shí)間片的改變而變化 (2) 由初始可信值和歷史可信值得出最終可信值 FinalT(u)=a*CurrentT(u)+b*HistoryT(u) (3) 其中,a表示初始可信值的權(quán)重,b表示歷史可信值的權(quán)重,且兩者滿足a+b=1的關(guān)系。在最終可信值計(jì)算中,CurrentT(u)比HistoryT(u)更具有參考價(jià)值,故a>b。根據(jù)策略FinalT(u)的值可以通過(guò)映射得到相應(yīng)的策略可信等級(jí)。最終可信值與可信等級(jí)映射見(jiàn)表1。 表1 可信值與可信等級(jí)映射 根據(jù)實(shí)際情況,本方案將可信值劃分為5個(gè)區(qū)間,對(duì)應(yīng)策略等級(jí)劃分為5個(gè)可信等級(jí),訪問(wèn)控制策略根據(jù)可信值計(jì)算可以歸為以上5類,不同的可信等級(jí)包含不同的策略集。資源訪問(wèn)者可以根據(jù)可信等級(jí)匹配相應(yīng)的策略,獲得到訪問(wèn)授權(quán)。資源訪問(wèn)者的用戶等級(jí)評(píng)判與策略可信值計(jì)算類似,在這里就不做過(guò)多的闡述。 為測(cè)試基于區(qū)塊鏈和策略分級(jí)的訪問(wèn)控制策略檢索的效率問(wèn)題,在配置為I7-8700處理器、16 G內(nèi)存的Windows10系統(tǒng)下利用JAVA語(yǔ)言描述智能合約,本文根據(jù)XACML提供的標(biāo)準(zhǔn)策略測(cè)試包進(jìn)行測(cè)試。其中由全部屬性構(gòu)成的訪問(wèn)請(qǐng)求AAR形成關(guān)聯(lián)屬性集:Attr_SetAAR, 由訪問(wèn)控制策略中的屬性形成的關(guān)聯(lián)屬性集:Attr_SetPolicy。 當(dāng)Attr_SetAAR與Attr_SetPolicy屬性集相符合,則ExecuteRequest()函數(shù)會(huì)執(zhí)行Permit授權(quán)操作,倘若Attr_SetAAR與Attr_SetPolicy屬性集不相符合,則會(huì)返回Refuse或Unkonw,表示拒絕此次訪問(wèn)或訪問(wèn)請(qǐng)求不完整無(wú)法進(jìn)行相關(guān)的授權(quán)操作。 在不同策略規(guī)模下,分別對(duì)傳統(tǒng)檢索方法、文獻(xiàn)[4]、文獻(xiàn)[16]及本文的檢索方法進(jìn)行了測(cè)試。策略規(guī)模為100、200、400、600、800、1000條共6組單一測(cè)試集樣本。每一級(jí)別的策略規(guī)模實(shí)驗(yàn)6次且取6次實(shí)驗(yàn)的平均值。實(shí)驗(yàn)結(jié)果中,不同曲線代表不同的檢索方法在不同的策略規(guī)模下的查詢效率。策略查詢對(duì)比如圖5所示。 圖5 策略查詢對(duì)比 由圖5對(duì)比可知,隨著策略規(guī)模的擴(kuò)大,傳統(tǒng)訪問(wèn)控制和文獻(xiàn)[4]以及文獻(xiàn)[16]與本方案的查詢效率有逐步擴(kuò)大的趨勢(shì)。通過(guò)6次取值的平均值計(jì)算,本方案與傳統(tǒng)的訪問(wèn)控制相比,查詢效率提高了大約44.32%的查詢時(shí)間。與文獻(xiàn)[4]相比,本方案提高了16.88%的查詢時(shí)間。與文獻(xiàn)[16]相比,本方案大概提高了10.34%。所以在一般情況下,本方案與以上3種方法在查詢效率上有明顯的優(yōu)勢(shì)。 隨著策略規(guī)模的擴(kuò)大,策略判決結(jié)果的正確性是一個(gè)值得關(guān)注的問(wèn)題。由于策略規(guī)模增加,致使策略間的發(fā)生沖突的概率上升。針對(duì)此類問(wèn)題,本文目前還未對(duì)策略沖突處理方案進(jìn)行引入,將在后續(xù)部分的工作中對(duì)此類問(wèn)題進(jìn)行研究和完善。所以圖6只將本方案和傳統(tǒng)訪問(wèn)控制的判決結(jié)果成功率作對(duì)比。由圖中對(duì)比顯示兩者準(zhǔn)確率的差值在可控范圍內(nèi)。如圖6所示。 圖6 策略判決成功率對(duì)比 基于區(qū)塊鏈的主要挑戰(zhàn)是共識(shí)機(jī)制受到安全威脅,為了對(duì)區(qū)塊鏈本身的抗攻擊性進(jìn)行分析,主要以共識(shí)機(jī)制的工作量證明機(jī)制(Proof of Work)為主,來(lái)分析區(qū)塊鏈的面臨的安全問(wèn)題,根據(jù)文獻(xiàn)[17]提出的攻擊模型對(duì)此進(jìn)行分析。可信節(jié)點(diǎn)產(chǎn)生的可信鏈與惡意節(jié)點(diǎn)產(chǎn)生的攻擊鏈,兩者之間存在一種相互競(jìng)爭(zhēng)的關(guān)系。可以用二叉樹(shù)隨機(jī)漫步過(guò)程對(duì)此競(jìng)爭(zhēng)關(guān)系進(jìn)行描述。在相比之下,當(dāng)可信節(jié)點(diǎn)產(chǎn)生的可信鏈居多時(shí),可信鏈條加一個(gè)區(qū)塊;否則,惡意節(jié)點(diǎn)的攻擊鏈加一個(gè)區(qū)塊。要想使區(qū)塊鏈?zhǔn)艿桨踩{,則需要惡意節(jié)點(diǎn)產(chǎn)生的攻擊鏈的長(zhǎng)度大于可信節(jié)點(diǎn)產(chǎn)生的可信鏈。而惡意節(jié)點(diǎn)要追趕z個(gè)區(qū)塊差概率性問(wèn)題類似于賭徒破產(chǎn)問(wèn)題。故而,惡意節(jié)點(diǎn)成功追趕z個(gè)區(qū)塊鏈的概率為 (4) 其中,p為可信節(jié)點(diǎn)獲得下一個(gè)記賬權(quán)的概率,q為惡意節(jié)點(diǎn)獲得下一個(gè)區(qū)塊記賬權(quán)的概率,qz為惡意節(jié)點(diǎn)成功追趕z個(gè)區(qū)塊差的概率,z值越大成功的概率越低。假設(shè)可信節(jié)點(diǎn)產(chǎn)生一個(gè)區(qū)塊的時(shí)間為預(yù)期的平均耗時(shí),則惡意節(jié)點(diǎn)潛在區(qū)塊追趕進(jìn)度符合泊松分布的數(shù)學(xué)規(guī)律,其期望值為 λ=z*q/p (5) 為得出惡意節(jié)點(diǎn)攻擊區(qū)塊鏈成功的概率,即惡意節(jié)點(diǎn)產(chǎn)的攻擊鏈超過(guò)可信節(jié)點(diǎn)的區(qū)塊鏈長(zhǎng)度。將惡意節(jié)點(diǎn)生成的區(qū)塊長(zhǎng)度的泊松分布概率密度、該時(shí)刻惡意節(jié)點(diǎn)能夠成功可信節(jié)點(diǎn)可信鏈的概率,兩者相乘得pα為 (6) 惡意節(jié)點(diǎn)與可信節(jié)點(diǎn)的區(qū)塊差,惡意節(jié)點(diǎn)篡改區(qū)塊成功的概率,兩者關(guān)系如圖7所示。 圖7 攻擊成功的概率 由圖7分析可知,當(dāng)區(qū)塊差取一定值時(shí),惡意節(jié)點(diǎn)成功篡改區(qū)塊的概率會(huì)隨著算力的提升而效率得到顯著提高。當(dāng)q小于0.5時(shí),區(qū)塊差值與惡意節(jié)點(diǎn)篡改區(qū)塊的概率成反比。只有當(dāng)惡意節(jié)點(diǎn)q大于或等于0.5才能獲得下一區(qū)塊的記賬權(quán),把握區(qū)塊鏈數(shù)據(jù)的整體趨勢(shì)。而掌握區(qū)塊鏈的50%以上的算力控制時(shí)需要高昂的成本,攻擊難以取得成功。故區(qū)塊鏈在訪問(wèn)控制過(guò)程中能取得良好的安全性。 本文提出的BP-ABAC模型是以基于屬性的訪問(wèn)控制(ABAC)為基礎(chǔ),通過(guò)區(qū)塊鏈和策略分級(jí)的結(jié)合,使訪問(wèn)控制過(guò)程更加靈活和安全,與傳統(tǒng)的訪問(wèn)控制模型相比之下,該模型具有以下優(yōu)點(diǎn): 策略及訪問(wèn)過(guò)程上:與傳統(tǒng)訪問(wèn)控制相比,該模型不需要建立中心數(shù)據(jù)庫(kù)節(jié)點(diǎn)來(lái)存儲(chǔ)策略,依托區(qū)塊鏈的特性使得策略具有更高的防篡改性。資源擁有者發(fā)布的訪問(wèn)控制策略都會(huì)由全網(wǎng)節(jié)點(diǎn)共同表決分級(jí)。策略匹配時(shí)只需查詢相應(yīng)分級(jí)策略,增強(qiáng)了授權(quán)的靈活性,同時(shí)保證了策略更新和訪問(wèn)記錄的一致性。 約束性上:每次資源請(qǐng)求者訪問(wèn)時(shí),都會(huì)對(duì)用戶進(jìn)行評(píng)估,只有當(dāng)滿足觸發(fā)狀態(tài)集的條件時(shí),才會(huì)轉(zhuǎn)換當(dāng)前訪問(wèn)控制的狀態(tài)。通過(guò)對(duì)訪問(wèn)控制過(guò)程狀態(tài)進(jìn)行監(jiān)控,當(dāng)訪問(wèn)控制完成后,會(huì)重新對(duì)策略進(jìn)行評(píng)估分級(jí)。與傳統(tǒng)模型相比,增加了約束,對(duì)約束性的加強(qiáng)可以減少非法訪問(wèn)的隱患。 決策形式上:傳統(tǒng)的訪問(wèn)控制模型大多采用集中式第三方信任平臺(tái)進(jìn)行決策,整個(gè)訪問(wèn)控制過(guò)程的安全性依賴第三方的可靠性。將訪問(wèn)控制策略上傳到區(qū)塊鏈上,有效遏制了訪問(wèn)者的越權(quán)操作,攻擊者需要控制超過(guò)一半以上的網(wǎng)絡(luò)節(jié)點(diǎn)才可能對(duì)決策行為產(chǎn)生影響,避免了中心節(jié)點(diǎn)被破壞而導(dǎo)致訪問(wèn)控制過(guò)程錯(cuò)誤授權(quán)或癱瘓的情況。 本方案提出了一種以ABAC模型為基礎(chǔ)的BP-ABAC模型,利用區(qū)塊鏈的去中心化、不可篡改等特性,擺脫了傳統(tǒng)的第三方信任機(jī)制的限制,提高了訪問(wèn)控制的可靠性、安全性以及判決的透明性。智能合約的引用,實(shí)現(xiàn)了整個(gè)訪問(wèn)控制授權(quán)過(guò)程自動(dòng)化,使訪問(wèn)控制模型更加靈活。通過(guò)用戶等級(jí)評(píng)判和策略分級(jí),保證了資源請(qǐng)求者合法性,防止了過(guò)度授權(quán)和越權(quán)訪問(wèn)的發(fā)生。能夠有效為主體授權(quán),實(shí)現(xiàn)數(shù)據(jù)共享,保證訪問(wèn)控制過(guò)程安全。 在接下來(lái)的研究中將會(huì)就屬性加密技術(shù)對(duì)區(qū)塊鏈中的交易隱私數(shù)據(jù)進(jìn)行加密,實(shí)現(xiàn)對(duì)區(qū)塊鏈中交易敏感數(shù)據(jù)信息的隱私保護(hù)機(jī)制。解決數(shù)據(jù)完全公開(kāi)所帶來(lái)的隱私泄露安全問(wèn)題。2.3 策略分級(jí)設(shè)計(jì)




3 實(shí)驗(yàn)仿真和安全性分析
3.1 仿真實(shí)驗(yàn)分析



3.2 安全性分析
4 結(jié)束語(yǔ)