摘 要: 基于多實例的思想提出了一種新的模糊級別的多級安全模型,將多個僅密級不同的元組合并表示,并用安全模式來表示元組所適用的密級,只要主體的許可級別匹配此安全模式,便可存取此元組。這種模型解決了現(xiàn)有多級安全數(shù)據(jù)模型中存在的數(shù)據(jù)冗余度大及隱通道等問題。
關鍵詞: 多級安全;多實例;數(shù)據(jù)模型;合并;安全模式
現(xiàn)有的多級安全數(shù)據(jù)模型都遵循BLP模型[1]中提出的“向下讀,向上寫”的多級關系的強制訪問控制規(guī)則,從而確保信息的向上單向流動。然而,在大多數(shù)應用中,主體(用戶或程序)和客體的敏感度很難嚴格地劃分等級,只存在一些模糊級別。許可級別高的用戶未必一定允許查看密級(表示該客體所包含信息的敏感度)低的信息,例如:一個許可級別較高的用戶不允許查看另一部門的較低密級的信息。
另外,在一般的多級安全關系數(shù)據(jù)庫中,為了對低許可級的主體隱藏高密級的敏感信息,引入了多實例(Polyinstantiation)和偽元組(Cover Story)的概念,使得真實世界的單個實體在一個多級關系表中會產生多個元組,每個元組對應著不同密級的實例,并為每個字段設置相應的密級附加字段,以記錄各數(shù)據(jù)項的密級信息。當不同實例間的數(shù)據(jù)差異很大時,這樣的設計是合理的。然而,研究表明實際應用時,數(shù)據(jù)庫中敏感數(shù)據(jù)(即需要對低許可級主體隱藏的數(shù)據(jù))所占的比例通常僅僅只有約5%[2],這意味著多實例間的數(shù)據(jù)差異通常非常小,高密級的元組除個別字段外,絕大部分數(shù)據(jù)(90%以上)與低密級元組相同[3],造成數(shù)據(jù)的大量冗余,而且數(shù)據(jù)定義與操縱規(guī)則相當復雜。
為了解決上述問題,本文提出了一種新的模糊級別的多級安全關系數(shù)據(jù)庫模型,采用類似于“同級讀,同級寫”的原則,既可以防止“高”許可級用戶查看或修改“低”密級的信息,造成信息泄漏;又可以防止“低”許可級主體修改“高”密級的數(shù)據(jù),形成隱通道,還可以通過多密級共享元組來減少數(shù)據(jù)冗余。
1 對基于多實例的多級關系的改進
當不同的元組具有相同的主鍵,卻具有不同的密級時,稱為多實例。在給定的格中,對每一個許可級都有一個關系實例,代表該許可級的用戶眼中的數(shù)據(jù)版本。例如,對關系模式R而言,實例RC就是許可級為C的用戶所看到的元組的集合。多實例是一個應用多級安全的系統(tǒng)所固有的屬性[4-5]。
在SeaView[6]和Jajodia、Sandhu[4-5,7]等人對多級安全數(shù)據(jù)模型的研究中,對每一個屬性定義其相應的密級,并引入了多實例,但由于采用“向下讀,向上寫”的規(guī)則,因此,存在隱匿通道問題。參考文獻[8]中引入了主從表,通過在從表中讀寫偽元組來消除隱通道問題,但按照這些規(guī)則進行讀寫操作后,大部分元組的各屬性的密級最終都會與元組的密級相同。因此,本模型直接將各屬性的密級屬性去掉,只留下元組的密級屬性;參考文獻[9]直接去掉了屬性的密級屬性,只留下元組的密級屬性TC,但要求為實體的每一種許可級定義一個實例。然而根據(jù)前面的分析,實際應用中不同密級實例的大部分屬性值可能是相同的,甚至可能只是元組密級屬性TC值不同而已,造成大量的冗余數(shù)據(jù),而且,當許可級較多時,數(shù)據(jù)的冗余量將會成倍增長。因此,為了進一步減少冗余,本模型再將所有屬性值均相同的多個不同密級的元組合并成一個元組,用一種類似于通配符的數(shù)據(jù),即安全模式(Security Pattern)來表示這些密級。強制訪問控制就是通過對比主體的許可級別和客體的安全模式是否匹配來確定主體是否能夠存取客體。
安全模式定義及其運算規(guī)則。
因此,一個改進后的多級關系可以定義為:
定義2:設有R(A1,A2,…,An,SP),其中,Ai是定義在域Di上的數(shù)據(jù)屬性,SP表示元組的密級屬性,SP的值為安全模式,為所有有權訪問該元組的主體所支配。稱R為多級關系模式。
可見本模型不僅形式簡單,而且由于它保持了標準關系數(shù)據(jù)庫的特點,因此易于在目前常見的DBMS上實現(xiàn)。又由于本模型不同于其他學者提出的模式,不再用屬性TC來表示某一個密級別,而是一種稱為安全模式的數(shù)據(jù)來表示多個密級別,只有許可級別與此安全模式匹配的主體才可以訪問此元組,類似于“同級讀,同級寫”的訪問控制規(guī)則,顯然不可能泄漏敏感數(shù)據(jù),也不存在隱通道。
2 模型的完整性規(guī)則
由于本模型擴展了標準的關系數(shù)據(jù)模型,引入了元組密級屬性,為了保證數(shù)據(jù)庫中數(shù)據(jù)的完整性和一致性,本模型對標準關系模式的完整性規(guī)則進行了增強。
2.1 實體完整性
本模型中,在標準關系模式的基礎上增加了表示元組密級的屬性SP,標準關系模式的直覺意義上的主鍵,稱外觀主鍵AK(Apparent primary Key),真正的主鍵是外觀主鍵加元組密級屬性(即AK∪SP)。
實體完整性:多級關系R的一個實例r滿足實體完整性,當且僅當,對r的所有元組t,若Ai∈AK則t[Ai]≠null且t[SP]≠null。即假定AK是定義在關系模式R上的外觀主鍵,構成AK的所有屬性均不能為空,元組的密級屬性SP也不能為空。
2.2 參照完整性
參照完整性:R和S為多級關系,S參照了R,AKr為R的外觀主鍵,F(xiàn)Ks為S的外鍵,許可級別為c的主體所支配的R的實例rc和S的實例sc滿足參照完整性,對sc的所有元組ts,或者ts[FKs]=null,或者存在tr∈rc且tr[AKr]=ts[FKs]和tr[SP]&ts[SP]&c=c。
任何元組只能參照其他關系(或自身)中存在的元組,且參照及被參照的元組必須受同一許可級別主體支配。
2.3 實例間完整性
實例間完整性反映的是對給定格的所有密級,其對應的各個實例之間的聯(lián)系和約束。
由于本模型中討論的是模糊級別的格,采用的是類似于“同級讀,同級寫”的規(guī)則,故不保證一個實體在不同的許可級的關系實例中均可見。如果不可見,則表明本許可級別未被授權存取此實體。但如果實體的兩個實例所有屬性值均相同時,可用同一個實例來表示,并在此實例的SP屬性中將這兩個密級合并表示。
此規(guī)則要求對于任意許可級別c和任意實體,多級關系R中至多存在一個實例t受許可級別為c的用戶支配。
在一個關系中可能有多個實例具有相同的AK值,但主體在任何密級最多只能接受1個AK值的實例。對某個特定許可級的關系,其所有元組的密級均受此許可級c支配,而且是其支配的元組的唯一代表,而密級屬性的存在對用戶是透明的,因此在用戶眼中,仍是AK→Ai(AiAK),保持了標準關系模型中的函數(shù)依賴特性。為了禁止一個實體在同一密級中的多實例存在,首先要求多級關系中的主鍵為AK∪SP,然后再通過讀寫規(guī)則加以控制。
3 讀寫規(guī)則
3.1 讀規(guī)則
在本模型中,不是為每一密級創(chuàng)建1個元組,而可能是多密級別共享1個元組。每個密級別對應的關系實例的元組為多級關系中可由此許可級主體支配的元組組成。因此本模型中讀規(guī)則為:用戶在其有效的讀范圍內,讀取元組安全模式SP值與主體許可級匹配的元組。如果某AK值對應的所有元組中所有SP值都與主體許可級不匹配,表明此實體的所有信息均對此主體隱藏了。
例1:假設某情報機構使用MLS數(shù)據(jù)庫記錄職員的信息。假定系統(tǒng)中密級分為四級分別是a、b、c、d(分別用1000,0100,0010,0001表示)。系統(tǒng)中存在2個多級關系:職員關系Empl與部門關系Dept,外觀主鍵分別為EName和DName,元組如表1、表2所示(其中SP部分的字段對用戶是透明的,下同)。
根據(jù)上面的讀規(guī)則,許可級別為的a,b,c,d的用戶看到兩表的關系實例如表3~表8所示。
不同級別的用戶,Empl引用的DName都是Dept中存在的DName,而且是受同許可級的主體支配。可見,不同用戶視圖都滿足參照完整性。同樣本例中多級安全數(shù)據(jù)庫滿足前述的其他各項完整性約束規(guī)則。
3.2 插入操作
情形1:對單個多級關系的插入操作。
(1)檢查多級關系的用戶視圖中是否存在與待插入的外觀主鍵值相同的元組,如果存在則插入失敗;否則按步驟(2)進行;
(2)檢查多級關系中是否存在各數(shù)據(jù)項與待插入元組各數(shù)據(jù)項相同的元組,如果存在則將此元組的SP值sp用sp&c代替(c代表執(zhí)行插入操作的用戶的許可級),插入完成;否則繼續(xù)下面的步驟。
(3)插入此元組,并將該元組的密級屬性置為用戶的許可級。
例2:許可級為b的用戶執(zhí)行以下插入語句:insert into Dept values(‘機要’,‘1-101’),插入后的效果如表9所示。
情形2:若是對有外鍵的多級關系進行插入操作,還要滿足參照的完整性。亦即先檢查被參照關系的用戶視圖中是否存在相應AK=fk(fk表示待插入元組的外鍵值),若存在,則直接按情形1完成插入操作;否則,插入失敗。
例3:許可級為b的用戶執(zhí)行以下插入語句:insert into Empl values(‘王平’,‘機要’),由于在Dept的b用戶視圖中不存在AK=‘機要’的元組,故插入失敗。但d級用戶卻可以成功執(zhí)行此插入操作,成功操作后結果如表10、表11所示。
3.3 更新操作
由于在本模型中,將多個不同的密級元組合并成1個元組,因此,1個元組可能代表多個密級的實例,一個許可級主體的更新操作不應該影響其他許可級的視圖。
(1)檢查待更新的元組的SP值是否為某單個密級(即二進制數(shù)只有一位為1,下同),若是,則表明此次更新不會影響其他許可級的視圖,因此可按標準關系模型的更新操作進行;否則,按以下步驟。
(2)先將此元組的SP值sp更新為sp&~c(c表示執(zhí)行更新操作的主體的許可級,下同),再按“插入操作”插入新元組,新元組各項為待更新的元組的新值。
例4:許可級為b的用戶欲執(zhí)行命令:update dept set addr=‘4-201’ where DName=‘管理’,根據(jù)表6可見,元組{管理,3-201,1100}代表了a、b密級的實例。為了不影響a的實例,先將此元組的SP從1100更新為1000,再執(zhí)行插入操作:insert into dept values(‘管理’,‘4-201’)。
3.4 刪除操作
在本模型中,1個元組可能代表多個密級的元組,故刪除規(guī)則應按下面的步驟進行:
(1)檢查待刪除元組的SP值是否為某單個密級,若是,則可按標準關系模型的刪除操作進行。否則,按以下步驟。
(2)先將此元組的SP值sp更新為sp&~c(c表示執(zhí)行刪除操作的主體的許可級)。
本模型繼承了多實例的概念,并作了改進。如果多個實例僅僅只有元組的密級屬性不同,則直接將這些實例用1個元組表示,其SP值為這些密級屬性的并集,由于實際應用中敏感數(shù)據(jù)很少,故這種規(guī)則在應用中是合理的,從而大大減少了數(shù)據(jù)的冗余。
本文提出的多級關系數(shù)據(jù)模型中使用類似“同級讀,同級寫”的規(guī)則,任何許可級的用戶都無法看到其他密級的元組(除非與此許可級用戶共享該元組),同時,也無法修改其他密級的元組(即使與此許可級用戶共享元組,修改也不會影響其他許可級的用戶視圖),既避免了隱通道,又防止了敏感數(shù)據(jù)的泄漏。
參考文獻
[1] BELL D E, LAPADULA L J P. Secure computer system: Unified exposition and multics interpretation[R]. Tech Rep MTR-2997, MITRE Corp, Bedford, MA, 1975.
[2] SANDHU R, CHEN F. The multilevel relational (MLR) data model[J]. Transactions on Information and System Security, 1998:1(1):93-132.
[3] 馮朝陽,岳麗華,翟小棟,等.一種緊湊的多級安全關系數(shù)據(jù)模型[J].計算機工程與應用,2005(4):170-174.
[4] JAJODIA S, SANDHU R, SIBLEY E. Update semantics for multilevel relations[J]. In Proceedings of the 6th Annual Computer Security Applications Conference. 1990(10):103-112.
[5] JAJODIA S, SANDHU R. Polyinstantiation integrity in multilevel relations[C]. IEEE Symposium on Security and Privacy, 1990.
[6] DENNING D E, LUNT T F. The seaview security model[C]. IEEE Symposium on Security and Privacy, 1998.
[7] JAJODIA S, SANDHU R, LUNT T F. A new polyins-tantiation integrity constraint for multilevel relations[C]. IEEE Work-shop on Computer Security Foundations, 1990.
[8] 武立福,毛宇光.一種改進的多級安全關系數(shù)據(jù)模型[J].計算機應用,2003,23(7):103-108.
[9] 馮玉才,張勇.多實例的多級安全關系數(shù)據(jù)庫數(shù)據(jù)模型研究[J].小型微型計算機系統(tǒng),2003,24(3):452-455.