摘 要:入侵容忍數(shù)據(jù)庫是解決數(shù)據(jù)安全問題的有效途徑,但是入侵容忍數(shù)據(jù)庫隔離算法的性能嚴重影響入侵容忍數(shù)據(jù)庫的運行效率,成為制約入侵容忍數(shù)據(jù)庫技術應用的主要障礙。這里通過分析入侵檢測和攻擊恢復的過程,給出一種入侵容忍數(shù)據(jù)庫隔離算法的設計思路,以提高入侵容忍數(shù)據(jù)庫的運行效率。
關鍵詞:入侵容忍;隔離;算法
1 概述
數(shù)據(jù)庫原子事務的性質(zhì)表明,只有被提交成功的事務才能改寫數(shù)據(jù)庫中的數(shù)據(jù)。因此,在理論上只要我們能在事務提交前檢測出它是否是惡意的,則可以在引起錯誤前回滾該事務。然而,這個方案事實上是不可行的:首先,事務執(zhí)行的速度遠遠快于檢測的速度,而降低事務的執(zhí)行速度會引起嚴重的拒絕服務。其次,一些經(jīng)過授權卻是惡意的事務很難檢測出來。這些惡意事務與其他合法的事務看起來一樣?;谑聞照Z義的異常檢測可能是鑒別這種惡意事務的僅有的有效手段,然而對于異常檢測要想在合理的檢測反應時間和虛警率的條件下實現(xiàn)100%的檢測率,即使可以實現(xiàn)也是非常困難的。
因此,可行的目標應該是在數(shù)據(jù)庫被破壞后,盡快定位被破壞的部分并修復,從而是數(shù)據(jù)庫在遭受攻擊時可以繼續(xù)提供服務。
2 損害數(shù)據(jù)的隔離方案
2.1 隔離工作過程
首先,根據(jù)門限值THm和THs作為入侵檢測報告兩種級別的警告。當異常事務高于異常門限THm時,該事務被報告為惡意的;當異常事務高于異常門限THs,而低于異常門限THm時,該事務被報告為可疑的(THs和THm的值取決于先前攻擊的統(tǒng)計分析)。當惡意事務被報告之后,系統(tǒng)進行以下工作;當可以事務被報告之后,協(xié)調(diào)者在隔離管理者的協(xié)助下,將Ts(以及提交Ts的用戶之后的事務)重定向到虛擬的隔離數(shù)據(jù)庫中,在那里用戶被隔離。隨后,如果用戶被證明是惡意的,隔離管理者將取消該用戶的操作;如果用戶不是惡意的,隔離管理者將該用戶的操作結果導入主數(shù)據(jù)庫。采用這種方案,破壞擴散能被急劇減少而不犧牲檢測速度或降低對正常事務的可用性。
我們按用戶隔離是因為由同一個用戶提交的事務應該相互了解結果。這個方案應該能夠同時隔離多個用戶。將一組用戶隔離在同一個虛擬數(shù)據(jù)庫可以有助于解決合謀攻擊,然而,當只有部分用戶是惡意的時候,這將導致大量的應用性下降。
采用完全的數(shù)據(jù)庫復制去隔離用戶有兩個缺點:一是代價高昂;二是沒被隔離的用戶更新結果對隔離用戶是不可見的。在該方案中,我們采用數(shù)據(jù)版本虛擬構建隔離數(shù)據(jù)庫。一個數(shù)據(jù)對象x通常總是擁有唯一信任版本,記為x[main]。只有當x被隔離用戶更新后,x擁有一個特別的可疑版本。這樣,總的可以版本的數(shù)量將大大少于信任版本的數(shù)量。
隔離算法有兩個關鍵部分:(1)隔離用戶進行怎樣讀寫操作(注意,未被隔離的用戶只能訪問主數(shù)據(jù)庫);(2)一個隔離用戶被證明是非惡意之后,如何將其融合到主數(shù)據(jù)庫。對第一個問題,我們可以采取單向隔離:如果沒有一致的可疑版本,隔離者可以讀信任版本,且所有隔離者的寫操作都標記為可疑版本。第二個問題的關鍵在于信任版本和可疑版本不一致。如果一個可信用戶和一個可疑用戶分別更新同一個對象x,x[main]與可疑版本將不一致,為了進行融合就必須其中一個更新。此外,研究表明即使不是更新同一個對象也會引起不一致。并且,一個隔離對象的融合可能會影響到另一個仍舊被隔離的用戶。這些不一致必須在融合時解決掉。
2.2 隔離方案的特點
本方案具有以下的特點:(1)在很大程度上,隔離對可疑用戶是透明的。(2)隔離帶來的額外存儲開銷很低。(3)數(shù)據(jù)在隔離前和融合后是一致的。(4)在融合過程中,如果這里有某些不一致,某些隔離的或未被隔離的事務不得不退回以解決這個問題,這是該方案的主要代價。幸運的是,研究表明事務回滾的代價只有5%。在不一致問題解決后,通過將剩下的隔離用戶的更新導入主數(shù)據(jù)庫,很容易完成融合過程。(5)該方案與數(shù)據(jù)庫服務幾乎沒有沖突,只有在每個融合過程中隔離用戶不能執(zhí)行新事物,主數(shù)據(jù)庫涉及到的向前更新進程的數(shù)據(jù)表會被臨時鎖定。
3 隔離算法設計
基于上述的隔離方案,設計隔離算法如下:
開始
如果SQL語句想插入數(shù)據(jù)的表(表示為Ri)沒有為可疑用戶建立可疑版本(指示為Si)
創(chuàng)建Si;
如果SQL語句在值域沒有子查詢
重寫插入語句,使Si代替Ri;
附送重寫的插入語句到Oracle Server;
否則假設SQL語句的子查詢訪問數(shù)據(jù)表Rj1,….,Rjn
對于每一個Rjk,如果包含Sjk中被刪除的記錄,則從Rjk中刪除,并在內(nèi)存中保存這些記錄;
對于每一Sjk,如果包含Rjk中沒有的記錄,則插入這些記錄到Rjk中;
重寫插入語句,去掉\"INSERT INTO table_name\";
重寫由前一步驟產(chǎn)生的查詢語句;
假設結果表示為To_Insert,附送這個語句序列到Oracle server執(zhí)行;
刪除已經(jīng)被插入到Rj1,…,Rjn 的每一個記錄;
對已經(jīng)被從Rj1,…,Rjn 中刪除的記錄,重插入這些記錄到Rj1,…,Rjn;
將To_Insert中的每一個記錄插入到相應的Sjk;
結束
4 下一步的工作
本方案說明,基于COTS組件來建設的容忍入侵的數(shù)據(jù)庫系統(tǒng)結構具有以下優(yōu)點:
(1)一個多層的深度防御方式,通常比使系統(tǒng)的可存活性依賴于一個或兩個諸如入侵探測的機制效率的方法有更多的成本效益;(2)適應性的容忍入侵機制通常比提前編制的容忍入侵機制有更多的成本效益;(3)面向服務的容忍入侵數(shù)據(jù)庫系統(tǒng)通常比面向狀態(tài)的容忍入侵數(shù)據(jù)庫系統(tǒng)有更多的成本效益。
針對下一步工作,我們認為未來研究方向應該有以下幾個方面:
首先,惡性事務也許能被一系列部分復制的數(shù)據(jù)庫服務器掩蓋,這里每個服務器只執(zhí)行一組而并非全部事務。這樣一個偽裝的框架的關鍵挑戰(zhàn)應該是安全與數(shù)據(jù)一致性間的權衡。
其次,入侵探測器的準確性和反應時間對容忍入侵數(shù)據(jù)庫系統(tǒng)的整個成本效益有很大的影響,這點一般是正確的。因此,為了使配置一個探測器的容忍入侵的數(shù)據(jù)庫系統(tǒng)有成本效益,知道該探測器需要做到怎樣好(根據(jù)假正數(shù)率,假負數(shù)率和探測反應時間)是很值得的。
最后,操作系統(tǒng)級和事務級的容忍入侵機制應該被無縫的整合來建造多層的容忍入侵數(shù)據(jù)庫系統(tǒng)。這個整合需要仔細研究這兩級機制間的關系。例如,盡管使用事務級方式不能探測出操作系統(tǒng)級數(shù)據(jù)污染,但事務級方式對恢復這些污染十分有用。
參考文獻
[1]孫玉海,孟麗榮.基于入侵容忍的數(shù)據(jù)庫安全解決方案[J].計算機工程與設計,2005(3).
[2]陳馳,孟麗蓉,夏思淝.入侵容忍數(shù)據(jù)庫系統(tǒng)中選舉方案的設計與實現(xiàn)[J].微電子學與計算機,2002,19(11):41-43.