汪海偉,楊 庚,劉國(guó)秀,曾橙焜
(南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210003)
可搜索數(shù)據(jù)庫(kù)加密系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
汪海偉,楊 庚,劉國(guó)秀,曾橙焜
(南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210003)
數(shù)據(jù)隱私保護(hù)已成為網(wǎng)絡(luò)應(yīng)用中急需解決的問(wèn)題,其簡(jiǎn)單的解決方案是將隱私數(shù)據(jù)進(jìn)行加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中,但該方式存在一些缺陷,包括經(jīng)加密后的明文數(shù)據(jù)會(huì)失去明文的一些屬性,如數(shù)據(jù)之間的順序關(guān)系,原有對(duì)明文的運(yùn)算也無(wú)法在密文上執(zhí)行,需將所有密文解密為明文才能完成操作,因而在面對(duì)大規(guī)模的數(shù)據(jù)庫(kù)存儲(chǔ)需求時(shí),其執(zhí)行效率遠(yuǎn)低于明文數(shù)據(jù)庫(kù)。為在保證安全性的同時(shí)解決密文上不可直接執(zhí)行SQL操作的問(wèn)題,設(shè)計(jì)高效、安全的加密模型已成為當(dāng)務(wù)之急。為此,設(shè)計(jì)并實(shí)現(xiàn)了一種包括SQL語(yǔ)句改寫、明文數(shù)據(jù)加密和查詢處理等功能在內(nèi)的可搜索數(shù)據(jù)庫(kù)加密系統(tǒng)。該系統(tǒng)在語(yǔ)句執(zhí)行過(guò)程中通過(guò)動(dòng)態(tài)調(diào)整加密層,實(shí)現(xiàn)了在密文上直接執(zhí)行復(fù)雜的SQL語(yǔ)句,避免了不可信數(shù)據(jù)庫(kù)服務(wù)器暴露明文數(shù)據(jù),保護(hù)了數(shù)據(jù)隱私。實(shí)驗(yàn)結(jié)果表明,所構(gòu)建的系統(tǒng)具有較好的有效性和安全性。
SQL查詢;密文查詢;可搜索數(shù)據(jù)庫(kù)加密;隱私保護(hù)
隱私保護(hù)是數(shù)據(jù)庫(kù)安全的重要內(nèi)容,其安全威脅來(lái)自于兩方面[1]:一是數(shù)據(jù)庫(kù)系統(tǒng)外部,攻擊者利用系統(tǒng)漏洞或者非法獲取訪問(wèn)權(quán)限,竊取隱私數(shù)據(jù);二是數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部,具有合法訪問(wèn)權(quán)限的數(shù)據(jù)庫(kù)管理員,存在探查、泄露隱私數(shù)據(jù)的可能性。
一種簡(jiǎn)單的解決方案是對(duì)隱私數(shù)據(jù)進(jìn)行加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中,在查詢時(shí),對(duì)密文數(shù)據(jù)進(jìn)行解密。這種方法的缺陷是,明文數(shù)據(jù)經(jīng)過(guò)加密后,失去了明文的一些屬性,如數(shù)據(jù)之間的順序關(guān)系,原有對(duì)明文的運(yùn)算也無(wú)法在密文上執(zhí)行,需要將所有密文解密為明文才能完成操作。該方案在面對(duì)大規(guī)模數(shù)據(jù)庫(kù)存儲(chǔ)需求時(shí),在執(zhí)行效率上遠(yuǎn)低于明文數(shù)據(jù)庫(kù)[2]。
為了能在不解密的情況下對(duì)數(shù)據(jù)進(jìn)行操作,研究者提出了同態(tài)算法[3],其中全同態(tài)算法[4]允許在密文數(shù)據(jù)上進(jìn)行任意操作,并得到與在明文上操作相同的結(jié)果。其缺陷在于,算法的執(zhí)行效率低,時(shí)間開(kāi)銷大,不具有實(shí)際應(yīng)用價(jià)值。
在考慮到數(shù)據(jù)加密、密文可操作性以及實(shí)用性上,麻省理工學(xué)院的研究員設(shè)計(jì)并實(shí)現(xiàn)了數(shù)據(jù)庫(kù)加密系統(tǒng)—CryptDB[5-6]。該系統(tǒng)是以中間代理的形式為數(shù)據(jù)庫(kù)提供加解密功能。與直接在明文數(shù)據(jù)庫(kù)中進(jìn)行操作的時(shí)間相比,只增加了15%~20%。
可搜索數(shù)據(jù)庫(kù)加密系統(tǒng)在CryptDB的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了一種包括SQL語(yǔ)句改寫、明文數(shù)據(jù)加密和查詢處理等功能的加密系統(tǒng),其特點(diǎn)在于語(yǔ)句執(zhí)行過(guò)程中通過(guò)動(dòng)態(tài)調(diào)整加密層,實(shí)現(xiàn)了在密文上直接執(zhí)行復(fù)雜的SQL語(yǔ)句,支持字符類型數(shù)據(jù)的等值匹配,整數(shù)類型和浮點(diǎn)類型的密文排序和同態(tài)運(yùn)算。
當(dāng)今數(shù)據(jù)的隱私問(wèn)題越來(lái)越受到重視,數(shù)據(jù)以明文形式存儲(chǔ)在服務(wù)器中已不能滿足人們對(duì)隱私保護(hù)的需求,因此,數(shù)據(jù)加密技術(shù)越來(lái)越受到關(guān)注。然而,數(shù)據(jù)加密后的存儲(chǔ)帶來(lái)了數(shù)據(jù)查詢的難題,簡(jiǎn)單的做法是將要查詢的數(shù)據(jù)全部解密,在明文上查詢,再將數(shù)據(jù)重新加密,這種方式易于實(shí)現(xiàn),但效率低,尤其在數(shù)據(jù)量巨大的時(shí)候,解密的明文中存在大量不相關(guān)的數(shù)據(jù),對(duì)這些數(shù)據(jù)的加解密工作是不必要的。可搜索加密機(jī)制(Searchable Encryption)[7]正是為了解決這類問(wèn)題而提出的,用戶使用該機(jī)制對(duì)數(shù)據(jù)進(jìn)行加密后,將密文數(shù)據(jù)交由服務(wù)器端存儲(chǔ);當(dāng)用戶需要根據(jù)關(guān)鍵字檢索文件時(shí),將該關(guān)鍵字的搜索憑證(search capability)發(fā)給服務(wù)器,服務(wù)器根據(jù)這個(gè)憑證在密文數(shù)據(jù)上直接檢索,將包含有該關(guān)鍵字的文件返回給用戶,用戶只需對(duì)返回的文件進(jìn)行解密即可。近些年,可搜索加密機(jī)制已得到廣泛的研究[8-14],其中文獻(xiàn)[8,13-14]提出了多關(guān)鍵字搜索的解決方案,Li J等[10]解決了關(guān)鍵字的模糊查詢問(wèn)題。
以上可搜索加密機(jī)制的研究側(cè)重于文本文件檢索,利用關(guān)鍵字信息在加密后的文本數(shù)據(jù)中進(jìn)行匹配查詢。然而在應(yīng)對(duì)數(shù)據(jù)庫(kù)中密文數(shù)據(jù)存儲(chǔ)及查詢問(wèn)題時(shí),以往的可搜索加密機(jī)制則無(wú)法滿足需求,如不支持一些基本的SQL查詢。在數(shù)據(jù)庫(kù)查詢中,不僅涉及到等值關(guān)系,還包括順序關(guān)系,如數(shù)值之間的大小比較;此外,對(duì)于數(shù)值型數(shù)據(jù)的計(jì)算,如sum()和avg(),如果在密文上的操作結(jié)果與明文相同,這需要密文能夠保持明文的部分或者全部屬性,這是以往可搜索加密機(jī)制無(wú)法完成的。
可搜索數(shù)據(jù)庫(kù)加密系統(tǒng)的目標(biāo)是利用可搜索加密機(jī)制,對(duì)用戶提交的數(shù)據(jù)進(jìn)行加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中,當(dāng)用戶需要查詢數(shù)據(jù)時(shí),將要查詢的條件轉(zhuǎn)換為密文上的查詢條件,可以直接在密文上完成查詢,最終由用戶將這些結(jié)果解密。其優(yōu)點(diǎn)在于[15]:在不可信的服務(wù)器端,數(shù)據(jù)始終以密文的形式存放,并且減少甚至消除服務(wù)器端接觸密鑰的可能性。用戶查詢時(shí),只需要返回與查詢條件匹配的記錄即可,減少了通信開(kāi)銷和用戶解密數(shù)據(jù)的計(jì)算開(kāi)銷,提高了查詢效率。
CryptDB是首個(gè)在密文上進(jìn)行所有SQL查詢操作的系統(tǒng)。該系統(tǒng)是以中間代理的形式為數(shù)據(jù)庫(kù)提供加解密功能。其核心包含三個(gè)部分[16]:加密策略(SQL-aware encryption strategy)、洋蔥加密模型(adjustable query-based encryption)和密鑰鏈管理方案(chain encryption keys to user passwords)。然而,該系統(tǒng)存在一些不足之處:
(1)對(duì)于洋蔥模型外層的加密和解密需要調(diào)用自定義的函數(shù),因此還不能做到對(duì)原生數(shù)據(jù)庫(kù)不進(jìn)行任何修改。
(2)當(dāng)前的同態(tài)加密策略僅支持整數(shù)型的明文數(shù)據(jù),不支持浮點(diǎn)型數(shù)據(jù)。
(3)在CryptDB設(shè)計(jì)中,在洋蔥模型“剝?nèi)ァ蓖鈱友笫[層后,系統(tǒng)會(huì)在一段時(shí)間內(nèi)保持該狀態(tài),如果該列在此時(shí)間段內(nèi)沒(méi)有被頻繁訪問(wèn),系統(tǒng)才會(huì)重新加密到最高級(jí)別。這樣的做法雖然提高了密文上的執(zhí)行效率,但是不利于系統(tǒng)的安全性。
Tu等在CryptDB的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了任務(wù)分割的數(shù)據(jù)庫(kù)加密系統(tǒng)-MONIMI[17]。該系統(tǒng)采用客戶端/服務(wù)器的架構(gòu),將任務(wù)分成客戶端和服務(wù)器端兩部分,通過(guò)分析查詢語(yǔ)句,決定任務(wù)的分配,如“A+B SDB[18]在CryptDB和MONOMI的基礎(chǔ)上,解決了數(shù)據(jù)互操作性問(wèn)題(data interoperability)。在數(shù)據(jù)庫(kù)查詢時(shí),會(huì)出現(xiàn)查詢操作中需要涉及多列數(shù)據(jù)的情況,如“salary*year>10 000”,需要使用salary和year的數(shù)據(jù)。該方案支持多種運(yùn)算,包括加減乘除、關(guān)系比較(>=)笛卡爾積、連接、sum、count、avg和groupby操作,然而SDB只能應(yīng)用于整型數(shù)據(jù)。 傳統(tǒng)的數(shù)據(jù)庫(kù)加密方案無(wú)法兼顧數(shù)據(jù)安全性和可操作性,而已有解決方案無(wú)法做到對(duì)用戶和數(shù)據(jù)庫(kù)完全透明,當(dāng)前的全同態(tài)加解密算法尚不具有實(shí)際應(yīng)用價(jià)值。在此基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了可搜索數(shù)據(jù)庫(kù)加密系統(tǒng),不僅對(duì)用戶和數(shù)據(jù)庫(kù)完全透明,而且使用三種加密模型對(duì)數(shù)據(jù)進(jìn)行加密,每種加密模型支持不同的查詢語(yǔ)句,能夠支持浮點(diǎn)類型數(shù)據(jù)的同態(tài)加法運(yùn)算。 SSDB的體系結(jié)構(gòu)如圖1所示。SSDB為可信端,數(shù)據(jù)庫(kù)服務(wù)器為不可信端。用戶輸入SQL語(yǔ)句,由SSDB對(duì)語(yǔ)句進(jìn)行改寫,隱藏列名并對(duì)其中的明文進(jìn)行加密,同時(shí)對(duì)數(shù)據(jù)庫(kù)中的加密層進(jìn)行調(diào)整,使改寫后的語(yǔ)句能夠直接在密文上執(zhí)行。數(shù)據(jù)庫(kù)服務(wù)器返回密文結(jié)果,由SSDB對(duì)結(jié)果集解密。 圖1 SSDB體系結(jié)構(gòu) 2.1 加解密模塊 該模塊中包含了所有加解密算法的具體實(shí)現(xiàn),提供對(duì)數(shù)據(jù)的加密和解密功能。使用三種加密模型對(duì)數(shù)據(jù)進(jìn)行加密和解密,并能在加密的數(shù)據(jù)上進(jìn)行SQL查詢。 SSDB包括三種加密模型,如圖2所示,分別為: 圖2 SSDB中的加密模型 (1)等值加密模型。 該模型采用兩層結(jié)構(gòu),在對(duì)明文數(shù)據(jù)進(jìn)行加密時(shí),使用確定加密算法(Deterministic Encryption Algorithm,DEA)進(jìn)行加密,生成內(nèi)層密文,其特征是相同的明文經(jīng)過(guò)加密后的密文也相同,因此內(nèi)層密文可以直接進(jìn)行等值比較;使用隨機(jī)加密算法(Random Encryption Algorithm,REA)對(duì)內(nèi)層的密文再次進(jìn)行加密,形成兩層加密的結(jié)構(gòu),外層密文的特征是明文經(jīng)過(guò)加密后的密文是隨機(jī)的,不泄露明文的任何信息,因此安全性最高。而在進(jìn)行兩個(gè)密文等值比較時(shí),需要先將外層密文解密,暴露出內(nèi)層密文,完成操作后再重新加密,保持兩層加密的結(jié)構(gòu),使用該結(jié)構(gòu)的目的是支持密文的等值比較,并且彌補(bǔ)明文信息暴露的缺陷。 (2)保序加密模型。 該模型采用單層加密,將明文使用保序加密算法[18-19](Order Preserving Encryption Algorithm,OPEA)進(jìn)行加密,其特征是在不暴露明文的前提下,密文保持了明文的順序關(guān)系,能夠在密文上直接進(jìn)行順序比較。 (3)同態(tài)加密模型。 該模型采用單層加密,使用同態(tài)加密算法[20](Homomorphic Encryption Algorithm,HEA)進(jìn)行加密,其特征是將密文的加乘運(yùn)算結(jié)果解密后即為明文的加乘結(jié)果,能夠在密文上直接完成數(shù)據(jù)庫(kù)操作中的sum和avg。 2.2 密鑰管理模塊 密鑰管理模塊的功能包括:一是為等值加密模型動(dòng)態(tài)生成工作密鑰,根據(jù)需要加密的目標(biāo)列的列名和主密鑰生成密鑰;二是對(duì)于保序和同態(tài)加密模型,在表創(chuàng)建時(shí),數(shù)值型的列產(chǎn)生相應(yīng)的列密鑰。SSDB中采用兩種密鑰管理方案: (1)等值加密模型,其密鑰產(chǎn)生方案為: Kmk,c=KeyGen(MasterKey mk, ColumnName c) 其中,MasterKey是用戶的主密鑰;c是列名。 密鑰管理器通過(guò)主密鑰和列名動(dòng)態(tài)生成一個(gè)工作密鑰,提供給確定加密算法。 (2)對(duì)于保序加密模型和同態(tài)加密模型,密鑰均存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中的元數(shù)據(jù)表中。為了保護(hù)密鑰不被竊取,元數(shù)據(jù)表會(huì)將這些密鑰加密后存儲(chǔ)。在加密和解密之前,SSDB會(huì)從元數(shù)據(jù)表中獲取這些密鑰。 2.3 元數(shù)據(jù)管理模塊 在創(chuàng)建表時(shí),同樣需要改寫語(yǔ)句,將明文的字段類型改為密文字段類型,例如,用戶創(chuàng)建明文是int類型的id字段,而id列中的數(shù)據(jù)經(jīng)過(guò)加密后的密文類型變?yōu)閠ext。這有利于隱藏明文的屬性信息,但是需要明文屬性信息的時(shí)候,密文數(shù)據(jù)表就無(wú)法提供,需要?jiǎng)?chuàng)建一個(gè)元數(shù)據(jù)表,預(yù)先將明文的屬性信息作為數(shù)據(jù)存放在元數(shù)據(jù)表中。此外,對(duì)于保序和同態(tài)加密模型的密鑰,需要存放在元數(shù)據(jù)表中。元數(shù)據(jù)管理器的作用是對(duì)這些數(shù)據(jù)提供存儲(chǔ)與獲取的功能。表1是元數(shù)據(jù)表的結(jié)構(gòu)示例圖。 表1 元數(shù)據(jù)表的結(jié)構(gòu) T1表由三列組成,分別為C1、C2、C3,存儲(chǔ)的明文類型分別為int、double、char。對(duì)于數(shù)值型數(shù)據(jù),元數(shù)據(jù)表存儲(chǔ)了保序加密模型和同態(tài)加密模型的密鑰,而對(duì)于字符型數(shù)據(jù),這兩列設(shè)置為null。 2.4 SQL語(yǔ)句重寫模塊 SQL語(yǔ)句重寫模塊對(duì)用戶提交的SQL語(yǔ)句進(jìn)行解析,分析查詢類型,包括create、select、insert、update、delete,并對(duì)語(yǔ)句中包含的明文數(shù)據(jù)進(jìn)行加密,對(duì)列名進(jìn)行修改,下面通過(guò)一個(gè)例子說(shuō)明: 用戶輸入語(yǔ)句: select name from student where id=1; SSDB輸出語(yǔ)句: select c1_DEA from student where c2_DEA=‘Edafdfgk==’; “id=1”屬于等值匹配的操作謂詞,解析函數(shù)調(diào)用加解密模塊對(duì)明文數(shù)字1使用等值加密模型進(jìn)行加密,得到密文‘Edafdfgk==’,并且將列名id改寫為c2_DEA,代表在密文上將使用等值加密模型的列,select…from部分的列名也將被改寫為c1_DEA,表示從等值加密模型中獲取密文。 2.5 數(shù)據(jù)庫(kù)連接模塊 數(shù)據(jù)庫(kù)連接模塊負(fù)責(zé)連接數(shù)據(jù)庫(kù),該模塊存儲(chǔ)了遠(yuǎn)程數(shù)據(jù)庫(kù)的連接信息,并且能夠改變遠(yuǎn)程的數(shù)據(jù)庫(kù)服務(wù)器,該模塊負(fù)責(zé)啟用新的連接方式。 3.1 系統(tǒng)實(shí)現(xiàn) 該系統(tǒng)編程語(yǔ)言采用Java,數(shù)據(jù)庫(kù)為MySQL,使用JSQLParser開(kāi)源項(xiàng)目實(shí)現(xiàn)了SQL語(yǔ)句的解析功能。由于明文數(shù)據(jù)經(jīng)過(guò)等值模型的加密后形成的二進(jìn)制密文數(shù)據(jù)不利于存儲(chǔ),所以在實(shí)現(xiàn)過(guò)程中,使用BASE64編碼對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行轉(zhuǎn)換,最終以字符類型的密文數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。 開(kāi)發(fā)環(huán)境如下: (1)硬件:處理器為Intel Core i5-2410M,內(nèi)存為6 GB。 (2)軟件:操作系統(tǒng)為Windows 7,Java開(kāi)發(fā)環(huán)境為JDK1.8,MySQL版本為5.7。 實(shí)驗(yàn)使用兩臺(tái)計(jì)算機(jī)分別為SSDB可信端和不可信的服務(wù)器端,服務(wù)器端安裝MySQL作為DBMS,其硬件配置均為4核Intel Xeon E3-1226 CPU@3.3 GHz,內(nèi)存為16 G,運(yùn)行CentOS系統(tǒng)。CryptDB使用三臺(tái)服務(wù)器,分別為客戶端、中間代理和數(shù)據(jù)庫(kù)服務(wù)器。 3.2 性能測(cè)試與分析 對(duì)SSDB的性能進(jìn)行測(cè)試分析,分別對(duì)插入、查詢、更新、刪除操作設(shè)計(jì)相應(yīng)的測(cè)試語(yǔ)句,并在相同的條件下與CryptDB系統(tǒng)進(jìn)行對(duì)比。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)能夠在密文上直接完成增刪改查的功能,具有可用價(jià)值,通過(guò)對(duì)insert、select、update、delete語(yǔ)句的對(duì)比實(shí)驗(yàn),SSDB在執(zhí)行效率上優(yōu)于CryptDB。 3.2.1 測(cè)試方案 創(chuàng)建名為college的測(cè)試數(shù)據(jù)庫(kù),其中包含兩張表:student表存儲(chǔ)了學(xué)生信息,包括姓名、學(xué)號(hào)、年齡、性別字段;grade表存儲(chǔ)了學(xué)生的成績(jī)信息,包括學(xué)號(hào)、成績(jī)字段。其中g(shù)rade中的學(xué)號(hào)字段是student中學(xué)號(hào)字段的外鍵,rowid字段作為隨機(jī)加密的參數(shù),不進(jìn)行加密。 實(shí)驗(yàn)針對(duì)常用SQL操作設(shè)計(jì)用于測(cè)試的執(zhí)行語(yǔ)句: (1)Insert(插入數(shù)據(jù)): insert into student(id,name,age,sex) values(1001,“alice”,22,“female”); insert into grade(id,grade) values(1001,“alice”,22,”“female”); (2)Select(等值查詢): Select*from student where age=18; (3)Range(與順序相關(guān)的查詢操作): Select name from student where age>18; (4)Sum(與加法相關(guān)的查詢操作): Select sum(grade) from grade; (5)Join(與表連接相關(guān)的查詢操作): Select student.name from student join grade on student.id=grade.id wheregrade.grade>60; (6)Update(更新數(shù)據(jù)): Updategrade set grade=grade+10; (7)Delete(刪除數(shù)據(jù)): Delete from student where age<18; 3.2.2 測(cè)試結(jié)果及分析 對(duì)SSDB中所使用的部分加密模型的時(shí)間花費(fèi)進(jìn)行測(cè)試,結(jié)果如表2所示。 表2 加密模型的時(shí)間開(kāi)銷 保序加密模型中使用的算法具有不可逆的特點(diǎn),因此無(wú)法計(jì)算解密時(shí)間,從實(shí)驗(yàn)結(jié)果可以看出,保序加密模型和加法同態(tài)模型支持浮點(diǎn)類型的數(shù)據(jù),加解密的效率高,提高了系統(tǒng)復(fù)雜查詢的性能。 CryptDB是首個(gè)利用部分同態(tài)加密算法并且支持在密文上直接執(zhí)行SQL語(yǔ)句的加密系統(tǒng)。SSDB在CryptDB的基礎(chǔ)上,改進(jìn)了加密模型和系統(tǒng)結(jié)構(gòu),因此有必要將兩者進(jìn)行對(duì)比。實(shí)驗(yàn)對(duì)8種SQL語(yǔ)句進(jìn)行了測(cè)試,圖3是SSDB與CryptDB的對(duì)比結(jié)果。 從圖3(a)可以看出,SSDB的增刪改查的執(zhí)行效率高于CryptDB,說(shuō)明了該系統(tǒng)的有效性。 在空間開(kāi)銷上,由于SSDB采用最多兩層結(jié)構(gòu)的加密模型,因此減少了密文的存儲(chǔ)空間,如圖3(b)所示。向數(shù)據(jù)庫(kù)中插入103、104和105條記錄,通過(guò)統(tǒng)計(jì)CryptDB和SSDB產(chǎn)生的數(shù)據(jù)庫(kù)文件大小來(lái)進(jìn)行對(duì)比分析。 測(cè)試結(jié)果顯示,SSDB與CryptDB相比,降低了空間開(kāi)銷,與明文相比,在小數(shù)據(jù)量的情況下,能夠保持較少的額外空間開(kāi)銷。 圖3 與CryptDB的對(duì)比實(shí)驗(yàn) 可搜索數(shù)據(jù)庫(kù)加密系統(tǒng)—SSDB,針對(duì)傳統(tǒng)數(shù)據(jù)庫(kù)加密方式無(wú)法兼顧數(shù)據(jù)安全性和密文上復(fù)雜查詢的缺陷,通過(guò)可動(dòng)態(tài)調(diào)整的兩層加密模型和重寫查詢語(yǔ)句,在密文上直接執(zhí)行復(fù)雜的SQL語(yǔ)句,包括創(chuàng)建表、插入操作、有條件的選擇查詢、更新操作和刪除操作,支持字符類型數(shù)據(jù)的等值匹配,整數(shù)類型和浮點(diǎn)類型的密文排序和同態(tài)運(yùn)算,在保護(hù)數(shù)據(jù)機(jī)密性的同時(shí),提高了查詢效率。通過(guò)與CryptDB的對(duì)比,表明該系統(tǒng)是有效、可行的。 [1] 孟小峰,慈 祥.大數(shù)據(jù)管理:概念,技術(shù)與挑戰(zhàn)[J].計(jì)算機(jī)研究與發(fā)展,2013,50(1):146-169. [2] 黃劉生,田苗苗,黃 河.大數(shù)據(jù)隱私保護(hù)密碼技術(shù)研究綜述[J].軟件學(xué)報(bào),2015,26(4):945-959. [3] Rivest R L,Adleman L,Dertouzos M L.On data banks and privacy homomorphisms[M]//Foundations of secure computation.New York:Academic Press,1978:169-179. [4] 劉明潔,王 安.全同態(tài)加密研究動(dòng)態(tài)及其應(yīng)用概述[J].計(jì)算機(jī)研究與發(fā)展,2014,51(12):2593-2603. [5] Popa R A,Redfield C M S,Zeldovich N,et al.CryptDB:protecting confidentiality with encrypted query processing[C]//ACM special interest group on operating systems.New York:ACM,2011:85-100. [6] Raluca A,Popa N,Zeldovich H,et al.CryptDB:a practical encrypted relational DBMS[R].Cambridge,USA:MIT Computer Science and Artificial Intelligence Laboratory,Tech,2011. [7] 沈志榮,薛 巍,舒繼武.可搜索加密機(jī)制研究與進(jìn)展[J].軟件學(xué)報(bào),2014,25(4):880-895. [8] Golle P, Staddon J, Waters B. Secure conjunctive keyword search over encrypted data[M]//Applied cryptography and network security.Berlin:Springer-Verlag,2004:31-45. [9] Wang C,Cao N,Li J,et al.Secure ranked keyword search over encrypted cloud data[C]//International conference on distributed computing systems.New York:IEEE,2010:253-262. [10] Li J,Wang Q,Wang C,et al.Fuzzy keyword search over encrypted data in cloud computing[C]//International conference on computer communications.New Jersey:IEEE,2010:441-445. [11] Boneh D,Crescenzo G D,Ostrovsky R,et al.Public key encryption with keyword search[C]//Advances in cryptology.Berlin:Springer-Verlag,2004:506-522. [12] Shi E,Bethencourt J,Chan T H H,et al.Multi-dimensional range query over encrypted data[C]//IEEE symposium on security and privacy.New York:IEEE,2007:350-364. [13] Cao N,Wang C,Li M,et al.Privacy-preserving multi-keyword ranked search over encrypted cloud data[C]//Proceedings of INFOCOM.Shanghai:IEEE,2011:829-837. [14] Dan B,Waters B.Conjunctive,subset,and range queries on encrypted data[C]//Theory of cryptography.Berlin:Springer-Verlag,2006:535-554. [15] 楊 寧,金 逸,劉 丹,等.云環(huán)境下可搜索加密技術(shù)安全機(jī)制及應(yīng)用陷阱[J].計(jì)算機(jī)應(yīng)用研究,2015,32(8):2254-2260. [16] 陳 萍,張 濤,趙 敏,等.面向托管的數(shù)據(jù)庫(kù)即服務(wù)系統(tǒng)及其隱私保護(hù)技術(shù)[J].計(jì)算機(jī)科學(xué),2013,40(11):140-142. [17] Ferretti L,Colajanni M,Marchetti M.Distributed,concurrent,and independent access to encrypted cloud databases[J].IEEE Transactions on Parallel and Distributed Systems,2014,25(2):437-446. [18] Liu Z,Chen X,Yang J,et al.New order preserving encryption model for outsourced databases in cloud environments[J].Journal of Network and Computer Applications,2015,59:198-207. [19] 周 雄,李陶深,黃汝維.云環(huán)境下基于隨機(jī)間隔的保序加密算法[J].太原理工大學(xué)學(xué)報(bào),2015(6):741-748. [20] Liu D.Homomorphic encryption for database querying:U.S.,14/410,548[P].2013-06-21. Design and Implementation of Searchable Database Encryption System WANG Hai-wei,YANG Geng,LIU Guo-xiu,ZENG Cheng-kun (College of Computer,Nanjing University of Posts and Telecommunications,Nanjing 210003,China) Data privacy protection has become an urgent problem in network applications.The alternative solution is to store the private data in the database after encryption.However,there are some defects in this approach,including the loss of some attributes of plaintext after encrypted data,such as the order of the data.The original operation on the plaintext cannot be implemented in the ciphertext,and all the ciphertext need to be decrypted.Therefore,the efficiency is less than the plaintext database in the face of large-scale database storage.In order to solve the problem that the SQL operation cannot be executed on the ciphertext directly while ensuring the security,it is urgent to design an efficient and secure encryption model.A searchable database encryption system including functions of SQL statement rewriting,plaintext data encryption and query processing is proposed.The system implements dynamic encryption in the process of statement execution,complex SQL statements to be executed on ciphertext,to avoid exposing plaintext by the untrusted database server which can protect the data privacy.The experimental results show that the system has better effectiveness and safety. SQL query;ciphertext query;searchable database encryption;data privacy-preserving 2016-08-17 2016-11-29 網(wǎng)絡(luò)出版時(shí)間:2017-06-05 國(guó)家自然科學(xué)基金資助項(xiàng)目(61272084,61572263) 汪海偉(1989-),男,碩士研究生,研究方向?yàn)樵朴?jì)算安全、大數(shù)據(jù)隱私保護(hù);楊 庚,博士,教授,CCF高級(jí)會(huì)員,研究方向?yàn)樵朴?jì)算與安全、分布與并行計(jì)算、大數(shù)據(jù)隱私保護(hù)。 http://kns.cnki.net/kcms/detail/61.1450.TP.20170605.1508.060.html TP302 A 1673-629X(2017)08-0130-05 10.3969/j.issn.1673-629X.2017.08.0272 可搜索數(shù)據(jù)庫(kù)加密系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)
3 系統(tǒng)實(shí)現(xiàn)及性能分析
4 結(jié)束語(yǔ)