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