国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于屬性輕量級可重構的訪問控制策略

2020-03-05 10:00謝絨娜李暉史國振郭云川
通信學報 2020年2期
關鍵詞:訪問控制表達式客體

謝絨娜,李暉,史國振,郭云川

(1.西安電子科技大學網絡與信息安全學院,陜西 西安 710071;2.北京電子科技學院電子與通信工程系,北京 100070;3.中國科學院信息工程研究所,北京 100093)

1 引言

訪問控制策略用來保護系統(tǒng)和網絡中敏感資源被合法訪問和使用,創(chuàng)建正確的滿足安全需求的訪問控制策略是保證系統(tǒng)安全、網絡安全的前提和基礎。復雜網絡環(huán)境中包含多個安全域和各種復雜的分布式信息系統(tǒng),不同的安全域和系統(tǒng)千差萬別,安全需求也不同。復雜的網絡環(huán)境下,描述出正確的、滿足安全需求的訪問控制策略是保證系統(tǒng)安全、網絡安全急需解決的問題。

隨著系統(tǒng)復雜度的增加和安全需求的差異,訪問控制策略的數量、長度和復雜度急劇增加,這勢必造成訪問控制策略冗余與沖突檢測難度增加,訪問控制策略評估的效率急劇下降。另一方面,在計算資源、存儲資源和能耗受限的設備中,訪問控制策略的長度、數量和復雜度都受到很大限制。如何生成輕量級、不存在冗余和沖突的訪問控制策略是復雜網絡環(huán)境中訪問控制策略生成面臨的挑戰(zhàn)。

在訪問控制策略語言方面,研究人員先后提出了Ponder、安全策略語言(SPL,security policy language)、可擴展的訪問控制標記語言(XACML,extensible access control markup language)[1-3]。XACML是一種采用XML 格式的通用訪問控制策略語言,它的通用性使各系統(tǒng)訪問控制策略得到標準化,受到了學術界和工業(yè)界的廣泛關注。然而,XACML 面臨的最大挑戰(zhàn)是策略部署和實施,其部署和實施的困難性導致XACML 的應用受到一定的限制。為降低訪問控制策略數量,文獻[4-5]提出了訪問控制策略組合方法,把2 個不同的訪問控制策略組合成一個等效的訪問控制策略。文獻[6]提出了基于主體、客體屬性,將訪問控制列表(ACL,access control list)生成等效的基于屬性的訪問控制策略,降低了訪問控制策略的數量和復雜度。為提高訪問控制策略評估效率,文獻[7]通過把策略中復雜的邏輯表達式轉換為決策樹的方式來提高訪問控制策略評估的效率。針對訪問控制策略沖突問題,研究人員先后提出了基于有向無環(huán)圖模型、概念格、策略決策樹等方法實現訪問控制策略的沖突檢測。姚鍵等[8]提出了一種基于有向圖模型的沖突檢測機制,解決了沖突檢測中形式化證明過于復雜的問題。李瑞軒等[9]提出了最小代價和字典編輯優(yōu)選2 種基于優(yōu)先級的沖突消解方法,解決了策略非一致性沖突問題。但上述文獻在輕量級可重構的訪問控制策略生成、冗余與沖突檢測、評估等方面并沒有提出很好的解決方法。

針對上述問題,本文提出了基于屬性輕量級可重構的訪問控制策略。基于操作類型、主體、客體和環(huán)境屬性將訪問控制策略分解為多個不相交的原子訪問控制規(guī)則,通過代數表達式對原子訪問控制規(guī)則進行復合生成復雜訪問控制策略,降低了訪問控制策略數量、尺寸和復雜度,提高了訪問控制策略沖突和冗余檢測的效率以及訪問控制策略評估的效率。

本文主要貢獻如下。

1)提出了根據訪問控制策略中的操作類型、主體屬性、客體屬性和環(huán)境屬性將基于屬性的訪問控制策略劃分為多個不相交的原子訪問控制規(guī)則,給出了基于屬性的原子訪問控制規(guī)則范式描述以及原子訪問控制規(guī)則冗余與沖突檢測的方法。

2)提出了利用與、或等邏輯運算構造出代數表達式,通過原子訪問控制規(guī)則和代數表達式重構出復雜訪問控制策略的方法。

3)提出了將復雜訪問控制策略分解為等效的原子訪問控制規(guī)則和代數表達式,通過對等效的原子訪問控制規(guī)則和代數表達式進行冗余與沖突檢測實現對復雜訪問控制策略的冗余與沖突檢測,提高了訪問控制策略冗余與沖突檢測的效率。

2 相關工作

訪問控制策略語言定義了訪問控制策略描述語言的語義和語法,文獻[1]提出的SPL 是一種事件驅動的策略語言。倫敦大學的Policy 小組在2000 年提出了一種面向對象的策略表示語言——Ponder[2],與其他策略表示語言相比,Ponder 具有一定的通用性。在自主型訪問控制模型中,一般使用訪問控制列表和訪問能力表來表述主體、客體與訪問權限之間的對應關系。XACML[3]是采用XML 格式的通用訪問控制策略描述語言。在策略表達上,XACML結構清晰且具有很大的靈活性,它將安全規(guī)則表示為主體、客體、行為和約束4 個主要屬性的屬性值集合,通過邏輯操作把屬性集合連接在一起實現對訪問控制請求授權。同時XACML 中包含了規(guī)則聯合算法來解決安全策略中不同安全規(guī)則可能造成的沖突,以保證每個訪問請求只得到一個最終授權結果。

基于屬性的訪問控制策略面臨的最大挑戰(zhàn)是策略部署和實施[10]。為提高基于屬性訪問控制策略部署實施的效率,基于屬性的訪問控制策略挖掘成為近期的一個研究熱點,并取得了不少成果[6,11-12]。文獻[6]提出了從ACL 中自動挖掘基于屬性訪問控制策略的算法。該算法基于用戶和權限的關系、用戶和客體的屬性值,通過用約束替換屬性表達式中的連接詞來建立關系的方法進行訪問控制規(guī)則挖掘,并通過合并和簡化方法來提高訪問控制規(guī)則的質量。Iyer 等[11]給出了基于屬性訪問控制策略中肯定授權和否定授權規(guī)則的挖掘方法。Chakraborty等[12]根據操作、主體和客體屬性把基于屬性的訪問控制規(guī)則劃分為多個不相交的規(guī)則集合?;趯傩缘脑L問控制策略的數量、長度同樣也會影響訪問控制策略實施的效率。Bonatti 等[13]提出了利用代數表達式來描述安全策略,以及把復雜訪問控制策略形式化為代數的方法。針對訪問控制策略復合問題,Rao等[4]提出了通過3 個二元操作和2 個一元操作組成代數表達式的方式實現復雜訪問控制策略細粒度的復合。文獻[5]提出了通過3 個二元操作把多個訪問控制策略復合成一個豐富的訪問控制策略,實現對于任意訪問控制請求通過復合前后訪問控制策略評估得到相同的訪問控制結果,減少了訪問控制策略的數量。針對使用XACML 描述的訪問控制策略評估效率的問題,文獻[7]提出了XACML 邏輯模型和決策圖的方法,通過語義分析把策略中復雜的邏輯表達式轉換為決策樹來提高訪問控制決策的效率。

在策略沖突檢測和消解方面,不少文獻也取得了許多成果。Lupu 等[14]研究了Ponder 語言中策略形式的一致性問題,在進行策略沖突檢測時,將策略分解為主體、客體和行為3 個要素。當2條策略的某個要素的作用域相互覆蓋時,就會引起符號沖突。姚健等[8]研究了分布式系統(tǒng)中元素之間的關系,并統(tǒng)一抽象成有向無環(huán)圖模型,提出了一種應用該模型檢測分布式系統(tǒng)中安全策略沖突的定量方法。針對XACML 描述的各種復雜訪問控制策略不同規(guī)則之間存在的沖突問題,St-Martin 等[15]提出了沖突檢測算法并進行了正確性證明。

上述文獻對于如何生成輕量級可重構的訪問控制策略,以及重構后策略的冗余與沖突檢測并沒有給出很好的解決方案。

3 基于屬性訪問控制策略生成與檢測

3.1 基于屬性訪問控制策略

基于屬性訪問控制策略根據主體、客體和環(huán)境屬性進行訪問授權。

定義1S為主體s集合,AS 為主體屬性atts集合,VS 為主體屬性值values 集合,values 包括單值屬性值、多值屬性值和區(qū)間屬性值。

主體屬性對可以描述為二元組<atts,values>。atts=SAE(s)表示主體屬性的表達式,簡稱主體屬性,values=e(atts)表示主體屬性atts 的屬性值。比如,主體s1的部門(department)是“部門A”,那么atts1=SAE(s1)=“department”,values1=e(atts1)=“部門A”。主體s1的屬性對可以表示為<department,“部門A”>。

主體屬性值除了單值外還包括多值和區(qū)間,比如不同場景下主體s1的角色(role)不同,主體s1的第二個屬性role,atts2=SAE(s1)=“role”,values2=e(atts2)={“administrator”,“teacher”,“father”}。主體s1的角色屬性對可以表示為<role,{“administrator”,“teacher”,“father”}>。主體屬性值還包括區(qū)間情況,比如主體s1的上班時間t為8:00—17:00,主體s1的第三個屬性對可以表示為<t,8:00≤t≤17:00}>或者<t,[8:00,17:00]>。

按照同樣的方法可以定義客體屬性和環(huán)境屬性。

定義2O為客體o集合,AO 為客體屬性atto集合,VO 為客體屬性值valueo 集合,valueo 包括單值屬性值、多值屬性值和區(qū)間屬性值。

客體屬性對可以描述為二元組<atto,valueo>。atto=OAE(o)表示客體屬性的表達式,valueo=e(atto)表示客體屬性atto 的值。

定義3C為環(huán)境c集合,AC 為環(huán)境屬性attc集合,VC 為環(huán)境屬性值valuec 集合,valuec 包括單值屬性值、多值屬性值和區(qū)間屬性值。

環(huán)境屬性對可以描述為二元組<attc,valuec>。attc=CAE(c)表示環(huán)境屬性的表達式,valuec=e(attc)表示環(huán)境屬性attc 的值。

基于屬性的訪問控制策略policy 是一個八元組<OP,AS,AO,AC,VS,VO,VC,Rules>。其中,OP 是操作op 的集合,Rules 是規(guī)則rule 的集合?;趯傩缘脑L問控制規(guī)則可以表示為<effect,<att,value>,op>。effect 表示該條規(guī)則是肯定授權還是否定授權,effect={“permit”,“deny”},permit 表示肯定授權,deny 表示否定授權。<att,value>表示屬性、屬性值對。例如,規(guī)則rule=<permit,department={“A”,“B”}∧location=“D://”,read>表示部門A 或者部門B 的員工可以閱讀D 盤上的文件。

訪問控制規(guī)則是基于屬性訪問控制策略最核心的部分,基于屬性的訪問控制規(guī)則的巴科斯范式(BNF,Backus-Naur form)描述表示如下。

3.2 基于屬性的原子訪問控制規(guī)則

針對基于屬性訪問控制策略存在的冗余與沖突檢測困難、訪問控制請求評估效率低等問題,本文提出了基于屬性的原子訪問控制規(guī)則(atomicRule)的概念,以下簡稱原子規(guī)則。根據訪問控制策略中的訪問控制規(guī)則包含的操作類型、主體屬性、客體屬性、環(huán)境屬性等將訪問控制策略劃分為多個不相交最小原子規(guī)則,然后通過代數表達式將原子規(guī)則復合成多個復雜訪問控制策略。

基于屬性的原子規(guī)則可以表示成<effect,<att,value>,op>四元組的形式。假設基于屬性的原子規(guī)則包含m個屬性對,即<att1,value1>,<att2,value2>,…,<attm,valuem>。valuei(0<i≤m)包括單值屬性值、多值屬性值和區(qū)間屬性值。原子規(guī)則滿足如下條件:1)操作op 是單操作,假設操作集合OP包含k個操作,OP={op1,op2,…,opk},op 是操作集合OP 中的一個操作;2)訪問控制效果effect 只能是{“permit”,“deny”}中的一個,即effect=“permit”或者effect=“deny”;3)屬性對<att,value>是最小的集合,即減少其中任意一個屬性對<atti,valuei>,原子規(guī)則將不能得到有效的訪問控制評估結果。比如規(guī)則rule1=<permit,department={“A”,“B”}∧location=“D://”,read >就是一個原子規(guī)則,訪問控制效果 effect=“permit”,op=read,屬性對department={“A”,“B”}和location=“D://”去掉其中任意一個都不能得到有效的訪問控制評估結果。規(guī)則rule2=<permit,(department={“A”,“B”}∨role=administrator)∧location=“D://”,read >就不是一個原子規(guī)則,屬性對<department,{“A”,“B”}>和<role,administrator>滿足其中任意一個條件都可以得到有效的訪問控制評估效果。rule2可以分解為rule1和rule3這2 個原子規(guī)則。rule3=<permit,(role=administrator)∧location=“D://”,read >,rule2=rule1∨rule3?;趯傩缘脑右?guī)則的BNF 描述表示如下。

3.3 基于屬性原子訪問控制規(guī)則的冗余與沖突檢測

利用上述原子規(guī)則的3 個條件可以判斷一個訪問控制規(guī)則是否為原子規(guī)則,但原子規(guī)則之間還存在冗余和沖突。比如rule4=<permit,(department={“B”,“C”})∧location=“D://”,read >。rule1和 rule4均為原子規(guī)則,但它們之間存在冗余。rule5=<deny,(department=“C”)∧location=“D://”,read>。rule4和rule5同樣都為原子規(guī)則,但它們之間存在沖突。下面討論原子規(guī)則中同一類型操作的不同規(guī)則之間的冗余和沖突檢測。

1)原子規(guī)則的冗余檢測

對于任意2 個規(guī)則rulei和rulej,分別包含ni和nj個屬性對,rulei=<effecti,<att1,value1>,<att2,value2>,…,,opi>,rulej=<effectj,<att1,value1>,<att2,value2>,…,,opj>。如果規(guī)則rulei和rulej包含的操作和訪問控制效果相同,即opi=opj,effecti=effectj,屬性對個數、屬性和屬性值均相同,即ni=nj,rulei.attk=rulej.attk,rulei.valuek=rulej.valuek(k=(1,…,ni)),那么rulei和rulej為2 個相同的規(guī)則。判斷屬性值是否相同包括判斷單值、多值和區(qū)間值是否相同。如果屬性值為單值,直接判斷2 個值是否相等;如果屬性值為多值或者區(qū)間,判斷表示屬性值的集合是否相等。如果規(guī)則rulei和rulej的操作和訪問控制效果相同,屬性對個數和屬性也相同,但存在2 個屬性值不相同,即rulei.valuek≠rulej.valuek,那么規(guī)則rulei和rulej存在冗余,rulei和rulej可以合并為一個新的原子規(guī)則rule。如果valuek為單值,新的原子規(guī)則rule 的屬性值valuek改為多值,rule.valuek={ rulei.valuek,rulej.valuek};如果valuek為多值或者區(qū)間,那么rule.valuek=rulei.valuek∪rulej.valuek。對于原子規(guī)則的冗余檢測可以采用算法1 進行。

算法1RedundancyDetect(rule1,rule2)

函數GetRuleOperator(rule)為得到規(guī)則rule 對應的操作op,GetRuleEffect(rule)為得到規(guī)則rule的訪問控制效果effect,GetRuleAttNumber(rule)為得到規(guī)則rule 屬性對個數,GetRuleAttSet(rule)為得到規(guī)則rule 的屬性對<att,value>。

2)原子規(guī)則的沖突檢測

對于任意2 個規(guī)則rulei和rulej,如果規(guī)則rulei和rulej包含的操作相同、屬性個數和屬性相同、屬性值相同或者存在交集,而訪問控制效果相反,那么規(guī)則rulei和rulej存在沖突。在對屬性值進行判斷時,對于單值屬性值,直接判斷2 個屬性值是否相同,即rulei.valuek=rulej.valuek;對于多值屬性值或者區(qū)間屬性值,判斷2 個屬性值是否存在交集,即rulei.valuek∩rulej.valuek≠Ф。函數ConflictDetect(rule1,rule2)用來檢測規(guī)則是否存在沖突,存在沖突返回true,不存在沖突返回false。

3.4 基于屬性原子訪問控制規(guī)則的復合

下面討論如何由原子規(guī)則復合出語義豐富的復雜的訪問控制策略。本文提出了通過與(AND,∧)、或(OR,∨)布爾操作組成的布爾函數,對原子規(guī)則進行復合得到語義豐富的復雜訪問控制策略。

1)AND(∧),與操作要求所有的訪問控制規(guī)則都同意授權時,才允許主體對客體進行對應的操作。例如,rule=rule1∧rule2,deci表示規(guī)則rulei的授權結果,dec=dec1∧dec2。將允許授權permit 編碼為1,當且僅當dec1=1 和dec2=1 時,dec=1。與操作表示最小的授權原則。

2)OR(∨),或操作表示當有一條訪問控制規(guī)則同意授權時,就允許主體對客體進行對應的操作。例如,rule=rule1∨rule2,dec=dec1∨dec2。當dec1=1 或dec2=1 時,dec=1。或操作表示最大的授權原則。

令變量xi表示規(guī)則rulei,變量y表示規(guī)則rule,如果rule=rule1∧rule2,令y=f1(x1,x2)=x1∧x2=x1x2,那么規(guī)則rule 可以通過規(guī)則rule1、rule2和代數表示式f1(x1,x2)復合而成。如果rule=rule1∨rule2,令y=f2(x1,x2)=x1∨x2=x1+x2+x1x2,那么規(guī)則rule 可以通過規(guī)則rule1、rule2和代數表示式f2(x1,x2)復合而成。如果規(guī)則rule 是通過對n個規(guī)則rule1,…,rulen進行與、或操作復合而成,代數表達式y(tǒng)=f(x1,…,xn)表示規(guī)則rule 中各個原子規(guī)則邏輯關系,規(guī)則rule 可以通過代數表達式y(tǒng)=f(x1,…,xn)對規(guī)則rule1,…,rulen復合生成。令deci表示規(guī)則rulei的授權結果,其中同意授權deci=1,否定授權deci=0。令xi=deci,將規(guī)則rulei的授權結果deci代入函數y=f(x1,…,xn)就可以得到規(guī)則rule 授權結果。

從前面分析可以看出,通過原子規(guī)則和代數表達式f可以復合出語義豐富的復雜訪問控制規(guī)則。對于復合訪問控制規(guī)則的授權結果,通過將原子規(guī)則的授權結果代入代數表達式f中就可以得到復雜訪問控制規(guī)則的授權結果。訪問控制策略是由多個訪問控制規(guī)則復合而成,對于訪問控制策略同樣可以采用原子規(guī)則和代數表達式的方式復合生成,訪問控制授權結果也可以采用同樣的方法得到。

對于復雜訪問控制規(guī)則的冗余與沖突檢測,可以通過對等效的原子規(guī)則和代數表達式進行冗余和沖突檢測。如果2 個訪問控制規(guī)則等效的原子規(guī)則存在冗余或沖突,那么這2 個訪問控制規(guī)則一定存在冗余和沖突。對于等效的原子規(guī)則不存在冗余和沖突的訪問控制規(guī)則,可以通過代數表達式進一步判斷2 個訪問控制規(guī)則是否存在冗余和沖突。訪問控制規(guī)則rulei和rulej對應的代數表達式為fi和fj,如果不存在冗余和沖突,那么訪問控制規(guī)則rulei和rulej不存在冗余和沖突,如果fi和fj存在冗余和沖突,那么訪問控制規(guī)則rulei和rulej存在冗余和沖突。對于訪問控制策略,可以采用類似的方法進行冗余和沖突檢測。復雜訪問控制策略冗余與沖突檢測轉化為對等效原子規(guī)則和對應代數表達式進行檢測,大大降低了訪問控制策略冗余和沖突檢測的復雜度,提高了檢測的效率。

4 基于屬性訪問控制策略的分解

根據第3 節(jié)的分析可以看出,通過原子規(guī)則復合的方式提高了訪問控制策略生成、冗余和沖突檢測的效率。在實際信息安全系統(tǒng)中,系統(tǒng)管理員根據系統(tǒng)的安全需求進行訪問控制策略的配置或者自動生成各種訪問控制策略,系統(tǒng)管理員配置或者自動生成的訪問控制策略一般都是復雜訪問控制策略。本節(jié)重點討論如何將復雜訪問控制策略等效轉化為原子規(guī)則和代數表達式的形式。

4.1 基于屬性訪問控制規(guī)則的分解與等效轉化

基于屬性訪問控制策略包含一條或多條訪問控制規(guī)則,下面首先討論對訪問控制策略中的一條訪問控制規(guī)則進行分解的方法。基于屬性的訪問控制規(guī)則經需要過以下3 個步驟等效轉化為原子規(guī)則和代數表達式的形式。

Step1算法2 DecomposeRule()根據訪問控制規(guī)則rule 包含的操作,把規(guī)則rule 分解為訪問控制規(guī)則集合RuleOP 及對應的代數表達式f,訪問控制規(guī)則集合RuleOP 中的每一個訪問控制規(guī)則Ruleop只包含一種類型的操作。

Step2算法3 DecomposeRuleOp()對訪問控制規(guī)則Ruleop 進行語義分析,將Ruleop 分解為多個訪問控制規(guī)則,生成訪問控制規(guī)則集合RuleSetOP 及對應的代數表達式fop。訪問控制規(guī)則集合RuleSetOP 中的訪問控制規(guī)則RuleSetop 只包含一種類型的操作和一種訪問控制效果。

Step3算法4 DecomposeAtomicRule()根據規(guī)則RuleSetop 中主體屬性、客體屬性、環(huán)境屬性的邏輯關系,將訪問控制規(guī)則RuleSetop 分解為原子規(guī)則集合,并對原子規(guī)則集合進行冗余和沖突檢測,得到訪問控制規(guī)則RuleSetop 最終等效的原子規(guī)則集合atomicRuleSet 以及對應代數表達式fatomic。

基于屬性的訪問控制規(guī)則的分解與等效轉化如圖1 所示。

算法2 DecomposeRule(rule,RuleOP,n)根據rule中包含的操作類型把規(guī)則rule 分解為多個只包含一種操作類型的訪問控制規(guī)則集合RuleOP。n為訪問控制規(guī)則rule 中操作類型的個數,也是最終生成的訪問控制規(guī)則集合RuleOP 中包含訪問控制規(guī)則Ruleop 的個數。規(guī)則Ruleop 只包含一種操作類型,Ruleop=<effect,<att,value>,op>,op 是操作集合OP中的一類操作,effect 是{“permit”,“deny”}中的一個。

圖1 基于屬性的訪問控制規(guī)則的分解與等效轉化

算法2 首先調用函數GetRuleOperator(rule)得到規(guī)則rule 包含的所有操作集合OP。然后針對操作集合中的每一個元素op,調用函數GetOPRule(rule,op)得到訪問控制規(guī)則rule 中操作op 對應的訪問控制規(guī)則Ruleop。比如訪問控制規(guī)則rule 包含讀(read)操作和寫(write)操作,rule 分解為Ruleread和Rulewrite。最后函數GetRuleFExp()根據不同操作的訪問規(guī)則在規(guī)則rule 中的邏輯關系生成rule 的代數表達式f。例如,規(guī)則rule=<permit,department={“A”,“B”}∧location=“D://”,read>∨<permit,department={“A”,“C”}∧location=“D://”,read>∨<permit,department={“A”,“C”}∧location=“D://”,write>,規(guī)則rule 可以分解為讀訪問控制規(guī)則Ruleread和寫訪問控制規(guī)則Rulewrite,Ruleread=<permit,department={“A”,“B”}∧ location=“D://”,read>∨<permit,department={“A”,“C”}∧location=“D://”,read>,Rulewrite=<permit,department={“A”,“C”}∧location=“D://”,write>。f(x1,x2)=x1∨x2=x1+x2+x1x2。其中x1表示Ruleread,x2表示Rulewrite。通過訪問控制規(guī)則Ruleread、Rulewrite和代數表達式f可以復合出訪問控制規(guī)則rule。

算法2DecomposeRule(rule,RuleOP,n)

算法 3 DecomposeRuleOp(Ruleop,RuleSetOP,nop,fop)對訪問控制規(guī)則Ruleop 的語義和邏輯關系進行分析,把規(guī)則Ruleop 分解為nop個等效的、只包含一種訪問控制效果的、互不相交的訪問控制規(guī)則集合RuleSetOP,fop為訪問控制規(guī)則Ruleop 對應的代數表達式,通過訪問控制規(guī)則集合RuleSetOP和代數表達式fop可以復合出訪問控制規(guī)則Ruleop。訪問控制規(guī)則集合 RuleSetOP 中的每一個規(guī)則RuleSetOP[i]只包含一種操作類型和一種訪問控制效果,RuleSetOP[i]=<effect,<att,value>,op>,op 是操作集合OP 中的一個元素,effect 是{“permit”,“deny”}中的一個。

算法3 首先調用函數GetPermitRule(Ruleop)得到規(guī)則Ruleop 中肯定授權規(guī)則集合rulePSet,調用函數GetRuleFExp(Ruleop,rulePSet,)得到規(guī)則Ruleop 中肯定授權規(guī)則的代數表達式。調用函數GetDenyRule(Ruleop)得到規(guī)則Ruleop 中否定授權規(guī)則集合ruleDSet,調用函數GetRuleFExp (Ruleop,ruleDSet,)得到規(guī)則Ruleop 中否定授權規(guī)則的代數表達式。算法3 生成與規(guī)則Ruleop 等效互不相交的訪問控制規(guī)則集合 RuleSetOP,RuleSetOP 為rulePSet 和ruleDSet 并集,代數表達式。例如,ruleread=<permit,department={“A”,“B”}∧location=“D://”,read>∨<permit,department={“A”,“C”}∧location=“D://”,read>,通過算法3 規(guī)則ruleread分解為RuleSetread[1]=<permit,department={“A”,“B”}∧location=“D://”,read>和 RuleSetread[2]=<permit,department={“A”,“C”}∧location=“D://”,read>。fread(x1,x2)=x1∨x2=x1+x2+x1x2。

算法3DecomposeRuleOp (Ruleop,RuleSetOP,nop,fop)

通過算法3 分別對訪問控制集合RuleOP 中n個訪問控制規(guī)則Ruleop 進行分解等效轉化,分別得到各個訪問控制規(guī)則Ruleop 對應的互不相交的訪問控制規(guī)則集合RuleSetOP 及復合代數表達式fop1,fop2,…,fopn,訪問控制規(guī)則rule 對應的代數表達式為f(fop1,fop2,…,fopn)。

目前,訪問控制規(guī)則集合RuleSetOP[i]中各個訪問控制規(guī)則RuleSetop 并不是原子規(guī)則,各個規(guī)則之間還存在冗余和沖突,算法 4 調用函數DecomposeAtomicRule(RuleSetop,conflictflag,atomicRuleSet,fatomic,natomic),把只包含一種操作類型和一種訪問控制效果的規(guī)則ruleSetop 分解成等效的、互不相交的原子規(guī)則集合atomicRuleSet,并檢測各規(guī)則之間是否存在冗余和沖突,如果存在沖突,將沖突標記conflictflag 置為true;如果存在冗余,將原子規(guī)則集合atomicRuleSet 中存在冗余的規(guī)則進行合并,得到RuleSetop 最終原子規(guī)則集合及代數表達式fatomic。

算法4 調用函數GetRuleMinAttSet (RuleSetop,attSet,natomic)生成規(guī)則RuleSetop 最小屬性對集合attSet。函數 GetRuleMinAttSet()首先對規(guī)則ruleSetop 中屬性對進行語義分析,根據各屬性對之間的邏輯關系將屬性對分解成natomic個最小屬性對集合。具體分析時,先掃描規(guī)則中屬性對或操作符,再根據或操作符把屬性對分解成多個最小的屬性對集合。例如,規(guī)則 RuleSetop 中屬性對為(<att1,value1>∧<att2,value2>)∨(<att3,value3>∧ <att4,value4>),函數GetRuleMinAttSet 得到屬性對集合attSet,attSet={{<att1,value1>∧ <att2,value2>},{<att3,value3>∧<att4,value4>}}。attSet 共包含2 個元素,attSet[1]={<att1,value1> ∧ <att2,value2>},attSet[2]={<att3,value3> ∧ <att4,value4>} 。函 數AddRule (atomicRuleSet,<effect,attSet[i],op>)根據<effect,attSet[i],op>生成規(guī)則并加入規(guī)則集合atomicRuleSet 中。函數GetRuleFExp (RuleSetop,atomicRuleSet,fatomic)分析原子規(guī)則集合atomicRuleSet 中各個原子規(guī)則的邏輯關系得到原子規(guī)則集合atomicRuleSet 各個原子規(guī)則的代數表達式fatomic。例如,規(guī)則RuleSetop 分解成了2 個原子規(guī)則,atomicRuleSet[1]=<effect,attSet[1],op>和atomicRuleSet[2]=<effect,attSet[2],op>,規(guī) 則RuleSetop 對應的代數表達式fatomic=x1∨x2=x1+x2+x1x2,x1表示規(guī)則atomicRuleSet[1],x2表示規(guī)則atomicRuleSet[2]。

目前生成原子規(guī)則集合atomicRuleSet 中各原子規(guī)則之間可能還存在冗余和沖突,調用函數ConflictDetect()和RedundancyDetect()對原子規(guī)則集合atomicRuleSet 各原子規(guī)則進行冗余和沖突檢測。函數 SimplyRuleFExp(atomicRuleSet,fatomic,natomic)將原子規(guī)則集合中存在冗余的規(guī)則從代數表達式中刪掉,并生成新的代數表達式fatomic。例如,規(guī)則RuleSetop=(atomicRuleSet[1]∧atomicRuleSet[2])∨atomicRuleSet[3]對應的復合表達式為fatomic=(x1∧x2)∨x3=x1x2+x3+x1x2x3。如果原子規(guī)則atomicRuleSet[1]和atomicRuleSet[2]存在冗余,將atomicRuleSet[1]和atomicRuleSet[2]合并為一個新的原子規(guī)則放在 atomicRuleSet[1],并將atomicRuleSet[3]放在 atomicRuleSet[2],原來的atomicRuleSet[3]從原子規(guī)則集合刪掉,新的代數表達式fatomic=x1∨x2=x1+x2+x1x2,natomic由3 更新為2。例如,前文生成的讀規(guī)則 RuleSetread[1]和RuleSetread[2]存在冗余,RuleSetread[1]和RuleSetread[2]可以合并為一個新的規(guī)則RuleSetread[1],RuleSetread[1]=<permit,department={“A”,“B”,“C”}∧location=“D://”,read>。

算法 4DecomposeAtomicRule(RuleSetop,conflictflag,atomicRuleSet,fatomic,natomic)

通過算法4,對訪問控制規(guī)則集合RuleSetOP中nop個訪問控制規(guī)則RuleSetop 進行分解等效轉化,分別得到各個訪問控制規(guī)則RuleSetop 對應的原子規(guī)則集合、復合代數表達式fatomic1,fatomic2,…,以及訪問控制規(guī)則集合RuleSetOP 對應的復合代數表達式fop(fatomic1,fatomic2,…,)。

4.2 基于屬性訪問控制策略的分解與等效轉化

基于屬性訪問控制策略是對多個訪問控制規(guī)則復合而成。假設訪問控制策略P是對m個訪問控制規(guī)則通過復合函數f(x1,x2,…,xm)復合而成,m個訪問控制規(guī)則對應的代數表達式分別為f1,f2,…,fm。訪問控制策略P的代數表達式f(x1,x2,…,xm)=f(f1,f2,…,fm)。

5 基于屬性可重構的訪問控制策略的評估

本節(jié)分別從空間復雜度和時間復雜度對基于屬性可重構的訪問控制策略進行評估。

5.1 空間復雜度

假設系統(tǒng)的訪問控制策略庫中共有n個原子規(guī)則,n元布爾函數函數f(x1,x2,…,xn)共有,n個原子規(guī)則可以重構出個復雜訪問控制策略。對于通過原子規(guī)則和代數表達式重構生成的訪問控制策略庫只需要存儲n個原子規(guī)則和個代數表達式。與訪問控制策略相比,代數表達式占用的存儲空間可以忽略不計,個復雜訪問控制策略占用的空間與n個原子規(guī)則占用的空間是指數關系,優(yōu)勢顯然而見。

5.2 時間復雜度

下面,從訪問控制策略評估效率對本文提出的可重構的訪問控制策略的時間復雜度進行定性分析。

訪問控制策略的評估包括訪問控制策略的匹配和訪問控制請求評估兩部分。對于基于屬性的訪問控制策略的評估需要根據訪問請求中操作、主體屬性、客體屬性和環(huán)境屬性從訪問控制策略庫一一匹配找到相關的訪問控制策略,根據匹配到訪問控制策略中的各個訪問控制規(guī)則來判斷是否可以對客體進行相關操作,并根據各個訪問控制規(guī)則判斷結果和組合算法得到訪問控制請求的最終結果。從前面評估過程中看出,首先需要對訪問控制策略庫中的訪問控制策略一一進行匹配,找到相關的訪問控制策略。當策略庫中訪問控制策略數量比較大時,策略的匹配需要耗費大量的時間。從評估過程看,需要對匹配到訪問控制策略中所有相關的訪問控制規(guī)則一一進行判斷。例如信息系統(tǒng)S,配置有100 個訪問控制策略,100 個訪問控制策略等效轉化為10 個原子規(guī)則。系統(tǒng)S 的訪問控制策略庫由100 個訪問控制策略變成10 個原子規(guī)則和100 個代數表達式。當系統(tǒng)S 接收到訪問控制請求R,根據訪問控制請求中的操作、主體屬性、客體屬性和環(huán)境屬性對100 個訪問控制策略一一匹配,找到最終的訪問控制策略。例如訪問控制請求為部門A 的員工請求訪問D://file1 文件。按照操作、主體屬性、客體屬性和環(huán)境屬性的順序進行匹配。假設首先從100 個訪問控制策略中找到與讀操作有關的策略80個,與讀操作相關的訪問控制策略中與主體屬性部門A 有關策略50 個,然后根據客體屬性D://file1最終找到訪問控制規(guī)則rule,rule=<permit,department={“A”,“B”}∧location=“D://”,read>∨<permit,department={“A”,“C”}∧location=“D://”,read>∨<permit,department={“A”,“C”}∧location=“D://”,write>。從訪問控制策略匹配過程,假設進行一次匹配所花費的時間為1 個單位時間,在上述信息系統(tǒng)S 中最終匹配到訪問控制規(guī)則rule所花費的時間為100+80+50=230 個單位時間。

對本文提出的通過原子規(guī)則重構生成的訪問控制策略進行匹配時,首先根據訪問請求中的操作,篩選出和訪問請求中相同操作的原子規(guī)則,然后根據主體屬性、客體屬性和環(huán)境屬性從篩選的原子規(guī)則找到最終匹配的原子規(guī)則集合。對上述信息系統(tǒng)S,10 個原子規(guī)則中有5 個原子規(guī)則為讀操作相關規(guī)則,與主體屬性部門A 相關的原子規(guī)則有3個,而與客體屬性D://file1 相關原子規(guī)則只有1 個,找到最終原子規(guī)則 RuleSetread[1]=<permit,department={“A”,“B”,“C”}∧location=“D://”,read>。在10 個原子規(guī)則中匹配到最終原子規(guī)則RuleSetread[1]所花費的時間為10+5+3=18 個單位時間。230 個單位時間遠遠大于18 個單位時間。實際上,匹配原子規(guī)則花費的時間遠遠小于復雜訪問控制策略,也就是說匹配到最終原子規(guī)則RuleSetread[1]所花費的時間小于18 個單位時間。

下面分析對訪問控制請求評估所花費的時間。通過訪問控制規(guī)則rule 對訪問控制請求R 進行評估時,允許讀D://文件的主體為{“A”,“B”},部門A 在允許的范圍內,部門A 的員工可以讀文件D://file1。繼續(xù)掃描規(guī)則rule,規(guī)則rule 中對讀操作的權限限制為<permit,department={“A”,“B”}∧location=“D://”,read>和<permit,department={“A”,“C”}∧location=“D://”,read>,它們之間為或的關系,當判斷部門A 的員工可以讀文件D://file1時,后續(xù)限制條件<permit,department={“A”,“C”}∧location=“D://”,read>不需要再進行判斷。繼續(xù)掃描規(guī)則rule,下面為寫操作,與讀操作無關,也不用判斷,得到最終的訪問控制結果為部門A 的員工可以讀文件 D://file1。通過原子規(guī)則RuleSetread[1]對訪問控制請求R 進行評估時,允許讀D://文件的主體為{“A”,“B”,“C”},部門A在允許的范圍內,部門 A 的員工可以讀文件D://file1。從前面的分析過程發(fā)現,通過規(guī)則rule對訪問控制請求R進行判斷所花費的時間至少是通過原子規(guī)則RuleSetread[1]所花費時間的1 倍多。假設訪問控制請求R為部門C 的員工請求訪問D://file1 文件,采用前面類似的方法進行分析可以看出,通過訪問控制規(guī)則rule 進行判斷所花費的時間至少是通過原子規(guī)則RuleSetread[1]的2 倍多。

5.3 評估實驗

為測試本文提出的輕量級可重構的訪問控制策略的評估效率,本文采用Python 語言開發(fā)了一個中間件(middleware)實現訪問控制策略決策功能,中間件運行在Intel1.4 GHz i5CPU 16GiBRAM 計算機。利用上述中間件對不同的訪問控制請求R分別通過訪問控制規(guī)則rule 和原子規(guī)則進行了評估,為準確記錄評估時間,每個訪問控制請求評估10 000次,測試的結果如表1 所示。從實驗結果來看,通過原子規(guī)則進行評估的效率是通過規(guī)則rule 效率的2 倍以上。對于邏輯關系復雜的訪問控制策略,采用本文提出的方法生成的訪問控制策略效果會更明顯,比如部門C 員工的寫訪問請求,通過原子規(guī)則進行評估,效率提高了3 倍左右。

表1 訪問控制規(guī)則評估效率

5.4 訪問控制策略冗余和沖突檢測效率

訪問控制策略冗余與沖突檢測一直是訪問控制策略的研究熱點?,F有文獻分別從有向無環(huán)圖模型、概念格、策略決策樹等不同的方面提出了訪問控制策略冗余與沖突檢測的方法,本文將復雜訪問控制策略等效轉化為原子規(guī)則和代數表達式,通過判斷訪問控制策略等效的原子規(guī)則和代數表達式是否存在冗余或沖突,來判斷訪問控制策略是否存在冗余和沖突。如果原子規(guī)則存在冗余和沖突,那么對應的訪問控制策略肯定存在冗余和沖突;如果等效的原子規(guī)則不存在冗余和沖突,需要進一步判斷代數表達式是否存在冗余和沖突。如果代數表達式不存在冗余和沖突,那么對應的訪問控制策略不存在冗余和沖突;如果代數表達式存在冗余和沖突,那么對應的訪問控制策略存在冗余和沖突。由于最終復合生成的訪問控制策略和原子規(guī)則在數量上為指數級關系,復雜度也不是同一個數量級。復雜訪問控制策略冗余與沖突檢測轉化為對等效原子規(guī)則和代數表達式的檢測,大大降低了難度和復雜度,提高了檢測的效率。

6 結束語

以基于屬性的訪問控制策略為基礎,根據訪問控制規(guī)則中的操作類型、主體屬性、客體屬性和環(huán)境屬性將基于屬性的訪問控制策略劃分多個不相交的原子規(guī)則,并通過與、或等邏輯關系構成的代數表達式,將原子規(guī)則重構出復雜訪問控制策略;根據原子規(guī)則中包含的屬性是否相同,屬性值是否相同或者是否存在交集,訪問控制效果相同還是相反,判斷原子規(guī)則是否存在冗余與沖突。實際系統(tǒng)中的訪問控制策略大多是復雜訪問控制策略,甚至有些策略存在冗余和沖突。本文提出將復雜訪問控制策略轉化為等效的原子規(guī)則和代數表達式的方式,降低訪問控制策略的數量和復雜度;通過將原子規(guī)則評估結果代入代數表達式中,得到復雜訪問控制策略評估結果;通過對轉化生成的原子規(guī)則和代數表達式進行冗余與沖突檢測,實現對復雜訪問控制策略進行冗余與沖突檢測。從空間復雜度和時間復雜度2個不同角度對本文提出的可重構的訪問控制策略進行定性評估,實驗結果表明,本文提出的訪問控制策略重構方法大大降低了訪問控制策略的長度、數量和復雜度,提高了訪問控制策略冗余與沖突檢測的效率以及訪問控制策略評估的效率。

下一步工作將把原子規(guī)則等效轉化的方法應用到實際信息系統(tǒng)中分析原子規(guī)則復合方法的效率,同時研究不同操作之間原子規(guī)則的冗余與沖突檢測,尤其是有相互影響關系的操作之間原子規(guī)則之間的冗余和沖突檢測。

猜你喜歡
訪問控制表達式客體
一種跨策略域的林業(yè)資源訪問控制模型設計
社會公正分配客體維度與道德情緒的雙向互動
靈活選用二次函數表達式
表達式轉換及求值探析
淺議犯罪客體
內外網隔離中ACL技術的運用
淺析C語言運算符及表達式的教學誤區(qū)
云計算訪問控制技術研究綜述
概述奧地利普通術語學中的對象客體
議C語言中循環(huán)語句
清远市| 新兴县| 延津县| 南召县| 阳高县| 太谷县| 观塘区| 中山市| 青河县| 舞阳县| 和田县| 稷山县| 岱山县| 南安市| 定南县| 义马市| 汉源县| 合江县| 射洪县| 沈丘县| 四子王旗| 财经| 弥勒县| 石首市| 葫芦岛市| 抚宁县| 罗定市| 辛集市| 桃源县| 阳原县| 光山县| 元氏县| 于都县| 开阳县| 东乌珠穆沁旗| 庆元县| 镇雄县| 陈巴尔虎旗| 武冈市| 正阳县| 信阳市|