數(shù)據(jù)庫加密技術(shù)淺析

數(shù)據(jù)庫簡單來講它是存儲數(shù)據(jù)的一個倉庫,信息安全的核心就是數(shù)據(jù)庫的安全,近些年來隨著信息技術(shù)的發(fā)展,人們對數(shù)據(jù)的安全性也提出了更高的要求,數(shù)據(jù)庫的加密技術(shù)是保障數(shù)據(jù)安全的一種簡單有效的方法,因此備受人們的關(guān)注并得到廣泛的應(yīng)用。本文主要從數(shù)據(jù)庫加密的要求特點和如何實現(xiàn)等幾個方面進(jìn)行了論述。

一、數(shù)據(jù)庫加密應(yīng)滿足的要求

數(shù)據(jù)庫加密系統(tǒng)應(yīng)滿足的首要條件是保證數(shù)據(jù)的安全性。在此方面要求加密算法保證數(shù)據(jù)的保密性和完整性.防止未授權(quán)的數(shù)據(jù)訪問和修改。

數(shù)據(jù)庫中存在大量的查詢操作,因此加解密效率要求較高,不能引起數(shù)據(jù)庫系統(tǒng)的性能大幅度下降。

數(shù)據(jù)庫組織結(jié)構(gòu)對于數(shù)據(jù)庫管理系統(tǒng)而言不能有太大的變動,應(yīng)盡可能做到明文和密文長度相等或至少相當(dāng)。

由于時限較長和密鑰的復(fù)雜.密鑰管理機制應(yīng)更加安全、靈活和堅固。

二、數(shù)據(jù)的幾種方式

對數(shù)據(jù)進(jìn)行加密,主要有三種方式:系統(tǒng)中加密、客戶端(DBMS外層)加密、服務(wù)器端(DBMS內(nèi)核層)加密??蛻舳思用艿暮锰幨遣粫又財?shù)據(jù)庫服務(wù)器的負(fù)載,并且可實現(xiàn)網(wǎng)上的傳輸加密,這種加密方式通常利用數(shù)據(jù)庫外層工具實現(xiàn)。而服務(wù)器端的加密需要對數(shù)據(jù)庫管理系統(tǒng)本身進(jìn)行操作,屬核心層加密,如果沒有數(shù)據(jù)庫開發(fā)商的配合,其實現(xiàn)難度相對較大。此外,對那些希望通i~ASP獲得服務(wù)的企業(yè)來說,只有在客戶端實現(xiàn)加解密,才能保證其數(shù)據(jù)的安全可靠。

對數(shù)據(jù)庫中數(shù)據(jù)加密是為增強普通關(guān)系數(shù)據(jù)庫管理系統(tǒng)的安全性,提供一個安全適用的數(shù)據(jù)庫加密平臺,對數(shù)據(jù)庫存儲的內(nèi)容實施有效保護(hù)。它通過數(shù)據(jù)庫存儲加密等安全方法實現(xiàn)了數(shù)據(jù)庫數(shù)據(jù)存儲保密和完整性要求,使得數(shù)據(jù)庫以密文方式存儲并在密態(tài)方式下工作,確保了數(shù)據(jù)安全。

三、數(shù)據(jù)庫加密技術(shù)的功能和特性

一般而言,一個行之有效的數(shù)據(jù)庫加密技術(shù)主要有以下6個方面的功能和特性。

1.身份認(rèn)證:

用戶除提供用戶名、口令外,還必須按照系統(tǒng)安全要求提供其它相關(guān)安全憑證。如使用終端密鑰。

2.通信加密與完整性保護(hù):

有關(guān)數(shù)據(jù)庫的訪問在網(wǎng)絡(luò)傳輸中都被加密,通信一次一密的意義在于防重放、防篡改。

3.數(shù)據(jù)庫數(shù)據(jù)存儲加密與完整性保護(hù):

數(shù)據(jù)庫系統(tǒng)采用數(shù)據(jù)項級存儲加密,即數(shù)據(jù)庫中不同的記錄、每條記錄的不同字段都采用不同的密鑰加密,輔以校驗措施來保證數(shù)據(jù)庫數(shù)據(jù)存儲的保密性和完整性,防止數(shù)據(jù)的非授權(quán)訪問和修改。

4.數(shù)據(jù)庫加密設(shè)置:

系統(tǒng)中可以選擇需要加密的數(shù)據(jù)庫列,以便于用戶選擇那些敏感信息進(jìn)行加密而不是全部數(shù)據(jù)都加密。只對用戶的敏感數(shù)據(jù)加密可以提高數(shù)據(jù)庫訪問速度。這樣有利于用戶在效率與安全性之間進(jìn)行自主選擇。

5.多級密鑰管理模式:

主密鑰和主密鑰變量保存在安全區(qū)域,二級密鑰受主密鑰變量加密保護(hù),數(shù)據(jù)加密的密鑰存儲或傳輸時利用二級密鑰加密保護(hù),使用時受主密鑰保護(hù)。

6.安全備份:

系統(tǒng)提供數(shù)據(jù)庫明文備份功能和密鑰備份功能。

四、數(shù)據(jù)庫數(shù)據(jù)加密的實現(xiàn)

使用數(shù)據(jù)庫安全保密中間件對數(shù)據(jù)庫進(jìn)行加密是最簡便直接的方法。主要是通過系統(tǒng)中加密、DBMS內(nèi)核層(服務(wù)器端)加密和DBMS外層(客戶端)加密在系統(tǒng)中加密,在系統(tǒng)中無法辨認(rèn)數(shù)據(jù)庫文件中的數(shù)據(jù)關(guān)系,將數(shù)據(jù)先在內(nèi)存中進(jìn)行加密,然后文件系統(tǒng)把每次加密后的內(nèi)存數(shù)據(jù)寫入到數(shù)據(jù)庫文件中去,讀入時再逆方面進(jìn)行解密,這種加密方法相對簡單,只要妥善管理密鑰就可以了。缺點對數(shù)據(jù)庫的讀寫都比較麻煩,每次都要進(jìn)行加解密的工作,對程序的編寫和讀寫數(shù)據(jù)庫的速度都會有影響。

在DBMS內(nèi)核層實現(xiàn)加密需要對數(shù)據(jù)庫管理系統(tǒng)本身進(jìn)行操作。這種加密是指數(shù)據(jù)在物理存取之前完成加解密工作。這種加密方式的優(yōu)點是加密功能強,并且加密功能幾乎不會影響DBMS的功能,可以實現(xiàn)加密功能與數(shù)據(jù)庫管理系統(tǒng)之間的無縫耦合。其缺點是加密運算在服務(wù)器端進(jìn)行,加重了服務(wù)器的負(fù)載,而且DBMS和加密器之間的接口需要DBMS開發(fā)商的支持。

在DBMS外實現(xiàn)加密的好處是不會加重數(shù)據(jù)庫服務(wù)器的負(fù)載,并且可實現(xiàn)網(wǎng)上的傳輸,加密比較實際的做法是將數(shù)據(jù)庫加密系統(tǒng)做成DBMS的一個外層工具,根據(jù)加密要求自動完成對數(shù)據(jù)庫數(shù)據(jù)的加解密處理。

采用這種加密方式進(jìn)行加密,加解密運算可在客戶端進(jìn)行,它的優(yōu)點是不會加重數(shù)據(jù)庫服務(wù)器的負(fù)載并且可以實現(xiàn)網(wǎng)上傳輸?shù)募用?,缺點是加密功能會受到一些限制,與數(shù)據(jù)庫管理系統(tǒng)之間的耦合性稍差。

數(shù)據(jù)庫加密系統(tǒng)分成兩個功能獨立的主要部件:一個是加密字典管理程序,另一個是數(shù)據(jù)庫加解密引擎。數(shù)據(jù)庫加密系統(tǒng)將用戶對數(shù)據(jù)庫信息具體的加密要求以及基礎(chǔ)信息保存在加密字典中,通過調(diào)用數(shù)據(jù)加解密引擎實現(xiàn)對數(shù)據(jù)庫表的加密、解密及數(shù)據(jù)轉(zhuǎn)換等功能。數(shù)據(jù)庫信息的加解密處理是在后臺完成的,對數(shù)據(jù)庫服務(wù)器是透明的。

按以上方式實現(xiàn)的數(shù)據(jù)庫加密系統(tǒng)具有很多優(yōu)點:首先,系統(tǒng)對數(shù)據(jù)庫的最終用戶是完全透明的,管理員可以根據(jù)需要進(jìn)行明文和密文的轉(zhuǎn)換工作;其次,加密系統(tǒng)完全獨立于數(shù)據(jù)庫應(yīng)用系統(tǒng),無須改動數(shù)據(jù)庫應(yīng)用系統(tǒng)就能實現(xiàn)數(shù)據(jù)加密功能;第三,加解密處理在客戶端進(jìn)行,不會影響數(shù)據(jù)庫服務(wù)器的效率。

數(shù)據(jù)庫加解密引擎是數(shù)據(jù)庫加密系統(tǒng)的核心部件,它位于應(yīng)用程序與數(shù)據(jù)庫服務(wù)器之間,負(fù)責(zé)在后臺完成數(shù)據(jù)庫信息的加解密處理.對應(yīng)用開發(fā)人員和操作人員來說是透明的。數(shù)據(jù)加解密引擎沒有操作界面,在需要時由操作系統(tǒng)自動加載并駐留在內(nèi)存中,通過內(nèi)部接口與加密字典管理程序和用戶應(yīng)用程序通訊。數(shù)據(jù)庫加解密引擎由三大模塊組成:加解密處理模塊、用戶接口模塊和數(shù)據(jù)庫接口模塊。

上面的論述還遠(yuǎn)遠(yuǎn)沒達(dá)到數(shù)據(jù)庫安全需要,一個好的安全系統(tǒng)必須綜合考慮和運用這些技術(shù),以保證數(shù)據(jù)的安全。通過以上論述希望對大家有所幫助,同時也和大家一起討論一起學(xué)習(xí),共同進(jìn)步。