數(shù)據(jù)庫加密系統(tǒng)之DBMS外層設(shè)計
大家都知道數(shù)據(jù)庫加密技術(shù)是保障數(shù)據(jù)庫安全的一種有效手段,為此我們在對數(shù)據(jù)庫加密系統(tǒng)進(jìn)行詳細(xì)研究的基礎(chǔ)上,提出了一種采用基于DBMS外層的數(shù)據(jù)庫加密系統(tǒng),下面本編就給大家簡單介紹一下。
一、數(shù)據(jù)庫加密層次
目前,數(shù)據(jù)庫加密可以在3個不同層次實現(xiàn),分別是:操作系統(tǒng)層、DBMS(數(shù)據(jù)庫管理系統(tǒng))內(nèi)核層和DBMS外層。
(1)在操作系統(tǒng)層實現(xiàn)加密和解密
由于操作系統(tǒng)層無法判別數(shù)據(jù)庫文件中的數(shù)據(jù)關(guān)系,從而無法產(chǎn)生合理的密鑰,所以對大型數(shù)據(jù)庫而言,在操作系統(tǒng)層對數(shù)據(jù)庫文件進(jìn)行加密很難實現(xiàn),已經(jīng)不被人們考慮;
(2)在DBMS內(nèi)核層實現(xiàn)加密和解密
是指數(shù)據(jù)在物理存取前完成加密解密工作。采用這樣的方式優(yōu)點是加密功能強(qiáng),并且不會影響DBMS的功能,能夠?qū)崿F(xiàn)加脫密與數(shù)據(jù)庫管理系統(tǒng)之間的無縫連接:缺點是加密和解密功能要在服務(wù)器端進(jìn)行,而且DBMS和加密解密模塊之間的接口需要DBMS開發(fā)商的支持。
(3)在DBMS外層實現(xiàn)加密和解密
是將數(shù)據(jù)庫加密系統(tǒng)做成DBMS的一個外層工具,根據(jù)用戶的加密要求自動完成對數(shù)據(jù)庫中存放數(shù)據(jù)的加密和解密處理。這種方式的優(yōu)點是:加密解密運(yùn)算在客戶端進(jìn)行,不會加重數(shù)據(jù)庫服務(wù)器的負(fù)載,并且可以實現(xiàn)網(wǎng)上傳輸?shù)募用埽喝秉c是加密功能會受到一些限制,與DBMS之間的耦合性稍差。
這種采用基于DBMS外層的數(shù)據(jù)庫加密系統(tǒng),這種方式既可以避免對具體的數(shù)據(jù)庫提供商的依賴,又可以較好地實現(xiàn)數(shù)據(jù)庫的加密。數(shù)據(jù)庫加密系統(tǒng)作為一種通過加密方式保護(hù)數(shù)據(jù)的專門系統(tǒng),它并不僅僅是一個數(shù)據(jù)庫應(yīng)用系統(tǒng),而是一個將數(shù)據(jù)庫管理、加密模塊和密鑰管理三者相結(jié)合的系統(tǒng)。
二、基于DBMS外層的數(shù)據(jù)庫加密系統(tǒng)的基本要求
基于DBMS外層的數(shù)據(jù)庫加密系統(tǒng)要求主要有以下4個方面。
1、加密算法選擇
選擇適合于數(shù)據(jù)庫系統(tǒng)的加密算法應(yīng)該滿足以下的要求:
①由于數(shù)據(jù)庫中的記錄保存時間相對較長,因此加密算法強(qiáng)度要求高;
②數(shù)據(jù)庫加密以后,明密文數(shù)據(jù)長度相同或者相當(dāng),不應(yīng)明顯增加,避免數(shù)據(jù)庫管理系統(tǒng)有較大變動;
③對于大型數(shù)據(jù)庫系統(tǒng)而言,數(shù)據(jù)庫最常見的使用方式是隨機(jī)訪問,所以加脫密速度要足夠快,對數(shù)據(jù)操作響應(yīng)時間的影響應(yīng)在用戶可接受的范圍內(nèi);
④加密算法應(yīng)該能夠直接對記錄或者字段進(jìn)行加密。
考慮到數(shù)據(jù)庫數(shù)據(jù)量大、數(shù)據(jù)訪問頻繁的特點,數(shù)據(jù)庫加密算法應(yīng)采用對稱密碼算法,并且由于數(shù)據(jù)庫字段的長度一般較小,適合采用小分組加密算法。目前數(shù)據(jù)庫加密常用的算法如下:
(1)數(shù)據(jù)加密算法(Data Encryption Algorithm,DEA)是一種對稱加密算法,很可能是使用最廣泛的密鑰系統(tǒng),特別是在保護(hù)金融數(shù)據(jù)的安全中,最初開發(fā)的DEA是嵌入硬件中的。
(2)3DES(或稱為Triple DES)是三重數(shù)據(jù)加密算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當(dāng)于是對每個數(shù)據(jù)塊應(yīng)用三次DES加密算法。由于計算機(jī)運(yùn)算能力的增強(qiáng),原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設(shè)計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設(shè)計一種全新的塊密碼算法。
(3)AES加密算法,密碼學(xué)中的高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個標(biāo)準(zhǔn)用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。
(4)RC5分組密碼算法是1994由麻薩諸塞技術(shù)研究所的Ronald L. Rivest教授發(fā)明的,并由RSA實驗室分析。它是參數(shù)可變的分組密碼算法,三個可變的參數(shù)是:分組大小、密鑰大小和加密輪數(shù)。在此算法中使用了三種運(yùn)算:異或、加和循環(huán)。
2、加密粒度選擇
較之一般的計算機(jī)數(shù)據(jù)加密技術(shù),數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)加密情況比較復(fù)雜。根據(jù)應(yīng)用場合的不同,可分別選取以文件、記錄或者字段作為加密的基本單位。由于層次不同,這3個加密粒度的適用環(huán)境與實現(xiàn)難度各不相同。
(1)以文件為單位進(jìn)行加密
把數(shù)據(jù)庫文件作為整體,用加密算法對整個數(shù)據(jù)庫文件加密來保證信息的真實性和完整性。這種方法存在極大的缺點:由于數(shù)據(jù)庫文件只有在解密后才能使用,因此,用戶在使用數(shù)據(jù)庫前需要解密整個數(shù)據(jù)文件。這樣造成用戶操作數(shù)據(jù)庫過程中,數(shù)據(jù)庫文件是以明文形式存放在磁盤上,用戶在關(guān)機(jī)前必須確保明文數(shù)據(jù)庫文件徹底刪除以防止泄密,同時對索引文件、臨時文件等一切可能引起泄密的文件也要徹底刪除。
(2)以記錄為單位進(jìn)行加密
在某種程度上說,數(shù)據(jù)庫系統(tǒng)中的每條記錄完整地存儲了一個實體的數(shù)據(jù)。因此,基于記錄的加密粒度是最常用方式。這種方式是將數(shù)據(jù)庫中每條記錄使用不同的密鑰加密后存于數(shù)據(jù)庫文件中。一般來說,記錄的長度一般較短,而在數(shù)據(jù)庫中存儲時間相對較長,如果使的密鑰少,則導(dǎo)致保密性面臨威脅,密鑰使用太多又會導(dǎo)致密鑰管理的復(fù)雜性。
(3)以字段為單位進(jìn)行加密
是指以不同記錄的不同字段為基本加密粒度進(jìn)行加密。該方法可以對數(shù)據(jù)庫中單個數(shù)據(jù)元素進(jìn)行加密。這種方式的優(yōu)點是具有最小的加密粒度,因而具有更好的靈活性和適應(yīng)性。缺點在于:加脫密效率低:如果采用密鑰對單個數(shù)據(jù)元素重復(fù)加密,則對于密文搜索攻擊是脆弱的;如果各個字段的數(shù)據(jù)元素分別使用不同的密鑰加密,其密鑰數(shù)據(jù)非常龐大,導(dǎo)致密鑰管理困難。
綜合以上所述的不同加密粒度的優(yōu)缺點,本文設(shè)計的加密系統(tǒng)采用以字段為粒度的加密單位,而密鑰的分配則以記錄為單位進(jìn)行。這樣既可以保證加密的強(qiáng)度又可以避免龐大的密鑰管理。
3、密鑰動態(tài)管理
由于數(shù)據(jù)庫中的數(shù)據(jù)是長期存放的,因此數(shù)據(jù)的加密解密密鑰不能隨意丟失。為保證在密鑰的生存期內(nèi)不會泄露出去,必須對密鑰進(jìn)行合理的管理。使用數(shù)據(jù)庫的客體間存在著較復(fù)雜的邏輯關(guān)系,所以數(shù)據(jù)庫加密系統(tǒng)中不僅存有大量密鑰,而且組織和存儲工作非常復(fù)雜,需要對密鑰進(jìn)行動態(tài)管理。
4、降低數(shù)據(jù)庫加密后的影響
對于數(shù)據(jù)庫加密系統(tǒng)而言,最大不利因素就是其對數(shù)據(jù)庫系統(tǒng)效率的影響。用戶在對數(shù)據(jù)庫進(jìn)行頻繁的隨機(jī)訪問過程中,要求數(shù)據(jù)庫系統(tǒng)查詢速度高。對數(shù)據(jù)庫加密之后,如果沒有適當(dāng)?shù)奶幚?,將使?shù)據(jù)庫的訪問速度變慢,如果超過了用戶的容忍度,那么加密數(shù)據(jù)庫也就失去了意義。因此,設(shè)計數(shù)據(jù)庫加密系統(tǒng)的一個最基本的要求就是加脫密速度快。此外,對數(shù)據(jù)庫的合法用戶而言,加密過程應(yīng)該是透明的,即用戶在對數(shù)據(jù)的錄入、檢索和修改等操作時,無需考慮數(shù)據(jù)的加密解密問題。
三、用基于DBMS外層的數(shù)據(jù)庫加密系統(tǒng)結(jié)構(gòu)研究
1、數(shù)據(jù)庫中數(shù)據(jù)加密、解密基本流程
數(shù)據(jù)加密基本流程是指將需要加密的敏感數(shù)據(jù)使用密鑰進(jìn)行加密操作,變換成其他人無法識別的形式。“秘密通道”是為保護(hù)密鑰而使用的。在本文設(shè)計的數(shù)據(jù)庫加密系統(tǒng)中,秘密通道是指使用3級密鑰體制的密鑰保護(hù)方式。
2、數(shù)據(jù)庫加密系統(tǒng)體系結(jié)構(gòu)
本數(shù)據(jù)庫加密系統(tǒng)采用DBMS外層加密方式,數(shù)據(jù)加密算法使用成熟的3DES,動態(tài)的多級密鑰管理。數(shù)據(jù)庫加密系統(tǒng)分成3個功能相對獨立的模塊:數(shù)據(jù)庫加密解密引擎、密鑰管理模塊和加密系統(tǒng)管理模塊。對于客戶端使用的數(shù)據(jù)庫應(yīng)用程序?qū)儆谕ǔ?shù)據(jù)庫管理應(yīng)用程序;服務(wù)器端是數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)文件,這里不作為重點研究。
加密解密引擎:它是數(shù)據(jù)庫加密系統(tǒng)的核心部分,主要功能是完成后臺數(shù)據(jù)的加密解密處理,實現(xiàn)用戶對數(shù)據(jù)的透明訪問。
密鑰管理模塊:密鑰管理模塊主要負(fù)責(zé)密鑰的生產(chǎn)、更換、檢測和銷毀等工作。為加密解密引擎提供密鑰,也為加密系統(tǒng)管理程序提供密鑰的管理。
加密系統(tǒng)管理模塊:對整個數(shù)據(jù)庫加密系統(tǒng)進(jìn)行加密字典和密鑰等加密參數(shù)的管理模塊。它調(diào)用加密解密引擎實現(xiàn)數(shù)據(jù)庫記錄的明、密文之間的數(shù)據(jù)轉(zhuǎn)換,調(diào)用密鑰管理模塊進(jìn)行密鑰的管理。
3、主要功能模塊
(1)加密解密引擎
數(shù)據(jù)庫加密系統(tǒng)的加密解密引擎主要包括兩個主要功能模塊:數(shù)據(jù)庫接口模塊和加密解密處理模塊。
1)數(shù)據(jù)庫接口模塊;主要有兩部分接口
①用戶訪問加密解密引擎的接口;
②加密解密引擎訪問后臺的數(shù)據(jù)庫文件的接口函數(shù)。
該接口模塊將所有訪問數(shù)據(jù)庫的操作封裝成一組函數(shù),屏蔽了各類不同數(shù)據(jù)庫的特性,使得加密解密處理模塊不必考慮實際使用的是何種數(shù)據(jù)庫。
2)加密解密處理模塊
它是加密解密引擎的核心部分,它主要負(fù)責(zé)數(shù)據(jù)的加密解密處理。它包括:引擎的初始化、加密參數(shù)信息的檢索、字段的加密變換和查詢結(jié)果的脫密變換等功能。
在該模塊中,加密算法是核心。不同的加密算法其強(qiáng)度和加密速度是不同的,具體見上文。本系統(tǒng)設(shè)計使用3DES算法。3DES算法的長度是固定的,因此,在對字段進(jìn)行加密時,必須對加密的數(shù)據(jù)以112位長度為單位進(jìn)行分割以便使用3DES算法加密,分割后不足112位數(shù)據(jù)補(bǔ)0。解密時,同樣使用3DES算法,同時要去掉加密時添加的0以還原數(shù)據(jù)。下面以數(shù)據(jù)庫最常用到的操作來說明加脫密處理的主要流程。
(2)密鑰管理模塊
密鑰管理模塊的功能是給加密解密模塊提供密鑰和相關(guān)的密鑰驗證和保護(hù)。本文設(shè)計的加密解密引擎采用字段加密的方式對數(shù)據(jù)庫中的敏感數(shù)據(jù)進(jìn)行密存。密鑰管理設(shè)計為最具靈性的記錄項加密粒度下的3級密鑰管理方式。數(shù)據(jù)庫里的密鑰分3級:主密鑰MK.表密鑰TK和數(shù)據(jù)密鑰Kij。在密鑰管理中,主密鑰是最重要的密鑰,它用來保護(hù)表密鑰,用它將表密鑰加密后存儲在加密字典中,而主密鑰本身則存放在密碼裝置中。表密鑰用以保護(hù)數(shù)據(jù)密鑰Kij,根據(jù)待加密的第i條記錄參數(shù)Ri,以及它的第j個加密字段屬性Cj,那么該數(shù)據(jù)項的密鑰可由下面的公式產(chǎn)生:
KIj=f(TK,Ri,Cj)。
該數(shù)據(jù)密鑰是用來加密數(shù)據(jù)的工作密鑰,不用物理方式存儲。
(3)加密系統(tǒng)管理模塊
加密系統(tǒng)管理模塊是操作人員對數(shù)據(jù)庫加密系統(tǒng)進(jìn)行管理的工具。它位于DBMS與客戶端數(shù)據(jù)庫應(yīng)用程序之間,主要功能是:驗證用戶是否具有對加密數(shù)據(jù)的訪問權(quán)限,根據(jù)用戶的需求更改加密參數(shù);調(diào)用加密解密引擎實現(xiàn)對數(shù)據(jù)庫中敏感數(shù)據(jù)的加密解密及數(shù)據(jù)轉(zhuǎn)換功能。用戶只有通過該模塊才能訪問加密字典,這樣既可保證整個數(shù)據(jù)庫加密系統(tǒng)設(shè)計的獨立性,也更好地保證了加密字典的安全性。
四、加密系統(tǒng)的限制及對數(shù)據(jù)庫的影響
數(shù)據(jù)庫加密系統(tǒng)使用高強(qiáng)度的密碼算法對敏感數(shù)據(jù)進(jìn)行復(fù)雜的加密操作,并使用3級密鑰體制保護(hù)工作密鑰。這樣的設(shè)計可以有效地防止來自操作系統(tǒng)和DBMS的攻擊。但是,DBMS必須能夠識別出部分?jǐn)?shù)據(jù),以便完成數(shù)據(jù)庫文件的管理和使用,這樣加密系統(tǒng)必須有一定的限制。另外,數(shù)據(jù)庫加密系統(tǒng)不可避免地會對DBMS產(chǎn)生一定影響。
1、加密系統(tǒng)的限制
(1)索引字段不能加密
數(shù)據(jù)庫的索引字段一般是為了達(dá)到迅速查詢的目的,因此索引字段需要在明文狀態(tài)下建立和維護(hù)使用,否則將失去索引的作用。
(2)表間的連接碼字段不能加密
在數(shù)據(jù)庫中,數(shù)據(jù)表之間存在著密切的聯(lián)系,而這種聯(lián)系通常是通過外部編碼實現(xiàn)的,如果這些編碼加了密,則無法進(jìn)行表與表之間的連接運(yùn)算。
(3)關(guān)系運(yùn)算的比較字段不能加密
DBMS在完成關(guān)系運(yùn)算,如參加和、差、積、選擇和連接等操作的數(shù)據(jù),一般要經(jīng)過條件的篩選,這種“條件”選擇項必須是明文,否則DBMS將無法進(jìn)行比較。
2、DBMS影響
(1)失去對密文數(shù)據(jù)的分組、排序和分類功能
數(shù)據(jù)庫應(yīng)用中,經(jīng)常要對檢索的數(shù)據(jù)進(jìn)行分組、排序和分類。這些數(shù)據(jù)項如果加密,則不能使用這些操作,即,SELECT語句中的groupby、order by和having子句無法在加密數(shù)據(jù)上使用。
(2)無法實現(xiàn)數(shù)據(jù)之間的約束條件
在數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)之間定義了完整的約束條件。但是,數(shù)據(jù)加密后,DBMS將無法實現(xiàn)這一功能。此外,數(shù)據(jù)加密后,數(shù)值類型的數(shù)據(jù)只能在數(shù)據(jù)規(guī)定的范圍內(nèi)加密,加密后的數(shù)據(jù)長度不能超過字段定義的長度,否則DBMS無法接受不符合定義的數(shù)據(jù)。
(3)SQL語言中的內(nèi)部函數(shù)將對加密數(shù)據(jù)失去作用
DBMS對各類數(shù)據(jù)均提供了一些內(nèi)部函數(shù),顯然這些函數(shù)不可直接作用于加密后的數(shù)據(jù)。
(4)DBMS自帶的應(yīng)用開發(fā)工具的使用受限
DBMS的一些應(yīng)用開發(fā)工具不能直接對加密的數(shù)據(jù)進(jìn)行操作。
小知識之DBMS
數(shù)據(jù)庫管理系統(tǒng)(Database Management System)是一種操縱和管理數(shù)據(jù)庫的大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫,簡稱DBMS。它對數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。用戶通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也通過dbms進(jìn)行數(shù)據(jù)庫的維護(hù)工作。它可使多個應(yīng)用程序和用戶用不同的方法在同時或不同時刻去建立,修改和詢問數(shù)據(jù)庫。大部分DBMS提供數(shù)據(jù)定義語言DDL(Data Definition Language)和數(shù)據(jù)操作語言DML(Data Manipulation Language),供用戶定義數(shù)據(jù)庫的模式結(jié)構(gòu)與權(quán)限約束,實現(xiàn)對數(shù)據(jù)的追加、刪除等操作。




