《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 多級安全數(shù)據(jù)庫中推理控制功能的設(shè)計及實現(xiàn)
多級安全數(shù)據(jù)庫中推理控制功能的設(shè)計及實現(xiàn)
毛奇正 柏文陽
南京大學(xué)計算機科學(xué)與技術(shù)系(210093)
摘要: 為在數(shù)據(jù)庫安全增強工作中如何進行推理控制給出了一種較為完整的解決方案,。
Abstract:
Key words :

摘   要: 為在數(shù)據(jù)庫安全增強工作中如何進行推理控制給出了一種較為完整的解決方案,。
關(guān)鍵詞: 多級安全數(shù)據(jù)庫  推理控制  強制訪問控制  函數(shù)依賴

  信息技術(shù)的發(fā)展使得計算機已經(jīng)滲透到社會生活的各個方面,。隨著Internet的廣泛應(yīng)用,網(wǎng)上信息的開放與共享性日益增強,,因此,計算機已經(jīng)成為必不可少的信息處理手段,。但隨之而來的是對信息的惡意破壞愈加嚴重,,因而使信息安全成為研究的一個重點。數(shù)據(jù)庫作為網(wǎng)上信息的主要載體,,其安全性自然成為信息安全的重中之重,。
  當前被廣泛使用的數(shù)據(jù)庫系統(tǒng)一般只達到了C2級安全標準,為了確保數(shù)據(jù)庫中數(shù)據(jù)的安全性和可用性,,只能采用在現(xiàn)有的數(shù)據(jù)庫系統(tǒng)上進行安全增強工作的方法,。
        多級安全數(shù)據(jù)庫使用基于多級安全模型的強制訪問控制MAC(Mandatory Access Control)機制來保證數(shù)據(jù)庫的安全。但是在多級安全數(shù)據(jù)庫中,,由于推理通道的存在,,即使強制訪問機制完全發(fā)生作用,有時也不可避免地存在信息泄漏的問題,。本文針對在實現(xiàn)多級安全數(shù)據(jù)庫增強器時如何解決推理通道的問題,,提出了一種解決方案。
1  多級安全數(shù)據(jù)庫與推理問題
1.1 多級安全數(shù)據(jù)庫
  現(xiàn)實世界中的大多數(shù)應(yīng)用需要將信息劃分為不同的保密級別,,對同一條記錄內(nèi)的不同字段也可能要劃分為不同的保密級別,,甚至同一字段的不同值之間都要劃分為不同的保密級別。在多級安全數(shù)據(jù)庫體系中,,對不同的數(shù)據(jù)項賦予不同的保密級別,,然后根據(jù)數(shù)據(jù)項的密級決定某一訪問操作是否合法。在對數(shù)據(jù)進行了分級劃分后,,MAC通過一定的強制訪問控制策略來控制用戶對信息的存取,,從而保證信息的安全。
多級安全數(shù)據(jù)庫通過使用多級保護機制,,擴展了系統(tǒng)安全的粒度,,提供了更為全面的安全保證。
1.2 數(shù)據(jù)庫中的推理問題
  多級安全數(shù)據(jù)庫中的推理是指:數(shù)據(jù)庫中擁有低安全分類標識的用戶,,通過獲取低安全分類標識的數(shù)據(jù),,并通過數(shù)據(jù)庫查詢之外的操作,可以推斷出具有高安全分類標識的信息,。下面是Marks[2]給出的一個數(shù)據(jù)庫推理問題的正式定義:
  多級安全數(shù)據(jù)庫中的推理是指用戶從數(shù)據(jù)庫中獲取元組集T,,該元組具有屬性A,。此時如果可以描述出一個元組集T′,具有屬性集A′,,而且有T′不包含于T或者A′不等于A,,則從邏輯上講,此時存在一個推理通道,,從元組集T可以推導(dǎo)出元組集T′,。
  在多級安全數(shù)據(jù)庫中,通過多級安全模型及其MAC機制能夠防止具有低安全分類標識的用戶通過查詢命令來直接獲取高安全分類標識的數(shù)據(jù),。但是用戶可以通過推理來獲取高安全分類標識的數(shù)據(jù)信息,,MAC并不能解決因此而帶來的信息泄密問題。因此需要對多級安全數(shù)據(jù)庫中的推理通道進行控制,。
2  推理控制
2.1 推理問題的分類
  多級安全數(shù)據(jù)庫中的推理安全問題可分二類,。第一類問題是由于數(shù)據(jù)庫安全設(shè)計不合理導(dǎo)致分類的不連續(xù)性,從而引起的推理問題,。這類問題主要是使用數(shù)據(jù)庫中元數(shù)據(jù)信息進行推理所引起的,;第二類問題是由于語義信息而導(dǎo)致的推理問題。存儲在數(shù)據(jù)庫中的信息不僅包括個體的數(shù)據(jù)條目,,還包含這些條目間的關(guān)系,。但是關(guān)系數(shù)據(jù)模型強調(diào)有效的數(shù)據(jù)結(jié)構(gòu)和操作,缺乏一個可以充分表示應(yīng)用分類的數(shù)據(jù)關(guān)聯(lián),。所以通過對于數(shù)據(jù)項的安全分類標識不能確保數(shù)據(jù)的安全,。如果此時應(yīng)用的語義,或者說數(shù)據(jù)條目之間的關(guān)系沒有被考慮,,就會產(chǎn)生安全問題,。
2.2 推理控制的方法
  從上面對推理問題的分類可以看到,推理所使用的知識可以分成二類:一類是數(shù)據(jù)庫中元數(shù)據(jù)的信息,;另一類是數(shù)據(jù)庫中和應(yīng)用相關(guān)的數(shù)據(jù)信息,。對于第一類知識,由于只和數(shù)據(jù)庫中數(shù)據(jù)模式相關(guān),,因此這樣的信息在數(shù)據(jù)庫設(shè)計階段就可以獲得,。而第二類知識是數(shù)據(jù)庫中和應(yīng)用相關(guān)的數(shù)據(jù)信息,這樣的信息只能在數(shù)據(jù)庫運行期獲得,。由于用于推理的知識可以在不同的階段獲得,,所以可以把推理控制工作分為設(shè)計期推理控制和運行期推理控制。
  設(shè)計期推理控制研究的目的在于產(chǎn)生一個設(shè)計良好的多級安全數(shù)據(jù)庫,,從而使用戶不能通過一系列的查詢來推斷出受限制的元組,。其主要方法是在數(shù)據(jù)庫的設(shè)計階段,使用數(shù)據(jù)庫的元數(shù)據(jù)信息進行檢測,,確定可能存在的推理通道,,并修改數(shù)據(jù)庫中客體的安全分類標識,從而控制數(shù)據(jù)庫中的推理通道,。如修改不成功則要把該條函數(shù)依賴關(guān)系作為查詢期推理控制的規(guī)則傳送給查詢期推理控制模塊,。 設(shè)計期推理控制的結(jié)構(gòu)如圖1所示。


  在數(shù)據(jù)庫的設(shè)計階段并不能完全解決數(shù)據(jù)庫系統(tǒng)中的所有推理問題,,尤其是和存儲在數(shù)據(jù)庫中的具體數(shù)據(jù)相關(guān)的推理問題,。對于這樣的問題,還需要在數(shù)據(jù)庫的運行過程中對用戶的查詢操作所涉及到的數(shù)據(jù)進行檢測,,才能發(fā)現(xiàn)存在的推理通道,。在關(guān)系數(shù)據(jù)庫系統(tǒng)中,對用戶所提交的查詢命令及其查詢結(jié)果數(shù)據(jù)進行分析,,并根據(jù)系統(tǒng)中所存儲的推理規(guī)則來進行推理通道的檢測,,根據(jù)檢測的結(jié)果來進行推理控制,這一過程被稱為基于用戶查詢的推理控制,。對于需要使用只有在運行期才能獲得的外部知識的推理問題,,只能在查詢期進行相應(yīng)的控制。同時,,在設(shè)計期沒有消除的推理通道也要在查詢期進行檢查和控制,。查詢期推理控制的結(jié)構(gòu)如圖2所示。

3  設(shè)計期推理控制的設(shè)計和實現(xiàn)
3.1 設(shè)計期的推理控制
  在設(shè)計期,,主要考慮由于元數(shù)據(jù)的使用而導(dǎo)致的推理問題,。與元數(shù)據(jù)相關(guān)的推理往往是由于在安全設(shè)計時忽略了元數(shù)據(jù)知識對系統(tǒng)安全的影響,從而造成了潛在的推理通道,。對于這樣的問題,,可以通過調(diào)整系統(tǒng)的安全設(shè)計來保證信息的安全。具體的方法就是通過分析在設(shè)計期就可以獲得的元數(shù)據(jù)信息,,使用安全約束規(guī)則,,發(fā)現(xiàn)潛在的違反安全約束規(guī)則的安全設(shè)計,然后調(diào)整或者重新分配客體的安全分類標識,,從而保證運行期的安全,。這樣設(shè)計的主要優(yōu)點是:解決了由元數(shù)據(jù)引起的推理問題,同時可修改應(yīng)用的安全設(shè)計且不需要在查詢期分析大量數(shù)據(jù),,所以不會影響數(shù)據(jù)庫運行的效率,。本文研究的元數(shù)據(jù)知識主要是和函數(shù)依賴相關(guān)的信息。
  設(shè)存在一個關(guān)系模式R(A1,,A2……An),,Ai表示關(guān)系R上的屬性,r為該關(guān)系模式上的一個關(guān)系實例,,t表示關(guān)系r的一個元組,。假設(shè)X,、Y為關(guān)系R屬性子集,t(X)則表示元組t在屬性X上的取值,。如果在二個屬性集X,、Y之間存在函數(shù)依賴關(guān)系X→Y,則:對于任意一個關(guān)系實例r上的二個元組t1,、t2,,如果有t1[X]=t2[X],則必有t1[Y]=t2[Y],,也就是說Y的值依賴于X的值,。
  此時由于函數(shù)依賴關(guān)系的存在可能會產(chǎn)生信息泄漏。在多級安全數(shù)據(jù)庫中可以通過調(diào)整應(yīng)用的安全設(shè)計來消除上述的推理通道,。
3.2 設(shè)計期推理控制的設(shè)計
  設(shè)計期推理控制器主要包括以下功能:
  (1)知識獲取,。推理需要外部知識,對于推理的控制,,當然也需要獲取可能引起推理問題的外部知識,。知識獲取模塊就是用來獲取同推理分析相關(guān)的知識。它主要包括系統(tǒng)安全管理員通過系統(tǒng)提供的界面輸入在設(shè)計階段已知的函數(shù)依賴關(guān)系,。知識獲取模塊在獲取這樣的函數(shù)依賴關(guān)系之后,,首先轉(zhuǎn)化為系統(tǒng)內(nèi)部的數(shù)據(jù)結(jié)構(gòu),然后通過計算最小函數(shù)依賴集去除冗余的函數(shù)依賴關(guān)系(包括傳遞依賴和部分依賴),,從而為推理通道分析準備數(shù)據(jù),。
  (2)與強制訪問的接口。用來獲取數(shù)據(jù)庫安全控制模塊中的模式信息,,以及相關(guān)的安全分類標識信息,,即系統(tǒng)的安全設(shè)計信息。因為推理控制器對數(shù)據(jù)庫中可能存在的推理通道的分析,,主要是為了發(fā)現(xiàn)由于函數(shù)依賴存在而違反了安全約束規(guī)則的一些安全設(shè)計,。所以首先需要獲得的就是安全分類標識信息。同時對于推理通道的控制是通過修改數(shù)據(jù)庫中客體的安全分類標記來完成的,,所以需要有與強制訪問相應(yīng)的接口模塊,。通過該模塊可以獲取數(shù)據(jù)庫中客體分類標識信息,也可以修改相應(yīng)的安全分類標識,。
  對于待檢查的關(guān)系要獲取的信息為:出現(xiàn)在函數(shù)依賴集中的各個屬性的安全標記和該關(guān)系上所定義的關(guān)鍵字集合,。
  (3)推理控制模塊。在獲取了與系統(tǒng)安全設(shè)計相關(guān)的知識及與元數(shù)據(jù)相關(guān)的知識以后,,推理控制模塊根據(jù)安全設(shè)計規(guī)則對相關(guān)知識進行分析,,找到可能的推理通道,提示安全管理員,,由安全管理員修改安全標記,,從而達到去除推理通道的目的,。
  (4)與查詢期推理控制的接口。如果因為各種原因,,修改安全標記失敗,,使得設(shè)計期檢查發(fā)現(xiàn)的推理通道不能被消除,則要把這些存在問題的函數(shù)依賴記錄下來,,加入查詢期推理控制的規(guī)則庫中,以備查詢期推理控制使用,。
  本系統(tǒng)所采用的推理控制規(guī)則是:對一條函數(shù)依賴關(guān)系,,其決定因素中,除關(guān)鍵字之外,,至少有一個屬性,,它的安全標記應(yīng)該不小于被決定因素。即如果存在函數(shù)依賴a,、b,、c=>d,其中a,、b,、c的安全級別均小于d的安全級別,而d的取值又由a,、b,、c的取值所決定,則有權(quán)訪問屬性a,、b,、c,卻無權(quán)訪問d的用戶便可推知d的取值,,從而引起信息泄漏,。對于滿足BCNF的關(guān)系,因為每個決定因素都是關(guān)鍵字,,而關(guān)鍵字往往是檢索的主要依據(jù),,故安全級別較低。而在函數(shù)依賴A→B中,,如果A是關(guān)鍵字,,則即使A的安全級別低于B的安全級別,由于Unique關(guān)鍵字(包括主關(guān)鍵字)的惟一性約束要求一個Unique關(guān)鍵字只能對應(yīng)一個元組,,因此不會產(chǎn)生推理通道,。這樣的推理控制規(guī)則可以使系統(tǒng)兼具安全性和可用性。
3.3 設(shè)計期推理控制的實現(xiàn)
  系統(tǒng)實現(xiàn)的算法如下:
  輸入:某模式下待檢查的關(guān)系名
  輸出:該關(guān)系中可導(dǎo)致推理問題的函數(shù)依賴關(guān)系
  errorset={ },;Pkset={ },;fdset={ },;
  ruleset={ }
  GetPK(schemaname,tablename,,Pkset),;
  GetFD(schemaname,tablename,,fdset),;
  for each fd in fdset
  { 
    for each x in fd.forepart
    { 
        if x not in Pkset
        {if x.level>m
       m=x.level;
        }
     }
  if m<fd.hindpart.level then
  errorset=errorset∪fd
  }
  對存在推理問題的函數(shù)依賴關(guān)系的集合errorset作如下操作:
  for each e in errorset
  { 
      if (modify_level(e))
          delete e from errorset
     else
     ruleset=ruleset∪e,;
  }
  errorset存放可能引起推理問題的函數(shù)依賴關(guān)系,;fdset存放待檢查關(guān)系上定義的函數(shù)依賴集合;Pkset為該關(guān)系上的關(guān)鍵字集合,;ruleset為修改標記失敗的函數(shù)依賴的集合,,將被用來作為查詢期推理控制所使用的規(guī)則的一部分;函數(shù)modify_level用于修改安全標記,,使得函數(shù)依賴的前件至少有一個屬性的安全級別不小于后件的安全級別,。
4  查詢期推理控制的設(shè)計和實現(xiàn)
4.1 查詢期推理控制
  設(shè)計期的控制并不能避免所有的推理問題,尤其是聚集,、關(guān)聯(lián)等問題,。因為聚集推理主要通過應(yīng)用數(shù)據(jù)來進行,所以只能在數(shù)據(jù)庫的運行期進行相應(yīng)的控制,,才能解決這個問題,。
  由于多級安全數(shù)據(jù)庫保證了用戶不可以直接對敏感信息進行操作,此時信息泄漏是通過多次查詢,,根據(jù)獲得的非敏感信息按照一定的推理規(guī)則進行推理而產(chǎn)生的,。 由于每一次查詢都是通過SQL語句進行,所以只要分析多個SQL查詢及查詢返回的結(jié)果集,,就可以判斷是否存在信息泄漏,。
4.2 查詢期推理控制設(shè)計
  查詢期推理控制器主要包括下列功能:
  (1)規(guī)則的獲取。獲得數(shù)據(jù)之間的語義聯(lián)系,。這些可作為進行推理所需的規(guī)則,,包括來自設(shè)計期的推理規(guī)則、安全管理員輸入的規(guī)則和系統(tǒng)自動發(fā)現(xiàn)的推理規(guī)則,。
  (2)與強制訪問控制(MAC)的接口,。強制訪問控制模塊將直接拒絕違反MAC安全策略的查詢。通過了強制訪問檢查的用戶查詢,,將由運行期的推理檢測模塊作進一步的檢查,。
  (3)推理檢測。把結(jié)果集返回給用戶之前,根據(jù)推理規(guī)則對當前查詢結(jié)果和用戶的歷史查詢進行分析,。如果發(fā)現(xiàn)用戶可能使用了相應(yīng)的推理規(guī)則,,就說明存在潛在的信息泄漏。此時需要結(jié)合安全設(shè)計的相關(guān)信息,,判斷推導(dǎo)出的信息對該用戶來說是否屬于敏感信息,。如果是,就認為該查詢?yōu)閻阂馔评聿樵?。對于這樣的查詢需要進行控制,,在系統(tǒng)中就會向用戶返回空的結(jié)果集。
  (4)歷史查詢記錄,。由于推理檢測時要用到用戶的歷史查詢結(jié)果,,所以要存儲一段時間內(nèi)的歷史查詢。
  (5)與設(shè)計期推理控制的接口,。從設(shè)計期推理控制模塊中取得在設(shè)計期存在推理問題卻未能成功修改安全標記的所有函數(shù)依賴關(guān)系,并將其作為查詢期推理控制的規(guī)則,。
4.3 查詢期推理控制實現(xiàn)
   輸入:用戶的查詢
   輸出:結(jié)果集或空集
   result=Execsql,;known=getlog;
   rules=genRule,;
   for each r in rules
   {
   if result∪known satisfies r
     if sensitive (r)
        return { }
        }
  retrun result,;
  genRule用來生成進行推理所用到的規(guī)則,包括:采用數(shù)據(jù)挖掘中尋找關(guān)聯(lián)規(guī)則的Apriori算法自動進行的規(guī)則挖掘,;從安全管理員的輸入得到規(guī)則,;從設(shè)計期推理控制模塊獲得的推理規(guī)則。Sensitive 用來檢查規(guī)則r所泄漏的信息對用戶是否為敏感的(即安全標識高于用戶安全標(接上頁)
識),,Known存放用戶的歷史查詢記錄,,result為執(zhí)行當前查詢的結(jié)果。
5  結(jié)束語
  本文為實現(xiàn)多級安全數(shù)據(jù)庫中的推理控制提供了一種較為完整的解決方案,,為實現(xiàn)更高安全級別的安全數(shù)據(jù)庫系統(tǒng)中的推理控制提供了基礎(chǔ),。該方案目前被應(yīng)用于國家863計劃信息安全領(lǐng)域內(nèi)的數(shù)據(jù)庫安全增強技術(shù)課題中,以期實現(xiàn)一個能夠提供B2級(國家標準的結(jié)構(gòu)化保護級)安全標準的主要安全功能的安全增強器,,并取得了很好的效果,。當前,對于多級安全數(shù)據(jù)庫的推理,,很難找到一個完整的理論體系來描述所有的推理問題,。由于多級安全數(shù)據(jù)庫推理控制的復(fù)雜性,本文雖然給出了解決推理問題的完整框架,,但還需要更多的研究工作,。
參考文獻
1   Stickel X.Detection and Elimination of Inference Channels    in Multilevel Relational Database Systems.Proceeding Of    the IEEE Symposium on Security and Privacy,1993
2   Marks.Inference in MLS Database Systems.IEEE Trans on   Knowledge and Data Engineering,1996,;8(1)
3   Su T.Inferences in Database.Dept of Computer Engineering   and Science,,Case Western Reserve University,Ph.D,,1986
4   Su T,,Ozsoyogiu G.Data Dependencies and Inference Control   in Multilevel Relational Database Systems.Proceedings of   the IEEE Symposium on Security and Privacy,1987
5   Han J W,,Kamber M.Data Mining Concepts and Techniques.    New York:Morgan Kaufmann Publishers,,2001
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。