王靜宇,楊 力
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014010)
在傳統(tǒng)的訪問控制方法中主要分為兩種:一種是自主訪問控制(discretionary access control,DAC),另外一種是強訪問控制技術(shù)(mandatory access control,MAC),兩者都是面向特定的非開放環(huán)境,所制定的訪問控制策略粒度比較粗放,難以適應(yīng)當(dāng)前的數(shù)據(jù)共享的挑戰(zhàn)。DAC是指對某個客體具有控制權(quán)的主體能夠?qū)腕w的一種訪問權(quán)自主地授予其它主體,并隨時可將其授予的權(quán)限收回。雖然具有靈活性、易用性與可擴展性,但其開銷過大、效率低效、自主性強,不適合復(fù)雜的系統(tǒng)。MAC是由系統(tǒng)管理員制定相關(guān)的訪問策略,以此來進(jìn)行多層級別的訪問控制操作,但由于MAC中的訪問策略缺乏靈活性,導(dǎo)致此方法應(yīng)用率過低。以目前情況分析,訪問控制的方法分為兩類:一類為角色訪問控制[1,2](role-based access control,RBAC)模型,另一類為屬性訪問控制[3,4](attribute based access control,ABAC)模型,以RBAC為例,其通過用戶-角色-權(quán)限進(jìn)行相關(guān)的授權(quán)操作,用戶通過角色聚攏的過程達(dá)到訪問客體資源目的,故RBAC在一定的程度上使授權(quán)的復(fù)雜性和管理開銷有所降低。由于RBAC不能根據(jù)自身屬性和環(huán)境屬性對用戶進(jìn)行動態(tài)授權(quán),只是對用戶身份進(jìn)行標(biāo)識,在RBAC的使用范圍上有局限性。ABAC通過考慮各種不同實體屬性來實現(xiàn)更加細(xì)粒度的數(shù)據(jù)共享與訪問控制,許多研究者對ABAC模型[5-11]進(jìn)行了相關(guān)研究。Jemel等[12]在區(qū)塊鏈和密文策略屬性加密基礎(chǔ)上,提出一種通過廣播交易將帶有時間屬性的訪問控制發(fā)布到區(qū)塊鏈。只有在特定時間內(nèi),用戶屬性滿足訪問策略請求者才能獲得解密密鑰,但該方案難以實時部署眾多的訪問策略,易被惡意節(jié)點攻擊。Ouaddah等[13]提出方案中將策略存儲在區(qū)塊鏈交易中,并引入比特幣錢包概念,為不同的物聯(lián)網(wǎng)設(shè)備配置自己的錢包,并授權(quán)令牌的形式進(jìn)行權(quán)限管理,令牌通過資源擁有者的私鑰簽名來保證其不可偽造。Maesa DDF等[14]利用區(qū)塊鏈實現(xiàn)一種基于屬性的訪問控制方案,該方案通過策略創(chuàng)建交易和權(quán)限轉(zhuǎn)移交易實現(xiàn)策略的創(chuàng)建、更新和撤銷,但該方案需要的算力運行開銷較大。
綜上所述,對于現(xiàn)有技術(shù)中存在的不足,本文以ABAC模型為基礎(chǔ),結(jié)合區(qū)塊鏈技術(shù)和策略分級,提出了基于區(qū)塊鏈和策略分級的訪問控制模型(ABAC based on blockchain and policy grading,BP-ABAC)。本方案將訪問控制策略和智能合約相結(jié)合,在合約中進(jìn)行策略分級。對數(shù)據(jù)請求者進(jìn)行等級評估,通過用戶等級評估結(jié)果獲得相應(yīng)的策略集的訪問權(quán)限。區(qū)塊作為一種去中心化、分布式策略存儲系統(tǒng)。通過這兩者結(jié)合使得該方案具有良好的查詢效率、動態(tài)性、安全性。
與基于角色的訪問控制(RBAC)不同的是,基于屬性的訪問控制(ABAC)是通過實體屬性而不是用戶身份來判決允許或拒絕用戶對資源的訪問控制請求。ABAC的突出優(yōu)點是它具備強大的表達(dá)能力。具體表現(xiàn)在3個方面:聚合度高、靈活性高、可擴展性高。模型中主要有主體屬性、客體屬性、操作屬性、環(huán)境屬性四大核心屬性。在ABAC模型中,主體和客體都是通過各自的屬性集來描述的,而屬性集是用屬性和對應(yīng)的屬性值來表示。如圖1所示。
圖1 ABAC授權(quán)模型
以下為其進(jìn)行形式化定義:
定義1 屬性項:用 {AttrName=AttrValue} 表示,AttrName表示屬性名,AttrName表示屬性值,引用前綴 (S,O,E,P) 區(qū)分實體屬性類型
定義2 屬性訪問請求(attribute access request,AAR):其含義是訪問時,主體屬性(SA)在環(huán)境屬性(EA)下對資源客體屬性(OA)進(jìn)行操作,即: AAR={sattr,oattr,eattr,pattr}。
定義3 訪問控制策略(Policy):根據(jù)訪問請求相關(guān)屬性預(yù)先設(shè)定的訪問判定規(guī)則,判定結(jié)果主要為允許(Permit)、拒絕(Refuse)、未知(Unknow)3種狀態(tài)。
結(jié)合當(dāng)前的系統(tǒng)的復(fù)雜性和實時變化的特征,需要對細(xì)粒度訪問控制進(jìn)行優(yōu)化,同時更好應(yīng)對大規(guī)模的用戶擴展機制問題。在訪問控制策略描述、模型設(shè)計和完成授權(quán)機制3個方面都對主體、客體、環(huán)境、和操作屬性統(tǒng)一建模形成實體屬性(組)的概念。以此對授權(quán)和訪問控制約束進(jìn)行描述,使其擁有良好的靈活性和可擴展性。
區(qū)塊鏈系統(tǒng)架構(gòu)是由數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層、激勵層、合約層和應(yīng)用層組成。區(qū)塊鏈技術(shù)是將P2P網(wǎng)絡(luò)技術(shù)、密碼學(xué)技術(shù)、共識機制、智能合約等多種技術(shù)結(jié)合而形成的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),如圖2所示。本質(zhì)上區(qū)塊鏈?zhǔn)且环N去中心化的、分布式的共享賬本和數(shù)據(jù)庫。數(shù)據(jù)區(qū)塊根據(jù)時間戳的先后順序以鏈條的形式鏈接起來形成特定的數(shù)據(jù)結(jié)構(gòu)。整個系統(tǒng)沒有明確中心節(jié)點,任何節(jié)點都可以參與和獲得完整的數(shù)據(jù)副本并存儲,實現(xiàn)了去中心化的數(shù)據(jù)管理方式。通過所有參與節(jié)點維護(hù)和保證數(shù)據(jù)鏈條不斷增加,以及非集中式的共識機制來實現(xiàn)事物的持久性,并保證數(shù)據(jù)的可信性和安全性。區(qū)塊分為區(qū)塊頭和區(qū)塊體,區(qū)塊頭中封裝了快高度、時間戳、Merkle樹、塊哈希、前一個塊的哈希值等。基于以上特特征,區(qū)塊鏈具有以下性質(zhì):去中心化、不可篡改、集體維護(hù)等。
圖2 區(qū)塊鏈基礎(chǔ)構(gòu)架
智能合約(Smart Contract),定義為:智能合約是將合約內(nèi)容以數(shù)字方式的實現(xiàn)承諾,包括合約參與方可按照合約規(guī)定內(nèi)容執(zhí)行承諾的協(xié)議[15]。其存儲在區(qū)塊鏈上,是能夠在每個分布式網(wǎng)絡(luò)節(jié)點上自動運行的腳本。只要滿足合同協(xié)議條款,交易不需要第三方信任平臺監(jiān)督,按順序觸發(fā)設(shè)定的合約內(nèi)容并完成一系列安全的自動化操作,執(zhí)行相關(guān)條款。將智能合約以數(shù)字化的形式寫入?yún)^(qū)塊鏈中,可以避免惡意行為對合約正常執(zhí)行的干擾。結(jié)合區(qū)塊鏈的共識算法構(gòu)建的狀態(tài)機系統(tǒng),不但保證合約在存儲、讀取和執(zhí)行的過程中狀態(tài)機制透明、可追蹤和不可篡改的特性,也可以使智能合約保持高效運行。
本方案提出的基于區(qū)塊鏈和策略分級的訪問控制框架,如圖3所示。在傳統(tǒng)的ABAC模型基礎(chǔ)上與區(qū)塊鏈和智能合約相結(jié)合,以及在用戶等級和策略分級的前提下對數(shù)據(jù)資源進(jìn)行訪問控制。前期根據(jù)屬性收集和屬性間關(guān)系對區(qū)塊鏈?zhǔn)聞?wù)中訪問控制策略進(jìn)行描述、整合和管理。包括對訪問控制策略的發(fā)布、更新、撤銷的管理。同時將相關(guān)策略集和用戶等級權(quán)限以智能合約的方式發(fā)布到區(qū)塊鏈上。
圖中模塊均使用區(qū)塊鏈中的智能合約的方式來實現(xiàn),功能模塊解釋如下:
(1)策略信息點(policy information point,PIP):獲取資源請求者(Subject)、資源及資源發(fā)布者(Object)等相關(guān)實體屬性,并上傳資源的訪問控制權(quán)限。
(2)策略管理點(policy administration point,PAP):負(fù)責(zé)對資源擁有者發(fā)布的策略及整個策略集的管理和維護(hù)。
(3)策略決策點(policy decision point,PDP):根據(jù)Subject的等級確定其是否有相關(guān)的訪問權(quán)限,同時根據(jù)Subject的實體屬性和資源的訪問控制策略及系統(tǒng)當(dāng)前的狀態(tài)做出授權(quán)決定。
(4)策略執(zhí)行點(policy enforcement point,PEP):負(fù)責(zé)接收資源請求者的訪問請求,并結(jié)合實體屬性生成AAR。接受策略決策點對資源請求者的決策,并執(zhí)行PDP的決策,允許或拒絕訪問。
圖3 BP-ABAC框架
BP-ABAC訪問控制流程步驟描述如下:
(1)當(dāng)PEP模塊收到資源請求者發(fā)來的訪問請求,分析后根據(jù)訪問請求中的實體屬性以及從AA中得到的屬性信息生成AAR,并將AAR發(fā)送給PDP模塊。
(2)PDP模塊收到AAR后通過智能合約發(fā)起策略信息查詢,請求判斷資源請求者用戶是否合法。若不合法,則此次訪問請求終止。
(3)若合法,獲取該用戶的等級權(quán)限,以此作為向PIP模塊發(fā)起獲取資源請求者的屬性信息的請求,向PAP模塊發(fā)起獲取該資源的訪問控制策略的請求。根據(jù)用戶等級匹配相應(yīng)訪問控制策略集,若同等級的策略集無法匹配成功,則獲取下一等級的策略集進(jìn)行策略匹配。
(4)PDP模塊使該資源的訪問控制策略屬性與資源請求者的屬性信息進(jìn)行對比判決,將判決結(jié)果發(fā)送給PEP模塊。
(5)資源請求者根據(jù)PEP的判決結(jié)果對數(shù)據(jù)資源進(jìn)行相關(guān)的授權(quán)操作。
基于區(qū)塊鏈的智能合約包括合約參與者、合約資源集合、自動狀態(tài)機、合約事務(wù)集合4部分組成。將數(shù)據(jù)信息以事件的形式進(jìn)行描述,發(fā)送的數(shù)據(jù)則是相對應(yīng)的事務(wù)。整個事務(wù)的保存和自身狀態(tài)的處理都需要在區(qū)塊鏈進(jìn)行。當(dāng)事務(wù)以及相關(guān)的事件數(shù)據(jù)信息傳入智能合約后,合約中的資源會進(jìn)行狀態(tài)更新處理,以此觸發(fā)智能合約的狀態(tài)判斷機制。假如自動狀態(tài)機能滿足某些指令的觸發(fā)條件,狀態(tài)機則會根據(jù)先前預(yù)設(shè)的信息選擇對應(yīng)的合約指令執(zhí)行。
合約參與者模塊:
AddUser()函數(shù):主要在智能合約中添加用戶的身份屬性,并將用戶信息傳送到區(qū)塊鏈上保存。以便后面PIP合約對用戶屬性進(jìn)行調(diào)用。
DeleteUser()函數(shù):因某種原因需要撤銷該用戶的訪問控制權(quán)限或完全刪除用戶。則通過該函數(shù)在區(qū)塊鏈中刪除對應(yīng)的用戶屬性。
合約資源集合模塊:
AddResource()函數(shù):由資源擁有者發(fā)送與共享數(shù)據(jù)相關(guān)的訪問控制權(quán)限,通過此函數(shù)將訪問控制策略存入?yún)^(qū)塊鏈中,當(dāng)智能合約觸發(fā)時,以供PAP傳送訪問客體資源時需要的策略信息。函數(shù)偽代碼如算法1所示。
DeleteResource()函數(shù):出于某種因素,資源擁有者想收回共享數(shù)據(jù)的訪問控制權(quán)限,通過此函數(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
自動狀態(tài)機模塊:
自動狀態(tài)機能夠根據(jù)控制協(xié)議產(chǎn)生控制信號,使其按照預(yù)先設(shè)定的狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)移,進(jìn)而完成特定操作的控制中心。狀態(tài)機觸發(fā)過程如圖4所示:
圖4 智能合約的狀態(tài)機觸發(fā)過程
JudgeLevel()函數(shù):首先檢查此次訪問是否合法。其次,結(jié)合實體屬性對資源請求者的用戶等級進(jìn)行判定,根據(jù)結(jié)果觸發(fā)狀態(tài)機,查詢匹配相應(yīng)等級的策略或者策略集。
PolicySet()函數(shù):負(fù)責(zé)提供訪問控制時所需要的屬性信息和為共享數(shù)據(jù)設(shè)置訪問控制策略,為后面Compare-Policy()函數(shù)提供屬性和策略。
合約事務(wù)集集合模塊:
ComparePolicy()函數(shù):主要負(fù)責(zé)將資源請求者的實體屬性信息與資源發(fā)布者的訪問控制策略的實體屬性信息進(jìn)行一個對比,通過判斷兩者的相同性來決定資源請求者是否能獲得該客體資源的訪問控制權(quán)限。函數(shù)偽代碼如算法2所示。
GetPermission()函數(shù):主要根據(jù)PDP合約中的ComparePolicy()函數(shù)返回的結(jié)果,將客體資源的訪問權(quán)限授予資源請求者,同時將此次“交易”上傳到區(qū)塊鏈。
ExecuteRequest()函數(shù):當(dāng)資源請求者根據(jù)PEP合約中的GetPermission()函數(shù)返回的結(jié)果,來對資源客體執(zhí)行相關(guā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 每條策略對于不同的實體屬性擁有不同的可信值,可信值會受到訪問請求和系統(tǒng)交互行為的影響。當(dāng)訪問請求對客體資源進(jìn)行正?;蛘邜阂庠L問時,對應(yīng)的策略的可信值會進(jìn)行提升或者降低。當(dāng)策略的可信值提高或者降低到一定數(shù)值時,會映射到不同的可信等級。每條策略的可信值根據(jù)初始可信值和歷史可信值得出最終可信值,以其作為策略可信等級的映射依據(jù)。 每次當(dāng)策略擁有者發(fā)布訪問控制策略,系統(tǒng)都會根據(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)計算,得出該策略的初始可信值 (1) 當(dāng)訪問控制策略第一次進(jìn)行授權(quán)時,會產(chǎn)生首個歷史可信值。隨著后面的策略訪問授權(quán)的次數(shù)增加,策略的歷史可信值則需要根據(jù)時間片的改變而變化 (2) 由初始可信值和歷史可信值得出最終可信值 FinalT(u)=a*CurrentT(u)+b*HistoryT(u) (3) 其中,a表示初始可信值的權(quán)重,b表示歷史可信值的權(quán)重,且兩者滿足a+b=1的關(guān)系。在最終可信值計算中,CurrentT(u)比HistoryT(u)更具有參考價值,故a>b。根據(jù)策略FinalT(u)的值可以通過映射得到相應(yīng)的策略可信等級。最終可信值與可信等級映射見表1。 表1 可信值與可信等級映射 根據(jù)實際情況,本方案將可信值劃分為5個區(qū)間,對應(yīng)策略等級劃分為5個可信等級,訪問控制策略根據(jù)可信值計算可以歸為以上5類,不同的可信等級包含不同的策略集。資源訪問者可以根據(jù)可信等級匹配相應(yīng)的策略,獲得到訪問授權(quán)。資源訪問者的用戶等級評判與策略可信值計算類似,在這里就不做過多的闡述。 為測試基于區(qū)塊鏈和策略分級的訪問控制策略檢索的效率問題,在配置為I7-8700處理器、16 G內(nèi)存的Windows10系統(tǒng)下利用JAVA語言描述智能合約,本文根據(jù)XACML提供的標(biāo)準(zhǔn)策略測試包進(jìn)行測試。其中由全部屬性構(gòu)成的訪問請求AAR形成關(guān)聯(lián)屬性集:Attr_SetAAR, 由訪問控制策略中的屬性形成的關(guān)聯(lián)屬性集:Attr_SetPolicy。 當(dāng)Attr_SetAAR與Attr_SetPolicy屬性集相符合,則ExecuteRequest()函數(shù)會執(zhí)行Permit授權(quán)操作,倘若Attr_SetAAR與Attr_SetPolicy屬性集不相符合,則會返回Refuse或Unkonw,表示拒絕此次訪問或訪問請求不完整無法進(jìn)行相關(guān)的授權(quán)操作。 在不同策略規(guī)模下,分別對傳統(tǒng)檢索方法、文獻(xiàn)[4]、文獻(xiàn)[16]及本文的檢索方法進(jìn)行了測試。策略規(guī)模為100、200、400、600、800、1000條共6組單一測試集樣本。每一級別的策略規(guī)模實驗6次且取6次實驗的平均值。實驗結(jié)果中,不同曲線代表不同的檢索方法在不同的策略規(guī)模下的查詢效率。策略查詢對比如圖5所示。 圖5 策略查詢對比 由圖5對比可知,隨著策略規(guī)模的擴大,傳統(tǒng)訪問控制和文獻(xiàn)[4]以及文獻(xiàn)[16]與本方案的查詢效率有逐步擴大的趨勢。通過6次取值的平均值計算,本方案與傳統(tǒng)的訪問控制相比,查詢效率提高了大約44.32%的查詢時間。與文獻(xiàn)[4]相比,本方案提高了16.88%的查詢時間。與文獻(xiàn)[16]相比,本方案大概提高了10.34%。所以在一般情況下,本方案與以上3種方法在查詢效率上有明顯的優(yōu)勢。 隨著策略規(guī)模的擴大,策略判決結(jié)果的正確性是一個值得關(guān)注的問題。由于策略規(guī)模增加,致使策略間的發(fā)生沖突的概率上升。針對此類問題,本文目前還未對策略沖突處理方案進(jìn)行引入,將在后續(xù)部分的工作中對此類問題進(jìn)行研究和完善。所以圖6只將本方案和傳統(tǒng)訪問控制的判決結(jié)果成功率作對比。由圖中對比顯示兩者準(zhǔn)確率的差值在可控范圍內(nèi)。如圖6所示。 圖6 策略判決成功率對比 基于區(qū)塊鏈的主要挑戰(zhàn)是共識機制受到安全威脅,為了對區(qū)塊鏈本身的抗攻擊性進(jìn)行分析,主要以共識機制的工作量證明機制(Proof of Work)為主,來分析區(qū)塊鏈的面臨的安全問題,根據(jù)文獻(xiàn)[17]提出的攻擊模型對此進(jìn)行分析??尚殴?jié)點產(chǎn)生的可信鏈與惡意節(jié)點產(chǎn)生的攻擊鏈,兩者之間存在一種相互競爭的關(guān)系??梢杂枚鏄潆S機漫步過程對此競爭關(guān)系進(jìn)行描述。在相比之下,當(dāng)可信節(jié)點產(chǎn)生的可信鏈居多時,可信鏈條加一個區(qū)塊;否則,惡意節(jié)點的攻擊鏈加一個區(qū)塊。要想使區(qū)塊鏈?zhǔn)艿桨踩{,則需要惡意節(jié)點產(chǎn)生的攻擊鏈的長度大于可信節(jié)點產(chǎn)生的可信鏈。而惡意節(jié)點要追趕z個區(qū)塊差概率性問題類似于賭徒破產(chǎn)問題。故而,惡意節(jié)點成功追趕z個區(qū)塊鏈的概率為 (4) 其中,p為可信節(jié)點獲得下一個記賬權(quán)的概率,q為惡意節(jié)點獲得下一個區(qū)塊記賬權(quán)的概率,qz為惡意節(jié)點成功追趕z個區(qū)塊差的概率,z值越大成功的概率越低。假設(shè)可信節(jié)點產(chǎn)生一個區(qū)塊的時間為預(yù)期的平均耗時,則惡意節(jié)點潛在區(qū)塊追趕進(jìn)度符合泊松分布的數(shù)學(xué)規(guī)律,其期望值為 λ=z*q/p (5) 為得出惡意節(jié)點攻擊區(qū)塊鏈成功的概率,即惡意節(jié)點產(chǎn)的攻擊鏈超過可信節(jié)點的區(qū)塊鏈長度。將惡意節(jié)點生成的區(qū)塊長度的泊松分布概率密度、該時刻惡意節(jié)點能夠成功可信節(jié)點可信鏈的概率,兩者相乘得pα為 (6) 惡意節(jié)點與可信節(jié)點的區(qū)塊差,惡意節(jié)點篡改區(qū)塊成功的概率,兩者關(guān)系如圖7所示。 圖7 攻擊成功的概率 由圖7分析可知,當(dāng)區(qū)塊差取一定值時,惡意節(jié)點成功篡改區(qū)塊的概率會隨著算力的提升而效率得到顯著提高。當(dāng)q小于0.5時,區(qū)塊差值與惡意節(jié)點篡改區(qū)塊的概率成反比。只有當(dāng)惡意節(jié)點q大于或等于0.5才能獲得下一區(qū)塊的記賬權(quán),把握區(qū)塊鏈數(shù)據(jù)的整體趨勢。而掌握區(qū)塊鏈的50%以上的算力控制時需要高昂的成本,攻擊難以取得成功。故區(qū)塊鏈在訪問控制過程中能取得良好的安全性。 本文提出的BP-ABAC模型是以基于屬性的訪問控制(ABAC)為基礎(chǔ),通過區(qū)塊鏈和策略分級的結(jié)合,使訪問控制過程更加靈活和安全,與傳統(tǒng)的訪問控制模型相比之下,該模型具有以下優(yōu)點: 策略及訪問過程上:與傳統(tǒng)訪問控制相比,該模型不需要建立中心數(shù)據(jù)庫節(jié)點來存儲策略,依托區(qū)塊鏈的特性使得策略具有更高的防篡改性。資源擁有者發(fā)布的訪問控制策略都會由全網(wǎng)節(jié)點共同表決分級。策略匹配時只需查詢相應(yīng)分級策略,增強了授權(quán)的靈活性,同時保證了策略更新和訪問記錄的一致性。 約束性上:每次資源請求者訪問時,都會對用戶進(jìn)行評估,只有當(dāng)滿足觸發(fā)狀態(tài)集的條件時,才會轉(zhuǎn)換當(dāng)前訪問控制的狀態(tài)。通過對訪問控制過程狀態(tài)進(jìn)行監(jiān)控,當(dāng)訪問控制完成后,會重新對策略進(jìn)行評估分級。與傳統(tǒng)模型相比,增加了約束,對約束性的加強可以減少非法訪問的隱患。 決策形式上:傳統(tǒng)的訪問控制模型大多采用集中式第三方信任平臺進(jìn)行決策,整個訪問控制過程的安全性依賴第三方的可靠性。將訪問控制策略上傳到區(qū)塊鏈上,有效遏制了訪問者的越權(quán)操作,攻擊者需要控制超過一半以上的網(wǎng)絡(luò)節(jié)點才可能對決策行為產(chǎn)生影響,避免了中心節(jié)點被破壞而導(dǎo)致訪問控制過程錯誤授權(quán)或癱瘓的情況。 本方案提出了一種以ABAC模型為基礎(chǔ)的BP-ABAC模型,利用區(qū)塊鏈的去中心化、不可篡改等特性,擺脫了傳統(tǒng)的第三方信任機制的限制,提高了訪問控制的可靠性、安全性以及判決的透明性。智能合約的引用,實現(xiàn)了整個訪問控制授權(quán)過程自動化,使訪問控制模型更加靈活。通過用戶等級評判和策略分級,保證了資源請求者合法性,防止了過度授權(quán)和越權(quán)訪問的發(fā)生。能夠有效為主體授權(quán),實現(xiàn)數(shù)據(jù)共享,保證訪問控制過程安全。 在接下來的研究中將會就屬性加密技術(shù)對區(qū)塊鏈中的交易隱私數(shù)據(jù)進(jìn)行加密,實現(xiàn)對區(qū)塊鏈中交易敏感數(shù)據(jù)信息的隱私保護(hù)機制。解決數(shù)據(jù)完全公開所帶來的隱私泄露安全問題。2.3 策略分級設(shè)計
3 實驗仿真和安全性分析
3.1 仿真實驗分析
3.2 安全性分析
4 結(jié)束語