基于元數(shù)據(jù)的數(shù)據(jù)庫加密系統(tǒng)
數(shù)據(jù)庫的安全威脅是信息系統(tǒng)安全的核心障礙之一。數(shù)據(jù)庫安全威脅一方面來自外界攻擊者,由于攻擊者很難突破多級安全防御措施從而進攻數(shù)據(jù)庫。因此計算機犯罪的80%來自企業(yè)或團體內(nèi)部。在傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)中,數(shù)據(jù)庫管理員擁有查看數(shù)據(jù)庫中所有數(shù)據(jù)的權(quán)力,同時也具備修改數(shù)據(jù)的權(quán)限以及擦除犯罪記錄的能力。通過使用數(shù)據(jù)庫加密技術(shù)可有效防范此類攻擊。目前多數(shù)商用數(shù)據(jù)庫管理系統(tǒng)都提供訪問控制、權(quán)限管理以及安全審計等功能,部分數(shù)據(jù)庫系統(tǒng)甚至提供數(shù)據(jù)加密功能,但不同的數(shù)據(jù)庫系統(tǒng)所使用的加密機制不同,無法用統(tǒng)一的方式對各個數(shù)據(jù)庫中的數(shù)據(jù)進行加解密管理,對加密所使用密鑰的合理有效管理就更為復(fù)雜。
元數(shù)據(jù)就是描述數(shù)據(jù)的數(shù)據(jù)。它是按一定標準,從信息源中抽取出相應(yīng)的特征組成的一個特征元素集合。元數(shù)據(jù)可為各種形態(tài)的信息資源提供規(guī)范、普遍的描述方法和檢索工具,為分布的、由多種資源組成的信息體系提供整合的工具和紐帶。通過元數(shù)據(jù),人們能對信息資源進行比較透徹的分析與理解,主要包括資源信息的格式、質(zhì)量、處理方法和獲取等各方面信息。元數(shù)據(jù)標準可適合于資料共享、數(shù)據(jù)發(fā)布、數(shù)據(jù)交換以及網(wǎng)絡(luò)查詢等應(yīng)用。在數(shù)據(jù)庫項目建設(shè)中,元數(shù)據(jù)描述的意義重大,對于數(shù)據(jù)中心來說,除了自身以外,有多個分數(shù)據(jù)中心,整個體系的數(shù)據(jù)存儲量是相當(dāng)復(fù)雜和龐大的,需要依托中心元數(shù)據(jù)來進行統(tǒng)一的服務(wù)與管理。
本文提出一種新的數(shù)據(jù)庫加密模式,它以數(shù)據(jù)庫元數(shù)據(jù)倉庫作為整個加密系統(tǒng)的底層依托。通過將加解密引擎與元數(shù)據(jù)進行合理和有效的集成,從而提高數(shù)據(jù)庫加密系統(tǒng)的靈活性以及適應(yīng)性,為最終用戶提供透明的加解密服務(wù)。
一、數(shù)據(jù)庫加密系統(tǒng)的基本要求及實現(xiàn)方案
密碼技術(shù)是數(shù)據(jù)存儲保護技術(shù)中所應(yīng)用的關(guān)鍵技術(shù),由于不存在專門用于數(shù)據(jù)庫加密的算法,加密系統(tǒng)選擇采用國際上通用的加密算法q由于數(shù)據(jù)庫中存儲數(shù)據(jù)有其自身的特點,因此,加密解密工作富有極強的挑戰(zhàn)性。
1、數(shù)據(jù)庫中存儲加密數(shù)據(jù)的特點
數(shù)據(jù)庫中數(shù)據(jù)存儲時間比較長,同時存儲的數(shù)據(jù)量較大,密鑰不可能頻繁地更新,要求有足夠高的加密強度;數(shù)據(jù)庫中存在大量的數(shù)據(jù),加密后存在大量的明密文范例;數(shù)據(jù)庫中的數(shù)據(jù)的規(guī)律性比較強。
2、數(shù)據(jù)庫加密系統(tǒng)的基本要求
針對數(shù)據(jù)庫中的加密數(shù)據(jù)的這些特點,一個性能表現(xiàn)出色的數(shù)據(jù)庫加密系統(tǒng)設(shè)計應(yīng)該滿足以下幾個方面的要求,加密的強度要保證長時間不被攻擊者破譯;加解密不能影響合法用戶對數(shù)據(jù)庫的正常操作;加解密所需要的時間要足夠短,不能讓用戶感到明顯的延遲;具備靈活的密鑰管理機制,定期更換密鑰;加密以后的數(shù)據(jù)存儲量沒有明顯的變化。
3、數(shù)據(jù)庫加密系統(tǒng)的層次選擇
當(dāng)前對于數(shù)據(jù)庫加密主要可以分為3個層次:操作系統(tǒng)層加密,數(shù)據(jù)庫系統(tǒng)內(nèi)核層加密,數(shù)據(jù)庫系統(tǒng)外部加密。
在操作系統(tǒng)層對數(shù)據(jù)庫文件進行加密時,由于不了解數(shù)據(jù)庫中數(shù)據(jù)之間的關(guān)系,無法進行細粒度的加密控制。如果對數(shù)據(jù)庫文件進行加密,即使用戶只想獲取數(shù)據(jù)庫表中的部分數(shù)據(jù),也必須將整個密文數(shù)據(jù)庫文件進行解密,這將嚴重影響數(shù)據(jù)庫加密系統(tǒng)的性能。
在數(shù)據(jù)庫庫內(nèi)對數(shù)據(jù)庫文件進行加密時,加解密過程對于用戶和應(yīng)用程序來說是透明的,數(shù)據(jù)一旦經(jīng)過數(shù)據(jù)庫系統(tǒng)邊界,就會透明地進行加解密轉(zhuǎn)化。庫內(nèi)加密通常是以存儲過程的形式調(diào)用的。
在數(shù)據(jù)庫庫外進行加密,加解密過程發(fā)生在DBMS之外,DBMS所管理的數(shù)據(jù)以密文形式存在,加密解密過程可以在客戶端完成,也可以由專門的加解密服務(wù)器完成。
本文采用庫外加密的方式,可實現(xiàn)與不同的數(shù)據(jù)庫進行互操作,對不同的數(shù)據(jù)庫系統(tǒng),如SQL Server, My SQL等,只需修改相關(guān)的數(shù)據(jù)庫配置文件,便可實現(xiàn)系統(tǒng)的可重用。
4、數(shù)據(jù)庫加密粒度的選擇
數(shù)據(jù)庫的加密粒度可以有以下3種:表級別的加密,記錄級別的加密,字段級別的加密。一般而言,粒度越小,加密的安全強度越高,但技術(shù)實現(xiàn)的難度也越大,密鑰維護與管理的復(fù)雜度也越高。
本文采用的粒度是基于字段級別的,它可以提供較強的靈活性。下文將對基于元數(shù)據(jù)的數(shù)據(jù)庫加密系統(tǒng)體系結(jié)構(gòu)進行詳細的分析與設(shè)計。
二、基于元數(shù)據(jù)的數(shù)據(jù)庫加密系統(tǒng)體系結(jié)構(gòu)
將數(shù)據(jù)庫加密系統(tǒng)應(yīng)用在數(shù)據(jù)倉庫中,必須對倉庫中所有元數(shù)據(jù)進行統(tǒng)一規(guī)劃與存儲,并提供一致的查詢接口。這將避免對于每次加解密操作都對數(shù)據(jù)庫進行查詢獲得其元數(shù)據(jù)信息。數(shù)據(jù)庫元數(shù)據(jù)信息將被存儲在經(jīng)過擴展后的CWM元數(shù)據(jù)倉庫中。數(shù)據(jù)中心所需采集數(shù)據(jù)的屬性是相對固定的,這些屬性可以被多個關(guān)系型數(shù)據(jù)庫表所復(fù)用,對它們可進行統(tǒng)一管理。對具有同樣屬性的表中的數(shù)據(jù)加密時,只需對元數(shù)據(jù)庫中待加密屬性的安全定義信息進行設(shè)定即可。
對于加密系統(tǒng)所需要的安全元數(shù)據(jù)庫,指定專門的安全管理員進行管理與維護,安全管理員只能看到基本的數(shù)據(jù)庫以及安全字典信息,底層具體的數(shù)據(jù)對于安全管理員來說是不可見的。數(shù)據(jù)庫系統(tǒng)的機密性就得到了保證。
1、本方案體系架構(gòu)的提出
對于數(shù)據(jù)庫加密系統(tǒng)的加密方式,可歸納為:客戶端加密,服務(wù)器端加密以及客戶端與服務(wù)器端混合加密?;?種體系結(jié)構(gòu)的優(yōu)劣對比以及實際所研究課題的需要,本文的數(shù)據(jù)庫加密系統(tǒng)是基于服務(wù)器端開發(fā)的。它由客戶端安全通信代理模塊、服務(wù)器端安全通信代理、加解密服務(wù)接口模塊、加密、解密引擎、密鑰庫管理模塊、加密字典定義與配置模塊、加密字典元數(shù)據(jù)訪問模塊以及異構(gòu)數(shù)據(jù)源訪問模塊所構(gòu)成。具體的系統(tǒng)邏輯結(jié)構(gòu)如圖1所示。

整個數(shù)據(jù)的訪問過程可以分為以下幾個步驟:
(1)客戶端發(fā)起到數(shù)據(jù)庫安全訪問代理的連接請求。
(2)服務(wù)器接受客戶端的連接請求并分配連接資源,并接收客戶端的服務(wù)請求。
(3)服務(wù)器對請求參數(shù)進行解析,然后調(diào)用元數(shù)據(jù)訪問模塊,如果訪問操作中沒有涉及加密字段,則直接返回并調(diào)用數(shù)據(jù)庫安全訪問模塊;如果有加密字段,則將加密字典定義信息返回并存放入服務(wù)器端的加密字典緩沖區(qū)中,以便提高重復(fù)查詢的速度,然后調(diào)用數(shù)據(jù)庫安全訪問模塊。
(4)加解密引擎訪問加密字典定義緩沖區(qū)以及密鑰庫,結(jié)合數(shù)據(jù)庫訪問請求進行相應(yīng)的加解密處理,并解析成能夠?qū)?shù)據(jù)庫中密文進行查詢的SQL語句,然后調(diào)用數(shù)據(jù)庫安全訪問代理模塊。
(5)數(shù)據(jù)庫安全訪問模塊接收待處理請求,進行相應(yīng)操作,將第一次查詢得到的模糊結(jié)果經(jīng)過結(jié)果集過濾模塊進一步處理,最后將匹配的結(jié)果返回數(shù)據(jù)庫解密引擎進行處理并返回。
(6)返回結(jié)果通過密文傳輸?shù)竭_客戶端安全代理并進行相應(yīng)的解密處理,最終以明文形式返回給客戶端。
2、各主要模塊設(shè)計
(1)加密解密引擎
加密解密引擎是密碼系統(tǒng)的核心,實現(xiàn)了AES、DES等算法,為系統(tǒng)中的其他組件提供支持。在實現(xiàn)密碼引擎的時候,須考慮:密鑰的長度、加解密使用的算法、模式以及數(shù)據(jù)填充方式等。加密解密引擎位于應(yīng)用服務(wù)器以及數(shù)據(jù)服務(wù)器之間,在后臺完成對數(shù)據(jù)庫中的數(shù)據(jù)進行加密、解密的操作,對應(yīng)用程序以及前臺開發(fā)人員來說是透明的。
數(shù)據(jù)庫加密解密引擎主要由加密、解密引擎以及數(shù)據(jù)庫訪問接口模塊組成。加密解密引擎主要完成對重要數(shù)據(jù)的加密運算以及解密運算,它需要同時與密鑰庫以及加密字典元數(shù)據(jù)倉庫進行協(xié)作完成自己的職責(zé)。
數(shù)據(jù)庫訪問模塊主要是提供一個對異構(gòu)數(shù)據(jù)源訪問的統(tǒng)一接口。主要的功能就是將加密之后的密文信息存儲到數(shù)據(jù)庫系統(tǒng)中,并且在外界需要訪問數(shù)據(jù)庫數(shù)據(jù)時將密文信息傳到加密解密引擎進行解密處理。
(2)密鑰庫管理模塊
密鑰庫中的密鑰被保存在一個高度安全的環(huán)境中,并且只允許密碼引擎訪問密鑰,在特定的情況下,也可以讓密鑰管理器來訪問。在本體系結(jié)構(gòu)中,密鑰管理器采用二級密鑰管理來增強密鑰庫的安全性。
密鑰管理器分為主密鑰以及工作密鑰2個級別,主密鑰主要用來對工作密鑰進行加密保護,而工作密鑰才是最終加密解密引擎對數(shù)據(jù)進行加密所使用的密鑰。通過這樣的分級設(shè)計,可以把對于密鑰庫保護的風(fēng)險轉(zhuǎn)移到對主密鑰的保護。
主密鑰的保護可以依賴硬件卡或其他多種方式進行保護。
密鑰庫的管理主要涉及密鑰的生成、密鑰的存儲、密鑰的更換、密鑰的傳輸以及密鑰的恢復(fù)。密鑰庫應(yīng)該獨立存放于加密數(shù)據(jù)所在的服務(wù)器之外。對于密鑰的自動生成可以利用本地加解密引擎所提供的密鑰生成功能,也可以通過自己設(shè)計的隨機密鑰生成算法來生成密鑰。在密鑰存儲庫中,密鑰是以密文的形式存放于密鑰庫中。對于密鑰的更換,必須先將所有利用同一密鑰加密的數(shù)據(jù)進行脫密處理,然后再利用新的密鑰進行統(tǒng)一加密。
密鑰的傳輸,可以借助PKI公鑰基礎(chǔ)設(shè)施進行安全的分發(fā)以及驗證。密鑰的備份必須能及時地反映密鑰庫中密鑰狀態(tài)的變化。
(3)基于元數(shù)據(jù)的加密字典管理模塊
加密字典管理模塊主要可以分為以下幾大模塊:加密定義元數(shù)據(jù)存儲模塊,加密定義元數(shù)據(jù)配置模塊以及加密定義元數(shù)據(jù)管理模塊。
加密定義存儲模塊的主要功能是將分布式節(jié)點的加密定義數(shù)據(jù)存入中心服務(wù)器。主要包括加密定義元數(shù)據(jù)接收模塊以及元數(shù)據(jù)倉庫存儲模塊。
加密定義元數(shù)據(jù)配置模塊的功能是提供一個豐富的用戶界面,安全管理員可利用它訪問本地數(shù)據(jù)庫的數(shù)據(jù)庫元數(shù)據(jù),并且可以建立本地的加密定義元數(shù)據(jù)庫,然后統(tǒng)一上傳。它可分為異構(gòu)數(shù)據(jù)庫訪問模塊、數(shù)據(jù)庫字典信息查詢模塊、數(shù)據(jù)庫加密定義配置模塊、加密定義數(shù)據(jù)上傳模塊。
加密定義管理模塊主要功能是為所有具有訪問權(quán)限的加密系統(tǒng)引擎提供一個統(tǒng)一的查詢加密定義元數(shù)據(jù)的接口。在特定的情況下,它也可以被中心節(jié)點的安全管理員所訪問和管理。主要包括加密元數(shù)據(jù)查詢模塊、加密元數(shù)據(jù)展示模塊、加密定義修改以及元數(shù)據(jù)庫訪問以及存儲模塊。
(4)數(shù)據(jù)庫安全訪問代理
安全訪問中間件主要分為元數(shù)據(jù)倉庫訪問模塊、異構(gòu)數(shù)據(jù)源訪問模塊、Web服務(wù)接口模塊以及加解密引擎訪問模塊。元數(shù)據(jù)倉庫訪問模塊主要從倉庫元數(shù)據(jù)檢索出待訪問數(shù)據(jù)庫的基本信息,例如數(shù)據(jù)庫的URL、數(shù)據(jù)庫的登錄用戶名以及密碼等基礎(chǔ)信息。
異構(gòu)數(shù)據(jù)源訪問模塊的功能是可以屏蔽底層數(shù)據(jù)庫系統(tǒng)的差異,以一種統(tǒng)一且一致的方式訪問異構(gòu)的底層數(shù)據(jù)庫系統(tǒng)。對于一個數(shù)據(jù)庫訪問代理模塊來說,它應(yīng)該支持現(xiàn)在許多商業(yè)數(shù)據(jù)庫所提供的分頁等高級特性。Web服務(wù)接口模塊的作用是將數(shù)據(jù)庫訪問代理的功能封裝成可以利用webservice調(diào)用的接口??蛻舳说囊磺姓{(diào)用都通過此接口進行,這樣就可以實現(xiàn)異構(gòu)系統(tǒng)的無縫集成。
加密解密引擎訪問模塊是調(diào)用加解密功能的唯一入口點,整個密碼系統(tǒng)只允許通過加解密引擎訪問模塊進行訪問,這樣可以在一定程度上提供密碼系統(tǒng)的安全性,能有效防止非法入侵者的攻擊。
(5)客戶端以及服務(wù)器端安全通信代理模塊
由于客戶端與服務(wù)器端是通過Web service進行通行的,而SOAP協(xié)議是它們能夠互操作的基礎(chǔ)。它們的通行從最終形式上來說是基于XML的。為了保證Web service傳輸數(shù)據(jù)的安全,服務(wù)器端可以對SOAP報文進行多種方式的身份認證,主要包括以下一些身份憑證:用戶名/密碼,X.509證書,Kerberos票據(jù)和認證者、SIM卡的移動設(shè)備安全性憑證等多種方式與技術(shù)來保證。為了保證報文在傳輸過程中的完整性約束,也可以對SOAP報文進行數(shù)字簽名,保證請求的完整性以及不可抵賴性。
客戶端安全通信代理模塊就是將應(yīng)用程序前臺需要與數(shù)據(jù)庫進行交互的數(shù)據(jù)轉(zhuǎn)化成加密的報文并通過網(wǎng)絡(luò)傳送到服務(wù)器端。而服務(wù)器端安全通信代理模塊的作用與客戶端的行為相反,它首先通過一定的方式將客戶端傳送過來的經(jīng)過加密的XML數(shù)據(jù)進行解密操作,然后利用解密的信息在服務(wù)器端進行處理并返回用戶所需要的數(shù)據(jù),在將結(jié)果傳回客戶端之前,在執(zhí)行相反的操作。圖2為整個系統(tǒng)的模塊結(jié)構(gòu)。

3、基于元數(shù)據(jù)倉庫的數(shù)據(jù)庫加密系統(tǒng)的網(wǎng)絡(luò)拓撲
圖3是基于元數(shù)據(jù)倉庫的數(shù)據(jù)庫加密系統(tǒng)的網(wǎng)絡(luò)拓撲圖,由于數(shù)據(jù)中心有復(fù)雜的層級關(guān)系,而且地域分布比較廣,在部署的時候采用分布式方式。

本系統(tǒng)體系結(jié)構(gòu)在設(shè)計之前,建立了詳細的安全威脅模型并經(jīng)過詳細的論證??梢栽谙喈?dāng)大的程度上保證系統(tǒng)的安全性要求符合系統(tǒng)的實際工作環(huán)境要求。當(dāng)然,保護一個數(shù)據(jù)庫系統(tǒng)的安全,僅依靠數(shù)據(jù)庫加密技術(shù)是遠遠不夠的,嚴格用戶身份認證、數(shù)據(jù)安全的存取控制模型、細粒度的訪問控制權(quán)限設(shè)置以及防火墻的有效配置都是數(shù)據(jù)庫安全不可缺少的有效措施。數(shù)據(jù)庫加密雖然在一定程度上影響了數(shù)據(jù)庫操作的性能以及可用性,但對于公司或者企業(yè)的數(shù)據(jù)安全來說,是非常必要的。
小知識之元數(shù)據(jù)
元數(shù)據(jù)(Meta Data)是關(guān)于數(shù)據(jù)倉庫的數(shù)據(jù),指在數(shù)據(jù)倉庫建設(shè)過程中所產(chǎn)生的有關(guān)數(shù)據(jù)源定義,目標定義,轉(zhuǎn)換規(guī)則等相關(guān)的關(guān)鍵數(shù)據(jù)。同時元數(shù)據(jù)還包含關(guān)于數(shù)據(jù)含義的商業(yè)信息,所有這些信息都應(yīng)當(dāng)妥善保存,并很好地管理。為數(shù)據(jù)倉庫的發(fā)展和使用提供方便。








