基于3DES動態(tài)密鑰的數(shù)據(jù)庫加密方法

數(shù)據(jù)庫的安全威脅是信息系統(tǒng)安全的核心障礙之一,因此給數(shù)據(jù)庫加密是非常必要的。但是傳統(tǒng)的數(shù)據(jù)庫加密方法總是存在著這樣或那樣的缺陷,為了解決這一缺陷,我們提出了一種密鑰由動態(tài)密鑰生成策略生成的基于三重DES加密算法的數(shù)據(jù)庫系統(tǒng)加密方法。該方法大大降低了數(shù)據(jù)密鑰的存儲量,改善了對數(shù)據(jù)密鑰的管理。

一、基于3DES的動態(tài)密鑰生成方案

1、使用雙密鑰的三重DES加密算法

三重DES加密是一種將DES加密算法多次使用的技術(shù)。

在第一次使用中,明文通過加密算法轉(zhuǎn)化為密文。然后將該密文作為輸入重新執(zhí)行加鏹算法,該過程重復(fù)三次。在加密的三個階段。共享兩組不同的密鑰:具體運算過程是加密——解密——加密(EDE)。

給定明文P及密鑰K1,K2,解密時仍按同樣順序使用這兩個密鑰。

2、三級密鑰關(guān)系及密鑰轉(zhuǎn)換

為了減少單個密鑰的使用周期,增加整體安全性,在密鑰管理中,采用層次密鑰結(jié)構(gòu),將密鑰層次分為了三層:

設(shè)用戶集U={u1,u2...un)u代表n個用戶。U對應(yīng)的用戶密鑰集KU={ku1,ku2...kuj}一個密文表對應(yīng)一個密鑰加密密鑰Kk;而一個密鑰加密密鑰K。又對應(yīng)一個用戶密鑰集KU??芍篕U={ku1,ku2...kuj}與Kk是多對一的映射關(guān)系。

采用下面的密鑰轉(zhuǎn)換方案實現(xiàn){ku1,kU2---kun}與Kk的映射。

設(shè)T為轉(zhuǎn)換參數(shù)生成器。對應(yīng)每一個用戶ui有一個解密參數(shù)Pi,pi由T生成。T構(gòu)造如下:

系統(tǒng)中有一個安全的傳統(tǒng)加解密算法(E,D),用戶ui要訪問KL時,ui提供kui,系統(tǒng)找到對應(yīng)的p“計算E(ku*,pj=E(kui.D(ku1.KJ)=KL'這樣實現(xiàn)了{ku1,kU2---kun}與Kr的映射。對于一個非法用戶ui,系統(tǒng)中沒有與之對應(yīng)的n,因此無法得到Kk。

3、動態(tài)密鑰生成策略及數(shù)據(jù)解密流程

在數(shù)據(jù)庫中每一個數(shù)據(jù)表對應(yīng)一個密鑰加密密鑰Kk。我們?yōu)槊恳粋€數(shù)據(jù)表添加一個字段ID,該字段的數(shù)據(jù)類型為int。并且被定義為從1開始,步長為1。每新加入一個記錄,都用一個連續(xù)的自然數(shù)來表示該記錄。定義該字段的目的,主要是為了確定表中每行數(shù)據(jù)的所在行的序號。這樣,通過字段ID和表中的數(shù)據(jù)所在列的序號可以唯一確定表中的每一個數(shù)據(jù)。

設(shè)明文表中某一待加密的明文數(shù)據(jù)為P,P所對應(yīng)的字段ID值為X。對應(yīng)列所在的序號為Y。

設(shè)數(shù)據(jù)密鑰K1=kk+X,K2=KI+Y(+為異或運算)。將KI和Kk作為3DES加密算法的兩組密鑰。設(shè)C為加密結(jié)果,具體的運算過程按照加密一解密一加密模式。

數(shù)據(jù)庫解密與加密流程類似,本文以數(shù)據(jù)庫解密流程為例進行簡單分析。如圖3所示的數(shù)據(jù)庫解密流程,當用戶ui需要查看密文表中的某項密文C所對應(yīng)的明文P’時。首先輸入用戶密鑰kuj,通過密鑰轉(zhuǎn)換方案獲取密鑰加密密鑰Kc遍歷密文表中每一項密文,分別讀取每一項密文所對應(yīng)的X,Y。然后通過動態(tài)密鑰生成算法,生成該項密文對應(yīng)的密鑰K1,K2;采用三重DES解密算法對密文進行解密,得到明文P;最后將得到的明文p與用戶輸入的P’進行比較。如果P=P’,則解密完成,否則說明用戶ui要查找的明文P不在該密文表中。

二、基于3DES動態(tài)密鑰的數(shù)據(jù)庫加密方法理論分析與實驗結(jié)果

1、安全性分析

(1)在加密過程中由于使用了兩組不同的密鑰,這種方法的密鑰長度為56x2=112位,密碼強度增加了。

(2)對于三重DES的窮舉攻擊的代價是2ll2≈(5xl033)數(shù)據(jù)級的。且用差分密碼分析的代價是按指數(shù)級增長的,與單DES算法比較超出1052倍。

(3)使用雙密鑰的三重DES算法。密鑰對K1和K2輪流使用可以很好地抵抗中間相遇攻擊。

(4)密鑰對K1和K2無需存儲,存儲在密鑰庫中的只是Kk的密文。用戶密鑰集KU={ku1,ku2...kuj}存儲于客戶端。由用戶持有,入侵者想找到密鑰對K1和K2很困難。

2、效率分析

在傳統(tǒng)的基于宇段的數(shù)據(jù)庫加密方法中密鑰是靜態(tài)生成的,數(shù)據(jù)密鑰個數(shù)=記錄個數(shù)×字段個數(shù)。這需要我們?nèi)ス芾砗途S護一張十分龐大的密鑰表。而將動態(tài)生成密鑰的策略應(yīng)用于數(shù)據(jù)庫加密系統(tǒng)中,數(shù)據(jù)密鑰在加密和解密的時候才會動態(tài)生成,無需存儲。需要存儲的只是轉(zhuǎn)換參數(shù)生成器T生成的加密鑰的存儲最大大降低。

對于數(shù)據(jù)密鑰是靜態(tài)生成的傳統(tǒng)的數(shù)據(jù)庫加密方法和動態(tài)生成數(shù)據(jù)密鑰的數(shù)據(jù)庫加密方法,我們做了如下實驗:

實驗環(huán)境:VC++6.O+SQL Server2000,操作系統(tǒng)Wiridows XP。

分別用基于動態(tài)密鑰生成算法的數(shù)據(jù)庫加密系統(tǒng)和傳統(tǒng)的密鑰是靜態(tài)生成的數(shù)據(jù)庫加密系統(tǒng)對蘭個不同大小的明文表中的明文數(shù)據(jù)進行加密,加密粒度為字段級。通過實驗得到加密單位明文數(shù)據(jù)所需的平均時間(單位:毫秒)對比如表2所示:

由實驗結(jié)果可知.基于動態(tài)密鑰生成算法的數(shù)據(jù)庫加密系統(tǒng)和密鑰是靜態(tài)生成的數(shù)據(jù)庫加密系統(tǒng)相比,當明文表規(guī)模較小時,在時間效率上,差異性體現(xiàn)不明顯,效率基本保持一致。但是,隨著明文表規(guī)模不斷增大。本文加密方法的優(yōu)越性逐漸體現(xiàn)出來。

通過理論分析和實驗結(jié)果證明了該數(shù)據(jù)庫加密系統(tǒng)兼顧了加密的效率和數(shù)據(jù)庫的安全性。

小知識之3DES

3DES(或稱為Triple DES)是三重數(shù)據(jù)加密算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當于是對每個數(shù)據(jù)塊應(yīng)用三次DES加密算法。由于計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設(shè)計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設(shè)計一種全新的塊密碼算法。