關(guān)系型數(shù)據(jù)庫如何加密

隨著關(guān)系型數(shù)據(jù)庫在計算機應(yīng)用領(lǐng)域越來越多的應(yīng)用,數(shù)據(jù)的安全問題越來越受到重視。如果對數(shù)據(jù)庫中的數(shù)據(jù)進行加密處理,那么數(shù)據(jù)庫的安全性就能有所提高。所以,數(shù)據(jù)庫加密是解決關(guān)系型數(shù)據(jù)庫安全問題最為有效的一種方法。

一、關(guān)系型數(shù)據(jù)庫加密的必要性

關(guān)系型數(shù)據(jù)庫系統(tǒng)的安全不僅依賴自身內(nèi)部的安全機制,還與外部網(wǎng)絡(luò)環(huán)境、應(yīng)用環(huán)境、從業(yè)人員素質(zhì)等因素息息相關(guān)。因此,從廣義上講,數(shù)據(jù)庫系統(tǒng)的安全框架可以劃分為三個層次,即網(wǎng)絡(luò)系統(tǒng)層次、宿主操作系統(tǒng)層次、數(shù)據(jù)庫管理系統(tǒng)層次。

這三個層次構(gòu)筑成數(shù)據(jù)庫系統(tǒng)的安全體系,與數(shù)據(jù)安全的關(guān)系是逐步緊密的,防范的重要性也逐層加強,從外到內(nèi)、由表及里保證數(shù)據(jù)的安全。但是,值得注意的是OS和DBMS對數(shù)據(jù)庫文件本身仍然缺乏有效的保護措施,無法阻擋對數(shù)據(jù)文件本身的攻擊。

在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫管理員的權(quán)力是至高無上,他既負責(zé)各項系統(tǒng)管理工作,又可以查詢數(shù)據(jù)庫中的一切信息。為此,不少系統(tǒng)以種種手段來削弱系統(tǒng)管理員的權(quán)力。實現(xiàn)關(guān)系型數(shù)據(jù)庫加密以后,各用戶(或用戶組)的數(shù)據(jù)由用戶用自己的密鑰加密,數(shù)據(jù)庫管理員獲得的信息無法進行正常解密,從而保證了用戶信息的安全。

二、關(guān)系型數(shù)據(jù)庫加密的要求與限制

1、關(guān)系型數(shù)據(jù)庫加密的要求

由于關(guān)系型數(shù)據(jù)庫本身的特點和實際應(yīng)用需求,對關(guān)系型數(shù)據(jù)庫加密一般應(yīng)實現(xiàn)以下功能:

(1)由于關(guān)系型數(shù)據(jù)庫數(shù)據(jù)信息的生命周期一般比較長,所以加強加密的力度,難以破譯;

(2)加密系統(tǒng)應(yīng)同時提供一套安全的、靈活的密鑰管理機構(gòu),提供靈活的加密要求滿足;

(3)加密后的關(guān)系型數(shù)據(jù)庫仍能滿足用戶在不同類別程度上的訪問。

(4)數(shù)據(jù)文件加密后,不能明顯地擴大存儲空間;

(5)不能影響數(shù)據(jù)庫的使用速度,即加/解密速度都應(yīng)足夠快;

2、關(guān)系型數(shù)據(jù)庫加密的限制

數(shù)據(jù)加密通過對明文進行復(fù)雜的加密操作,以達到無法發(fā)現(xiàn)明文和密文之間、密文和密鑰之間的內(nèi)在關(guān)系,復(fù)雜性已經(jīng)破譯的難度要求足夠高,也就是說經(jīng)過加密的數(shù)據(jù)經(jīng)得起來自DS和DBMS的攻擊。另一方面,DBMS要完成對數(shù)據(jù)庫文件的管理和使用,必須具有能夠識別部分數(shù)據(jù)的條件。因此,只能對數(shù)據(jù)庫中數(shù)據(jù)進行部分加密。以下幾點是我們在給關(guān)系型數(shù)據(jù)庫加密時應(yīng)該注意的問題。

(1)索引字段不能加密為了達到快速查詢的目的,關(guān)系型數(shù)據(jù)庫文件需要建立一些索引,它們的建立和應(yīng)用必須是明文狀態(tài),否則將失去索引的作用。

(2)關(guān)系運算的比較字段不能加密DBMS要組織和完成關(guān)系運算,運算的數(shù)據(jù)一般都要經(jīng)過條件篩選,這種“條件”選擇項必須是明文,否則DBMS將無法進行比較篩選。

(3)表間的連接碼字段不能加密關(guān)系型數(shù)據(jù)庫中表之間存在著密切的聯(lián)系,這種相關(guān)性往往是“外部編碼”聯(lián)系的,這些編碼若加密就無法進行表與表之間的連接運算。

三、關(guān)系型數(shù)據(jù)庫加密方式

關(guān)系型數(shù)據(jù)庫加密,主要分為兩種方式:DBMS外部加密和DBMS內(nèi)部加密。

1、DBMS外部加密

(1)DBMS外部加密的優(yōu)點

不需要修改DBMS,只需要在應(yīng)用程序或者操作系統(tǒng)中增加相應(yīng)的加/解密模塊即可。

(2)DBMS外部加密的缺點

首先它不能支持各種加密粒度。

其次,它僅僅對用戶數(shù)據(jù)進行加密,而不能對元數(shù)據(jù)、索引數(shù)據(jù)、日志等進行加密。

因此,安全性受到影響。再者,數(shù)據(jù)的完整性檢查需要應(yīng)用程序來完成,不能盡量發(fā)揮DBMS的作用,因為數(shù)據(jù)加密后,沒有辦法在DBMS完整性檢查,而需要在應(yīng)用程序中增加這項功能,實現(xiàn)起來非常麻煩。

2、DBMS內(nèi)部加密

一般選擇在數(shù)據(jù)物理存取之前進行加/解密操作。

DBMS內(nèi)部加密優(yōu)點

由于DBMS能夠區(qū)分各種粒度的數(shù)據(jù),所以,可以支持各種粒度的加密,加密粒度可以靈活地選擇。另外,在DBMS內(nèi)部實現(xiàn)加密,可以更有效地利用DBMS內(nèi)部的訪問控制機制、授權(quán)機制等各種功能。更重要的是,關(guān)系型數(shù)據(jù)庫一個重要特點是被多個應(yīng)用共享,這種方法的加解密都是在DBMS內(nèi)部完成,對應(yīng)用程序是透明的,不需要在多個應(yīng)用中進行修改,使用起來比較方便,且容易保持數(shù)據(jù)的一致性,缺點是需要修改DBMS的內(nèi)核。關(guān)系型數(shù)據(jù)庫的關(guān)鍵術(shù)語有:數(shù)據(jù)庫、表、字段、行和數(shù)據(jù)元素?;旧峡梢葬槍@幾方面形成一種加密的方法:

(1)數(shù)據(jù)庫級加密

加密的對象是整個數(shù)據(jù)庫,對數(shù)據(jù)庫中所有的對象進行加密處理。這種加密方法只需要對存儲在磁盤中的相應(yīng)數(shù)據(jù)庫文件進行加密處理即可,密鑰的數(shù)量少,便于管理。但是,采用此加密粒度,對性能會帶來很大的影響。即使只需要查詢一條記錄,也需要對整個數(shù)據(jù)庫進行解密。這樣,訪問的速度不可避免的要降低。

(2)表級加密

加密的對象是數(shù)據(jù)庫中的基本元素表。關(guān)系型數(shù)據(jù)庫包含多個表,并不是所有的表都有很高的安全需要,因而只需要對其中一些包含敏感信息的表進行加密。與數(shù)據(jù)庫級加密相比,采用表級加密粒度,系統(tǒng)的查詢性能會有所改善,因為對于未加密表的查詢,系統(tǒng)性能不會受到影響,對于加密表的查詢,只需要解密對應(yīng)的加密表,而不要解密整個數(shù)據(jù)庫。但是,這種方法與DBMS集成時,需要對DBMS內(nèi)部一些核心模塊進行修改,這些工作是很困難完成的。

(3)記錄級加密

加密的對象是數(shù)據(jù)表中的記錄,即對整條記錄一起進行加密處理。在實現(xiàn)記錄級加密時,通過調(diào)用專門的加密函數(shù),對記錄進行加密。與數(shù)據(jù)庫和表級加密相比,這種加密的粒度更細,可選擇的靈活性更好。但是,它和表級加密一樣,這種方法也需要對DBMS內(nèi)核進行修改。

(4)字段級加密

加密的對象是關(guān)系中的某個字段,即表中的列。一張表包含多個字段,在某些時候,并不是所有的字段都需要加密。因為在實際生活中,一些重要和敏感的信息往往出現(xiàn)在關(guān)系中的某些列,只需要對這些重要數(shù)據(jù)進行加密保護,而不用對所有字段。在實現(xiàn)字段級加密時,可以采取多種方式,既可以在DBMS外部完成,也可以在DBMS內(nèi)部完成。

(5)數(shù)據(jù)項級加密

加密的對象是記錄中的某個字段值,它是數(shù)據(jù)庫加密的最小粒度。數(shù)據(jù)項級加密的方法更為靈活,它的實現(xiàn)方式與字段級加密相似,但其密鑰管理將會更加復(fù)雜。

小知識之關(guān)系型數(shù)據(jù)庫:

關(guān)系數(shù)據(jù)庫,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)?,F(xiàn)實世界中的各種實體以及實體之間的各種聯(lián)系均用關(guān)系模型來表示。