吳興惠
(海南師范大學(xué) 信息科學(xué)技術(shù)學(xué)院 ,???571158)
隨著信息技術(shù)的飛速發(fā)展,數(shù)據(jù)信息的安全已成為當(dāng)前信息社會(huì)非常關(guān)注的突出問(wèn)題。而數(shù)據(jù)庫(kù)系統(tǒng)作為計(jì)算機(jī)信息系統(tǒng)的核心部件,其安全問(wèn)題是信息系統(tǒng)安全的一個(gè)重要方面。數(shù)據(jù)庫(kù)系統(tǒng)信息的安全性依賴于兩個(gè)層次:一是操作系統(tǒng)提供的安全保障;二是數(shù)據(jù)庫(kù)自己提供的安全措施。對(duì)一些重要或敏感數(shù)據(jù),用戶希望以密文的形式存儲(chǔ)和傳輸,并且可以對(duì)數(shù)據(jù)庫(kù)信息進(jìn)行操作而又不泄漏其中的內(nèi)容。這就需要研究?jī)蓚€(gè)重要技術(shù):數(shù)據(jù)庫(kù)加密技術(shù)和對(duì)密文的查詢技術(shù)。本文在分析了各種數(shù)據(jù)庫(kù)加密技術(shù)方案的基礎(chǔ)上,討論了對(duì)密文進(jìn)行查詢的兩個(gè)主流技術(shù):秘密同態(tài)技術(shù)和密文索引技術(shù),實(shí)現(xiàn)了對(duì)密文直接進(jìn)行操作的方法。
運(yùn)行在網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)庫(kù)系統(tǒng)的一個(gè)顯著特點(diǎn)是數(shù)據(jù)的共享性,數(shù)據(jù)庫(kù)加密技術(shù)的作用主要是在不影響數(shù)據(jù)共享的前提下保證數(shù)據(jù)庫(kù)信息的真實(shí)性和完整性。對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的加密可以選用以文件、記錄、字段作為加密基本單位的方案[1]。加密單位越小,適用范圍越廣,但實(shí)現(xiàn)難度就越大。根據(jù)應(yīng)用時(shí)具體要求的不同,實(shí)現(xiàn)時(shí)應(yīng)采用不同的方法。
該技術(shù)的基本思想是把數(shù)據(jù)庫(kù)文件作為整體,用加密密鑰和加密算法對(duì)整個(gè)數(shù)據(jù)庫(kù)文件加密。利用這種方法,數(shù)據(jù)的共享是通過(guò)用戶用解密密鑰對(duì)整個(gè)數(shù)據(jù)庫(kù)文件進(jìn)行解密來(lái)實(shí)現(xiàn)的。但多方面的缺點(diǎn)極大地限制了這一方法的實(shí)際應(yīng)用。如果用戶只是需要查看某一條記錄,也必須將整個(gè)數(shù)據(jù)庫(kù)文件解密,這樣無(wú)法實(shí)現(xiàn)對(duì)文件中不需要讓用戶知道的信息的控制。因此,這種方法只適用于能回避這些限制的應(yīng)用環(huán)境。
由于數(shù)據(jù)庫(kù)系統(tǒng)中每條記錄所包含的信息具有一定的封閉性,因此,基于記錄的加密技術(shù)是最常用的數(shù)據(jù)庫(kù)信息加密手段。記錄加密實(shí)現(xiàn)的是對(duì)一個(gè)完整的實(shí)體進(jìn)行加密,卻無(wú)法實(shí)現(xiàn)對(duì)一個(gè)記錄中特定字段解密;在選擇某個(gè)字段的某些記錄時(shí),如果不對(duì)含有這個(gè)字段的所有記錄進(jìn)行解密就無(wú)法進(jìn)行選擇,嚴(yán)重影響了系統(tǒng)效率。
為了解決基于記錄的數(shù)據(jù)庫(kù)加密技術(shù)存在的問(wèn)題,G.I.David等人提出了子密鑰數(shù)據(jù)庫(kù)加密技術(shù)。子密鑰加密算法的核心思想是根據(jù)數(shù)據(jù)庫(kù)中數(shù)據(jù)組織的特點(diǎn),在加密時(shí)以記錄為單位進(jìn)行加密,而在解密時(shí)以字段為單位對(duì)單項(xiàng)數(shù)據(jù)進(jìn)行解密操作。兩者所用的密鑰是不同的,加密所用的密鑰是針對(duì)整個(gè)記錄的密鑰,而解密所用的密鑰是針對(duì)單個(gè)數(shù)據(jù)項(xiàng)的子密鑰。該算法的理論依據(jù)是著名的中國(guó)剩余定理[2]。
中國(guó)剩余定理:假設(shè)m1,m2,…,mn
是n個(gè)兩兩互素的正整數(shù),那么,對(duì)于任意整數(shù)A1,A2,…,An,同余方程組X≡Ai(mod mi)(1≤i≤n)必有解,并且任意兩個(gè)解在模m1,m2,…,mn下同余。
加密算法:假設(shè)一個(gè)待加密的記錄有n個(gè)明文字段F1,F2,…,Fn,選取n個(gè)不同的兩兩互素的正整數(shù)m1,m2, …,mn,令
選取Yi滿足MiYi≡1(mod mi),其中1≤i≤n。令Ki=MiYi(1≤i≤n),以(K1,K2,…,Kn)作為記錄的加密密鑰,C表示記錄的密文,則加密運(yùn)算為:
解密算法:mi為字段Fi的解密子密鑰,根據(jù)中國(guó)剩余定理,解密運(yùn)算為:
Fi≡C(mod mi)(1≤i≤n)
子密鑰加密技術(shù)的優(yōu)點(diǎn)在于理論上原理簡(jiǎn)單,并可以對(duì)單個(gè)數(shù)據(jù)項(xiàng)解密,克服了單純的記錄加密所存在的問(wèn)題。缺點(diǎn)是實(shí)際應(yīng)用時(shí)必須對(duì)每個(gè)記錄生成加密密鑰,并對(duì)每個(gè)數(shù)據(jù)項(xiàng)生成解秘密鑰,對(duì)于大型的數(shù)據(jù)庫(kù)文件,密鑰管理是非常困難的。
基于字段的數(shù)據(jù)庫(kù)加密,就是以不同記錄的不同字段為基本加密單元進(jìn)行加密。該方法可以對(duì)數(shù)據(jù)庫(kù)中單個(gè)數(shù)據(jù)元素進(jìn)行加密。其優(yōu)點(diǎn)在于具有最小的加密粒度,具有更好的靈活性和適應(yīng)性。其缺點(diǎn)是:加解密效率低;若用數(shù)據(jù)庫(kù)密鑰對(duì)單個(gè)數(shù)據(jù)元素重復(fù)加密,對(duì)于密文搜索攻擊是脆弱的;若各字段的數(shù)據(jù)元素分別用不同的密鑰加密,則密鑰個(gè)數(shù)=記錄個(gè)數(shù)×字段個(gè)數(shù),其量是非常驚人的,實(shí)際上根本無(wú)法管理。
為了解決上述問(wèn)題,介紹一種可行的字段加密方案,該方案中主密鑰只有一個(gè),但各數(shù)據(jù)元素所用的密鑰是不同的。加密第i個(gè)記錄的第j個(gè)字段所用的密鑰為Kij=g(Ri,Cj,K)。其中g(shù)是子密鑰生成函數(shù),為單向函數(shù),K是原始的數(shù)據(jù)庫(kù)密鑰(即主密鑰),Ri是記錄i的唯一標(biāo)識(shí)符,Cj是字段j是唯一標(biāo)識(shí)符。
子密鑰生成函數(shù)g應(yīng)該滿足如下的安全條件:不同數(shù)據(jù)項(xiàng)的密鑰相同的概率很??;即使已知數(shù)據(jù)項(xiàng)xij的一些信息,也不可能由密文獲得明文xij的其他信息;由某一個(gè)數(shù)據(jù)項(xiàng)密鑰難于求得其他數(shù)據(jù)項(xiàng)密鑰。這樣所得的Kij是關(guān)于主密鑰K的函數(shù)值,但由Kij計(jì)算K在計(jì)算上是不可行的,即密碼體制是安全的。
目前對(duì)于數(shù)據(jù)庫(kù)加密的研究主要集中于高效數(shù)據(jù)庫(kù)加/脫密引擎的尋找,以及基于此的快速查詢、插入、刪除方法上。而提高密文數(shù)據(jù)庫(kù)查詢速度的根本途徑是設(shè)法省去查詢前的脫密處理,即能夠?qū)崿F(xiàn)在不脫密情況下按密文方式進(jìn)行查詢。根據(jù)此發(fā)展方向,人們提出了幾種密文查詢技術(shù):
秘密同態(tài)是由Rivest等人于1978年在文獻(xiàn)[3]提出的,是允許直接對(duì)密文進(jìn)行操作的加密變換。但是由于其對(duì)已知明文攻擊是不安全的,后來(lái)由Domingo在文獻(xiàn)[4]做了進(jìn)一步的改進(jìn)。秘密同態(tài)技術(shù)最早是用于對(duì)統(tǒng)計(jì)數(shù)據(jù)進(jìn)行加密的,由算法的同態(tài)性,保證了用戶可以對(duì)敏感數(shù)據(jù)進(jìn)行操作但又不泄露數(shù)據(jù)信息。秘密同態(tài)技術(shù)是建立在代數(shù)理論之上的,其基本思想如下:
假設(shè)EK1、DK2分別代表加密、解密函數(shù),明文數(shù)據(jù)空間中的元素是有限集合{M1, M2,…,Mn},代表運(yùn)算,若
α(EK1(M1),EK1(M2),….. EK1(Mn))= EK1(β(M1,M2,…,Mn))成立,且
DK2(α(EK1(M1),EK1(M2),….. EK1(Mn)))=β(M1,M2,…,Mn)成立,則稱函數(shù)族(EK1, DK2,α,β)為一個(gè)秘密同態(tài)。
秘密同態(tài)技術(shù)能夠?qū)ξ唇?jīng)解密的密文數(shù)據(jù)進(jìn)行查詢,大大提高了密文數(shù)據(jù)庫(kù)的查詢效率。但是,因?yàn)樵摲椒▽?duì)加密算法提出了一定的約束條件,使得滿足密文同態(tài)的加密算法的應(yīng)用不具有普遍性[5],因此該加密技術(shù)僅適用于屬性段級(jí)加密粒度。
提高密文數(shù)據(jù)庫(kù)查詢效率的另一種主要方法是密文索引技術(shù)。在明文數(shù)據(jù)庫(kù)中,索引樹中的每個(gè)結(jié)點(diǎn)主要存放數(shù)據(jù)和指針二類信息,可將每個(gè)結(jié)點(diǎn)中的數(shù)據(jù)用其對(duì)應(yīng)的密文代替,便產(chǎn)生了一棵密文數(shù)據(jù)庫(kù)的密文索引樹,檢索中先將根結(jié)點(diǎn)脫密并與查詢條件進(jìn)行比較來(lái)決定下一個(gè)檢索的結(jié)點(diǎn),直至找到滿足查詢條件的所有結(jié)點(diǎn),由此方法的脫密次數(shù)為索引樹的深度,查詢時(shí)只需將其調(diào)入內(nèi)存,減少了內(nèi)外存交換時(shí)間,因此與全表或全段脫密相比,其速度要快得多。但對(duì)于此方法也有安全隱患,雖然密文索引樹中數(shù)據(jù)是加密過(guò)的,但指針類信息卻是以明文存在的,就有泄露可能。因此文獻(xiàn)[5]提出了對(duì)指針信息也加密的方法,切斷了密文索引樹中和結(jié)點(diǎn)的聯(lián)系。假設(shè)敵手只擁有密文數(shù)據(jù)及其對(duì)應(yīng)的索引,也找不出密文與索引的對(duì)應(yīng)關(guān)系,清除了安全隱患。另外還有順序索引技術(shù)、數(shù)組索引技術(shù)和矩陣索引技術(shù)等也都針對(duì)不同問(wèn)題被先后提出。目前,大多數(shù)的密文索引技術(shù)都是針對(duì)于外部攻擊的,雖然也有一些針對(duì)于內(nèi)部攻擊的密文索引技術(shù),但是在安全性和易用性上還存在一定問(wèn)題。
數(shù)據(jù)庫(kù)安全問(wèn)題是當(dāng)前信息技術(shù)研究的一大熱點(diǎn)。本文討論了各種數(shù)據(jù)庫(kù)加密技術(shù)各自的優(yōu)缺點(diǎn),實(shí)用于不同安全要求和應(yīng)用環(huán)境。利用秘密同態(tài)技術(shù)和密文索引技術(shù)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)能夠?qū)崿F(xiàn)在不脫密情況下按密文方式進(jìn)行查詢,能夠提高密文數(shù)據(jù)庫(kù)查詢效率?;诿芪乃饕募用軝C(jī)制,對(duì)于字串查詢和多條件查詢也有不足之處。目前,要在Internet上實(shí)現(xiàn)共享數(shù)據(jù)庫(kù)的加密,還有一定的困難性和復(fù)雜度。另外,數(shù)據(jù)庫(kù)加密還存在一定的局限性,如密文膨脹問(wèn)題、數(shù)據(jù)可靠性問(wèn)題、密鑰管理問(wèn)題、數(shù)據(jù)加密算法的固有局限性等等。
[1] 盧開(kāi)澄.計(jì)算機(jī)系統(tǒng)安全[M].重慶:重慶出版社,1999:78-80.
[2] 潘承洞,潘承彪.初等數(shù)論[M].北京:北京大學(xué)出版社,1991,11.
[3] R L Rivest,L Adleman,M L.Dertouios,On data banks and privary homomorphism[C].in:R A DeMiuo Eds.Foundations of secure Computation, New Youk:Academic press,1978:169-179.
[4] J Domingo-Ferrer.A New privacy homomorphism and applications[J].Information Proessing Letters,1996:60(5):277-282.
[5] 楊勇,方勇,周安民.秘密同態(tài)技術(shù)研究及其算法實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2005,31(2):157-159.
[6] 余祥宣,劉偉.數(shù)據(jù)庫(kù)的密文索引機(jī)制[J].華中科技大學(xué)學(xué)報(bào),2002,30(3):16-18.
[7] 王曉鋒,王尚平.秘密同態(tài)技術(shù)在數(shù)據(jù)庫(kù)安全中的應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2003.14:194-196.