喻子豪
【摘 要】近年來,數(shù)據(jù)庫加密系統(tǒng)已經(jīng)成為一種有前途的方向,它可以保證數(shù)據(jù)機(jī)密性而不影響其他功能,能夠?qū)崿F(xiàn)對密文執(zhí)行查詢操作。本文首先介紹了數(shù)據(jù)庫安全的相關(guān)概念,其次對數(shù)據(jù)庫加密技術(shù)進(jìn)行了介紹,并分析了不同技術(shù)的優(yōu)缺點。
【關(guān)鍵詞】數(shù)據(jù)庫;加密技術(shù);操作系統(tǒng);加密粒度
由于數(shù)據(jù)庫系統(tǒng)中存放著大量的數(shù)據(jù),并且這些數(shù)據(jù)被許多用戶共享,所以數(shù)據(jù)庫的安全性問題是必須首先要解決的。數(shù)據(jù)庫安全問題的研究最早開始于上世紀(jì)七十年代,IBM研宄人員重點研宄了關(guān)系數(shù)據(jù)庫系統(tǒng)的訪問控制問題,該項研究使得人們逐漸形成了多級安全數(shù)據(jù)庫的概念。美國計算機(jī)國家安全中心于1991年頒布的《可信計算機(jī)系統(tǒng)評估標(biāo)準(zhǔn)-關(guān)于可信數(shù)據(jù)庫系統(tǒng)的解釋》(TDI),將計算機(jī)系統(tǒng)安全標(biāo)準(zhǔn)擴(kuò)展到了數(shù)據(jù)庫系統(tǒng)。該標(biāo)準(zhǔn)將數(shù)據(jù)庫系統(tǒng)的安全性劃分為A-B-C-D四種類別七個等級,其中A類別最高;等級越高,代表著數(shù)據(jù)庫的可信度越高,安全性隨之增強(qiáng)。目前大多數(shù)的數(shù)據(jù)庫管理系統(tǒng)的安全性等級為B1級,即為可標(biāo)識的安全保護(hù)。
一、數(shù)據(jù)庫加密技術(shù)
數(shù)據(jù)庫加密系統(tǒng)一般可以從三個不同層次實現(xiàn)對數(shù)據(jù)的加密,分別是操作系統(tǒng)層、DBMS內(nèi)核層以及應(yīng)用層。下面對三個加密層次分別進(jìn)行介紹。
(1)操作系統(tǒng)層。對于操作系統(tǒng)來說,數(shù)據(jù)庫是一種存儲在操作系統(tǒng)上的文件。因此對于操作系統(tǒng)層的加密,可以直接對整個數(shù)據(jù)庫文件進(jìn)行加密。但是由于操作系統(tǒng)中的文件無法分割,因此不能從加密粒度上對加密進(jìn)行優(yōu)化。除此之外,在操作系統(tǒng)層進(jìn)行加密的效率非常低,并且加密時重復(fù)使用同一組密鑰,導(dǎo)致密鑰泄漏的可能性大大增加。
(2)DBMS內(nèi)核層。為了實現(xiàn)內(nèi)核層的加密,通常需要對DBMS的內(nèi)核進(jìn)行修改,通過內(nèi)置數(shù)據(jù)加解密功能,在數(shù)據(jù)經(jīng)過系統(tǒng)的存取之前完成加解密的操作。但是對于用戶來說,由于大部分?jǐn)?shù)據(jù)庫廠商沒有公開數(shù)據(jù)庫內(nèi)核的源代碼,因此用戶只能局限于DBMS提供的加密算法,無法自定義的加密功能,缺乏靈活性。
(3)應(yīng)用層。針對應(yīng)用層的加密方式無需修改DBMS,直接由應(yīng)用程序?qū)?shù)據(jù)進(jìn)行加密,加密后將密文傳輸給數(shù)據(jù)庫存儲;解密時讀取數(shù)據(jù)庫中的密文并對密文進(jìn)行解密,最后返回給用戶。在應(yīng)用層加密方式中,數(shù)據(jù)庫管理系統(tǒng)僅僅負(fù)責(zé)數(shù)據(jù)的存儲、查詢以及管理,無需對數(shù)據(jù)進(jìn)行加解密操作。此外,應(yīng)用層加密可以較好的控制加密粒度,具有良好的靈活性。綜上所述,應(yīng)用層加密方式可以很好的適應(yīng)云存儲環(huán)境下的數(shù)據(jù)庫加密需求:即使第三方數(shù)據(jù)庫服務(wù)提供商是不可信的,我們可以將加密后的密文存儲在服務(wù)器上,無需擔(dān)心因數(shù)據(jù)泄漏而造成的損失。但是應(yīng)用層加密方式需要解決密文檢索的效率問題,否則無法適應(yīng)云計算時代對數(shù)據(jù)檢索的實時性要求。
二、數(shù)據(jù)庫加密粒度
數(shù)據(jù)庫的加密粒度是指對數(shù)據(jù)加密的最小單元,從數(shù)據(jù)庫結(jié)構(gòu)上劃分,通常可以分為文件級、表級、記錄級以及字段級。用戶可以根據(jù)實際應(yīng)用的需求,靈活地選擇合適的加密粒度。
(1)文件級。文件級加密就是對整個數(shù)據(jù)庫文件進(jìn)行加密,這種方式的優(yōu)勢在于加密簡單,密鑰少且易于管理。但是每次查詢數(shù)據(jù)都需要對加密后的數(shù)據(jù)庫文件進(jìn)行解密,嚴(yán)重影響了查詢效率,造成系統(tǒng)資源的浪費。
(2)表級。一個數(shù)據(jù)庫中通常包含多張表,表級加密是對數(shù)據(jù)庫中的表進(jìn)行加密。由于數(shù)據(jù)庫中并不是所有的表都是敏感的,因此我們只需要選擇包含敏感信息的數(shù)據(jù)表進(jìn)行加密。這樣在查詢數(shù)據(jù)時,只要找到數(shù)據(jù)所在的加密表并對其進(jìn)行解密即可,提高了查詢的效率。而對于其它非敏感的數(shù)據(jù)表,查詢方式和普通查詢相同。
(3)記錄級。記錄級加密是對數(shù)據(jù)表中的記錄進(jìn)行加密,加密對象是數(shù)據(jù)表中的一條完整記錄,加密后輸出記錄中各字段的密文字符串。記錄級加密時數(shù)據(jù)庫加密中一種較常見的方式,與文件級和表級相比其加密粒度更細(xì),靈活性也更高。但是記錄級加密在查詢時無法對記錄中不需要的字段進(jìn)行篩選,只能解密完整的記錄,大大降低了指定字段査詢的效率。
(4)字段級。字段級加密是對數(shù)據(jù)表中的字段進(jìn)行加密,又被稱為域加密或者屬性級加密。與前幾種加密粒度相比,字段級加密的靈活性最高,適合數(shù)據(jù)庫中頻繁的查詢操作。在數(shù)據(jù)庫中,重要和敏感的信息往往只出現(xiàn)在數(shù)據(jù)表中的某幾個字段,因此只需要對這些敏感字段進(jìn)行加密,從而節(jié)省系統(tǒng)資源并且提高査詢效率。
三、可搜索加密技術(shù)
為了實現(xiàn)云端數(shù)據(jù)庫安全存儲和高效檢索,研究學(xué)者提出了一種可搜索加密方式。它能夠支持用戶在密文的基礎(chǔ)上,針對特定的關(guān)鍵字進(jìn)行查找,實現(xiàn)了云數(shù)據(jù)庫在不解密密文的前提下對密文的高效檢索操作。具體來說,數(shù)據(jù)擁有者先在本地對數(shù)據(jù)進(jìn)行加密,然后將加密后的密文數(shù)據(jù)上傳到云服務(wù)器上;數(shù)據(jù)使用者可以通過關(guān)鍵字搜索密文數(shù)據(jù)并得到最終的明文結(jié)果。根據(jù)密碼學(xué)中密鑰類型的不同,可搜索加密可分為可搜索對稱加密和可搜索非對稱加密。
(1)可搜索對稱加密(SSE)。SSE的核心是以對稱加密方式生成帶關(guān)鍵字的可搜索密文以及檢索陷門,通常使用偽隨機(jī)函數(shù)、哈希函數(shù)等對稱加密算法,具有算法簡單、計算速度較快等優(yōu)點。SSE算法一般包括五個部分:密鑰生成、數(shù)據(jù)加密、關(guān)鍵字對應(yīng)陷門生成、關(guān)鍵字檢索以及數(shù)據(jù)解密。常見的SSE算法包括SWP、SSE-1、DSSE等。SWP是通過逐個加密關(guān)鍵字并在密文中嵌入哈希值的方法實現(xiàn)。但是該方案的時間復(fù)雜度與關(guān)鍵字的數(shù)量線性相關(guān),時間復(fù)雜度隨著關(guān)鍵字?jǐn)?shù)量增加而增大,效率較低;SSE-1方案是提出了一種新的數(shù)據(jù)結(jié)構(gòu),適用于靜態(tài)數(shù)據(jù)庫,但是對于動態(tài)數(shù)據(jù)庫并不適用。DSSE是基于紅黑二叉樹,通過構(gòu)造樹形索引解決了隱私信息泄漏問題并且支持密文的動態(tài)更新。
(2)可搜索非對稱加密(PEKS)。由于對稱密碼本身的限制,用戶在使用可搜索對稱加密時必須要考慮密鑰傳輸?shù)膯栴}。針對該問題,研究人員提出了基于公鑰密碼體制的可搜索加密方案,能夠有效地保證密鑰傳輸?shù)陌踩T趯嶋H應(yīng)用中,大多數(shù)的PEKS方案都是基于雙線性對并且由系統(tǒng)初始化、可搜索密文生成、搜索陷門生成以及密文檢索四種算法組成。在PEKS體系中,任何發(fā)送方能夠采用接收方的公鑰對明文進(jìn)行加密,并發(fā)送給服務(wù)器;接收方可以對指定關(guān)鍵字生成檢索陷門然后發(fā)送給服務(wù)器,服務(wù)器根據(jù)陷門檢索出密文并返回給接收方。
基于雙線性對的特性,可搜索非對稱加密方案能夠解決一些較為復(fù)雜的搜索語句以及搜索場景,并且在不安全的網(wǎng)絡(luò)環(huán)境中也能適用。但是也因為需要計算雙線性對,因此該方案的計算開銷較大。
【參考文獻(xiàn)】
[1]Kamara S, Papamanthou C. Parallel and Dynamic Searchable Symmetric Encryption[M]// Financial Cryptography and Data Security. 2013.
[2]呂述望,蘇波展,王鵬,等. SM4分組密碼算法綜述[J]. 信息安全研究, 2016, 2(11):995-1007.