摘 要: 為在數(shù)據(jù)庫安全增強(qiáng)工作中如何進(jìn)行推理控制給出了一種較為完整的解決方案。
關(guān)鍵詞: 多級(jí)安全數(shù)據(jù)庫 推理控制 強(qiáng)制訪問控制 函數(shù)依賴
信息技術(shù)的發(fā)展使得計(jì)算機(jī)已經(jīng)滲透到社會(huì)生活的各個(gè)方面。隨著Internet的廣泛應(yīng)用,網(wǎng)上信息的開放與共享性日益增強(qiáng),因此,計(jì)算機(jī)已經(jīng)成為必不可少的信息處理手段。但隨之而來的是對(duì)信息的惡意破壞愈加嚴(yán)重,因而使信息安全成為研究的一個(gè)重點(diǎn)。數(shù)據(jù)庫作為網(wǎng)上信息的主要載體,其安全性自然成為信息安全的重中之重。
當(dāng)前被廣泛使用的數(shù)據(jù)庫系統(tǒng)一般只達(dá)到了C2級(jí)安全標(biāo)準(zhǔn),為了確保數(shù)據(jù)庫中數(shù)據(jù)的安全性和可用性,只能采用在現(xiàn)有的數(shù)據(jù)庫系統(tǒng)上進(jìn)行安全增強(qiáng)工作的方法。
多級(jí)安全數(shù)據(jù)庫使用基于多級(jí)安全模型的強(qiáng)制訪問控制MAC(Mandatory Access Control)機(jī)制來保證數(shù)據(jù)庫的安全。但是在多級(jí)安全數(shù)據(jù)庫中,由于推理通道的存在,即使強(qiáng)制訪問機(jī)制完全發(fā)生作用,有時(shí)也不可避免地存在信息泄漏的問題。本文針對(duì)在實(shí)現(xiàn)多級(jí)安全數(shù)據(jù)庫增強(qiáng)器時(shí)如何解決推理通道的問題,提出了一種解決方案。
1 多級(jí)安全數(shù)據(jù)庫與推理問題
1.1 多級(jí)安全數(shù)據(jù)庫
現(xiàn)實(shí)世界中的大多數(shù)應(yīng)用需要將信息劃分為不同的保密級(jí)別,對(duì)同一條記錄內(nèi)的不同字段也可能要?jiǎng)澐譃椴煌谋C芗?jí)別,甚至同一字段的不同值之間都要?jiǎng)澐譃椴煌谋C芗?jí)別。在多級(jí)安全數(shù)據(jù)庫體系中,對(duì)不同的數(shù)據(jù)項(xiàng)賦予不同的保密級(jí)別,然后根據(jù)數(shù)據(jù)項(xiàng)的密級(jí)決定某一訪問操作是否合法。在對(duì)數(shù)據(jù)進(jìn)行了分級(jí)劃分后,MAC通過一定的強(qiáng)制訪問控制策略來控制用戶對(duì)信息的存取,從而保證信息的安全。
多級(jí)安全數(shù)據(jù)庫通過使用多級(jí)保護(hù)機(jī)制,擴(kuò)展了系統(tǒng)安全的粒度,提供了更為全面的安全保證。
1.2 數(shù)據(jù)庫中的推理問題
多級(jí)安全數(shù)據(jù)庫中的推理是指:數(shù)據(jù)庫中擁有低安全分類標(biāo)識(shí)的用戶,通過獲取低安全分類標(biāo)識(shí)的數(shù)據(jù),并通過數(shù)據(jù)庫查詢之外的操作,可以推斷出具有高安全分類標(biāo)識(shí)的信息。下面是Marks[2]給出的一個(gè)數(shù)據(jù)庫推理問題的正式定義:
多級(jí)安全數(shù)據(jù)庫中的推理是指用戶從數(shù)據(jù)庫中獲取元組集T,該元組具有屬性A。此時(shí)如果可以描述出一個(gè)元組集T′,具有屬性集A′,而且有T′不包含于T或者A′不等于A,則從邏輯上講,此時(shí)存在一個(gè)推理通道,從元組集T可以推導(dǎo)出元組集T′。
在多級(jí)安全數(shù)據(jù)庫中,通過多級(jí)安全模型及其MAC機(jī)制能夠防止具有低安全分類標(biāo)識(shí)的用戶通過查詢命令來直接獲取高安全分類標(biāo)識(shí)的數(shù)據(jù)。但是用戶可以通過推理來獲取高安全分類標(biāo)識(shí)的數(shù)據(jù)信息,MAC并不能解決因此而帶來的信息泄密問題。因此需要對(duì)多級(jí)安全數(shù)據(jù)庫中的推理通道進(jìn)行控制。
2 推理控制
2.1 推理問題的分類
多級(jí)安全數(shù)據(jù)庫中的推理安全問題可分二類。第一類問題是由于數(shù)據(jù)庫安全設(shè)計(jì)不合理導(dǎo)致分類的不連續(xù)性,從而引起的推理問題。這類問題主要是使用數(shù)據(jù)庫中元數(shù)據(jù)信息進(jìn)行推理所引起的;第二類問題是由于語義信息而導(dǎo)致的推理問題。存儲(chǔ)在數(shù)據(jù)庫中的信息不僅包括個(gè)體的數(shù)據(jù)條目,還包含這些條目間的關(guān)系。但是關(guān)系數(shù)據(jù)模型強(qiáng)調(diào)有效的數(shù)據(jù)結(jié)構(gòu)和操作,缺乏一個(gè)可以充分表示應(yīng)用分類的數(shù)據(jù)關(guān)聯(lián)。所以通過對(duì)于數(shù)據(jù)項(xiàng)的安全分類標(biāo)識(shí)不能確保數(shù)據(jù)的安全。如果此時(shí)應(yīng)用的語義,或者說數(shù)據(jù)條目之間的關(guān)系沒有被考慮,就會(huì)產(chǎn)生安全問題。
2.2 推理控制的方法
從上面對(duì)推理問題的分類可以看到,推理所使用的知識(shí)可以分成二類:一類是數(shù)據(jù)庫中元數(shù)據(jù)的信息;另一類是數(shù)據(jù)庫中和應(yīng)用相關(guān)的數(shù)據(jù)信息。對(duì)于第一類知識(shí),由于只和數(shù)據(jù)庫中數(shù)據(jù)模式相關(guān),因此這樣的信息在數(shù)據(jù)庫設(shè)計(jì)階段就可以獲得。而第二類知識(shí)是數(shù)據(jù)庫中和應(yīng)用相關(guān)的數(shù)據(jù)信息,這樣的信息只能在數(shù)據(jù)庫運(yùn)行期獲得。由于用于推理的知識(shí)可以在不同的階段獲得,所以可以把推理控制工作分為設(shè)計(jì)期推理控制和運(yùn)行期推理控制。
設(shè)計(jì)期推理控制研究的目的在于產(chǎn)生一個(gè)設(shè)計(jì)良好的多級(jí)安全數(shù)據(jù)庫,從而使用戶不能通過一系列的查詢來推斷出受限制的元組。其主要方法是在數(shù)據(jù)庫的設(shè)計(jì)階段,使用數(shù)據(jù)庫的元數(shù)據(jù)信息進(jìn)行檢測(cè),確定可能存在的推理通道,并修改數(shù)據(jù)庫中客體的安全分類標(biāo)識(shí),從而控制數(shù)據(jù)庫中的推理通道。如修改不成功則要把該條函數(shù)依賴關(guān)系作為查詢期推理控制的規(guī)則傳送給查詢期推理控制模塊。 設(shè)計(jì)期推理控制的結(jié)構(gòu)如圖1所示。
在數(shù)據(jù)庫的設(shè)計(jì)階段并不能完全解決數(shù)據(jù)庫系統(tǒng)中的所有推理問題,尤其是和存儲(chǔ)在數(shù)據(jù)庫中的具體數(shù)據(jù)相關(guān)的推理問題。對(duì)于這樣的問題,還需要在數(shù)據(jù)庫的運(yùn)行過程中對(duì)用戶的查詢操作所涉及到的數(shù)據(jù)進(jìn)行檢測(cè),才能發(fā)現(xiàn)存在的推理通道。在關(guān)系數(shù)據(jù)庫系統(tǒng)中,對(duì)用戶所提交的查詢命令及其查詢結(jié)果數(shù)據(jù)進(jìn)行分析,并根據(jù)系統(tǒng)中所存儲(chǔ)的推理規(guī)則來進(jìn)行推理通道的檢測(cè),根據(jù)檢測(cè)的結(jié)果來進(jìn)行推理控制,這一過程被稱為基于用戶查詢的推理控制。對(duì)于需要使用只有在運(yùn)行期才能獲得的外部知識(shí)的推理問題,只能在查詢期進(jìn)行相應(yīng)的控制。同時(shí),在設(shè)計(jì)期沒有消除的推理通道也要在查詢期進(jìn)行檢查和控制。查詢期推理控制的結(jié)構(gòu)如圖2所示。
3 設(shè)計(jì)期推理控制的設(shè)計(jì)和實(shí)現(xiàn)
3.1 設(shè)計(jì)期的推理控制
在設(shè)計(jì)期,主要考慮由于元數(shù)據(jù)的使用而導(dǎo)致的推理問題。與元數(shù)據(jù)相關(guān)的推理往往是由于在安全設(shè)計(jì)時(shí)忽略了元數(shù)據(jù)知識(shí)對(duì)系統(tǒng)安全的影響,從而造成了潛在的推理通道。對(duì)于這樣的問題,可以通過調(diào)整系統(tǒng)的安全設(shè)計(jì)來保證信息的安全。具體的方法就是通過分析在設(shè)計(jì)期就可以獲得的元數(shù)據(jù)信息,使用安全約束規(guī)則,發(fā)現(xiàn)潛在的違反安全約束規(guī)則的安全設(shè)計(jì),然后調(diào)整或者重新分配客體的安全分類標(biāo)識(shí),從而保證運(yùn)行期的安全。這樣設(shè)計(jì)的主要優(yōu)點(diǎn)是:解決了由元數(shù)據(jù)引起的推理問題,同時(shí)可修改應(yīng)用的安全設(shè)計(jì)且不需要在查詢期分析大量數(shù)據(jù),所以不會(huì)影響數(shù)據(jù)庫運(yùn)行的效率。本文研究的元數(shù)據(jù)知識(shí)主要是和函數(shù)依賴相關(guān)的信息。
設(shè)存在一個(gè)關(guān)系模式R(A1,A2……An),Ai表示關(guān)系R上的屬性,r為該關(guān)系模式上的一個(gè)關(guān)系實(shí)例,t表示關(guān)系r的一個(gè)元組。假設(shè)X、Y為關(guān)系R屬性子集,t(X)則表示元組t在屬性X上的取值。如果在二個(gè)屬性集X、Y之間存在函數(shù)依賴關(guān)系X→Y,則:對(duì)于任意一個(gè)關(guān)系實(shí)例r上的二個(gè)元組t1、t2,如果有t1[X]=t2[X],則必有t1[Y]=t2[Y],也就是說Y的值依賴于X的值。
此時(shí)由于函數(shù)依賴關(guān)系的存在可能會(huì)產(chǎn)生信息泄漏。在多級(jí)安全數(shù)據(jù)庫中可以通過調(diào)整應(yīng)用的安全設(shè)計(jì)來消除上述的推理通道。
3.2 設(shè)計(jì)期推理控制的設(shè)計(jì)
設(shè)計(jì)期推理控制器主要包括以下功能:
(1)知識(shí)獲取。推理需要外部知識(shí),對(duì)于推理的控制,當(dāng)然也需要獲取可能引起推理問題的外部知識(shí)。知識(shí)獲取模塊就是用來獲取同推理分析相關(guān)的知識(shí)。它主要包括系統(tǒng)安全管理員通過系統(tǒng)提供的界面輸入在設(shè)計(jì)階段已知的函數(shù)依賴關(guān)系。知識(shí)獲取模塊在獲取這樣的函數(shù)依賴關(guān)系之后,首先轉(zhuǎn)化為系統(tǒng)內(nèi)部的數(shù)據(jù)結(jié)構(gòu),然后通過計(jì)算最小函數(shù)依賴集去除冗余的函數(shù)依賴關(guān)系(包括傳遞依賴和部分依賴),從而為推理通道分析準(zhǔn)備數(shù)據(jù)。
(2)與強(qiáng)制訪問的接口。用來獲取數(shù)據(jù)庫安全控制模塊中的模式信息,以及相關(guān)的安全分類標(biāo)識(shí)信息,即系統(tǒng)的安全設(shè)計(jì)信息。因?yàn)橥评砜刂破鲗?duì)數(shù)據(jù)庫中可能存在的推理通道的分析,主要是為了發(fā)現(xiàn)由于函數(shù)依賴存在而違反了安全約束規(guī)則的一些安全設(shè)計(jì)。所以首先需要獲得的就是安全分類標(biāo)識(shí)信息。同時(shí)對(duì)于推理通道的控制是通過修改數(shù)據(jù)庫中客體的安全分類標(biāo)記來完成的,所以需要有與強(qiáng)制訪問相應(yīng)的接口模塊。通過該模塊可以獲取數(shù)據(jù)庫中客體分類標(biāo)識(shí)信息,也可以修改相應(yīng)的安全分類標(biāo)識(shí)。
對(duì)于待檢查的關(guān)系要獲取的信息為:出現(xiàn)在函數(shù)依賴集中的各個(gè)屬性的安全標(biāo)記和該關(guān)系上所定義的關(guān)鍵字集合。
(3)推理控制模塊。在獲取了與系統(tǒng)安全設(shè)計(jì)相關(guān)的知識(shí)及與元數(shù)據(jù)相關(guān)的知識(shí)以后,推理控制模塊根據(jù)安全設(shè)計(jì)規(guī)則對(duì)相關(guān)知識(shí)進(jìn)行分析,找到可能的推理通道,提示安全管理員,由安全管理員修改安全標(biāo)記,從而達(dá)到去除推理通道的目的。
(4)與查詢期推理控制的接口。如果因?yàn)楦鞣N原因,修改安全標(biāo)記失敗,使得設(shè)計(jì)期檢查發(fā)現(xiàn)的推理通道不能被消除,則要把這些存在問題的函數(shù)依賴記錄下來,加入查詢期推理控制的規(guī)則庫中,以備查詢期推理控制使用。
本系統(tǒng)所采用的推理控制規(guī)則是:對(duì)一條函數(shù)依賴關(guān)系,其決定因素中,除關(guān)鍵字之外,至少有一個(gè)屬性,它的安全標(biāo)記應(yīng)該不小于被決定因素。即如果存在函數(shù)依賴a、b、c=>d,其中a、b、c的安全級(jí)別均小于d的安全級(jí)別,而d的取值又由a、b、c的取值所決定,則有權(quán)訪問屬性a、b、c,卻無權(quán)訪問d的用戶便可推知d的取值,從而引起信息泄漏。對(duì)于滿足BCNF的關(guān)系,因?yàn)槊總€(gè)決定因素都是關(guān)鍵字,而關(guān)鍵字往往是檢索的主要依據(jù),故安全級(jí)別較低。而在函數(shù)依賴A→B中,如果A是關(guān)鍵字,則即使A的安全級(jí)別低于B的安全級(jí)別,由于Unique關(guān)鍵字(包括主關(guān)鍵字)的惟一性約束要求一個(gè)Unique關(guān)鍵字只能對(duì)應(yīng)一個(gè)元組,因此不會(huì)產(chǎn)生推理通道。這樣的推理控制規(guī)則可以使系統(tǒng)兼具安全性和可用性。
3.3 設(shè)計(jì)期推理控制的實(shí)現(xiàn)
系統(tǒng)實(shí)現(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
}
對(duì)存在推理問題的函數(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為修改標(biāo)記失敗的函數(shù)依賴的集合,將被用來作為查詢期推理控制所使用的規(guī)則的一部分;函數(shù)modify_level用于修改安全標(biāo)記,使得函數(shù)依賴的前件至少有一個(gè)屬性的安全級(jí)別不小于后件的安全級(jí)別。
4 查詢期推理控制的設(shè)計(jì)和實(shí)現(xiàn)
4.1 查詢期推理控制
設(shè)計(jì)期的控制并不能避免所有的推理問題,尤其是聚集、關(guān)聯(lián)等問題。因?yàn)榫奂评碇饕ㄟ^應(yīng)用數(shù)據(jù)來進(jìn)行,所以只能在數(shù)據(jù)庫的運(yùn)行期進(jìn)行相應(yīng)的控制,才能解決這個(gè)問題。
由于多級(jí)安全數(shù)據(jù)庫保證了用戶不可以直接對(duì)敏感信息進(jìn)行操作,此時(shí)信息泄漏是通過多次查詢,根據(jù)獲得的非敏感信息按照一定的推理規(guī)則進(jìn)行推理而產(chǎn)生的。 由于每一次查詢都是通過SQL語句進(jìn)行,所以只要分析多個(gè)SQL查詢及查詢返回的結(jié)果集,就可以判斷是否存在信息泄漏。
4.2 查詢期推理控制設(shè)計(jì)
查詢期推理控制器主要包括下列功能:
(1)規(guī)則的獲取。獲得數(shù)據(jù)之間的語義聯(lián)系。這些可作為進(jìn)行推理所需的規(guī)則,包括來自設(shè)計(jì)期的推理規(guī)則、安全管理員輸入的規(guī)則和系統(tǒng)自動(dòng)發(fā)現(xiàn)的推理規(guī)則。
(2)與強(qiáng)制訪問控制(MAC)的接口。強(qiáng)制訪問控制模塊將直接拒絕違反MAC安全策略的查詢。通過了強(qiáng)制訪問檢查的用戶查詢,將由運(yùn)行期的推理檢測(cè)模塊作進(jìn)一步的檢查。
(3)推理檢測(cè)。把結(jié)果集返回給用戶之前,根據(jù)推理規(guī)則對(duì)當(dāng)前查詢結(jié)果和用戶的歷史查詢進(jìn)行分析。如果發(fā)現(xiàn)用戶可能使用了相應(yīng)的推理規(guī)則,就說明存在潛在的信息泄漏。此時(shí)需要結(jié)合安全設(shè)計(jì)的相關(guān)信息,判斷推導(dǎo)出的信息對(duì)該用戶來說是否屬于敏感信息。如果是,就認(rèn)為該查詢?yōu)閻阂馔评聿樵?。?duì)于這樣的查詢需要進(jìn)行控制,在系統(tǒng)中就會(huì)向用戶返回空的結(jié)果集。
(4)歷史查詢記錄。由于推理檢測(cè)時(shí)要用到用戶的歷史查詢結(jié)果,所以要存儲(chǔ)一段時(shí)間內(nèi)的歷史查詢。
(5)與設(shè)計(jì)期推理控制的接口。從設(shè)計(jì)期推理控制模塊中取得在設(shè)計(jì)期存在推理問題卻未能成功修改安全標(biāo)記的所有函數(shù)依賴關(guān)系,并將其作為查詢期推理控制的規(guī)則。
4.3 查詢期推理控制實(shí)現(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用來生成進(jìn)行推理所用到的規(guī)則,包括:采用數(shù)據(jù)挖掘中尋找關(guān)聯(lián)規(guī)則的Apriori算法自動(dòng)進(jìn)行的規(guī)則挖掘;從安全管理員的輸入得到規(guī)則;從設(shè)計(jì)期推理控制模塊獲得的推理規(guī)則。Sensitive 用來檢查規(guī)則r所泄漏的信息對(duì)用戶是否為敏感的(即安全標(biāo)識(shí)高于用戶安全標(biāo)(接上頁)
識(shí)),Known存放用戶的歷史查詢記錄,result為執(zhí)行當(dāng)前查詢的結(jié)果。
5 結(jié)束語
本文為實(shí)現(xiàn)多級(jí)安全數(shù)據(jù)庫中的推理控制提供了一種較為完整的解決方案,為實(shí)現(xiàn)更高安全級(jí)別的安全數(shù)據(jù)庫系統(tǒng)中的推理控制提供了基礎(chǔ)。該方案目前被應(yīng)用于國家863計(jì)劃信息安全領(lǐng)域內(nèi)的數(shù)據(jù)庫安全增強(qiáng)技術(shù)課題中,以期實(shí)現(xiàn)一個(gè)能夠提供B2級(jí)(國家標(biāo)準(zhǔn)的結(jié)構(gòu)化保護(hù)級(jí))安全標(biāo)準(zhǔn)的主要安全功能的安全增強(qiáng)器,并取得了很好的效果。當(dāng)前,對(duì)于多級(jí)安全數(shù)據(jù)庫的推理,很難找到一個(gè)完整的理論體系來描述所有的推理問題。由于多級(jí)安全數(shù)據(jù)庫推理控制的復(fù)雜性,本文雖然給出了解決推理問題的完整框架,但還需要更多的研究工作。
參考文獻(xiàn)
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