謝娟文,焦愛勝(.蘭州理工大學技術工程學院,甘肅蘭州730050;.蘭州工業學院機電工程學院,甘肅蘭州730050)
?
分布式數據庫的安全性及其防護策略*
謝娟文1,焦愛勝2
(1.蘭州理工大學技術工程學院,甘肅蘭州730050;2.蘭州工業學院機電工程學院,甘肅蘭州730050)
摘要:根據分布式數據庫體系結構的特點必然會引發分布式數據庫中數據的安全性問題。本文分析了該系統的體系結構和各類不安全因素,對經常采用的安全策略進行了比較,分析了它們各自存在的優劣特性。
關鍵詞:分布式數據庫;安全策略;身份認證;訪問權限控制;數據加密
分布式數據庫系統(DDBS)是由分布式數據庫管理系統(DDBMS)與分布式數據庫(DDB)兩部分組成,是數據庫技術與計算機網絡技術相結合的產物[1]。分布式數據庫系統的提出,是由于各類用戶對數據共享的不同需求交叉地分散于企業或不同部門當中,而它應需而生,來管理這些分布式的數據。使用分布式數據庫不僅可利用自身的資源和條件,還可最大范圍地利用網絡當中的站點資源,這樣就突顯出一個很具體的問題——數據庫的安全性,處理不好這個問題將直接影響到分布式數據庫系統的穩定性和完整性。
2.1分布式數據庫體系結構
分布式數據庫系統可看成是一些數據集合,邏輯上屬于統一的一個整體,物理上則是各自分散存儲在每個站點,要求它們必須連接于計算機網絡當中,并且具有場地自治的能力,同時統一地被DDBS管理。這與集中式數據庫有著顯著的區別。LDBMS(本地數據庫管理系統)服務本地數據庫和全局查詢的子查詢等任務。GDBMS(全局數據庫管理系統)主要來協調全局事務的執行。CM(通信管理器)負責各場地之間信息的傳遞,提供支持分布式事務的相應通信機制,其體系結構如圖1所示。

圖1 分布式數據庫系統體系結構
2.2分布式數據庫數據安全性
與傳統集中式數據庫比較,DDBS安全性目標包括以下幾個方面:
1)數據的完整性。包括數據庫數據中物理完整性、邏輯完整性和元素完整性。
2)數據的保密性。包括數據庫中用戶身份鑒別、訪問控制、對推理攻擊的防范、可審計性、防止隱蔽信道攻擊和語義保密性等。
3)數據的可用性。包括系統錯誤導致的數據庫破壞、修復系統時數據庫破壞以及清除數據庫垃圾等。
分布式數據庫不安全因素包括:數據在各站點上的不安全、訪問數據時不安全和數據傳輸過程中的不安全。一般的,有未授權的信息泄露、非授權的數據修改、拒絕服務等安全威脅。具體的安全隱患有竊聽、越權攻擊、假冒攻擊、破譯密文,迂回攻擊以及重發攻擊等形式。對于DDBS而言明確網絡中的合法身份的程序變得復雜了,在網絡中傳輸信息的風險也隨之俱增,采取聯合訪問控制手段顯得很有必要。
根據分布式數據庫數據安全性,要消除安全隱患,滿足數據安全需求,通常采取身份認證、提高保密性、訪問控制、數據加密、安全審計以及故障恢復等安全策略。
3.1各工作站點的身份認證和訪問控制
在對數據庫中的數據進行操作之前,為了防止非法用戶進行各種可能的非正常操作,必須在工作客戶端和數據庫服務器上進行不同的身份驗證。身份認證技術從單一、簡單、靜態認證發展到復雜、動態認證,各有其優劣。通??刹捎靡韵聨追N:靜態口令鑒別,一般由用戶自行設定,安全性比較低。動態口令鑒別是目前較為安全的一種方式,此方式的口令是動態變化的,每次登錄動態生成新口令主,采用一次一密的方法,安全性相對較高。若保密級別高可采用生物特征認證技術,如指紋、虹膜和掌紋等,安全性較高。還可采用智能卡與個人身分識別相結合的方式。
合法的用戶訪問控制有兩種形式:自主存取控制和強制存取控制。前一種是可由系統管理員來進行訪問控制表設定,明確用戶對何種數據對象才能進行什么樣的操作權限。后一種則是按照TDI/ TCSEC標準中安全策略的要求采取強制存取檢查手段,分別給系統內的主體即管理的實際用戶和客體分別指定一個敏感度級別,然后根據主體的安全級別和客體的保密度級別對應關系,以及它們之間遵循的規則來對數據庫內容進行存取。如為了使數據庫的安全操作得以保障,引入對用戶權限的控制技術,可在DDBMS中把數據庫的用戶分為客戶、使用者和管理者3級,對其讀寫權限分別進行相應的設置。
3.2提高保密性
用戶通過不同方式的身份認證后,才能進一步地進行數據傳輸。實際應用中傳輸的數據量比較大,為了防止在傳輸過程中因非法攻擊所造成的泄密問題,必須對所要傳輸的數據進行加密。也可實行實時入侵檢測的方法,在通信雙方之間有必要建立安全的私用通信通道。
3.3數據庫數據加密
對于一些保密機構,數據庫系統中存儲著高敏感性數據,在管理過程中,為了防止數據庫中數據在存儲過程及傳輸中失密,對數據庫數據進行存儲加密以及傳輸加密,從而使非法用戶無法來獲知數據的內容。
3.3.1非對稱密碼
為了防止非法入侵者的主動攻擊和被動攻擊,可以采用CIA三元組的概念達到相應的安全目標。實際應用最廣泛的是非對稱密碼體制(公鑰密碼),它的原理是加密和解密使用不同的密鑰,一公一私兩個密鑰。公鑰算法的基礎是數學函數,不同于代替和置換。RSA加密算法最具代表性,它的算法實現有3個過程:密鑰產生(生成公鑰和密鑰),加密過程以及解密過程。攻擊RSA的困難性在于尋找大合數的素因子。
3.3.2加密粒度
加密粒度指以表、記錄、域或數據元素為單位的加密和解密方式。數據加密和解密可以保證重要數據對象的安全性,但以耗費大量的系統資為代價。為了提高對數據庫數據的訪問速度,在DDBS中可以調整加密的粒度。實踐得出結論,加密粒度分別與加密密鑰的數量、密鑰管理的復雜性度、系統開銷都成反比關系。
3.3.3加密方式
1)數據庫外部加密。具體實現方法為在分布式數據庫外增加一個加密層專門負責對數據加解密。這類方式,對DDBS的依賴性比較小,實現起來比較簡單,缺點是付出的時空代價大,并且速度慢。
2)數據庫內部加密。具體實現方法是在數據庫的內模式,物理模式之間增加一個加密層讓它來負責對數據加解密。這類方式,對DDBS的依賴性強,實現比較復雜且成本大,優點是安全性能更高。
3.3.4傳輸加密與密鑰管理
在分布式數據庫系統運作過程當中,常見的有基于安全套接層協議的端到端的可信傳輸方案。通信雙方需要協商建立可信連接,一次會話采用一個密鑰,數據在發送方加密,而在接收方進行解密,能夠有效地降低重放攻擊和惡意篡改的風險,假如有第三方對密文時進行任何篡改,都會被真實地接收方通過摘要算法加以識別,并且解決了密鑰存儲的問題。加密后安全性得到了進一步的提升,但增加了相應的查詢處理復雜性,查詢效率會大打折扣,因此,我們就根據安全可信度級別分別采用各自適應的的密碼體制。
如一電子商務系統在服務器端解密可用如下程序實現:
itit main()
{
while((Rum=recv(connectfd,revbuf, MAXDATASIZE,0))>0)
{
revbuf[num]=’\0’:
wordkey[8]={’x’,’y’,’z’,’i’,’m’,’f’,’k’,’t’}:
wordi,x1[8],x2[8]:
for(i=0:revbuf[i]! =’\0’:i+T)N=i:
if((N+I)<8){
for(i=0:i((N+I):i++)
for(i=(N+I):i<8:i++)
DES(x1,key,x2,1):
for(i=0:i } else{ M=N/8: flag0=0: flagl:l: for(i=0:i for(j=0:j<8:j++)C[j]=reVbuf[fla90+j] DES(x1,key,x2,1): for(i=0:i<8:i++)unencryptbuf[flagl十i]=x1[i] flagl+:8: flag0+=8: } for(i=0;i for(i:N%8:i<8:i¨)c[i]:0x00: DES(x1,key,x2,1): for(i=0:i } } 3.4數據安全審計 前面所提到的各站點工作身份認證、訪問控制等是安全保護方面的重要技術,但是為了達到一定的安全級別,還需考慮安全審計功能。任何一種系統的安全保護措施都不是完美的,一些蓄意進行破壞及盜竊的人總會想盡一切辦法來打破安全控制。審計功能會將全部用戶對數據庫數據的訪問自動記錄放入到審計日志中去,審計人員通過監控審計日志中的對數據庫的各種操作來確定出現在分布式數據庫系統的可能非法入侵行為,并對潛在的威脅提前加以防范措施,以免造成不必要的損失。審計主要起到對特定用戶或者是選定的對象相關的操作記錄進行后續的查詢分析以及后期追蹤對象的依據。審計比較浪費時間和空間,一般將其設置為可選特征,它比較適合安全性要求較高的機構。 3.5故障恢復 通過上述數據庫安全策略的實施,感覺已經解決了不少問題,但在分布式數據庫系統管理過程中,還有其他因素引發的問題:比如,介質故障或是系統故障,這都會導致各類問題的發生,情況比較嚴重者將會破壞數據庫中部分或是全部數據,造成很嚴重的后果。那么數據庫恢復可以解決這些問題。DDBS中常采用分布式事務的兩段提交協議來應對,大多數故障它都可以解決,唯一前提條件是DDBS中的運行日志必須存在。 3.5.1兩階段提交協議 兩階段提交協議中,發出事務執行的為協調者,而網絡內其他協作站點稱為參與者。只有協調者能夠提交或撤銷事務,而所有參與者只能各自負責本地數據庫中的事務操作,并向協調者進行應答,或提出提交或撤銷事務的意向。兩者關系如圖2所示。兩階段提交協議工作過程如下: 假如協調者決定提交事務,它通過網絡向所有參與者發送Prepare消息進入第一階段也稱為表決階段。 所有參與者各自發送Ready或者Not Ready消息進行應答是否仍要提交事務。協調者或在事務進行過程中一旦接收到第一個Not Ready,它將給所有參與者發送一個Global Abort消息并取消正在執行的進程。 圖2 DDBS協調者和參與者關系示意圖 此時進入第二階段也稱執行階段。參與者接收到Global Abort消息并執行。若還有協調者從所有參與者接收到Abort ACK消息,它也將取消正在執行的進程。假如,所有參與者都想提交事務,它們都發送一個Ready消息,協調者則發送Global Commit消息,所有參與者確認此動作,之后協調者收到所有參與者的Commit ACK消息后,事務將進行全局提交。 3.5.2各站點故障處理 1)如果是參與者將準備好記錄寫入本地日志之前,發生故障。那么協調者發出撤銷命令,所有參與者將會全部撤銷它們的子事務。解決該故障時,發生故障的參與者只須撤銷自己的子事務,其他參與者不會受到影響。 2)如果是參與者將準備好記錄寫入本地日志后,發生故障。那么其他參與者站點不受其影響繼續處理該事務(提交或撤銷)。解決該故障時,該參與者站點必須了解其他相關站點的情況,之后再做出相應的執行決定。 3)如果是協調者將準備好記錄寫入日志后,在寫入正常提交或中止事務之前,發生故障。那么所有回答ready T消息的參與者必須等待協調者自行恢復后,再次把準備消息發送給參與者,每個就緒的參與者必須具有識別出,這個prepare T消息是新消息還是舊消息的能力。 4)如果是協調者在日志中寫入正常提交或中止事務之后,而在日志中寫入事務完成以前,發生故障。那么協調者在恢復后,必須再次發送他的決定,沒有收到此消息的所有參與者,必須等待協調者自行恢復完畢。 5)如果是協調者在日志中寫入事務完成以后,發生故障。意味著此事務已經全面結束,協調者在故障恢復后不做任何反應。 在實際應用中,分布式數據庫系統中安全性和利用效率無法兼得,只能在互相制衡中尋求兩者的平衡點,單獨地采用任何一種安全策略都不能解決實際問題,應該針對具體問題,結合多種安全機制來保障其安全性。另外,由于分布式數據庫系統不安全因素的不可預見性,所以,這是一項任重而道遠,堅持不懈的工作。 參考文獻: [1]王珊,薩師煊.數據庫系統概論(第5版)[M].北京:高等教育出版社,2014. [2]陳永強.分布式數據庫系統安全策略分析[J].武漢:武漢工業學院學報,2003(6).35-37. [3]M.Tamer Ozsu,Patrick Valduriez,周立柱譯.分布式數據庫系統原理(第3版)[M].北京:清華大學出版社,2014. [4]Saeed K.Rahimi,Frank S.Haug,分布式數據庫管理系統實踐[M].北京;清華大學出版社,2004. [5]邵佩英.分布式數據庫系統及其應用[M].北京:科學出版社,2000. [6]江文斌,張仁津,張方霞.分布式數據庫系統安全策略分析[J].電腦知識與技術,2009. [7]張樂樂.淺析分布式數據庫系統的安全策略[J].科技資訊,2012(19):25-27. *基金項目:2013年度甘肅省高等學校科研項目(項目編號:2013A-125)。 中圖分類號:P209
4 結語