吳開均,湯殿華,曾 兵
隨著全球數(shù)字化、信息化和網(wǎng)絡(luò)一體化的推進(jìn),對用戶信息和商業(yè)機密等敏感數(shù)據(jù)的保護(hù)越來越受到公司和各個國家的重視。為了保護(hù)數(shù)據(jù)的絕對安全,這就需要對數(shù)據(jù)進(jìn)行加密,數(shù)據(jù)庫是數(shù)據(jù)最重要的載體,研究數(shù)據(jù)庫安全問題將是未來的熱點方向。文中首先簡要的介紹了數(shù)據(jù)庫加密層次問題,對數(shù)據(jù)庫外層加密進(jìn)行重點探討。在這里給出一種基于代理的數(shù)據(jù)庫外層加密模型設(shè)計,同時提出一種“洋蔥式”加密安全思想,并給出其安全模型設(shè)計,從而最大限度的保證數(shù)據(jù)庫加密系統(tǒng)的安全性和實用性。
通過對數(shù)據(jù)庫加密系統(tǒng)分析,當(dāng)前主要分為三種模式:基于操作系統(tǒng)層的加密、基于數(shù)據(jù)庫系統(tǒng)的內(nèi)核層加密和基于數(shù)據(jù)庫系統(tǒng)的外層加密,下面分析三種模式的優(yōu)缺點。
基于操作系統(tǒng)的加密,這種方法最大的優(yōu)點是極度簡化了數(shù)據(jù)庫系統(tǒng)的設(shè)計和實現(xiàn),這種方法把所有加/解密操作和密鑰管理[1]都交給了操作系統(tǒng)與文件系統(tǒng)來操作,采用這種方法對數(shù)據(jù)庫系統(tǒng)是完全透明。但是,操作系統(tǒng)本身不能識別數(shù)據(jù)庫的表結(jié)構(gòu)關(guān)系,應(yīng)用起來不夠靈活,同時對數(shù)據(jù)庫中的數(shù)據(jù)全部加密,極大的降低了數(shù)據(jù)庫工作效率?;诓僮飨到y(tǒng)次的加密,是不可取的。
基于數(shù)據(jù)庫系統(tǒng)的內(nèi)核層加密,這種加密方法優(yōu)點在數(shù)據(jù)庫系統(tǒng)內(nèi)核層直接完成交互操作,具有強大的管理功能,也不影響數(shù)據(jù)庫的應(yīng)用和其他邏輯操作?;跀?shù)據(jù)庫的內(nèi)核級別修改需要提供數(shù)據(jù)庫的許多內(nèi)部接口,但通常數(shù)據(jù)庫接口不對外提供;若使用開源的數(shù)據(jù)庫系統(tǒng),可以使用數(shù)據(jù)庫接口及源代碼,但要完全通過源代碼理解數(shù)據(jù)庫系統(tǒng)軟件邏輯并修改也是比較艱巨的任務(wù)。這樣的加密方式,會增加數(shù)據(jù)庫系統(tǒng)的負(fù)擔(dān)從而影響性能,其結(jié)構(gòu)如圖1所示。
圖1 數(shù)據(jù)庫內(nèi)核層加密關(guān)系Fig.1 Architecture of encryption model for kernelly DBMS
基于數(shù)據(jù)庫的外層加密,通過外層代理提供加/解密操作,這種方式對數(shù)據(jù)庫完全透明,數(shù)據(jù)庫系統(tǒng)按照正常方式接收請求和作出請求響應(yīng)即可,不對數(shù)據(jù)庫系統(tǒng)做繁瑣的設(shè)置等操作。選取這種加密的方式,加/解密運算模塊可以放在用戶端進(jìn)行,其最大的優(yōu)點是不會額外加重數(shù)據(jù)庫服務(wù)器的負(fù)載就可實現(xiàn)網(wǎng)上的傳輸加密,這是實際當(dāng)中比較可行的一種方式,其結(jié)構(gòu)圖2所示。
圖2 數(shù)據(jù)庫外層加密關(guān)系Fig.2 Architecture of encryption model for external DBMS
根據(jù)數(shù)據(jù)庫的商業(yè)應(yīng)用分析,理想狀態(tài)的數(shù)據(jù)庫加密系統(tǒng)最重要的特征是應(yīng)該具有可移植性,數(shù)據(jù)加密操作對數(shù)據(jù)庫而言完全透明,可以無縫對接到MySQL、Postgres等數(shù)據(jù)庫系統(tǒng),不用更改其數(shù)據(jù)庫代碼;數(shù)據(jù)庫加密系統(tǒng)[2]對數(shù)據(jù)加密后存放到數(shù)據(jù)庫中,同時支持在加密數(shù)據(jù)上執(zhí)行完全的數(shù)據(jù)庫訪問查詢操作;加密后的數(shù)據(jù)和原數(shù)據(jù)相比,數(shù)據(jù)擴展帶來的效率折損能夠達(dá)到實用化水平;數(shù)據(jù)庫加密系統(tǒng)應(yīng)能最大限度的支持單用戶和多用戶的應(yīng)用。
文中擬設(shè)計一種基于數(shù)據(jù)庫外層的加密系統(tǒng),主要包括數(shù)據(jù)庫管理系統(tǒng)(DBMS)和數(shù)據(jù)庫加密代理[3],整個運行結(jié)構(gòu)包含有:用戶端計算機、應(yīng)用服務(wù)器、代理服務(wù)器、DBMS服務(wù)器,如圖3所示。
圖3 數(shù)據(jù)庫加密系統(tǒng)架構(gòu)設(shè)計模型Fig.3 Design of encryption model for external DBMS
用戶端計算機側(cè)單個用戶或多個用戶發(fā)起一個應(yīng)用會話,應(yīng)用服務(wù)器根據(jù)用戶端的行為,應(yīng)用服務(wù)器根據(jù)用戶端的請求向代理服務(wù)器方發(fā)起詢問,代理服務(wù)器將詢問加密重寫后向DBMS服務(wù)器中的加密數(shù)據(jù)進(jìn)行詢問,完成詢問后DBMS服務(wù)器按照正常的數(shù)據(jù)庫操作完成應(yīng)答響應(yīng)提交加密代理,加密代理將詢問結(jié)果返回用戶完成整個應(yīng)用會話過程。
加密代理中分為通信管理模塊、加/解密模塊和密鑰管理模塊,其中通信模塊完成整個通信過程的調(diào)度和轉(zhuǎn)換,加/解密模塊完成對數(shù)據(jù)的加密和解密,密鑰管理模塊完成根據(jù)用戶口令生成密鑰的管理以及根據(jù)加密需求派生出相應(yīng)的密鑰,并將派生出的密鑰加密后存放在數(shù)據(jù)庫中以供調(diào)用。
在數(shù)據(jù)庫管理系統(tǒng)中最傳統(tǒng)威脅包括來自內(nèi)部管理員威脅和外部的攻擊者威脅。威脅一,出于好奇或者惡意的內(nèi)部數(shù)據(jù)管理者可能偷看DBMS中的數(shù)據(jù);威脅二,外部攻擊者可能通過非法手段取得應(yīng)用和控制DBMS服務(wù)器的權(quán)限從而達(dá)到竊取數(shù)據(jù)庫中的敏感信息。
在安全模型設(shè)計中,既要考慮數(shù)據(jù)加密存儲后能支持完全的數(shù)據(jù)庫詢問,同時也要考慮數(shù)據(jù)的安全性,安全模型設(shè)計從兩個方面進(jìn)行考慮:
(1)支持?jǐn)?shù)據(jù)庫操作的加密策略
由于所有的SQL查詢都是由最基本的操作組成:連接、求和、等值查詢、大小比較。找到各自支持這些本原操作的加密算法,就可以完成所有的SQL操作。如對稱密碼AES-CMC可以支持等值查詢,保序加密算法可以支持大小比較,同態(tài)加密算法Paillier加密系統(tǒng)可以對數(shù)據(jù)進(jìn)行求和,至于連接查詢可以使用ECC加密。
(2)基于詢問的自適應(yīng)加密
為了實現(xiàn)對密文數(shù)據(jù)完成最基本的SQL操作,對不同的加密策略數(shù)據(jù)項進(jìn)行逐一加密,不同的操作組合對應(yīng)不同的加密策略組合,當(dāng)執(zhí)行詢問時,根據(jù)詢問將數(shù)據(jù)動態(tài)調(diào)整到能執(zhí)行該詢問的加密組合,實現(xiàn)詢問操作。
基于以上思想,將數(shù)據(jù)庫最基本的操作組成分類,每類操作設(shè)計成一個加密模型,遵循由外到內(nèi)逐層加密,外層加密安全等級最高從而保證數(shù)據(jù)最基本的安全,內(nèi)層根據(jù)操作(搜索、加、等值查詢或比較查詢)等操作選擇滿足相應(yīng)功能的算法,我們將次類似洋蔥的加密模型稱為“洋蔥式加密”模型。目前初步設(shè)計四類洋蔥模型,分別是搜索洋蔥、加洋蔥、等值洋蔥和比較洋蔥,如圖4所示。
圖4 洋蔥加密模型Fig.4 Onion-mode of encryption model
對數(shù)據(jù)進(jìn)行洋蔥式加密處理后,根據(jù)數(shù)據(jù)庫支持的查詢功能進(jìn)行對應(yīng)的洋蔥式加密,將加密后的數(shù)據(jù)存儲在數(shù)據(jù)庫中,即使攻擊者或者內(nèi)部管理員也無法知道加密后的每列數(shù)據(jù)代表什么意思。當(dāng)用戶需要對數(shù)據(jù)進(jìn)行操作,首先定位該操作由哪個洋蔥完成,再判定處于該洋蔥的第幾個洋蔥層,就可以一層一層的進(jìn)行解密,實現(xiàn)相應(yīng)的數(shù)據(jù)操作。數(shù)據(jù)存儲如圖5所示。
圖5 明文數(shù)據(jù)轉(zhuǎn)化為洋蔥加密后的數(shù)據(jù)Fig.5 Database data encrypted
每個洋蔥層算法的選擇可以參考如下:
(1)搜索洋蔥
Word Search(SEARCH):SEARCH能夠在加密文本數(shù)據(jù)上執(zhí)行關(guān)鍵字搜索操作,比如MySQL的LIKE操作。當(dāng)執(zhí)行該密文搜索時首先提取文本中所有的關(guān)鍵字(去掉重復(fù)的),然后使用具有檢索功能的加密方案對關(guān)鍵字加密。其特性為:
泄露文本中關(guān)鍵字?jǐn)?shù)量,但可以保證信息的機密性;
允許對文本進(jìn)行關(guān)鍵字搜索(密態(tài))。
所使用算法:Song等人的密碼協(xié)議。
(2)加洋蔥
Homomorphic Encryption(HOM):所使用的同態(tài)算法HOM為單同態(tài),只能支持“加法同態(tài)”,用于在密文上對數(shù)據(jù)進(jìn)行求和運算,即
支持SQL上數(shù)據(jù)的 SUM,求平均數(shù)等操作,其特性為:
IND-CPA安全的方案,基本不泄露信息;
允許進(jìn)行 SUM,+,AVG。
所使用算法:Paillier加密系統(tǒng)。
(3)等值洋蔥
Random(RND):RND提供了最強的安全性,可以達(dá)到IND-CPA安全。所使用的算法是概率的,相同明文產(chǎn)生的密文是不同的。不支持任何的SQL操作。其特性為:
不泄露信息;
但是不能進(jìn)行任何密文計算。
所使用算法:AES-CBC。
Deterministic(DET):DET所提供的安全性較RND弱,由于要求DET加密下的密文具有等值查詢的功能,要求其相同的明文產(chǎn)生相同的密文,該算法應(yīng)該是確定性加密。其特性為:
泄露了相同密文所對應(yīng)的明文是相同;
所使用算法:AES-CMC(iv=0)。
Equi-join(JOIN):由于不同列所使用的密鑰不同,當(dāng)進(jìn)行連接操作時,必須把密鑰調(diào)整到相同,即相同密鑰的DET加密方案。其特性為:
當(dāng)未對兩列進(jìn)行連接查詢時,由于加密密鑰不同,不會泄露兩列的關(guān)系;
將被查詢列的密鑰調(diào)整到相同,允許等值連接。
所使用算法:ECC加密,AES-CMC。
(4)比較洋蔥
總部位于德國亞琛的FEV集團(tuán)是一家國際化動力系統(tǒng)及整車開發(fā)的國際服務(wù)供應(yīng)商。針對動力系統(tǒng)及整車,F(xiàn)EV可以提供從概念設(shè)計到最終批量生產(chǎn)的全部咨詢、開發(fā)、測試等服務(wù)。除了傳統(tǒng)的發(fā)動機與變速箱的開發(fā)、整車集成、標(biāo)定以及汽油機柴油機本地化等業(yè)務(wù),F(xiàn)EV將把重點放在混合動力、電驅(qū)動以及可替代能源領(lǐng)域。同時,F(xiàn)EV的專家團(tuán)隊也專注在電子控制系統(tǒng)、車聯(lián)網(wǎng)以及自動駕駛等先進(jìn)技術(shù)。
Random(RND):同等值洋蔥。
Order-preservingEncryption(OPE):OPE 能夠?qū)⒚魑拈g的大小關(guān)系保持到密文中,即對于任何密鑰 K,如果 x<y,有 OPEK(x)<OPEK(y)。該算法是為了維持對密文數(shù)據(jù)的比較操作,但是泄露數(shù)據(jù)的大小信息,其特性為:
泄露數(shù)據(jù)的大小順序;
允許進(jìn)行比較查詢,ORDER BY,MIN,MAX,SORT。
所使用算法:BCYO保序?qū)ΨQ加密算法。
Range-join(OPE-JOIN):很少發(fā)生,需要提前宣稱所需比較的列,并匹配密鑰。
文中對于數(shù)據(jù)庫加密系統(tǒng)設(shè)計進(jìn)行了初淺的探討,并根據(jù)自己的理解提出了一種基于數(shù)據(jù)庫外層加密的洋蔥式加密設(shè)計思想,同時對洋蔥層加密算法在理論層面做了初步選擇,后面將進(jìn)一步驗證。但作為大勢所趨,對不改變數(shù)據(jù)庫原有結(jié)構(gòu)同時能對加密后的數(shù)據(jù)進(jìn)行完整同態(tài)操作的數(shù)據(jù)庫加密設(shè)計思想將會是未來研究的熱點,尤其是未來以云計算為應(yīng)用背景的研究將是重中之重。
[1] 馮朝勝,袁?。荑€管理在數(shù)據(jù)庫加密系統(tǒng)中的應(yīng)用研究[J].四川大學(xué)學(xué)報:自然科學(xué)版,2005(06):1118-1122.
FENG Chao-sheng,YUAN Ding.Application Research on Key Management in Database Encryption System[J].Journal of Sichuan University:Natural Science Edition,2005(06):1118-1122.
[2] 朱魯華,陳榮良.?dāng)?shù)據(jù)庫加密系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程,2002(08):61-63.
ZHU Lu-h(huán)ua,CHEN Rong-liang.Design and Implementation of Database Encryption System[J].Computer Engineering,2002(08):61-63.
[3] 安然,陳馳,徐震.?dāng)?shù)據(jù)庫加密中間件的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2009,30(14):3261-3265.
AN Ran,CHEN Chi,XU Zhen.Design and Implementation of Database Encryption Middleware[J].Computer Engineering and Design,2009,30(14):3261-3265.