馬星晨,朱建濤,邵 婧,劉明達
(江南計算技術研究所,江蘇 無錫 214083)
訪問控制技術是保障信息安全的重要防護措施,用來檢驗主體是否有合法的權限來訪問恰當的客體。傳統的訪問控制模型包括自主訪問控制模型(DAC)、強制訪問控制模型(MAC)以及基于角色的訪問控制模型(RBAC)等[1-2]。基于屬性的訪問控制模型(attribute-based access control,ABAC)于2005年由Eric Yuan和Jin Tong提出[3]。通過不同的屬性或屬性組[4]來描述真實場景中出現的實體,通過基于屬性的邏輯語義描述復雜的訪問控制策略。將傳統訪問控制模型中的身份、角色等信息,以屬性的方式抽象出來,以便更加細粒度地制定訪問策略,貼近真實場景。
在ABAC模型的基礎上,文獻[5]使用本體一致性推理對現有ABAC授權框架進行擴展,即通過對本體知識庫的一致性檢測來判斷策略的一致性,提升了策略的可信性及模型的自愈能力。文獻[6]設計了一種具備通用性的Web服務訪問控制模型,使用Browser/Artifact的身份認證授權方式,最終由認證服務器通過聲明判斷用戶身份是否合法。文獻[7-9]同樣采用集中式決策或有中心的分布式決策支持系統對主體是否可以訪問客體進行授權決策。
以上模型雖然都對基于屬性的訪問控制模型在效率和安全性上做了提升,但仍然在一定程度上將決策的正確性和可信性寄托于決策中心或中心策略庫是否安全,缺乏對策略庫的保護以及無法保證在策略庫進行更新時的安全問題;且沒有考慮到不同節點間的個性化差異;在主體對客體的訪問行為發生后,不能做到對訪問記錄的防偽造和防抵賴。
隨著網絡服務形態的多元化,去中心化網絡模型越來越清晰[10],而從比特幣衍生出的區塊鏈技術又將去中心化的思想提升到了前所未有的高度。在去中心化的網絡中,任何參與者均可提交內容,由整個網絡的參與者共同進行內容協同創作和貢獻。每個網絡節點都可以自成中心或具有中心的一切功能,從而避免了由中心決定節點而帶來的安全隱患。
基于上述分析,為了更好地提升基于屬性的訪問控制模型的安全性,且滿足分布式網絡環境下的應用條件[11-12],文中提出了一種基于屬性的去中心化訪問控制模型(DABAC),并對該模型的設計思想、運行原理和性能進行了詳細描述和分析。
為滿足現有復雜網絡環境下的訪問控制模型需要具有靈活配置、貼近真實應用等特點,文中研究的DABAC模型與同類別的訪問控制模型相比,具有以下特點:
(1)采用去中心化思想設計的DABAC訪問控制模型,所有參與的節點都持有訪問記錄和策略的副本,并在網絡中保持同步更新,即使有一定數量的節點受損,也不會影響整個系統的正常運行。同時,由于所有節點共同維護著相同的策略集和訪問記錄,使得所有節點都可以對整個系統中的操作進行監督。
(2)采用基于權益證明[13]的去中心化方式來保證群策結果的可信性。所有節點上主體對客體的訪問請求都會在全網范圍內進行表決。由于模型中權益與安全等級成正比,因此安全等級越高的節點的本地策略庫的安全性和可信性也越高,從而該類節點所給出的決策的可信性也就越高。
(3)訪問主體在被授權訪問時需要接受系統環境的驗簽名,并使用私鑰對訪問記錄進行數字簽名,通過疊加哈希的方法建立證據鏈條,以此杜絕其他訪問主體的冒名訪問,以及惡意訪問主體通過偽造其訪問記錄以抵賴已經發生過的訪問行為。
基于屬性的去中心化訪問控制模型的主要功能模塊以及不同模塊和節點之間的應用關系如圖1所示。其主要功能模塊有屬性認證機構(attribute authorities,AA)、策略執行點(policy decision point,PEP)、策略決策點(policy decision point,PDP)和策略及存儲一致性檢查點(policy & storage coherence point,P&SCP)。

圖1 基于屬性的去中心化訪問控制模型
1.2.1 模型基本元素定義
DABAC模型由訪問主體、資源客體和操作三個對象組成,通過對訪問主體屬性、資源客體屬性、系統環境屬性集的構建,按照對客體訪問的策略判定規則進行判定,決定對主體的操作授權。
定義1(訪問主體subject):訪問主體即對資源和被保護數據進行訪問的實體。
定義2(資源客體resource):資源客體為被動實體,在整個訪問流程中處于被動位置。
定義3(操作operate):操作是指訪問主體對于資源客體的訪問行為,定義了主體對客體的具體訪問行為以及訪問類型。
定義4(訪問主體屬性SA):在DABAC模型中,訪問主體屬性主要由用戶ID、訪問權限、生命周期和訪問歷史等組成。
定義5(客體資源屬性RA):資源客體屬性主要由資源ID(文件名稱)、當前狀態和安全等級組成。
定義6(系統環境屬性EA):系統環境屬性主要由時間、安全等級和歷史記錄組成。
定義7(權益security_level):節點所具有的安全等級即為該節點擁有的權益。
1.2.2 訪問策略規范
DABAC模型中使用去中心的方式進行決策,其主要目的是通過提升模型決策的準確性和可信性,保護資源客體的安全,防止其被非法訪問和使用。
利用SA、RA和EA分別表示訪問主體S、資源客體R和環境E的屬性賦值關系,且各個對象的屬性以集合的方式存在:
ATT(S)?SA1×SA2×…×SAn,1≤n≤N
ATT(R)?RA1×RA2×…×RAk,1≤k≤K
ATT(E)?EA1×EA2×…×EAm,1≤m≤M
基于DABAC模型構建的訪問控制系統可以根據不同的應用場景和訪問模式設定具體規則。其規則的具體表現形式為一個基于訪問主體(s)、資源客體(r)和系統環境(e)的布爾函數,即使用s、r和e,通過去中心化的表決方式來確定訪問主體S在系統環境E下是否可以訪問資源客體R,具體規則如下:
Rule:
canaccess(s,r,e)←fvote{flocal(ATT(S),ATT(R),ATT(E)),fdis(ATT(S),ATT(R),ATT(E))}
表決函數fvote的具體定義詳見1.4節。
由AA自動分發或收集對象的屬性,根據不同策略的具體需要,將屬性按需帶入規則函數,由規則函數判斷訪問主體對資源客體訪問是否合法,并返回結果。
DABAC模型的完整決策流程如圖2所示。

圖2 DABAC模型的決策流程
其結構和基本處理流程如下:
(1)由認證機構(AA)截獲訪問主體向屬性發送的訪問請求,并掛起訪問進程,由AA根據訪問主體的ID號對其身份信息進行判定及認證,而后授予該訪問主體包含權限、生命周期、密鑰等相應的屬性。
(2)AA在收到訪問主體的請求后,根據其申請的具體資源客體來收集該客體的屬性以及所處的環境屬性,并將收集到的屬性傳遞給策略判定點(PDP)。
(3)經過AA認證后,訪問主體將自己的屬性和訪問請求發送給策略執行點(PEP),由PEP傳遞給PDP。
(4)PDP在收到PEP和AA傳遞的訪問主體、資源客體和環境屬性后,將其按照統一格式封裝成XML文件。之后,向包括本地策略存儲點和其他(網絡)策略存儲點發起請求,查詢與訪問條件相符的策略。
(5)收到請求的PQP根據自身權益進行權益證明(證明過程詳見1.4),完成證明后,再根據具體需求,在其所處節點的策略管理點(PAP)內進行行為比對;之后,將表決結果以True和False的形式返回給發送原始請求節點的表決器(VOTER)。若證明過程超時,則不進行表決。
(6)VOTER根據該節點設定的關門時間內返回的所有結果進行綜合判定,對訪問請求進行最終決策,將訪問決策結果發送給策略及一致性檢查點(P&SCP),由P&SCP將決策結果封裝為歷史記錄的格式存儲在本地存儲點,并向網絡節點的P&SCP發送存儲請求。待收到所有網絡節點的P&SCP存儲確認后,將結果返回給本地PEP,否則將繼續廣播,直至收到所有回復。
(7)PEP根據PDP的返回結果通知訪問主體,若為拒絕,則直接拒絕訪問主體的請求,而后結束訪問進程;若為同意,則停止進程掛起,允許對資源客體訪問。
基于DABAC模型架構的訪問控制系統基于權益證明(POS)的原理,采用本地表決和網絡表決相結合的方式對訪問主體的訪問請求進行決策。該群策方法可以避免因核心節點即中心策略庫失效而導致的決策失敗,同時避免了因部分策略庫被篡改而導致的錯誤決策。
在群策中引入“競爭”機制,即網絡中的每一個節點都有機會根據其他節點的決策請求給出自己的表決結果,而是否得到表決權則需要通過“競爭”獲得,通過此種方式進行表決,使得網絡中不再需要設立一個中心節點,每一個節點都可以通過“競爭”而成為進行表決的“中心”。“競爭”的過程即權益證明的過程,率先完成權益證明的節點才有機會在關門時間前給出自己的表決結果。由于權益證明的難易程度與節點自身的安全等級成反比,這樣使得處于高安全等級節點的策略庫將更快地給出表決結果,即在“競爭”中獲勝。低安全等級的節點由于其自身的防護能力較差,該類節點的策略庫容易被惡意控制,因此最終給出的表決結果可信性較低,但由于該類節點進行權益證明的時間較長或無法完成證明,請求訪問決策的節點可以通過縮短關門時間而忽略該類節點所給出的表決結果。節點表決結果的安全由其自身的防護能力和權益證明的難易程度協同保障。
使用權益證明的方法如下:
Hash(Header)≤security_level×Reliability
其中,Reliability為節點的可靠性。該可靠性隨著該節點在群策過程中得出的結果與最終表決結果相一致的次數呈正比增加;Header可根據具體應用情況進行取值,可以是節點收到的訪問策略請求數據包的包頭。為保證權益證明的公平性,所有節點需以同樣的數值作為哈希運算的起始數據;security_level是節點的安全等級。
如果散列結果不符合要求,則重新進入下一個計算流程,直到散列結果符合要求或超時退出。
POS模式是以節點的安全等級和可靠性為基礎,通過競爭表決機會和正確性,獲得獎勵,用以進一步提高節點的可靠性。獎勵方程如下:

New_Reliability=Reliability+Reward
其中,Target可以根據模型的實際應用情況做靈活調整。
在POS競爭過程中,隨著該節點正確表決結果的次數不斷增多,節點獲得的表決獎勵將不斷累積,自身可靠性也將不斷提高,完成權益證明的時間也將越快。
群策模塊VOTER負責收集發出決策請求的節點在其關門時間內收到的所有表決結果,通過表決函數來得到最終的結果:
fvote=f(LD,ND1,ND2,…,NDn)
其中
f(x0,x1,…,xn)=BOOL(x0+x1+…+xn-n/2)
當結果為1時,訪問主體的訪問請求被允許;當結果為0時,訪問主體的訪問請求被拒絕。如圖3所示。

圖3 基于去中心化的群策模塊
通過DABAC模型中的P&SCP來保證使用DABAC模型構建的訪問控制系統的分布式策略庫和訪問記錄的一致性。
P&SCP接收來自網絡節點和本地節點的所有的訪問記錄和策略更新,而后根據不同的類別和需求,將收到的信息分發至不同的功能模塊。在分布式存儲的基礎上,使用數據存證技術對策略進行更新和修改,使用證據鏈條技術保存訪問記錄,以保證全網節點的策略庫和訪問記錄的一致性。
(1)基于分布式輔助的身份征信機制。
策略的更新由具有管理員權限的用戶執行,根據節點的安全等級不同,只能自上而下地更新策略,即高安全等級的節點可以更新低安全級節點的策略,反之不行。
所有不同安全等級的管理員身份信息在基于DABAC模型的系統建立之初就被廣播全網并存儲于各個節點的PAP內,在進行策略更新時,該節點必須將更新后的策略、更新后策略庫的哈希值、執行本次更新任務的管理員的身份信息一起打包,并廣播全網。任何收到策略更新信息的節點都會對發送信息的管理員身份進行校驗,校驗成功后再對本地策略庫進行更新。
(2)基于證據鏈條的訪問記錄一致性機制。
通過使用時間戳技術以及訪問主體私鑰簽名的方式并建立訪問流程的前后關聯關系,實現了將訪問主體的訪問行為以時間序列串聯成為數據證據鏈條。該證據鏈條從訪問主體接入系統起就將相關數據加蓋時間戳并用其私鑰進行簽名,之后,將包含時間戳和私鑰簽名的數據通過特定加密算法生成唯一對應的數據Hash值;之后每一步新數據的產生都會被立即加蓋時間戳并使用私鑰進行簽名,并且基于前一步已經產生的Hash值生成一個新的唯一的Hash值。最后生產的哈希值會被全網廣播,并被保存在全網所有節點的數據庫中。證據鏈條工作原理如圖4所示。

圖4 證據鏈條生成過程
(1)最小特權原則。
最小特權原則是指每個訪問主體只能擁有剛夠完成工作的最小權限[14]。在基于DABAC模型構建的訪問控制系統中,不是根據訪問主體的職責進行簡單的一次性權限劃分,而是通過收集訪問主體、資源客體和系統環境的屬性,訪策略庫中進行查詢,得出最終決策。該方式不僅考察訪問主體本身,還根據訪問主體的任務性質進行綜合決策,從而對最終分配給訪問主體的權限做到最大控制。
(2)職責分離原則。
職責分離是指將不同的權限許可分派給不同的模塊用以互相牽制,使得單個模塊的功能必須與其他模塊的工作相一致或相聯系,并受到監督和制約,防止出現一個模塊完成兩項不相容的工作的情況[15]。在DABAC模型中,在為訪問主體分配屬性時,相互沖突的兩個或多個屬性不能分配給同一個訪問主體,以避免擁有足夠權限的惡意訪問客體在缺少監督和制約的情況下危害系統安全。
(3)多人負責原則。
通過授權分散化,即對于關鍵任務必須在功能上進行劃分,使得該任務由多人共同承擔,保證任何個體無法擁有完成該任務的全部權限。DABAC模型通過去中心化的策略庫使得整個網絡中的任意一個節點只能基于自身的策略庫做出表決,而無法做出最終決策。最終決策需要由發出策略查詢請求的節點上的P&SCP模塊匯總所有節點的表決后作出最終決策。由于最終決策是綜合了全網節點上的所有策略庫的表決而確定的,想要對最終決策進行攻擊需要控制全網過半的節點,隨著網絡規模的不斷增大,攻擊成本也將大大提升。
相比于傳統訪問控制模型,ABAC模型具有很好的靈活性和可擴展性。本節從決策方式和策略及訪問記錄更新方式兩方面對DABAC模型和ABAC模型進行比較。
(1)決策方式。
傳統ABAC模型多采用集中式策略庫的形式進行決策,其安全性依托于整個網絡的可靠程度和策略庫的自身安全。DABAC模型采用分布式決策,通過模型的全網一致性特點來保證整個系統網絡內的所有節點共同維護一個策略庫。該模型得出的決策是由全網所有節點共同表決的結果,若攻擊者想要對該結果做出更改,則需要監聽大于百分之五十的網絡流量,或控制超過一半的網絡節點,才有可能對最終的決策結果做出修改。
(2)策略及訪問記錄更新方式。
對于訪問策略和訪問歷史記錄,傳統ABAC模型通過在網絡中建立中心數據庫節點的方式進行存儲,其安全保障完全依賴于中心數據庫的自身安全。基于DABAC模型架構的訪問控制系統使用基于分布式輔助的身份征信和證據鏈條的方式,分別保證了策略更新和訪問記錄的一致性。需要更新策略庫的節點必須按照模型規則,證明進行策略更新操作人員的身份合法性;使用時間戳技術以及訪問主體私鑰簽名的方式并建立訪問流程的前后關聯關系,并且疊加之前記錄的哈希值,確保了訪問主體的訪問請求和決策結果的記錄不被篡改。
針對現有ABAC模型在大型分布式環境下進行應用所存在的不足,提出了一種基于屬性的去中心化訪問控制模型。在基于屬性的訪問控制模型的基礎上對訪問控制模型進行擴展,引入了去中心化的概念,提升了策略庫和訪問記錄的安全性,增加了訪問決策的可信性。同時對DABAC模型的安全性進行了詳細分析,相比于傳統訪問控制模型,該模型具有更高的安全性、靈活性和容錯性,通過更加全面地對訪問請求進行決策,使得客體資源受到更好的保護。