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