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