徐 霄
(中博信息技術(shù)研究院有限公司 江蘇 南京 210012)
計算機軟件系統(tǒng)中的重要組成部分是數(shù)據(jù)庫,隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,很多網(wǎng)絡(luò)服務(wù)都需要云存儲的參與,云存儲的基礎(chǔ)設(shè)施是數(shù)據(jù)庫。數(shù)據(jù)庫中保存的很多敏感信息,例如用戶密碼、用戶家庭信息、用戶重要文件等,如果泄露出去會給用戶造成重大損失以及產(chǎn)生不良影響,并且在對電信、醫(yī)療、交通等行業(yè)的網(wǎng)絡(luò)化建設(shè)中,許多軟件程序不能及時有效防御硬件設(shè)施,加上系統(tǒng)管理人員網(wǎng)絡(luò)維護不及時,造成很多國內(nèi)用戶的隱私信息被泄露。除此之外,很多黑客攻擊了數(shù)據(jù)庫,用戶存儲在數(shù)據(jù)庫上的關(guān)鍵數(shù)據(jù)被黑客非法泄露給第三方,給網(wǎng)絡(luò)安全造成了威脅同時也給國內(nèi)廣大用戶產(chǎn)生了經(jīng)濟損失。綜上所述,為了解決以上的網(wǎng)絡(luò)安全問題,主要的防御措施是對數(shù)據(jù)庫中的關(guān)鍵數(shù)據(jù)進行加密,防止用戶數(shù)據(jù)泄露,通過加密這種應(yīng)對手段,將機密的數(shù)據(jù)轉(zhuǎn)換為密文再在數(shù)據(jù)庫中進行保存,本文針對密文查詢與透明存取的數(shù)據(jù)庫系統(tǒng)進行安全研究。
密文數(shù)據(jù)庫的設(shè)計模式主要包含三種,第一種是通過DBMS引擎實現(xiàn)密文數(shù)據(jù)庫,在這種設(shè)計模式中,需要數(shù)據(jù)庫管理員管理密鑰,在開啟數(shù)據(jù)庫引擎時,數(shù)據(jù)庫管理員通過使用密鑰讀取保存在數(shù)據(jù)庫中的機密文件數(shù)據(jù),對用戶安全透明,用戶可以直接查詢保存在數(shù)據(jù)庫中的文件也可進行修改[1]。第二種設(shè)計模式是通過代理實現(xiàn)密文數(shù)據(jù)庫,這種設(shè)計模式主要是在DBMS和用戶之間設(shè)置代理中間文件,使用戶不用在連接DBMS,直接連接代理,用戶想代理發(fā)送查詢數(shù)據(jù)庫中加密文件的請求,代理接收后對用戶保存在數(shù)據(jù)庫中的加密文件進行查詢并根據(jù)用戶要求修改,最后對數(shù)據(jù)庫中文件進行加密,這種設(shè)計模式同樣對用戶安全透明,防止數(shù)據(jù)庫管理員使用密鑰非法查看用戶保存在數(shù)據(jù)庫中的加密文件。第三種設(shè)計模式是通過客戶端實現(xiàn)密文數(shù)據(jù)庫,這種設(shè)計模式不需要代理,是將加密文件設(shè)置在客戶端上,由客戶端將用戶保存在數(shù)據(jù)庫中的加密文件進行加密,加密完成后發(fā)送到數(shù)據(jù)庫,這種設(shè)計模式主要適用于文件查詢,操作較簡單。
密文數(shù)據(jù)庫常用的密文檢索技術(shù)包括:密文上的范圍查詢、數(shù)學(xué)運算、關(guān)鍵詞搜索。密文上的范圍查詢主要有保序加密算法和保序索引方法,保序加密算法在使用效率以及安全性上都存在一定的問題,所以在實際使用上,較為實用的密文范圍查詢是保序索引方法,這種密文范圍查詢方案不需要加密算法帶來保序性質(zhì),可以使用任何中加密算法對數(shù)據(jù)庫中的加密文件進行加密,通過對數(shù)據(jù)結(jié)構(gòu)建立索引來進行范圍查詢。密文上的數(shù)學(xué)運算主要使用同態(tài)加密技術(shù),這種數(shù)據(jù)庫檢索技術(shù)使密文上的加法運算成為可能,能夠進行任意次加法運算和乘法同態(tài)運算,并且在使用上效率較高,但是這種數(shù)據(jù)庫檢索技術(shù)存在密鑰存儲空間巨大的缺點,使算法的使用效率降低[2]。密文上的關(guān)鍵詞搜索主要采用的是可搜索加密技術(shù),這種加密技術(shù)要求對稱密鑰,能夠搜索密文中的單個關(guān)鍵詞,優(yōu)點是服務(wù)器中得不到關(guān)于關(guān)鍵詞的任何信息,缺點是算法使用效率低且容易遭到黑客攻擊,檢索關(guān)鍵詞的結(jié)果無法保證準(zhǔn)確。
基于SGX可信代理結(jié)構(gòu)的密文數(shù)據(jù)庫設(shè)計架構(gòu)采用了與CRYDB相似的代理架構(gòu),即在用戶端與數(shù)據(jù)庫客戶端之間建立代理服務(wù)器,代理服務(wù)器主要將用戶存儲在數(shù)據(jù)庫中的數(shù)據(jù)進行加密成為加密文件,以及將數(shù)據(jù)庫中的加密數(shù)據(jù)查詢出來進行解密,將解密后的數(shù)據(jù)返回給用戶,為了防止代理服務(wù)器遭受到統(tǒng)計攻擊而導(dǎo)致密鑰泄露,需要將服務(wù)器中的運行系統(tǒng)設(shè)置在多個不同的安全服務(wù)器中并行運行,安全服務(wù)器之間設(shè)置安全信道。這樣設(shè)計對客戶端更加透明,用代理服務(wù)器替換客戶端實現(xiàn)對存儲在數(shù)據(jù)庫中的文件加解密,不用對客戶端進行改進以及利用客戶端對數(shù)據(jù)庫中的加密數(shù)據(jù)加解密。除此之外,采用這種方案加強了軟件系統(tǒng)的安全性,避免了代理數(shù)據(jù)端數(shù)據(jù)的泄露,攻擊者不能通過修改軟件程序來獲得用戶存儲在數(shù)據(jù)庫中的加密數(shù)據(jù)[3]?;赟GX可信代理架構(gòu)的密文數(shù)據(jù)庫加密框架如下圖1所示:
圖1 基于SGX可信代理架構(gòu)的密文數(shù)據(jù)庫加密框架
基于SGX可信代理架構(gòu)的密文數(shù)據(jù)庫加密框架運行流程為:首先系統(tǒng)進行初始化,開啟系統(tǒng)后,使用密鑰解密存儲在數(shù)據(jù)庫中的密鑰存儲文件,讀取所使用的密鑰序列,當(dāng)密鑰序列被修改或者刪除后,密鑰將本地的存儲文件進行加密,并保存到密鑰存儲安全區(qū)內(nèi)。然后在用戶客戶端進行認證代理,用戶客戶端與代理服務(wù)器建立連接,通過遠程認證確保代理的可信性,緊接這需要代理重新寫SQL,并查詢存儲在數(shù)據(jù)庫中的用戶數(shù)據(jù)再進行加密成為加密數(shù)據(jù)。最后代理服務(wù)器接收用戶的改寫數(shù)據(jù)請求,發(fā)送到DBMS執(zhí)行,查詢結(jié)束后返回對應(yīng)的密文數(shù)據(jù)結(jié)果,使用密鑰對存儲在數(shù)據(jù)庫中的數(shù)據(jù)進行解密并篩選解密結(jié)果,最后將明文結(jié)果返回到用戶端。
基于密文查詢與透明存取的數(shù)據(jù)庫系統(tǒng)模型包括用戶客戶端、查詢代理、查詢映射表。用戶客戶端保存了數(shù)據(jù)庫中加密數(shù)據(jù)的關(guān)鍵信息,通過SGX建立與代理服務(wù)器的信任關(guān)系,將數(shù)據(jù)通過密鑰進行加密并分享給代理機構(gòu),在安全區(qū)建立安全的通信信道。在對加密數(shù)據(jù)進行查詢時,代理查詢接收加密數(shù)據(jù)發(fā)送的查詢請求,代理查詢使用數(shù)據(jù)庫密鑰分享的加密數(shù)據(jù)進行解密,查詢代理在查詢安全區(qū)維護查詢映射表,通過對比密文上的查詢條件進行解密匹配,在用戶客戶端增加新的映射,并返回給用戶客戶端。查詢映射表負責(zé)將查詢到的數(shù)據(jù)映射成一個特定的標(biāo)簽,附加本身的具體信息。
數(shù)據(jù)庫是計算機系統(tǒng)的關(guān)鍵設(shè)施,數(shù)據(jù)庫中存儲的用戶信息如果被非法泄露,會給用戶造成不同程度的經(jīng)濟損失以及不良影響,數(shù)據(jù)庫目前面臨的主要威脅來自外部黑客的入侵以及系統(tǒng)內(nèi)部管理人員的惡意泄露。本文設(shè)計的基于密文查詢與透明存取的數(shù)據(jù)庫系統(tǒng)通過對數(shù)據(jù)庫中存儲的用戶數(shù)據(jù)進行加密,以防數(shù)據(jù)庫遭受到外部攻擊后出現(xiàn)數(shù)據(jù)泄露,對目前網(wǎng)絡(luò)安全出現(xiàn)的問題,例如客戶端加密文件修改困難、密鑰使用效率受到客戶端影響、代理服務(wù)器的安全未得到解決等問題,為了描述密文查詢與透明存取的數(shù)據(jù)庫動態(tài)生成密文索引,需要對可能使用到的符號進行形式化定義,將T. A的值域(Di)映射到分區(qū)(Pi,……,Pk)使符號能夠覆蓋到整個安全區(qū)域,兩個安全區(qū)域不能重疊,使用不同的分區(qū)函數(shù)定義不同的目標(biāo)數(shù)據(jù)庫中的明文數(shù)據(jù)。
本文通過SGX隔離機制、遠程認證等實現(xiàn)對存儲在數(shù)據(jù)庫中的加密數(shù)據(jù)安全加密與解密,確保密鑰在使用保存過程中不會被外界竊取,用戶在發(fā)送查詢數(shù)據(jù)庫中數(shù)據(jù)請求時,代理服務(wù)器能夠準(zhǔn)確安全接收請求并執(zhí)行命令,網(wǎng)絡(luò)安全得到了進一步的維護。