分布式數(shù)據(jù)庫加密技術(shù)

分布式數(shù)據(jù)庫系統(tǒng)是新近發(fā)展起來的一種技術(shù),雖然它可以有效的維護(hù)和管理龐大的數(shù)據(jù)庫,提高了數(shù)據(jù)庫的可用性和可靠性,但由于分布式數(shù)據(jù)庫中,大多都存放著重要文件,因此其安全性就顯得越來越重要了,這就需要我們隊(duì)分布式數(shù)據(jù)庫文件進(jìn)行加密。

一、分布式數(shù)據(jù)庫系統(tǒng)特點(diǎn)

分布式數(shù)據(jù)庫系統(tǒng)是在集中式數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)上發(fā)展起來的,是計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)結(jié)合的產(chǎn)物。分布式數(shù)據(jù)庫系統(tǒng)適合于單位分散的部門,允許各個(gè)部門將其常用的數(shù)據(jù)存儲在本地,實(shí)施就地存放本地使用,從而提高響應(yīng)速度,降低通信費(fèi)用。分布式數(shù)據(jù)庫系統(tǒng)與集中式數(shù)據(jù)庫系統(tǒng)相比具有可擴(kuò)展性,通過增加適當(dāng)?shù)臄?shù)據(jù)冗余提高系統(tǒng)的可靠性。

分布式數(shù)據(jù)庫系統(tǒng)具有靈活的體系結(jié)構(gòu),能適應(yīng)分布式的管理和控制機(jī)構(gòu),系統(tǒng)的可靠性高、可用性好,局部應(yīng)用的響應(yīng)速度快,并且經(jīng)濟(jì)性能優(yōu)越,可擴(kuò)展性好,易于集成現(xiàn)有系統(tǒng)。但是分布式數(shù)據(jù)庫的系統(tǒng)開銷相對較大,并且具有復(fù)雜的存取結(jié)構(gòu),原來在集中式系統(tǒng)中有效存取數(shù)據(jù)的技術(shù),在分布式系統(tǒng)中都不再適用。更重要的是分布式數(shù)據(jù)庫的數(shù)據(jù)安全性和保密性較難處理。因此,在分布式數(shù)據(jù)庫中常采用加密手段保證數(shù)據(jù)安全。

二、分布式數(shù)據(jù)庫加密

對于一般的數(shù)據(jù)庫系統(tǒng),我們可以采用身份識別、訪問控制、完整性控制與檢查、病毒防護(hù)、安全審計(jì)等安全管理技術(shù)來構(gòu)筑其安全體系,以保證數(shù)據(jù)的安全性和可靠性。但是由于分布式數(shù)據(jù)庫一般保存著重要的商業(yè)、軍事或政治等信息,某些用戶可能非法獲取用戶名、口令字或利用其他方法越權(quán)使用數(shù)據(jù)庫,甚至可以直接打開數(shù)據(jù)庫文件來竊取或篡改信息,所以僅靠前面介紹的的安全措施難以完全保證其數(shù)據(jù)的安全性,因此有必要對數(shù)據(jù)庫中存儲的重要文件進(jìn)行加密處理。

1、數(shù)據(jù)庫加密層次

可以考慮在三個(gè)不同層次實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的加密,這三個(gè)層次分別是OS層、DBMS內(nèi)核層和DBMS外層.。

(1)在OS層加密 

由于在OS層無法辨認(rèn)數(shù)據(jù)庫文件中的數(shù)據(jù)關(guān)系,從而無法產(chǎn)生合理的密鑰,對密鑰合理的管理和使用也很難。因此,對分布式數(shù)據(jù)庫來說,在OS層對數(shù)據(jù)庫文件進(jìn)行加密很難實(shí)現(xiàn)。

(2)在DNMS內(nèi)核層實(shí)現(xiàn)加密

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

(3)在DBMS外層實(shí)現(xiàn)加密

是將數(shù)據(jù)庫加密系統(tǒng)做成DBMS的一個(gè)外層工具,根據(jù)加密要求自動完成對數(shù)據(jù)庫數(shù)據(jù)的加密和解密處理。采用這種加密方式進(jìn)行加密,加密和解密運(yùn)算可在客戶端進(jìn)行,它的優(yōu)點(diǎn)是不會加重?cái)?shù)據(jù)庫服務(wù)器的負(fù)載并且可以實(shí)現(xiàn)網(wǎng)上傳輸?shù)募用?,缺點(diǎn)是加密功能會受到一些限制,與數(shù)據(jù)庫管理系統(tǒng)之間的耦合性稍差。

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

2、分布式數(shù)據(jù)庫加密處理流程

3、影響分布式數(shù)據(jù)庫加密的關(guān)鍵性因素

(1)加密粒度 

數(shù)據(jù)庫加密系統(tǒng)的加密粒度有多種選擇,按由大至小的次序排列,包括以表為單位、以記錄為單位和以數(shù)據(jù)項(xiàng)為單位等實(shí)現(xiàn)加密和加密操作??傮w來說,加密粒度越小則靈活度越高且安全性越好,但實(shí)現(xiàn)技術(shù)也更為復(fù)雜、難度更大。在實(shí)際實(shí)現(xiàn)中后兩種加密粒度使用較多。

以表為單位的加密方法類似于操作系統(tǒng)中文件加密的方法,每個(gè)表與不同的表密鑰運(yùn)算,形成密文后存儲。根據(jù)表的物理存儲實(shí)現(xiàn)方式的不同,加密單位可能是文件或文件中的塊。該方式實(shí)現(xiàn)最為簡單,但該方式中的靈活度最低且執(zhí)行效率最低,浪費(fèi)大量DBMS或加密服務(wù)器計(jì)算資源。

當(dāng)加密和解密的粒度為每個(gè)記錄的字段數(shù)據(jù)/數(shù)據(jù)項(xiàng)時(shí),系統(tǒng)的安全性與靈活性最高,同時(shí)實(shí)現(xiàn)技術(shù)也最復(fù)雜。在該方式中,每個(gè)數(shù)據(jù)項(xiàng)可以獨(dú)立的進(jìn)行加、解密操作,并使用不同的數(shù)據(jù)項(xiàng)密鑰。

以記錄為單位的加密介乎前兩種粒度之間。將記錄看作操作對象,統(tǒng)一進(jìn)行加密和解密處理。只有以記錄的字段數(shù)據(jù)為單位進(jìn)行加密和解密,才能適應(yīng)數(shù)據(jù)庫操作,同時(shí)進(jìn)行有效的密鑰管理并完成 “一次一密”的密碼操作。

(2)加密算法

目前缺乏專門針對數(shù)據(jù)庫加密的加密算法,因而分布式數(shù)據(jù)庫加密時(shí)只有根據(jù)數(shù)據(jù)庫特點(diǎn)選擇現(xiàn)有的加密算法。由于加解密速度是分布式數(shù)據(jù)庫考慮的一個(gè)重要因素,數(shù)據(jù)庫加密中通常使用對稱加密體制中的塊加密算法。數(shù)據(jù)項(xiàng)長度或剩余部分長度小于加密算法所需的塊長時(shí),需要按一定規(guī)律擴(kuò)展后加密。也可以將剩余部分再用序列密碼加密。數(shù)據(jù)項(xiàng)粒度加密需要對不同的數(shù)據(jù)項(xiàng)使用不同的密鑰。但這些密鑰不能是隨機(jī)生成的,否則很難保證對同一數(shù)據(jù)項(xiàng)使用相同的加密解密的密鑰。但若是系統(tǒng)保存每一個(gè)數(shù)據(jù)項(xiàng)密鑰,則密鑰信息量與數(shù)據(jù)庫數(shù)據(jù)量相當(dāng),顯然也是不現(xiàn)實(shí)。所以數(shù)據(jù)項(xiàng)密鑰不能是獨(dú)立的,而應(yīng)該是函數(shù)自動生成的。通??梢詫?shù)據(jù)項(xiàng)密鑰表示為一個(gè)基本密鑰與數(shù)據(jù)項(xiàng)所在的行與列的函數(shù)。

(3)密鑰管理

加密數(shù)據(jù)庫中的密鑰管理比其他系統(tǒng)的密鑰管理更為困難與復(fù)雜。而分布式數(shù)據(jù)庫中存儲著海量數(shù)據(jù),已經(jīng)加密的數(shù)據(jù)需要用原來的密鑰系統(tǒng)解密,且解密時(shí)間將會很長,加密密鑰不可能隨時(shí)更換。

除此以外,根據(jù)加密粒度的不同,對不同的數(shù)據(jù)應(yīng)該使用不同的密鑰。因此分布式數(shù)據(jù)庫中需要保存大量的密鑰信息。另外,分布式數(shù)據(jù)庫客體之間隱含著復(fù)雜的邏輯關(guān)系,一個(gè)邏輯結(jié)構(gòu)可能對應(yīng)著多個(gè)數(shù)據(jù)庫物理客體,所以數(shù)據(jù)庫加密不僅密鑰量大,而且組織和存儲工作比較復(fù)雜,需要對密鑰實(shí)現(xiàn)動態(tài)管理。因此如何生成、保存、替換數(shù)據(jù)庫加密密鑰,對數(shù)據(jù)庫加密中的密鑰管理提出了更為嚴(yán)格的要求。

解決這一問題的方法之一是采用分級管理結(jié)構(gòu)。無論哪種多級密鑰體制,主密鑰都是加密子系統(tǒng)的關(guān)鍵,多級密鑰管理體制的安全依賴于主密鑰的安全。

另一種解決方法是集中密鑰管理方法。即在建立加密數(shù)據(jù)庫時(shí),由密鑰管理中心負(fù)責(zé)產(chǎn)生加密密鑰并對數(shù)據(jù)加密。當(dāng)一用戶訪問分布式數(shù)據(jù)庫時(shí),密鑰管理機(jī)構(gòu)核對用戶識別符和用戶密鑰,認(rèn)為是合法用戶,則允許訪問。但必須由密鑰管理機(jī)構(gòu)找到或計(jì)算出相應(yīng)的數(shù)據(jù)加密密鑰,并由他們利用數(shù)據(jù)加密算法解密出相應(yīng)的數(shù)據(jù)。由于加密粒度的不同,密鑰的種類和密鑰的數(shù)量不同。這些密鑰存儲在一張表中。這張表通過密鑰加密密鑰對其加密保存。

隨著互聯(lián)網(wǎng)的高速發(fā)展,分布式數(shù)據(jù)庫系統(tǒng)的應(yīng)用范圍也在逐步的加大,所以分布式數(shù)據(jù)庫加密技術(shù)也要進(jìn)一步向前推進(jìn)。

小知識之加密粒度

加密粒度可以分為表級、行級、列級、數(shù)據(jù)項(xiàng)級,不同加密粒度特點(diǎn)不同,加密粒度越小靈活度越高安全性越好,但是實(shí)現(xiàn)技術(shù)也越復(fù)雜,需根據(jù)隱私數(shù)據(jù)篩選情況,選擇合適的加密粒度。