商業(yè)銀行數(shù)據(jù)庫加密方法

對于像商業(yè)銀行這樣的數(shù)據(jù)密集型企業(yè)而言,數(shù)據(jù)的重要性日益凸現(xiàn):一方面,數(shù)據(jù)是銀行信息化的核心,是保障銀行正常運(yùn)轉(zhuǎn)的關(guān)鍵;另一方面,數(shù)據(jù)是銀行的寶貴資源和財(cái)富,對數(shù)據(jù)的挖掘、分析和利用將為銀行創(chuàng)造更大的財(cái)富。而正是由于數(shù)據(jù)如此重要,使得它成為一個(gè)非常明確的易受攻擊目標(biāo)。為保障數(shù)據(jù)安全,我們提出了一種可應(yīng)用在商業(yè)銀行大型數(shù)據(jù)庫中的動(dòng)態(tài)生成密鑰的數(shù)據(jù)庫文件加密策略。

一、數(shù)據(jù)庫加密技術(shù)應(yīng)用的重要性

要想保障數(shù)據(jù)庫的安全,首先要了解安全的威脅來源。對數(shù)據(jù)庫的威脅可能來自黑客、網(wǎng)絡(luò)外部的攻擊者或者企業(yè)防火墻內(nèi)部的某個(gè)工作人員。

目前,針對安全問題,多數(shù)網(wǎng)絡(luò)的安全措施或者策略處于一種被動(dòng)狀態(tài),主要用于保護(hù)網(wǎng)絡(luò)的邊緣安全。對于網(wǎng)絡(luò)邊緣的安全,各網(wǎng)絡(luò)廠商已經(jīng)進(jìn)行了許多有益的探索,如防火墻、入侵檢測及VPN等屬于周邊防御系統(tǒng)。但是,存在于網(wǎng)絡(luò)服務(wù)器內(nèi)的機(jī)密數(shù)據(jù)的安全隱患被忽視了。首先,外部攻擊者只要突破網(wǎng)絡(luò)就可以得到所有機(jī)密數(shù)據(jù);其次,具有一定權(quán)限的銀行內(nèi)部員工也可以獲得并且利用這些機(jī)密數(shù)據(jù)。

在目前的網(wǎng)絡(luò)安全技術(shù)下,任何網(wǎng)絡(luò)都存在漏洞。在數(shù)據(jù)不加密的情況下,任何系統(tǒng)的數(shù)據(jù)和數(shù)據(jù)庫數(shù)據(jù)對內(nèi)部和外部黑客都是公開的,黑客可以在幾分鐘內(nèi)用移動(dòng)硬盤等盜竊服務(wù)器的全部文件和數(shù)據(jù)庫數(shù)據(jù)。由于利用一些公開的權(quán)威加密算法加密的文件和數(shù)據(jù)庫數(shù)據(jù)很難被黑客破譯,因此,數(shù)據(jù)文件加密和數(shù)據(jù)庫加密成了網(wǎng)絡(luò)安全的最后一道防線,也是網(wǎng)絡(luò)安全最重要的解決方案。

二、數(shù)據(jù)庫加密策略的選擇

按照數(shù)據(jù)庫加密的層次,數(shù)據(jù)庫數(shù)據(jù)的加密可以在OS、DBMS內(nèi)核層和DBMS外層實(shí)現(xiàn)。在OS層,由于無法辨認(rèn)數(shù)據(jù)庫文件中的數(shù)據(jù)關(guān)系,從而無法產(chǎn)生合理的密鑰,也無法進(jìn)行合理的密鑰管理和使用。因此,在OS層對數(shù)據(jù)庫文件進(jìn)行加密目前還很難實(shí)現(xiàn)。在DBMS內(nèi)層和DBMS外層加密的特點(diǎn)如表1所示。

商業(yè)銀行數(shù)據(jù)庫加密方法

三、基于3DES加密算法的商業(yè)銀行數(shù)據(jù)庫動(dòng)態(tài)密鑰加密方案

由于數(shù)據(jù)庫系統(tǒng)包含文件(表)、記錄、字段等多個(gè)層次的概念,所以對數(shù)據(jù)庫文件加密也就可以選用以文件、記錄、字段作為加密基本單位的方案。根據(jù)應(yīng)用時(shí)具體要求的不同,實(shí)現(xiàn)時(shí)應(yīng)用不同的方法。在傳統(tǒng)的基于字段的數(shù)據(jù)庫加密方法中,密鑰是靜態(tài)生成的,這樣的加密方法缺點(diǎn)很明顯加密、解密效率低若用單一密鑰對每個(gè)字段重復(fù)加密,面對密文搜索攻擊是脆弱的;若各字段的數(shù)據(jù)元素分別用不同的密鑰加密,則密鑰個(gè)數(shù)=記錄個(gè)數(shù)×字段個(gè)數(shù),數(shù)量驚人,難于管理。

近幾年,為了解決上述問題,很多人提出了相應(yīng)的解決方法。歸納這些方法的共同點(diǎn),主要采取的策略是在不影響數(shù)據(jù)庫安全性的前提下,盡可能地降低密鑰的存儲量。我們從數(shù)據(jù)庫的安全性角度出發(fā),提出了一種基于三重DES加密算法的動(dòng)態(tài)密鑰生成加密策略。

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

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

給定明文巧受密鑰K1,K2,密文C按如下方式生成:

商業(yè)銀行數(shù)據(jù)庫加密方法

解密時(shí)仍按同樣順序使用這兩個(gè)密鑰:

商業(yè)銀行數(shù)據(jù)庫加密方法

加密與解密過程如圖1所示。

商業(yè)銀行數(shù)據(jù)庫加密方法

第二步,采用解密運(yùn)算并沒有什么密碼學(xué)上的深層含義,只是為了使用三重DES的用戶可以利用該加密算法解密單DES加密的數(shù)據(jù)。因?yàn)椋?/p>

商業(yè)銀行數(shù)據(jù)庫加密方法

如果分組算法有一個(gè)n位密鑰,那么用這種方法將有2n位密鑰。IBM描述了這種加密一解密一加密模式與算法的傳統(tǒng)實(shí)施之間的兼容性:如果設(shè)定Ki等于K2,這種加密方法與傳統(tǒng)加密方法只用一個(gè)密鑰加密相同。K1和K2輪流使用的本意是用于抵抗中間相遇攻擊。

2、三級密鑰關(guān)系

為了減少單個(gè)密鑰的使用周期,增加整體安全性,在密鑰管理中采用層次密鑰結(jié)構(gòu),將密鑰層次分為三層:用戶密鑰集KU={ku1,ku2,…kui},用來加密密鑰加密密鑰KK;密鑰加密密鑰KK,用來生成兩組數(shù)據(jù)密鑰K1、K2;數(shù)據(jù)密鑰K1、K2,用來加密數(shù)據(jù)庫中的明文數(shù)據(jù)文件。

三級密鑰之間的關(guān)系如表2所示。

商業(yè)銀行數(shù)據(jù)庫加密方法

3、用戶密鑰集與密鑰加密密鑰的轉(zhuǎn)換方案

設(shè)用戶集U={u1,u2,…un}代表n個(gè)用戶,U對應(yīng)的用戶密鑰集為KU={ku1,ku2,...,kun}。一個(gè)密文表對應(yīng)一個(gè)密鑰加密密鑰KK;而一個(gè)密鑰加密密鑰KK又對應(yīng)一個(gè)用戶密鑰集KU??芍琄U={ku1,ku2,...,kun}與KK是多對一的映射關(guān)系。圖2給出了KU、KK與待加密的明文表或密文表之間的關(guān)系。

商業(yè)銀行數(shù)據(jù)庫加密方法

我們采用下面的密鑰轉(zhuǎn)換方案實(shí)現(xiàn){ku1,ku2,...,kun}與Kk的映射。

設(shè)Ti為轉(zhuǎn)換參數(shù)生成器。對應(yīng)每一個(gè)用戶ui有一個(gè)解密參數(shù)Pi。 Pi由Ti生成。Ti構(gòu)造如下:系統(tǒng)中有一個(gè)安全的傳統(tǒng)加解密算法(E、D),令:

商業(yè)銀行數(shù)據(jù)庫加密方法

用戶ui要訪問KK時(shí),ui提供ku,系統(tǒng)找到對應(yīng)的pj,計(jì)算E( ku1, pi)E( ku1, I)_( ku1, Kk))Kk這樣實(shí)現(xiàn)了{(lán)ku1,ku2... kui}與Kk的映射。對于一個(gè)非法用戶uj,系統(tǒng)中沒有與之對應(yīng)的pj,因此無法得到Kk。

解密參數(shù)P;在系統(tǒng)中可能被別人讀取到,但是并不會(huì)影響安全性。因?yàn)閡i雖可知kui和所有的解密參數(shù){p1,p2…pn},但根據(jù)加密算法的性質(zhì),ui仍不能得到kuj,對于u也是如此,所以安全性有保障。

該方案的優(yōu)點(diǎn)不僅在于用戶持有密鑰量小,更重要的在于用戶密鑰的修改比較方便。如果ui要將kui改成kui’,則只要改動(dòng)Ti即可。

商業(yè)銀行數(shù)據(jù)庫加密方法

Pi'取代Pi,ui就可用kui'完成訪問,而Kk和數(shù)據(jù)庫都未作變動(dòng),也不會(huì)影響其他用戶對Kk的讀取。

采用該密鑰轉(zhuǎn)換方案所付出的代價(jià)是對于一個(gè)擁有n個(gè)用戶的待加密的明文表或密文表來說,系統(tǒng)附加了n個(gè)解密參數(shù)的存儲量。

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

數(shù)據(jù)庫中每一個(gè)數(shù)據(jù)表對應(yīng)一個(gè)密鑰加密密鑰Kk,以O(shè)Iacle數(shù)據(jù)庫為例,在設(shè)計(jì)數(shù)據(jù)表結(jié)構(gòu)時(shí),先創(chuàng)建一個(gè)sequence定義增長步長為L創(chuàng)建sequence的目的是為了確定表中每行數(shù)據(jù)所在行的序號。這樣,通過行序號和表中的數(shù)據(jù)所在列的序號可以唯一確定表中的每一個(gè)數(shù)據(jù)。

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

設(shè)數(shù)據(jù)密鑰K1=Kk+X,K2=Kk+ y(+為異或運(yùn)算)。

將K1和K2作為3DES加密算法的兩組密鑰。設(shè)C為加密結(jié)果,具體的運(yùn)算過程按照加密—解密—加密模式:

商業(yè)銀行數(shù)據(jù)庫加密方法

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

商業(yè)銀行數(shù)據(jù)庫加密方法

5、三重DES加密算法的優(yōu)點(diǎn)

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

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

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

(4)密鑰對K1和K2無需存儲,存儲在密鑰庫中的只是KK的密文。主密鑰KM存儲于客戶端,由用戶持有,入侵者想找到密鑰對K1和K2很困難。

在商業(yè)銀行大型數(shù)據(jù)庫中,如果采取傳統(tǒng)的靜態(tài)密鑰加密策略,由于數(shù)據(jù)庫中存儲的數(shù)據(jù)量巨大,將會(huì)產(chǎn)生相等量級的加密密鑰,很難對密鑰進(jìn)行有效的安全管理。基于三重DES加密算法的動(dòng)態(tài)密鑰生成加密策略可以很好地避免由于龐大的數(shù)據(jù)量所產(chǎn)生的大量加密密鑰,優(yōu)化密鑰管理,為商業(yè)銀行的數(shù)據(jù)庫安全提供了可行的加密策略。

小知識之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ù)工作。它可使多個(gè)應(yīng)用程序和用戶用不同的方法在同時(shí)或不同時(shí)刻去建立,修改和詢問數(shù)據(jù)庫。DBMS提供數(shù)據(jù)定義語言DDL(Data Definition Language)與數(shù)據(jù)操作語言DML(Data Manipulation Language),供用戶定義數(shù)據(jù)庫的模式結(jié)構(gòu)與權(quán)限約束,實(shí)現(xiàn)對數(shù)據(jù)的追加、刪除等操作。