吳開均,湯殿華,曾 兵
隨著全球數字化、信息化和網絡一體化的推進,對用戶信息和商業機密等敏感數據的保護越來越受到公司和各個國家的重視。為了保護數據的絕對安全,這就需要對數據進行加密,數據庫是數據最重要的載體,研究數據庫安全問題將是未來的熱點方向。文中首先簡要的介紹了數據庫加密層次問題,對數據庫外層加密進行重點探討。在這里給出一種基于代理的數據庫外層加密模型設計,同時提出一種“洋蔥式”加密安全思想,并給出其安全模型設計,從而最大限度的保證數據庫加密系統的安全性和實用性。
通過對數據庫加密系統分析,當前主要分為三種模式:基于操作系統層的加密、基于數據庫系統的內核層加密和基于數據庫系統的外層加密,下面分析三種模式的優缺點。
基于操作系統的加密,這種方法最大的優點是極度簡化了數據庫系統的設計和實現,這種方法把所有加/解密操作和密鑰管理[1]都交給了操作系統與文件系統來操作,采用這種方法對數據庫系統是完全透明。但是,操作系統本身不能識別數據庫的表結構關系,應用起來不夠靈活,同時對數據庫中的數據全部加密,極大的降低了數據庫工作效率。基于操作系統次的加密,是不可取的。
基于數據庫系統的內核層加密,這種加密方法優點在數據庫系統內核層直接完成交互操作,具有強大的管理功能,也不影響數據庫的應用和其他邏輯操作。基于數據庫的內核級別修改需要提供數據庫的許多內部接口,但通常數據庫接口不對外提供;若使用開源的數據庫系統,可以使用數據庫接口及源代碼,但要完全通過源代碼理解數據庫系統軟件邏輯并修改也是比較艱巨的任務。這樣的加密方式,會增加數據庫系統的負擔從而影響性能,其結構如圖1所示。

圖1 數據庫內核層加密關系Fig.1 Architecture of encryption model for kernelly DBMS
基于數據庫的外層加密,通過外層代理提供加/解密操作,這種方式對數據庫完全透明,數據庫系統按照正常方式接收請求和作出請求響應即可,不對數據庫系統做繁瑣的設置等操作。選取這種加密的方式,加/解密運算模塊可以放在用戶端進行,其最大的優點是不會額外加重數據庫服務器的負載就可實現網上的傳輸加密,這是實際當中比較可行的一種方式,其結構圖2所示。

圖2 數據庫外層加密關系Fig.2 Architecture of encryption model for external DBMS
根據數據庫的商業應用分析,理想狀態的數據庫加密系統最重要的特征是應該具有可移植性,數據加密操作對數據庫而言完全透明,可以無縫對接到MySQL、Postgres等數據庫系統,不用更改其數據庫代碼;數據庫加密系統[2]對數據加密后存放到數據庫中,同時支持在加密數據上執行完全的數據庫訪問查詢操作;加密后的數據和原數據相比,數據擴展帶來的效率折損能夠達到實用化水平;數據庫加密系統應能最大限度的支持單用戶和多用戶的應用。
文中擬設計一種基于數據庫外層的加密系統,主要包括數據庫管理系統(DBMS)和數據庫加密代理[3],整個運行結構包含有:用戶端計算機、應用服務器、代理服務器、DBMS服務器,如圖3所示。

圖3 數據庫加密系統架構設計模型Fig.3 Design of encryption model for external DBMS
用戶端計算機側單個用戶或多個用戶發起一個應用會話,應用服務器根據用戶端的行為,應用服務器根據用戶端的請求向代理服務器方發起詢問,代理服務器將詢問加密重寫后向DBMS服務器中的加密數據進行詢問,完成詢問后DBMS服務器按照正常的數據庫操作完成應答響應提交加密代理,加密代理將詢問結果返回用戶完成整個應用會話過程。
加密代理中分為通信管理模塊、加/解密模塊和密鑰管理模塊,其中通信模塊完成整個通信過程的調度和轉換,加/解密模塊完成對數據的加密和解密,密鑰管理模塊完成根據用戶口令生成密鑰的管理以及根據加密需求派生出相應的密鑰,并將派生出的密鑰加密后存放在數據庫中以供調用。
在數據庫管理系統中最傳統威脅包括來自內部管理員威脅和外部的攻擊者威脅。威脅一,出于好奇或者惡意的內部數據管理者可能偷看DBMS中的數據;威脅二,外部攻擊者可能通過非法手段取得應用和控制DBMS服務器的權限從而達到竊取數據庫中的敏感信息。
在安全模型設計中,既要考慮數據加密存儲后能支持完全的數據庫詢問,同時也要考慮數據的安全性,安全模型設計從兩個方面進行考慮:
(1)支持數據庫操作的加密策略
由于所有的SQL查詢都是由最基本的操作組成:連接、求和、等值查詢、大小比較。找到各自支持這些本原操作的加密算法,就可以完成所有的SQL操作。如對稱密碼AES-CMC可以支持等值查詢,保序加密算法可以支持大小比較,同態加密算法Paillier加密系統可以對數據進行求和,至于連接查詢可以使用ECC加密。
(2)基于詢問的自適應加密
為了實現對密文數據完成最基本的SQL操作,對不同的加密策略數據項進行逐一加密,不同的操作組合對應不同的加密策略組合,當執行詢問時,根據詢問將數據動態調整到能執行該詢問的加密組合,實現詢問操作。
基于以上思想,將數據庫最基本的操作組成分類,每類操作設計成一個加密模型,遵循由外到內逐層加密,外層加密安全等級最高從而保證數據最基本的安全,內層根據操作(搜索、加、等值查詢或比較查詢)等操作選擇滿足相應功能的算法,我們將次類似洋蔥的加密模型稱為“洋蔥式加密”模型。目前初步設計四類洋蔥模型,分別是搜索洋蔥、加洋蔥、等值洋蔥和比較洋蔥,如圖4所示。

圖4 洋蔥加密模型Fig.4 Onion-mode of encryption model
對數據進行洋蔥式加密處理后,根據數據庫支持的查詢功能進行對應的洋蔥式加密,將加密后的數據存儲在數據庫中,即使攻擊者或者內部管理員也無法知道加密后的每列數據代表什么意思。當用戶需要對數據進行操作,首先定位該操作由哪個洋蔥完成,再判定處于該洋蔥的第幾個洋蔥層,就可以一層一層的進行解密,實現相應的數據操作。數據存儲如圖5所示。

圖5 明文數據轉化為洋蔥加密后的數據Fig.5 Database data encrypted
每個洋蔥層算法的選擇可以參考如下:
(1)搜索洋蔥
Word Search(SEARCH):SEARCH能夠在加密文本數據上執行關鍵字搜索操作,比如MySQL的LIKE操作。當執行該密文搜索時首先提取文本中所有的關鍵字(去掉重復的),然后使用具有檢索功能的加密方案對關鍵字加密。其特性為:
泄露文本中關鍵字數量,但可以保證信息的機密性;
允許對文本進行關鍵字搜索(密態)。
所使用算法:Song等人的密碼協議。
(2)加洋蔥
Homomorphic Encryption(HOM):所使用的同態算法HOM為單同態,只能支持“加法同態”,用于在密文上對數據進行求和運算,即

支持SQL上數據的 SUM,求平均數等操作,其特性為:
IND-CPA安全的方案,基本不泄露信息;
允許進行 SUM,+,AVG。
所使用算法:Paillier加密系統。
(3)等值洋蔥
Random(RND):RND提供了最強的安全性,可以達到IND-CPA安全。所使用的算法是概率的,相同明文產生的密文是不同的。不支持任何的SQL操作。其特性為:
不泄露信息;
但是不能進行任何密文計算。
所使用算法:AES-CBC。
Deterministic(DET):DET所提供的安全性較RND弱,由于要求DET加密下的密文具有等值查詢的功能,要求其相同的明文產生相同的密文,該算法應該是確定性加密。其特性為:
泄露了相同密文所對應的明文是相同;
所使用算法:AES-CMC(iv=0)。
Equi-join(JOIN):由于不同列所使用的密鑰不同,當進行連接操作時,必須把密鑰調整到相同,即相同密鑰的DET加密方案。其特性為:
當未對兩列進行連接查詢時,由于加密密鑰不同,不會泄露兩列的關系;
將被查詢列的密鑰調整到相同,允許等值連接。
所使用算法:ECC加密,AES-CMC。
(4)比較洋蔥
總部位于德國亞琛的FEV集團是一家國際化動力系統及整車開發的國際服務供應商。針對動力系統及整車,FEV可以提供從概念設計到最終批量生產的全部咨詢、開發、測試等服務。除了傳統的發動機與變速箱的開發、整車集成、標定以及汽油機柴油機本地化等業務,FEV將把重點放在混合動力、電驅動以及可替代能源領域。同時,FEV的專家團隊也專注在電子控制系統、車聯網以及自動駕駛等先進技術。
Random(RND):同等值洋蔥。
Order-preservingEncryption(OPE):OPE 能夠將明文間的大小關系保持到密文中,即對于任何密鑰 K,如果 x<y,有 OPEK(x)<OPEK(y)。該算法是為了維持對密文數據的比較操作,但是泄露數據的大小信息,其特性為:
泄露數據的大小順序;
允許進行比較查詢,ORDER BY,MIN,MAX,SORT。
所使用算法:BCYO保序對稱加密算法。
Range-join(OPE-JOIN):很少發生,需要提前宣稱所需比較的列,并匹配密鑰。
文中對于數據庫加密系統設計進行了初淺的探討,并根據自己的理解提出了一種基于數據庫外層加密的洋蔥式加密設計思想,同時對洋蔥層加密算法在理論層面做了初步選擇,后面將進一步驗證。但作為大勢所趨,對不改變數據庫原有結構同時能對加密后的數據進行完整同態操作的數據庫加密設計思想將會是未來研究的熱點,尤其是未來以云計算為應用背景的研究將是重中之重。
[1] 馮朝勝,袁丁.密鑰管理在數據庫加密系統中的應用研究[J].四川大學學報:自然科學版,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] 朱魯華,陳榮良.數據庫加密系統的設計與實現[J].計算機工程,2002(08):61-63.
ZHU Lu-hua,CHEN Rong-liang.Design and Implementation of Database Encryption System[J].Computer Engineering,2002(08):61-63.
[3] 安然,陳馳,徐震.數據庫加密中間件的設計與實現[J].計算機工程與設計,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.