加密技術(shù)是保護外包數(shù)據(jù)庫中數(shù)據(jù)安全的一種有效方法,但如何對加密數(shù)據(jù)進行高效查詢是一個熱點,引起了研究界的重視。針對這個問題,提出了一種基于DBMS 內(nèi)核的加密模式,通過安全字典和SQL語句的擴展,實現(xiàn)數(shù)據(jù)的加密存儲和高效查詢。實驗證明了該方法的有效性和可行性。

  1 引言

  隨著電子商務(wù)和電子政務(wù)的迅速發(fā)展,網(wǎng)絡(luò)中的數(shù)據(jù)呈爆炸式增長,數(shù)據(jù)規(guī)模越來越大,涉及的技術(shù)越來越復(fù)雜。2002 年,Hakan Hacigumus 首次提出了“databases as a service”,即“外包數(shù)據(jù)庫的概念”。在外包數(shù)據(jù)庫系統(tǒng)中,組織將數(shù)據(jù)業(yè)務(wù)外包給專門的數(shù)據(jù)庫服務(wù)器,由它們?nèi)ネ瓿蓴?shù)據(jù)的存儲和管理等復(fù)雜技術(shù)工作,而數(shù)據(jù)庫用戶通過網(wǎng)絡(luò)從外包數(shù)據(jù)庫中獲得服務(wù)。在這種運行模式中,數(shù)據(jù)存儲在非可信的第三方服務(wù)器中,最大的問題就是如何保證數(shù)據(jù)的安全性,特別是如何防止內(nèi)部人員(如:數(shù)據(jù)庫管理員)泄露、丟失、甚至破壞數(shù)據(jù)。傳統(tǒng)的一些安全機制,如操作系統(tǒng)安全機制、訪問控制機制由服務(wù)器端操作,在外包數(shù)據(jù)庫這種模式中不能完全保障其安全性。而利用加密技術(shù)來保護數(shù)據(jù)的安全性是一種非常理想的選擇,即使入侵者可以利用操作系統(tǒng)漏洞或者繞過訪問控制機制非法竊取數(shù)據(jù)文件,但是沒有密鑰進行解密,所獲取的信息是不可讀的。

  2 相關(guān)工作

  一些工作人員對數(shù)據(jù)庫加密進行了研究。文獻[5]提出了一種同態(tài)加密方法。同態(tài)加密的思想是加密后的數(shù)據(jù)仍然保持原明文數(shù)據(jù)的有序性,從而可以實現(xiàn)不用解密數(shù)據(jù)而對加密數(shù)據(jù)直接進行訪問和算術(shù)運算。然而,從安全性角度來看,這種加密方法本身具有其固有的缺陷,因為它要求密文數(shù)據(jù)仍然保持有序性,這與安全的加密算法是相悖的。文獻[6]中,在數(shù)據(jù)庫作為一種服務(wù)(Database As a Service)的背景下,提出了對加密數(shù)據(jù)查詢的方法。存儲時,除了對關(guān)系表中的元組加密外,還增加一個索引字段,用來存儲加密字段的分桶號(Bucket ID),桶號表示明文數(shù)據(jù)值落在某段區(qū)間內(nèi)。查詢時,客戶端提交的SQL查詢語句可以直接執(zhí)行在加密數(shù)據(jù)上,而無須解密,但查詢結(jié)果中包含不滿足調(diào)節(jié)的元組,需要解密進行二次查詢。文獻[7]進一步對它如何分桶進行改進,給出最優(yōu)分桶算法,使得查詢代價最少。但是,這種方法對于多表連接查詢的代價非常大。文獻[8]提出了一種保持有序的加密方法。給定一個目標(biāo)分布函數(shù),對明文值進行轉(zhuǎn)換得到密文,使得密文不僅保持有序,而且服從某一目標(biāo)函數(shù)的分布。由于其密文保持有序,無須解密就可以直接對密文進行等值和范圍查詢,也可以進行MAX、MIN、COUNT 和ORDER BY查詢。但這種方法由于密文保持有序性,容易遭受選擇密文攻擊。也就是說,如果攻擊者能夠選擇一定數(shù)量的明文(或密文),并且把它們加密(或解密)成對應(yīng)的密文(或明文),那么他就能夠以較大的概率估計出密文對應(yīng)的明文值。類似地,如果攻擊者知道這個域的一些信息,比如說該域的數(shù)據(jù)分布,他也能夠以較大的概率估計密文對應(yīng)的明文值。文獻[9]中,智能卡具有加密和查詢處理能力,它把數(shù)據(jù)加密后存儲在服務(wù)器中,密鑰也存儲在智能卡中。查詢時,智能卡能夠?qū)Φ戎挡樵冋Z句進行轉(zhuǎn)換,使之能夠?qū)γ芪臄?shù)據(jù)進行查詢。但是,它不能對實數(shù)類數(shù)據(jù)進行范圍查詢。文獻[10]中使用序列加密(stream cipher)方法對文本數(shù)據(jù)進行加密處理,這樣可以無須解密而直接對加密文本搜索關(guān)鍵詞,但是這種方法沒有涉及到如何應(yīng)用到數(shù)據(jù)庫中。文獻[11]和[12]對數(shù)據(jù)庫中字符型數(shù)據(jù)的加密以及加密數(shù)據(jù)的快速查詢進行了研究。

  3 數(shù)據(jù)加密的體系結(jié)構(gòu)

  數(shù)據(jù)庫加密,大致可以分為兩種方式:DBMS 外部加密和DBMS 內(nèi)部加密。DBMS 外部加密,一般選擇在應(yīng)用程序和操作系統(tǒng),通過調(diào)用加/解密函數(shù)來完成加密數(shù)據(jù)的存儲和訪問。例如,在操作系統(tǒng)層次實現(xiàn)加密時,可以利用它管理文件系統(tǒng)的功能,直接對存儲數(shù)據(jù)的文件進行加密。在操作系統(tǒng)中加密時,加密的粒度是基于文件,對應(yīng)到數(shù)據(jù)庫中的表或者整個數(shù)據(jù)庫,這種加密粒度是非常粗糙,最直接的影響是,加/解密的工作相當(dāng)大,極大地降低系統(tǒng)性能。DBMS 內(nèi)部加密,一般選擇在數(shù)據(jù)物理存取之前進行加/解密操作。也就是說,DBMS 在將內(nèi)存中的數(shù)據(jù)寫到磁盤時,進行加密操作,而從磁盤讀取數(shù)據(jù)到內(nèi)存中時,進行相應(yīng)的解密操作。BMS 能夠區(qū)分各種粒度的數(shù)據(jù),所以可以支持各種粒度的加密,加密的靈活性較好。另外,在DBMS 內(nèi)部實現(xiàn)加密,可以更有效地和DBMS 內(nèi)部的訪問控制機制、授權(quán)機制等各種功能結(jié)合起來。此外,數(shù)據(jù)庫中的數(shù)據(jù)具有高度結(jié)構(gòu)化,共享性高等特點,在對數(shù)據(jù)庫中存儲數(shù)據(jù)進行加密時,需要結(jié)合它們的特點,對加密算法、加密粒度以及加密方式進行合理選擇。首先,在選擇加密算法時,對加密尤其是解密速度要求比較快,不能因為加/解密過程而導(dǎo)致系統(tǒng)性能大幅度下降。其次,應(yīng)當(dāng)支持靈活的加密粒度。根據(jù)用戶的需要,能夠選擇對數(shù)據(jù)庫、表、記錄、字段、數(shù)據(jù)項進行加密。同時,還應(yīng)結(jié)合目前DBMS 選擇適當(dāng)加密方式。

  在設(shè)計數(shù)據(jù)加密的體系結(jié)構(gòu)時,采用基于DBMS 內(nèi)核層加密方法,加密的粒度為表級,如圖1 所示。其中系統(tǒng)表和加解密組件是新增的。設(shè)計思想是:用戶在創(chuàng)建表的時候,可以指定是否對其加密存儲,如果需要加密,則在系統(tǒng)表的安全字典中插入一條相應(yīng)的記錄。在DBMS 將數(shù)據(jù)寫到磁盤上時,查詢系統(tǒng)表的安全字典,如果需要加密,則首先對數(shù)據(jù)加密,再將其寫出到外存。當(dāng)DBMS 從磁盤中讀入數(shù)據(jù)塊時,如果數(shù)據(jù)塊是加密過的,則加/解密模塊查詢安全字典,取出相應(yīng)的密鑰解密數(shù)據(jù)塊。

130119524976655977_new.jpg (437×243)

圖1 數(shù)據(jù)庫加密體系結(jié)構(gòu)圖

 

責(zé)任編輯:admin