第6章數(shù)庫安全_第1頁
第6章數(shù)庫安全_第2頁
第6章數(shù)庫安全_第3頁
第6章數(shù)庫安全_第4頁
第6章數(shù)庫安全_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第6章 數(shù)據(jù)庫安全本章要點r 數(shù)據(jù)庫完整性:記錄完整性、數(shù)據(jù)正確性和更新完整性 r 數(shù)據(jù)庫安全:訪問控制、推理和聚集r 多級安全數(shù)據(jù)庫:分區(qū)、加密封裝和過濾數(shù)據(jù)r 數(shù)據(jù)挖掘應用的安全 保護數(shù)據(jù)是大多數(shù)安全系統(tǒng)的核心,許多用戶依靠數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(dbms, database management system)來管理并保護數(shù)據(jù)。基于此原因,我們重點研究數(shù)據(jù)庫管理系統(tǒng)的安全,并將其作為一個示例來說明如何設計并實現(xiàn)完成特殊任務的應用程序的安全。 然而,數(shù)據(jù)庫管理系統(tǒng)僅提供一個綜合保護效果。長期以來,我們已經(jīng)深化了對數(shù)據(jù)庫安全問題的理解,并且獲得了一些好的控制方法。但是,也有一些仍然無法

2、控制的安全隱患。6.1 數(shù)據(jù)庫簡介 6.1.1 數(shù)據(jù)庫概念 數(shù)據(jù)庫數(shù)據(jù)庫(database)是數(shù)據(jù)數(shù)據(jù)以及按某種指定關系組織數(shù)據(jù)的一組規(guī)則規(guī)則的集合。用戶使用這些規(guī)則來描述數(shù)據(jù)的邏輯格式。數(shù)據(jù)項存儲在文件中,但是用戶不必關心文件的精確物理格式。數(shù)據(jù)庫管理員數(shù)據(jù)庫管理員(database administrator)負責定義組織數(shù)據(jù)的規(guī)則和控制對數(shù)據(jù)庫的訪問。用戶通過數(shù)據(jù)庫管理數(shù)據(jù)庫管理器器(database manager)或數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(dbms)程序非正式地稱為前端前端(front end)使用數(shù)據(jù)庫。 6.1.2 數(shù)據(jù)庫組成 數(shù)據(jù)庫文件由記錄記錄(record)組成,每個

3、記錄包含了一組相關的數(shù)據(jù)。每個記錄包含域域(field)或元素元素(element),即它們的基本數(shù)據(jù)項。表 6.1 一個數(shù)據(jù)庫的實例adams212 market st. columbusoh43210benchly501 union st.chicagoil60603carter411 elm st.columbusoh432106.1.2 數(shù)據(jù)庫組成(續(xù))圖 6.1 一個數(shù)據(jù)庫的相關部分并非所有數(shù)據(jù)庫都可以非常容易地用一張單一、緊湊的表來表示。6.1.2 數(shù)據(jù)庫組成(續(xù)) 數(shù)據(jù)庫的邏輯結(jié)構(gòu)稱為模式模式(schema)。一名特殊的用戶可能只允許訪問數(shù)據(jù)庫的一部分,稱之為子模式子模式(sub

4、schema)。 表 6.2 圖6.1中的數(shù)據(jù)庫模式namefirstaddresscitystatezipairportadamscharles212 market st.columbusoh43210cmhadamsedward212 market st.columbusoh43210cmhbnchlyzeke501 union st.chicagoil60603ordcartermarlene411 elm st.columbusoh43210cmhcarterbeth411 elm st.columbusoh43210cmhcarterben411 elm st.columbusoh4

5、3210cmhcarterlisabeth411 elm st.columbusoh43210cmhcartermary411 elm st.columbusoh43210cmh6.1.2 數(shù)據(jù)庫組成(續(xù)) 數(shù)據(jù)庫的規(guī)則要求以列名識別列,列名也稱為數(shù)據(jù)庫的屬性屬性(attribute),列的集合構(gòu)成了一個關系關系(relation)。關系描述了有關數(shù)據(jù)值的簇簇(cluster),每一簇可能會是2、3、4、n元組(n表示任意值)。表6.3 數(shù)據(jù)庫中的關系namezipadams43210benchly60603carter432106.1.2 數(shù)據(jù)庫組成(續(xù)) 查詢操作查詢操作 用戶通過dbms

6、的命令與數(shù)據(jù)庫交互,命令有:檢索、修改、增加或刪除數(shù)據(jù)庫中的域和記錄。查詢查詢(query)是一個命令,數(shù)據(jù)庫管理系統(tǒng)有構(gòu)成查詢語句的精確的語法規(guī)則。大多數(shù)查詢語言使用類英語符號表示,其中很多以sql語言為基礎。查詢結(jié)果為一個子模式,該模式由滿足給定條件的記錄構(gòu)成。6.1.2 數(shù)據(jù)庫組成(續(xù))例如,select zip=43210。 namefirstaddresscitystatezipairportadamscharles212 market st.columbusoh43210cmhadamsedward212 market st.columbusoh43210cmhcartermarl

7、ene411 elm st.columbusoh43210cmhcarterbeth411 elm st.columbusoh43210cmhcarterben411 elm st.columbusoh43210cmhcarterlisabeth411 elm st.columbusoh43210cmhcartermary411 elm st.columbusoh43210cmh另外,更復雜的選擇條件包含邏輯運算,如()或()以及比較運算符()。例如,select (zip=43210)(name=adams) 。表6.4 選擇查詢的結(jié)果6.1.2 數(shù)據(jù)庫組成(續(xù)) 在選擇了記錄后,我們可以對

8、這些記錄的一個或多個屬性進行投影投影(project)運算。投影操作是從這些滿足條件的記錄中選取滿足條件的列(域)。選擇-投影操作的結(jié)果是選擇的記錄在指定屬性上值的集合。例如, show name, first where zip=43210。表6.5 選擇-投影查詢結(jié)果adamscharlesadamsedwardcartermarlenecarterbethcarterbencarterlisabethcartermary6.1.2 數(shù)據(jù)庫組成(續(xù)) 我們也可以使用連接連接(join)查詢來根據(jù)相同的元素合并兩個模式。該操作的結(jié)果是一個子模式,該子模式在相同元素上有相同的值。例如, sel

9、ect name, airport from name-zip join zip-aiport on name-zip.zip=zip-aiport.zip。圖 6.2 選擇-投影-連接查詢的結(jié)果6.1.3 數(shù)據(jù)庫的優(yōu)點 數(shù)據(jù)庫是數(shù)據(jù)的一個集合,它被集中存儲和維護,以滿足人們的訪問需求。這樣,與簡單的文件系統(tǒng)相比,數(shù)據(jù)庫提供了很多好處: 共享訪問共享訪問:以便用戶使用一些公共、集中的數(shù)據(jù)。 最小冗余最小冗余:使用戶不必自己收集和保存數(shù)據(jù)集。 數(shù)據(jù)一致性數(shù)據(jù)一致性:改變一個數(shù)據(jù)值將影響所有使用該數(shù)據(jù)值的用戶。 數(shù)據(jù)完整性數(shù)據(jù)完整性:保護數(shù)據(jù)值,使偶然或惡意的行為不會改變數(shù)值。 訪問控制訪問控制:

10、只有授權用戶才允許瀏覽或修改數(shù)據(jù)值。 # 數(shù)據(jù)庫的安全利益和性能之間存在沖突。這種沖突不足為怪,因為加強安全措施通常要增加計算機系統(tǒng)的規(guī)模和復雜度。 6.2 安全需求 以下為數(shù)據(jù)庫的一些安全需求: (1) 數(shù)據(jù)庫的物理完整性數(shù)據(jù)庫的物理完整性:數(shù)據(jù)庫中的數(shù)據(jù)不受停電之類影響,并且人們可以重建被破壞的數(shù)據(jù)庫。 (2) 數(shù)據(jù)庫的邏輯完整性數(shù)據(jù)庫的邏輯完整性:保護數(shù)據(jù)庫的結(jié)構(gòu)。 (3) 元素的完整性元素的完整性:每個元素中包含的數(shù)據(jù)都是正確的。 (4) 可審計性可審計性:可追蹤誰訪問了數(shù)據(jù)庫中的哪些元素。 (5) 訪問控制訪問控制:用戶只能訪問被授權的用戶。 (6) 用戶鑒別用戶鑒別:對每個用戶都必

11、須鑒別。 (7) 可用性可用性:用戶可以訪問數(shù)據(jù)庫中的授權數(shù)據(jù)和一般數(shù)據(jù)。 6.2.1 數(shù)據(jù)庫完整性 如果數(shù)據(jù)庫以集中的數(shù)據(jù)倉庫方式提供數(shù)據(jù)訪問服務,則用戶必須相信其中的數(shù)據(jù)值是正確的。有兩種情況會影響數(shù)據(jù)的完整性:整個數(shù)據(jù)庫被損壞以及單個數(shù)據(jù)項變得不可讀。整個數(shù)據(jù)庫的完整性由dbms、操作系統(tǒng)和計算系統(tǒng)管理員負責。保護整個數(shù)據(jù)庫的方法之一是定期備份數(shù)據(jù)庫系統(tǒng)中的所有文件。 有時,能夠在故障點重建數(shù)據(jù)庫非常重要。dbms需要維護一個事務日志。在系統(tǒng)發(fā)生故障后,可通過重新裝入數(shù)據(jù)庫的后備副本并重新執(zhí)行“日志”記錄所有的事務,而獲得用戶的正確狀態(tài)。6.2.2 元素完整性 元素完整性指數(shù)據(jù)庫元素的正

12、確性或準確性。dbms采用三種方式來維護數(shù)據(jù)庫中每個元素的完整: (1) dbms可以利用域檢查域檢查(field check),確保某個域的所有值在合適的范圍之內(nèi)。域檢查確保了值在指定界內(nèi)或不大于另外兩個域的值之和,也可防止一些簡單的錯誤,如用戶輸入數(shù)據(jù)錯誤。 6.2.2 元素完整性(續(xù)) (2) 訪問控制訪問控制(access control)以及集中管理的方式。但誰該共享重要的文件?誰擁有更新元素的權限?如果兩個用戶更改時相互沖突,如何解決?如何檢查和處理重復記錄?都是數(shù)據(jù)庫管理員需要解決的問題。 (3) 更改更改日志日志(change log)。更改日志維護和保存了數(shù)據(jù)庫的每次修改,同

13、時記錄初始值和更新值。6.2.3 可審計性 在某些應用中,需要產(chǎn)生關于數(shù)據(jù)庫的所有訪問(或讀寫)的審計記錄,這個記錄可以協(xié)助維護數(shù)據(jù)庫的完整性,至少可以在發(fā)生故障后,為分析解決問題提供依據(jù)。另一個優(yōu)點是可以掌握用戶不斷增加對被保護數(shù)據(jù)的訪問。單一的訪問不會暴露被保護的數(shù)據(jù),但在一系列連續(xù)的訪問后,將數(shù)據(jù)綜合起來就可能發(fā)現(xiàn)被保護的數(shù)據(jù)。在這種情況下,審計追蹤可以確定用戶已經(jīng)獲得的數(shù)據(jù)線索,然后指導做出是否還應該允許用戶做進一步查詢的決定。 6.2.3 可審計性 (續(xù)) 審計粒度是審計的障礙。數(shù)據(jù)庫的審計蹤跡應該包括對記錄、域甚至元素級的訪問,大多數(shù)數(shù)據(jù)庫的應用不能達到這種程度。 此外,在例如用戶

14、執(zhí)行選擇操作時,用戶可以訪問數(shù)據(jù)但并未獲得數(shù)據(jù)的具體值訪問一個記錄或元素后,系統(tǒng)不將結(jié)果數(shù)據(jù)傳遞給用戶,這種情況稱穿過問題穿過問題(pass-through problem)。同時,用戶也可以不直接訪問元素而獲得它們的值。因此,只記錄所有直接訪問的日志可能夸大或低估了用戶對數(shù)據(jù)庫的實際了解情況。 6.2.4 訪問控制 數(shù)據(jù)庫通常按照用戶的訪問權限進行邏輯分割。限制訪問是數(shù)據(jù)庫集中管理形式的職責和優(yōu)勢。dbms需要實施這樣的訪問策略:授權訪問所有指定的數(shù)據(jù),阻止訪問禁止的數(shù)據(jù)。數(shù)據(jù)庫管理員需要分別以視圖、關系、域、記錄、甚至元素級給予說明。用戶或程序可能擁有的權限包括:讀、改變、刪除或附加一個值

15、、增加或刪除整個域或記錄、重組數(shù)據(jù)庫。6.2.4 訪問控制(續(xù)) 對數(shù)據(jù)庫的訪問控制比對操作系統(tǒng)的訪問控制更為復雜。雖然在操作系統(tǒng)中用戶通常不可能通過讀一個文件來推理其他文件的內(nèi)容,但在數(shù)據(jù)庫中則可能通過讀其他元素的值而推知另一個元素的值。從已獲得的數(shù)據(jù)值推斷更多的值,稱為推理推理(inference)。限制推理意味著要禁止一些特定的路徑來阻止可能的推理,但也限制了某些用戶的正常查詢,這樣做實際降低了dbms的性能。 因為數(shù)據(jù)庫中的每個文件可能還包含幾百個數(shù)據(jù)域,訪問控制的實現(xiàn)要比操作系統(tǒng)困難得多,粒度的大小影響了處理的效率。 6.2.5 用戶鑒別 通常,數(shù)據(jù)庫作為應用程序運行在操作系統(tǒng)之上。

16、這種設計意味著dbms和操作系統(tǒng)之間沒有可信路徑,所以dbms必須對所有接收到的數(shù)據(jù)持懷疑態(tài)度,包括用戶鑒別。因此,dbms不得不自己進行用戶鑒別。6.2.6 可用性 對于許多用戶來說,dbms 是可執(zhí)行的應用程序。用戶通常把dbms看作是用來執(zhí)行特殊任務的基本工具。當系統(tǒng)不可用時,用戶會清楚地意識到此時bdms是不可用的。這實際上是要求dbms有高可用性。6.2.7 完整性/機密性/可用性 每個元素以至于整個數(shù)據(jù)庫都要求完整性 ,因此,完整性是設計bdms時主要關心的問題。 由于存在推理攻擊,所以用戶可以通過推理間接獲取敏感數(shù)據(jù),機密性成為數(shù)據(jù)庫的關鍵問題。 數(shù)據(jù)庫開發(fā)的初衷就是為了更好利用

17、共享訪問,所以可用性也是一個關鍵問題,然而,可用性和機密性相互沖突。 6.3 可靠性和完整性 軟件可靠性可靠性(reliability)是指軟件能夠長時間無故障地運行。dbms有幾種方法保護數(shù)據(jù)以防止丟失或被破壞。數(shù)據(jù)庫的可靠性和完整性可以從以下三個級別來考察: (1) 數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性:在磁盤驅(qū)動器或數(shù)據(jù)庫主索引損壞后,保障整個數(shù)據(jù)庫不受損害。 (2) 元素完整性元素完整性:只有授權用戶可以寫或修改一個特殊的數(shù)據(jù)元素。 (3) 元素正確性元素正確性:只有正確的值才能寫入數(shù)據(jù)庫。檢查元素值可以防止插入不適當?shù)闹?。同時,設定的限制條件也可以發(fā)現(xiàn)錯誤值。 6.3.1 操作系統(tǒng)提供的保護特性

18、 操作系統(tǒng)對所有計算系統(tǒng)的資源提供保護。當操作系統(tǒng)負責管理時,數(shù)據(jù)庫文件會被周期性備份。操作系統(tǒng)使用標準訪問控制工具保護文件,以免文件在正常的執(zhí)行過程中被外界訪問。在正常讀寫i/o設備時,操作系統(tǒng)將對所有數(shù)據(jù)進行完整性檢查。 6.3.2 兩階段更新 對數(shù)據(jù)庫管理器來說,在修改數(shù)據(jù)的途中計算系統(tǒng)出現(xiàn)故障是一個嚴峻的問題。它可能導致一個數(shù)據(jù)項的部分元素已經(jīng)更新,而另部分卻沒有更新的問題,而發(fā)現(xiàn)并更正這一問題比較困難。為此,lampson 和sturgis提出了兩階段更新方案解決這個問題,大部分dbms采用了這種方案 。6.3.2 兩階段更新(續(xù)) 更新技術更新技術 第一階段稱為意向意向(inten

19、t)階段,dbms收集所有執(zhí)行更新需要的資源。做足更新前的一切準備工作,但并沒有對數(shù)據(jù)庫做任何改變。因為每個步驟都并未永久地更新數(shù)據(jù),所以第一階段可以重復無數(shù)次。第一階段的最后事件是提交提交(committing),包括為數(shù)據(jù)庫做提交標記提交標記(commit flag)。提交標記意味著dbms通過了不需要撤消的點。6.3.2 兩階段更新(續(xù)) 第二階段實現(xiàn)永久更新。如果在這個階段出現(xiàn)故障,數(shù)據(jù)庫可能包含不完整的數(shù)據(jù),但系統(tǒng)可以重新執(zhí)行第二階段的所有動作以修復數(shù)據(jù)。第二階段結(jié)束,數(shù)據(jù)庫更新完畢。6.3.2 兩階段更新(續(xù)) 兩階段更新的實例兩階段更新的實例 假定某公司有一個辦公用品管理系統(tǒng),其

20、數(shù)據(jù)庫中包含公司的辦公用品清單,中心倉庫管理員需要管理辦公用品分發(fā)以及監(jiān)控現(xiàn)有的供應量,以便在庫存不足時定貨。假定現(xiàn)有庫存107箱文件夾,而低于100箱時需要定貨。假定會計部提出申請需要50箱文件夾。倉庫管理員處理請求的步驟為: (1) 倉庫和數(shù)據(jù)庫是否有50箱文件夾庫存。沒有,拒絕請求結(jié)束事物。 (2) 如果庫存充足,從數(shù)據(jù)庫中的存貨中扣除50箱文件夾。 (3) 倉庫從會計部預算中收取50箱文件夾的費用。 (4) 倉庫檢查剩余的庫存57箱文件夾(107-50=57)是否低于定貨界限。如果是,將產(chǎn)生一個定貨提示,并將數(shù)據(jù)庫中的文件夾項標記為“定貨中”。 (5) 準備好交貨,把50箱文件夾送到會

21、計部。6.3.2 兩階段更新(續(xù)) 當進行兩個階段提交時,可用影子值影子值(shadow value)來保存關鍵數(shù)據(jù)。如下所示: 意向: (1) 檢查數(shù)據(jù)庫中的commit-flag。如果該值已經(jīng)設置,則不進行意向階段,直到其被清零。 (2) 比較庫存文件夾箱數(shù)和需求量,如果需求大于庫存,停止。 (3) 計算剩余文件夾箱數(shù)tclips = onhand -requisition。 (4) 獲得會計部的預算budget ,計算結(jié)余tbudget = budget - cost。 (5) 檢查tclips是否低于定貨界限,如果是,設置treorder =true ;否則,設置treorder =

22、false。 6.3.2 兩階段更新(續(xù)) 提交: (1) 在數(shù)據(jù)庫中設置commit-flag。 (2) 復制tclips到數(shù)據(jù)庫的clips。 (3) 復制tbudget到數(shù)據(jù)庫的budget。 (4) 復制treorder到數(shù)據(jù)庫的reorder 。 (5) 準備向會計部發(fā)送文件夾的通知。在日志中表明完成事務。 (6) 清除commit-flag。 # 每個t開頭的變量是只在事務階段使用的影子變量。6.3.3 冗余/內(nèi)在一致性 許多dbms通過維護附加信息來檢測數(shù)據(jù)內(nèi)在的不一致性。 檢錯與糾錯檢錯與糾錯 一種冗余形式是檢錯碼或糾錯碼,可應用于單個域、記錄或整個數(shù)據(jù)庫,比如,奇偶效驗碼、海

23、明(hamming)編碼、循環(huán)冗余檢查。檢驗碼提供的信息越多,所占的存儲空間越大。 影子域影子域 在數(shù)據(jù)庫中可以復制整個屬性或記錄。這里冗余域顯然需要大量的存儲空間。6.3.4 恢復 除了這些糾錯過程外,dbms還需要維護用戶的訪問日志,尤其是更改日志。在發(fā)生故障后,從后備副本中重新裝載數(shù)據(jù)庫,并根據(jù)日志將數(shù)據(jù)庫恢復到故障前的最后一個正確狀態(tài)。 6.3.5 并發(fā)性/一致性 dbms使用了簡單的封鎖技術來保證共享數(shù)據(jù)庫安全。如果兩個用戶需要對相同數(shù)據(jù)項進行讀訪問,則他們之間沒有沖突,因為他們將獲得相同的值。如果兩個用戶嘗試修改相同的數(shù)據(jù),我們通常假定用戶間沒有沖突,因為每個用戶都知道寫什么值;同

24、時,認為寫入的值不依賴于數(shù)據(jù)項先前的值。然而,這個假定往往不總是正確的。6.3.5 并發(fā)性/一致性(續(xù)) 假如有一個特定航班的訂座數(shù)據(jù)庫。代理人a將為乘客mock預訂座位,向數(shù)據(jù)庫提交了一個查詢,請求過道右邊的座位發(fā)現(xiàn)了5d、11d、14d。同時另一個代理人b想為一家三口預訂三個相鄰的位置,發(fā)現(xiàn)了8a-b-c和11d-e-f是未預約的。這時代理a提交了訂座命令訂下11d,而代理b提交了訂座命令訂下11d-e-f。這時就產(chǎn)生了問題。而出現(xiàn)這種問題的原因,在于從數(shù)據(jù)庫中讀數(shù)據(jù)和改寫數(shù)據(jù)之間的時間延遲。在延遲時段中,另外的用戶可訪問同一個數(shù)據(jù)。6.3.5 并發(fā)性/一致性(續(xù)) 為了解決這個問題,db

25、ms把整個查詢/更新周期看做一個原子操作。讀/修改周期必須在一個未受干擾的情況下完成,禁止其他用戶對11d的訪問。直到第一個代理成功預訂后才開始考慮第二個代理人的請求。 此外,如果一個用戶a正在讀時,另一個用戶b正在寫,那么用戶a將讀到部分更新的數(shù)據(jù)。因此,dbms將鎖定讀請求直到寫操作完成后。6.3.6 監(jiān)視器 監(jiān)視器監(jiān)視器(monitor)是dbms中負責數(shù)據(jù)庫結(jié)構(gòu)完整性的單元。 范圍比較范圍比較 范圍比較監(jiān)視器檢測每個新產(chǎn)生的值,確保每個值在可接受的范圍內(nèi)。如果一個數(shù)據(jù)值在范圍之外,監(jiān)視器會拒絕該數(shù)據(jù)值,并不將它輸入數(shù)據(jù)庫。范圍比較可用于保障數(shù)據(jù)庫的內(nèi)在一致性。如果懷疑數(shù)據(jù)庫中的某些數(shù)據(jù)

26、已經(jīng)遭到破壞,范圍檢查可以識別所有可疑記錄的數(shù)據(jù)。 6.3.6 監(jiān)視器(續(xù)) 狀態(tài)約束狀態(tài)約束 狀態(tài)約束狀態(tài)約束(state constraint)描述了整個數(shù)據(jù)庫的約束條件。數(shù)據(jù)庫的值不能違反這些約束。也就是說,如果不滿足這些約束,數(shù)據(jù)庫中的一些數(shù)值會出錯。 兩階段更新中的提交標記就是一種狀態(tài)約束,因為在每個事務結(jié)束時都需要判斷提交標記是否被設置。提交標記在數(shù)據(jù)庫中的身份是一種完整性約束。另一個例子是,無論何時雇員中“總裁” 的數(shù)量都是一個。如果由于機器故障,數(shù)據(jù)庫被部分復制了,那么通過測試數(shù)據(jù)庫的狀態(tài),dbms可能識別到存在有兩名“總裁”。6.3.6 監(jiān)視器(續(xù)) 轉(zhuǎn)換約束轉(zhuǎn)換約束 轉(zhuǎn)換約

27、束轉(zhuǎn)換約束(transition constraint)則描述了改變數(shù)據(jù)庫之前的必需條件。例如,在數(shù)據(jù)庫中加新員工之前,必須有一個職位是空缺的。添加雇員后,數(shù)據(jù)庫中相應的職位應該從“空缺”改為該雇員編號。 # 大多數(shù)數(shù)據(jù)庫管理系統(tǒng)都要執(zhí)行簡單的范圍檢查。然而,較復雜的狀態(tài)和轉(zhuǎn)換約束需要專門的程序進行測試。 6.4 敏感數(shù)據(jù) 某些數(shù)據(jù)庫保存了所謂不能公開的敏感數(shù)據(jù)敏感數(shù)據(jù)(sensitive data)。決定哪個數(shù)據(jù)項或域為敏感取決于數(shù)據(jù)庫和數(shù)據(jù)的含義。最容易處理的兩個實例是:根本沒有敏感數(shù)據(jù)或者全部都是敏感數(shù)據(jù)。 更困難的情況是,在實際中,數(shù)據(jù)庫中的元素常常是部分而不是全部為敏感數(shù)據(jù),而且敏感

28、的程度各有不同。表 6.6 一個數(shù)據(jù)庫的樣本數(shù)據(jù)namesexraceaidfinesdrugsdormadamsmc500045.1holmesbaileymb00.0greychinfa300020.0westdewittmb100035.3greyearhartfc200095.1holmesfeinfc100015.0westgroffmc40000.3westhillfb500010.2holmeskochfc00.1westliufa010.2greymajorsmc20000.2grey6.4 敏感數(shù)據(jù)(續(xù))# 安全需求可能要求:有少部分人具有訪問單個域的權限,但是沒有人同時具有

29、訪問所有域的權限6.4 敏感數(shù)據(jù)(續(xù)) 使數(shù)據(jù)敏感的幾個因素包括: (1) 固有的敏感性固有的敏感性:因數(shù)據(jù)值本身具有機密性而為敏感數(shù)據(jù)。 (2) 來自敏感源來自敏感源:數(shù)據(jù)的來源預示了對機密性的要求。 (3) 聲明的敏感性聲明的敏感性:數(shù)據(jù)庫管理員或數(shù)據(jù)所有者聲明該數(shù)據(jù)為敏感數(shù)據(jù)。 (4) 敏感屬性或敏感記錄中的部分敏感屬性或敏感記錄中的部分:在數(shù)據(jù)庫中,整個屬性或記錄可以歸類為敏感的。 (5) 與已經(jīng)泄露信息相關的敏感性與已經(jīng)泄露信息相關的敏感性:有些數(shù)據(jù)在某些數(shù)據(jù)面前變得敏感。 6.4.1 訪問決策 數(shù)據(jù)庫管理員的決策是以訪問策略為基礎的。數(shù)據(jù)庫管理器或dbms是程序,對數(shù)據(jù)庫和輔助的控

30、制信息進行操作,以實現(xiàn)訪問策略的決策。dbms在決定是否允許訪問時要考慮幾個因素: 數(shù)據(jù)的可用性數(shù)據(jù)的可用性 一個或多個被請求的元素可能存在不可訪問的問題。例如,數(shù)據(jù)更新就會出現(xiàn)這樣的問題。如果正在進行數(shù)據(jù)更新的用戶在中途中斷了更新事務,其他用戶對這些記錄的訪問將被永遠阻塞。這種由中斷服務造成的不確定延期也是一個安全問題,它將導致拒絕服務攻擊。 6.4.1 訪問決策(續(xù)) 可接受的訪問可接受的訪問 記錄中一個或多個值可能是敏感數(shù)據(jù),但是,確定什么樣的數(shù)據(jù)是敏感數(shù)據(jù)似乎并不容易,因為有時并不需要對敏感域直接訪問就可獲得敏感數(shù)據(jù)。用戶也可以通過不敏感的統(tǒng)計數(shù)據(jù)推理敏感數(shù)據(jù)。 保證真實狀態(tài)保證真實狀

31、態(tài) 當允許訪問時,可能要考慮數(shù)據(jù)庫用戶的某些外在特性。6.4.2 泄露類型 數(shù)據(jù)具有敏感性,數(shù)據(jù)的特性也同樣具有敏感性。我們將了解即使是數(shù)據(jù)相關信息的描述也是一種泄露形式。 準確數(shù)據(jù)準確數(shù)據(jù) 這種情形的結(jié)果只有一個:破壞了敏感數(shù)據(jù)的安全。 范圍范圍 一種暴露是揭露了敏感數(shù)據(jù)的范圍,另一種情況是,只揭露一個值超過某個總量。然而,有時在提供敏感數(shù)據(jù)時,只給出一個范圍是有用的。 6.4.2 泄露類型(續(xù)) 否定結(jié)果否定結(jié)果 有時,我們會執(zhí)行查詢確定一個否定的結(jié)果,同樣可能泄露敏感信息。 存在性存在性 有時,與數(shù)據(jù)的具體值無關,數(shù)據(jù)的存在性本身就是敏感數(shù)據(jù)。 大概值大概值 假定想確定總統(tǒng)是否為?;庶h成

32、員,可以做如下查詢: how many people have 1600 pennsylvania avenue as their official residence? (response: 4) how many people have 1600 pennsylvania avenue as their official residence and have yes as the value of tory? (response: 1) 通過上述結(jié)果,知道總統(tǒng)是?;庶h成員的可能性為25%。 部分泄露的小結(jié)部分泄露的小結(jié) 成功的安全策略必須能夠同時防止直接泄露和間接泄露敏感數(shù)據(jù)。6.4.3

33、安全與精確度 確定一個數(shù)據(jù)是否是敏感數(shù)據(jù)以及怎樣保護這些敏感數(shù)據(jù)是十分困難的。這實際鼓勵了保守的觀點:透露的數(shù)據(jù)越少越好。保守的觀點建議拒絕一切敏感域的查詢。但我們同時也希望盡可能顯示數(shù)據(jù)以滿足數(shù)據(jù)庫用戶的需求,這個目標稱為精確度精確度(precision),旨在保護所有敏感數(shù)據(jù)的同時盡可能多地揭示非敏感數(shù)據(jù)。安全與精確度的理想結(jié)合要求維護完善的機密性與最大的精確性,也就是揭示所有、但僅非敏感數(shù)據(jù)。6.4.3 安全與精確度(續(xù))圖6.3 安全與精確度6.5 推理 推理推理(inference)是一種通過非敏感數(shù)據(jù)推斷或推導敏感數(shù)據(jù)的方法。推理問題是數(shù)據(jù)庫安全中一個很微妙的弱點?;仡櫛?.6中的

34、數(shù)據(jù)庫,我們假定aid,fines和drugs都是敏感域,但這些域只有和固定個體關聯(lián)后才是敏感的。6.5.1 直接攻擊 直接攻擊是指用戶試圖通過直接查詢敏感域,根據(jù)產(chǎn)生的少量記錄決定敏感域的值。最成功的技術是形成一個與數(shù)據(jù)項精確匹配的查詢。一個查詢可能是: list name where sex=mdrugs=1 一個比較隱蔽的查詢是: list name where (sex=m drugs=1)(sexmsex f) (dorm=ayres) # 這引出了“n個同屬一類數(shù)據(jù)項超過個同屬一類數(shù)據(jù)項超過k%”規(guī)則,它表明:如果n個一類數(shù)據(jù)項代表了超過k%的報告結(jié)果,則結(jié)果數(shù)據(jù)應該被保留而不能公

35、布。 6.5.2 間接攻擊 間接攻擊是根據(jù)一個或多個中間的統(tǒng)計值推理最后結(jié)果。這種方法要求做一些數(shù)據(jù)庫之外的工作。特別是,統(tǒng)計間接攻擊需要利用某些有明顯統(tǒng)計特征的方法來推理單個數(shù)據(jù)。 和和 通過“和”攻擊,試圖從已知的和推理單個值。holmesgreywesttotalm50003000400012000f70000400011000total120003000800023000表 6.7 按寢室和性別查詢助學金之和6.5.2 間接攻擊(續(xù)) 計數(shù)計數(shù) 計數(shù)可以和總數(shù)結(jié)合來揭露更多的結(jié)果,而通常數(shù)據(jù)庫給出這兩個統(tǒng)計量,方便用戶確定平均值。 平均值平均值 假設知道員工的數(shù)量、公司的工資平均值和除

36、總裁外所有員工的工資平均值,則可以很容易地計算總裁的工資。 holmesgreywesttotalm1315f2136total34411表 6.8 按寢室和性別查詢的學生計數(shù)值6.5.2 間接攻擊(續(xù)) 中值中值 通過稍微復雜的程序,我們可以根據(jù)中值得出個別值。這種攻擊要求所選擇的數(shù)據(jù)中有一個數(shù)據(jù)剛好在中值的交集中。圖 6.4 中值的交集6.5.2 間接攻擊(續(xù))namesexdrugsaidbaileym00dewittm31000majorsm22000groffm34000adamsm15000liuf20majorsm22000hillf25000表 6.9 利用兩個表的中間值進行推

37、理# 如果查詢者已經(jīng)知道m(xù)ajors為男性和drug-use為2,且majors出現(xiàn)在兩個列表的中間值。則通過q = median(aid where sex = m)和p = median(aid where drugs = 2),可得到majors獎學金為$2000。6.5.2 間接攻擊(續(xù)) 追蹤攻擊追蹤攻擊 追蹤攻擊追蹤攻擊(tracker attack)通過使用額外的、產(chǎn)生更少結(jié)果的查詢欺騙數(shù)據(jù)庫管理器,從而找到想要的數(shù)據(jù)。一個典型方法是,追蹤者進行兩次查詢,讓一次查詢結(jié)果與另一次查詢結(jié)果相比增加了一些記錄;去掉兩組紀錄中的相同部分,就只留下統(tǒng)計數(shù)據(jù)或想要的數(shù)據(jù)。這個方法利用了兩次查

38、詢結(jié)果的“間隙”部分。6.5.2 間接攻擊(續(xù)) 例如,查詢 count (sex=f)(race=c)(dorm=holmes) dbms可能會發(fā)現(xiàn)結(jié)果只是1,拒絕查詢。由于q = count(abc)=count(a)-count(a (b c) ,所以查詢等于: count (sex=f) (6) 減去 count (sex=f)(racec)(dormholmes) (5)。 6.5.2 間接攻擊(續(xù)) 線性系統(tǒng)的脆弱性線性系統(tǒng)的脆弱性 使用邏輯與代數(shù)知識,加上數(shù)據(jù)庫內(nèi)容在分布上的特點,可以確定一系列查詢,這些返回結(jié)果與幾個不同的集相關,例如, 可以解出各個值。事實上,這種攻擊也可以用

39、于非數(shù)值的情形。“與”()和“或”()是數(shù)據(jù)庫查詢操作的典型運算,我們可以利用邏輯規(guī)則從一系列邏輯表達中獲得結(jié)果。 6.5.2 間接攻擊(續(xù)) 控制統(tǒng)計推理攻擊控制統(tǒng)計推理攻擊 防止推理攻擊的方法有:進行查詢控制進行查詢控制,或者對數(shù)據(jù)庫里的單個項進行控制對數(shù)據(jù)庫里的單個項進行控制。很難確定一個查詢是否會揭露敏感數(shù)據(jù)。因此,查詢控制主要對直接攻擊有效。對數(shù)據(jù)項的控制包括禁止查詢禁止查詢和隱藏隱藏。禁止查詢方式就是不提供敏感數(shù)據(jù),對敏感數(shù)據(jù)的查詢以不響應的方式拒絕。隱藏方式就是提供的結(jié)果接近但不是精確的實際數(shù)據(jù)值。這兩種控制反映了精確與安全兩者的矛盾。6.5.2 間接攻擊(續(xù)) 有限響應禁止有限

40、響應禁止 根據(jù)n項超k%的規(guī)則,不顯示所占有百分比過大的元素。holmesgreywesttotalm-3-5f2-36total34411表 6.10 按寢室和性別查詢的學生人數(shù)(禁止顯示計數(shù)低的單元) # 如果一個表既有按行計算的總數(shù),又有按列計算的總數(shù),則只禁止查詢其中一個單元的數(shù)據(jù),仍然可以通過計算獲得被禁止顯示的數(shù)據(jù)。因此,在樣本數(shù)據(jù)很少的表中,除了總數(shù)單元外所有的單元都不得不禁止查詢,而沒有提供總數(shù),則可只禁止其中一個單元。 6.5.2 間接攻擊(續(xù)) 組合結(jié)果組合結(jié)果 一種控制方法是組合行或列以保護敏感數(shù)據(jù)。sexdrug use0123m1112f2220sexdrug use

41、0 or 12 or 3m23f42表 6.12 通過組合數(shù)據(jù)抑制推理表 6.11 按性別和吸毒查詢的學生人數(shù)6.5.2 間接攻擊(續(xù)) 另一個組合結(jié)果的方法是顯示一個結(jié)果的范圍。例如,發(fā)布助學金的結(jié)果時,給出金額的范圍01999,20003999,以及4000以上,而不是準確的數(shù)值。還有一種方法是舍入。這項技術實際上是范圍組合中相當有名的實例。如果數(shù)字的范圍最接近10的倍數(shù),則有效范圍是05,615,1625,等等。實際值可以根據(jù)最接近的基數(shù)向上或向下歸入某個組。 6.5.2 間接攻擊(續(xù)) 隨機樣本隨機樣本 使用隨機樣本控制方法,查詢結(jié)果不是直接從整個數(shù)據(jù)庫獲得,而是從數(shù)據(jù)庫的隨機樣本上計

42、算出來的。因為樣本畢竟不是整個數(shù)據(jù),依據(jù)樣本的查詢不一定與在整個數(shù)據(jù)庫中查詢的結(jié)果相一致。通過重復相同的查詢可以進行平均數(shù)攻擊。為了防止這種攻擊,相同的查詢應該選擇相同的樣本。6.5.2 間接攻擊(續(xù)) 隨機數(shù)據(jù)擾亂隨機數(shù)據(jù)擾亂 有時,用一個小錯誤擾亂數(shù)據(jù)庫的值還是有用的。xi 是數(shù)據(jù)庫中數(shù)據(jù)項i的真實值,我們可以產(chǎn)生一個隨機數(shù)據(jù)i附加在xi上作為統(tǒng)計結(jié)果。像“和”以及平均值這些統(tǒng)計方法可能使結(jié)果接近真實值,但又不是精確值。為了使相同的查詢產(chǎn)生相同的結(jié)果,必須存儲所有值。由于存儲該值很容易,所以數(shù)據(jù)擾亂比隨機樣本選擇更容易使用。6.5.2 間接攻擊(續(xù)) 查詢分析查詢分析 更復雜的安全形式是查

43、詢分析。這個方法要求維護每個用戶過去的查詢,根據(jù)過去查詢的結(jié)果判斷這個查詢可能推理出的結(jié)果。 推理問題的總結(jié)推理問題的總結(jié) 對于推理問題沒有完善的解決方法,可以按下述三種思路來控制推理問題。 (1) 禁止明顯的敏感數(shù)據(jù)禁止明顯的敏感數(shù)據(jù):行動相當容易,但常常錯誤地選擇了要禁止的數(shù)據(jù),因而降低了可用性。6.5.2 間接攻擊(續(xù)) (2) 追蹤用戶已知的數(shù)據(jù)追蹤用戶已知的數(shù)據(jù):雖然這種方法在提供數(shù)據(jù)時可能有最大的安全性,但是實現(xiàn)它的代價十分昂貴。 (3) 偽裝偽裝數(shù)據(jù)數(shù)據(jù):隨機數(shù)擾亂或舍入可以限制依靠精確值進行邏輯和代數(shù)運算的統(tǒng)計攻擊。但得到的數(shù)據(jù)是不精確或可能不一致的結(jié)果。 # 與安全中的其他問

44、題一樣,重視推理問題有助于理解控制這個問題的目的,同時對這個問題帶來的潛在威脅更為敏銳。然而這并不意味可以實現(xiàn)保護以防止這些攻擊。6.5.3 聚集 聚集聚集(aggregation)意味著從較低敏感性的輸入構(gòu)造出敏感數(shù)據(jù),它與推理問題相關。解決聚集問題很困難,因為它要求數(shù)據(jù)庫管理系統(tǒng)追蹤每個用戶獲得了哪些數(shù)據(jù),以便回避一些可以讓用戶推導出更多敏感信息的數(shù)據(jù)。對聚集計算尤其困難,因為聚集是在系統(tǒng)外發(fā)生的。幾乎沒有什么方法提出來阻止聚集攻擊。 最近對數(shù)據(jù)挖掘數(shù)據(jù)挖掘(data mining)的興趣使聚集問題重新得到重視。數(shù)據(jù)挖掘是指在多個數(shù)據(jù)庫中過濾數(shù)據(jù)并在相關聯(lián)的數(shù)據(jù)元素中找到有用的信息。在一定

45、事實的聚集下,要使謊言有說服力是很困難的。 6.6 多級數(shù)據(jù)庫 到此為止,我們主要考慮了兩種類型的數(shù)據(jù):敏感數(shù)據(jù)和非敏感數(shù)據(jù)。我們提到一些數(shù)據(jù)項比其他數(shù)據(jù)項更敏感,但是只有允許訪問和拒絕訪問兩種選擇。namedepartmentsalaryphoneperformancehogerstraining43,8004-5067a2jenkinsresearch62,9006-4281d4polingtraining38,2004-4501b1garlanduser services54,6006-6600a4hiltenuser services44,5004-5351b1davisadminis

46、tration51,4004-9505a3表 6.13 屬性級敏感性(具有敏感性的屬性加有陰影)6.6.1 區(qū)分安全級別的實例表 6.14 數(shù)據(jù)與屬性級敏感性(具有敏感性的屬性加有陰影)namedepartmentsalaryphoneperformancehogerstraining43,8004-5067a2jenkinsresearch62,9006-4281d4polingtraining38,2004-4501b1garlanduser services54,6006-6600a4hiltenuser services44,5004-5351b1davisadministration

47、51,4004-9505a36.6.1 區(qū)分安全級別的實例(續(xù)) 數(shù)據(jù)庫顯現(xiàn)出三個安全特性: (1) 一個元素的敏感度可能不同于同一記錄的其他元素或同一屬性的其他值。這種情形暗示了應該對每個元素單獨實現(xiàn)安全保護。 (2) 敏感和不敏感兩種級別不足以描述某些安全情況,而是需要多個安全級別。這些安全級別常常形成格。 (3) 數(shù)據(jù)庫中的和、計數(shù)或一組值,其安全可能不同于單個元素的安全。集合安全可能高于也可能低于單個元素的安全。6.6.2 粒度 為整個數(shù)據(jù)庫中的每個數(shù)據(jù)定義敏感級別,類似于在一個文件中為每個詞定義敏感級別。而且實際問題更加復雜,不僅每個元素有不同的敏感性,而且元素之間不同的組合也具有特

48、殊的敏感性。此外,元素的組合敏感性可能高于或低于組成它的任何一個子元素。 保護每個元素的方法是:首先,需要訪問控制策略來指定每個用戶允許訪問的數(shù)據(jù)。實現(xiàn)這一策略通常是為每個數(shù)據(jù)項定義訪問限制。其次,需要保證元素值不會被未授權用戶改變。這兩個要求都涉及機密性和完整性。6.6.3 安全問題 機密性機密性/完整性完整性 將*-特性應用于數(shù)據(jù)庫中,訪問控制原則描述成高級別的用戶不允許寫低級別的數(shù)據(jù)元素。但這種描述卻常常出現(xiàn)問題,例如,dbms因為如下原因必須能夠讀寫所有記錄并寫新記錄:備份數(shù)據(jù)、掃描數(shù)據(jù)庫以響應查詢、根據(jù)用戶進程的需要重組數(shù)據(jù)庫或更新數(shù)據(jù)庫中的所有記錄。在此可以考慮兩種方法:高級別的進

49、程不允許寫低級別的數(shù)據(jù),或者進程必須是“可信任的”即計算機如同具有安全許可的人一樣。6.6.3 安全問題(續(xù)) 一些保護機密性的措施是對數(shù)據(jù)做細微的修改。因此,在多級別數(shù)據(jù)庫中,兩個不同安兩個不同安全執(zhí)行級別的用戶可能執(zhí)行相同的查詢而得全執(zhí)行級別的用戶可能執(zhí)行相同的查詢而得到不同的結(jié)果到不同的結(jié)果。為了保證機密性,不得不犧牲精確性。 加強機密性也導致了不易察覺的冗余。多重多重實例化實例化(polyinstantiation),意思是一個記錄可以(被實例化)出現(xiàn)多次,每次有不同的機密級別。 6.6.3 安全問題(續(xù))表 6.15 多重實例化記錄namesensitivityassignmentl

50、ocationhill, bobcprogram mgrlondonhill, bobtssecret agentsouth bend# 我們還可以找到導致多重實例化的其他原因,這些原因與敏感級別無關。因此,在減少多重實例化的同時,必須注意不能清除其中的合法記錄。 6.7 關于多級安全的建議 6.7.1 分離 分區(qū)分區(qū) 一個大的數(shù)據(jù)庫被分成幾個分離開的數(shù)據(jù)庫,每個都有自己的敏感級別。這種方法類似于把不同的文件保存在不同的文件柜里。這種控制機制失去了數(shù)據(jù)庫的基本優(yōu)點:消除冗余數(shù)據(jù)以及提高數(shù)據(jù)的正確性。數(shù)據(jù)庫希望修改數(shù)據(jù)時,只需更新一個域即可。此外,這個控制機制沒有解決高級別的用戶,需要訪問低級別

51、的數(shù)據(jù)并與高級別的數(shù)據(jù)合并使用的問題。 6.7.1 分離(續(xù)) 加密加密 每個級別的敏感數(shù)據(jù)可以存儲在一個加密表中,該表使用與敏感級別相對應的唯一密鑰加密。但是加密也有一些不利的方面,如可能存在選擇明文攻擊的問題。為了克服這個缺點可以選擇抵抗選擇明文攻擊的密碼算法,也可以為記錄的每個域使用不同的密鑰加密,還可以為一個記錄的所有域使用密碼鏈加密。6.7.1 分離(續(xù))圖 6.5 密碼分離:不同的加密密鑰圖 6.6 密碼分離:塊鏈加密6.7.1 分離(續(xù)) 這種方法的缺點是:當用戶執(zhí)行數(shù)據(jù)庫的標準操作如“選擇薪水大于10000的所有記錄”時,查詢必須為每個加密域解碼 。這增加了查詢操作的時間,因此

52、,加密機制不常用來實現(xiàn)數(shù)據(jù)庫的分離。6.7.1 分離(續(xù)) 完整性鎖完整性鎖 完整性鎖完整性鎖(integrity lock)是美國空軍在對數(shù)據(jù)庫安全進行研究時首次提出的。完整性鎖的數(shù)據(jù)項由三個部分組成:實際的數(shù)據(jù)本身、敏感性標簽、以及校驗和。敏感性標簽定義了數(shù)據(jù)的敏感性,校驗和的計算包括了數(shù)據(jù)和敏感性標簽,以防止未授權者對數(shù)據(jù)或標簽的篡改。為了提高效率,實際的數(shù)據(jù)項以明文方式存儲。圖 6.7 完整性鎖6.7.1 分離(續(xù)) 敏感性標簽應該是: (1) 不能被偽造的不能被偽造的:惡意的主體不能為一個元素產(chǎn)生新的敏感級別。 (2) 唯一的唯一的:惡意的主體不能從其他元素復制敏感級別。 (3) 隱

53、蔽的隱蔽的:惡意的主體不能確定任意元素的敏感級別。 完整性鎖的第三個部分是一個檢錯碼,稱為密碼校密碼校驗和驗和(cryptographic checksum)。為了保證數(shù)據(jù)值或其敏感級別未被修改,校驗和對于每個元素必須是唯一的,必須包含數(shù)據(jù)值和數(shù)據(jù)值在數(shù)據(jù)庫中的位置的指示。 6.7.1 分離(續(xù)) 一個合適的密碼校驗和應該包括:記錄的唯一標識符(記錄號)、記錄中數(shù)據(jù)域的唯一標識符(域的屬性名)、元素值以及元素的敏感級別。校驗和可以用強密碼算法計算。圖 6.8 密碼校驗和 6.7.1 分離(續(xù)) 敏感性鎖敏感性鎖 敏感性鎖敏感性鎖(sensitivity lock)由唯一的標識符(如記錄號)和敏

54、感級別組成。因為標識符是唯一的,每一個鎖與一個特定的記錄相關。敏感性鎖與一個特定的記錄相關,并且保證了該記錄的敏感級別的保密性。 圖 6.9 敏感性鎖6.7.2 多級安全數(shù)據(jù)庫的設計 完整性鎖完整性鎖 完整性鎖的目的是能夠讓用戶使用任何一個(不可信的)數(shù)據(jù)庫管理器,該管理器有處理訪問控制的可信任程序。用加密的方法隱藏數(shù)據(jù)以保護數(shù)據(jù)項及其敏感性。在這種方法中,因為只有訪問程序可以實施或授權對敏感數(shù)據(jù)的訪問,所以只需要它是可以信賴的。 6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù))圖 6.10 可信數(shù)據(jù)庫管理器6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù)) 完整性鎖的缺點: (1) 系統(tǒng)必須擴大存儲數(shù)據(jù)的空間以容

55、納敏感性標簽。 (2) 完整性鎖處理時間的效率也是一個棘手的問題。為了保證訪問的合法性,每次為用戶傳遞一個數(shù)據(jù)時都需要對敏感性標簽解碼一次。 (3) 另一個難點是不可信的數(shù)據(jù)庫管理器可以看到所有數(shù)據(jù),因此,易遭受特洛伊木馬的攻擊,使數(shù)據(jù)通過隱蔽的信道被泄漏。6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù)) 可信前端可信前端 前端也稱為守衛(wèi)守衛(wèi)(guard),類似引用監(jiān)視器。前端概念利用已有工具和專門技術,以微小的改變達到加強已存在數(shù)據(jù)庫系統(tǒng)安全的目的。可信任前端的服務像是個單向過濾器,把用戶不具有訪問權限的數(shù)據(jù)篩選出來。因為需要先獲得大量數(shù)據(jù)然后再丟棄用戶不具訪問權限的數(shù)據(jù),所以這個方案的效率很不理想。

56、6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù))圖 6.11 可信前端6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù)) 用戶、可信前端和dbms之間的交互包括以下這些步驟: (1) 用戶識別前端,前端鑒別用戶身份。 (2) 用戶向前端發(fā)出查詢。 (3) 前端驗證用戶的授權數(shù)據(jù)。 (4) 前端向數(shù)據(jù)庫管理器發(fā)出查詢。 (5) 數(shù)據(jù)庫管理器執(zhí)行i/o訪問,并與低級別的訪問控制交互完成對實際數(shù)據(jù)的訪問。 (6) 數(shù)據(jù)庫管理器把查詢的結(jié)果返回給可信前端。 (7) 前端分析結(jié)果中數(shù)據(jù)項的敏感級別,并選擇出與用戶安全級別相一致的數(shù)據(jù)。 (8) 前端把選擇的結(jié)果傳遞給不可信前端以完成數(shù)據(jù)的格式化。 (9) 不可信前端把格式化后

57、的數(shù)據(jù)傳遞給用戶。6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù)) 交換式過濾器交換式過濾器 交換式過濾器交換式過濾器(commutative filter)是一個程序,形成了用戶和dbms之間的接口。與可信前端不同,過濾器試與可信前端不同,過濾器試圖盡量考慮圖盡量考慮dbms的效率。的效率。過濾器篩選了用戶的請求,必要時就重新格式化請求,以使數(shù)據(jù)庫管理器盡可能篩選掉許多不符合條件的數(shù)據(jù)。返回數(shù)據(jù)再經(jīng)過過濾器二次篩選。過濾器可用于幾個級別的安全:記錄級、屬性級或元素級: (1) 在記錄級,過濾器請求希望的數(shù)據(jù)以及密碼校驗和信息,之后根據(jù)用戶權限決定是否允許用戶訪問。 (2) 在屬性級,過濾器檢查用戶查詢

58、的所有屬性是否都是用戶可以訪問的。刪除用戶沒有訪問權限的所有域,之后傳遞給dbms查詢。 (3) 在元素級,系統(tǒng)請求希望的數(shù)據(jù)和密碼校驗和信息,將符合要求的元素返回給用戶。6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù)) 例如,對用戶的查詢: retrieve name where (occup=physicist) (city=washdc) 過濾器可以轉(zhuǎn)換為: retrieve name where (occup=physicist) (city=washdc) from all records r where (name-secrecy-level (r)user-secrecy-level) (

59、occup-secrecy-level (r)user-secrecy-level)(city-secrecy-level (r)user-secrecy-level) 當然這些附加條件是前端過濾器添加的,用戶是看不見的。6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù))圖 6.12 交換式過濾器交換式過濾器的優(yōu)點是允許選擇查詢、進行優(yōu)化并且由dbms處理一些子查詢。這種職責的委托使安全過濾器保持很小,減少了dbms和過濾器之間的冗余量,并且提高了整個系統(tǒng)的效率。 6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù)) 分布式數(shù)據(jù)庫分布式數(shù)據(jù)庫 分布式分布式(distributed)或聯(lián)合式數(shù)據(jù)庫聯(lián)合式數(shù)據(jù)庫(feder

60、ated database)的可信前端控制著兩個商業(yè)dbms的訪問:一個負責敏感度低的數(shù)據(jù),另一個負責敏感度高的數(shù)據(jù)。前端接收用戶的查詢,并把它們制定為一個合適的數(shù)據(jù)庫的單級查詢。如果用戶可以訪問高敏感度的數(shù)據(jù),前端就同時向高、低敏感級兩個數(shù)據(jù)庫提交查詢。其他情況,只能訪問低敏感級數(shù)據(jù)庫。如果從兩個后臺數(shù)據(jù)庫獲得結(jié)果,前端需要把結(jié)果適當組合起來。 因為前端必須可信,也很復雜,并且可能包括整個dbms的大部分功能,所以分布式數(shù)據(jù)庫的設計并不流行。另外,由于各個敏感級別的數(shù)據(jù)必須分別保存在所屬級別的數(shù)據(jù)庫中,所以這個設計也不適合于敏感級別很多的情況。 6.7.2 多級安全數(shù)據(jù)庫的設計(續(xù)) 視窗視

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論