數(shù)據(jù)庫加密技術(shù)從誕生至今,已經(jīng)歷多個階段,采用過多種實現(xiàn)方式,并一直處于持續(xù)發(fā)展之中。對于數(shù)據(jù)庫加密技術(shù),我們可以從應(yīng)用層、數(shù)據(jù)庫中間件、數(shù)據(jù)庫系統(tǒng)自身、數(shù)據(jù)庫系統(tǒng)所依賴的文件系統(tǒng)以及存儲硬件等方面考慮其具體實現(xiàn)。
圖1:數(shù)據(jù)庫加密層次
目前,不同場景下仍在使用的數(shù)據(jù)庫加密技術(shù)主要有:應(yīng)用系統(tǒng)加密、前置代理加密、后置代理加密、表空間加密、文件系統(tǒng)加密和磁盤加密。本文將針對以上“六大”數(shù)據(jù)庫加密技術(shù)的優(yōu)勢和劣勢,逐一進(jìn)行介紹:
一、應(yīng)用系統(tǒng)加密
應(yīng)用系統(tǒng)加密技術(shù)被認(rèn)為是最早的數(shù)據(jù)庫加密形式。但嚴(yán)格來講,應(yīng)用系統(tǒng)加密實際上是針對數(shù)據(jù)而非數(shù)據(jù)庫進(jìn)行的加密。
圖2:應(yīng)用系統(tǒng)加密技術(shù)原理
(一)優(yōu)勢
應(yīng)用系統(tǒng)加密的優(yōu)勢就在于其靈活性,這種靈活性主要體現(xiàn)在兩個方面。一方面,應(yīng)用系統(tǒng)加密可以與業(yè)務(wù)邏輯緊密結(jié)合,可以在應(yīng)用系統(tǒng)的開發(fā)過程中,靈活地對相關(guān)業(yè)務(wù)中的敏感數(shù)據(jù)進(jìn)行加密處理,且使用的加密函數(shù)、加密密鑰等均可以根據(jù)業(yè)務(wù)邏輯的需要靈活選擇。另一方面,應(yīng)用系統(tǒng)的開發(fā)商可以自行解決數(shù)據(jù)的加密和解密的所有問題,對數(shù)據(jù)庫系統(tǒng)本身或第三方的數(shù)據(jù)安全廠商基本上沒有依賴性。
(二)劣勢
相對于靈活性這種優(yōu)勢,應(yīng)用系統(tǒng)加密本身也具有明顯的劣勢:
1、應(yīng)用系統(tǒng)的開發(fā)無法透明化
任何與數(shù)據(jù)加密解密相關(guān)的處理邏輯和加密規(guī)則的變化都會導(dǎo)致應(yīng)用系統(tǒng)進(jìn)行代碼級的修改和在生產(chǎn)環(huán)境中重新部署。同時,任何使用加密數(shù)據(jù)的應(yīng)用系統(tǒng)都必須在源碼級處理數(shù)據(jù)的加密和解密操作,應(yīng)用系統(tǒng)的開發(fā)商在考慮業(yè)務(wù)邏輯的同時,還必須兼顧相關(guān)數(shù)據(jù)的加密和解密處理。
2、數(shù)據(jù)庫系統(tǒng)的自身優(yōu)勢嚴(yán)重受損
數(shù)據(jù)庫系統(tǒng)是專用于數(shù)據(jù)存儲、管理和使用的基礎(chǔ)軟件系統(tǒng),其很多設(shè)計原則都是為了更快地處理數(shù)據(jù)。應(yīng)用系統(tǒng)加密使得寫入到數(shù)據(jù)庫中的數(shù)據(jù)為密文數(shù)據(jù),這會導(dǎo)致數(shù)據(jù)庫系統(tǒng)自身具備的對數(shù)據(jù)進(jìn)行高效組織和檢索的能力因密文而嚴(yán)重受損。應(yīng)用系統(tǒng)必須自行處理數(shù)據(jù)庫索引、查詢分析、執(zhí)行優(yōu)化、事務(wù)處理、并發(fā)控制等工作,不但增加了應(yīng)用系統(tǒng)的復(fù)雜度和工作量,還幾乎損失了數(shù)據(jù)庫系統(tǒng)自身的全部性能優(yōu)勢,同時也無法通過存儲過程、自定義函數(shù)等數(shù)據(jù)庫執(zhí)行對象進(jìn)行數(shù)據(jù)庫內(nèi)的高效數(shù)據(jù)運算和處理,無法利用觸發(fā)器等機制保證數(shù)據(jù)庫內(nèi)數(shù)據(jù)間的復(fù)雜完整性,損失數(shù)據(jù)庫系統(tǒng)性能的同時,也對數(shù)據(jù)庫自身的完整性和健壯性造成負(fù)面影響。
3、巨大的研發(fā)工作量和極高的技術(shù)復(fù)雜度
基于以上兩點,應(yīng)用系統(tǒng)加密的實現(xiàn)需要應(yīng)用系統(tǒng)開發(fā)投入巨大的研發(fā)工作量,同時也需要很高的技術(shù)復(fù)雜度來部分保證數(shù)據(jù)庫系統(tǒng)功能和性能,使得原本應(yīng)該集中于應(yīng)用系統(tǒng)業(yè)務(wù)邏輯的資源被無形地浪費。
4、無法支持獨立于數(shù)據(jù)庫系統(tǒng)的增強權(quán)控
應(yīng)用系統(tǒng)加密無法實現(xiàn)對數(shù)據(jù)庫用戶的數(shù)據(jù)訪問權(quán)限的增強控制。對于存儲于數(shù)據(jù)庫中的密文數(shù)據(jù)的訪問,完全依賴于數(shù)據(jù)庫自身的訪問控制設(shè)置(包括自主訪問控制和強制訪問控制),數(shù)據(jù)庫內(nèi)置的管理員用戶對密文數(shù)據(jù)具有完全的權(quán)限,雖然無法獲取密文形式的敏感數(shù)據(jù)的具體內(nèi)容,但可以對這些數(shù)據(jù)進(jìn)行修改和刪除。
二、前置代理加密
前置代理加密技術(shù)是在應(yīng)用系統(tǒng)加密技術(shù)基礎(chǔ)上發(fā)展起來的,其表現(xiàn)形式通常是由專業(yè)的數(shù)據(jù)安全廠商推出的數(shù)據(jù)庫加密產(chǎn)品。
圖3:前置代理加密技術(shù)原理
(一)優(yōu)勢
相比較于應(yīng)用系統(tǒng)加密技術(shù),前置代理加密技術(shù)使得最終用戶從高度復(fù)雜且繁重的加密、解密處理邏輯的開發(fā)工作中解放出來,可以讓用戶有更多的時間和精力來處理業(yè)務(wù)邏輯。具備數(shù)據(jù)庫加密、解密等技術(shù)優(yōu)勢的第三方獨立廠商能夠以產(chǎn)品的形式提供專用的前置代理加密網(wǎng)關(guān)系統(tǒng)。因此,使用前置代理加密技術(shù)時,應(yīng)用系統(tǒng)可以獨立于加密和解密功能進(jìn)行演進(jìn)。
(二)劣勢
在前置代理加密技術(shù)中,數(shù)據(jù)在寫入數(shù)據(jù)庫時也已經(jīng)是密文,因此,和應(yīng)用系統(tǒng)加密技術(shù)相同,前置代理加密技術(shù)也有開發(fā)過程無法透明化、數(shù)據(jù)庫自身特性優(yōu)勢喪失的顯著缺點,同時,前置代理加密網(wǎng)關(guān)封裝了加密、解密的處理邏輯和管理規(guī)則,代替數(shù)據(jù)庫服務(wù)進(jìn)行大量復(fù)雜的數(shù)據(jù)管理和處理操作,因此其本身的實現(xiàn)也有很高的技術(shù)復(fù)雜度且需要投入巨大的工作量,即便是對于具備數(shù)據(jù)庫加密、解密等技術(shù)優(yōu)勢的第三方獨立廠商,這些問題也是一個困難的挑戰(zhàn)。
三、后置代理加密
為了避免數(shù)據(jù)加密給數(shù)據(jù)訪問和處理帶來性能上的嚴(yán)重?fù)p失,部分?jǐn)?shù)據(jù)庫廠商在數(shù)據(jù)庫引擎層提供了一些擴(kuò)展接口和擴(kuò)展機制。通過這些擴(kuò)展的接口和機制,數(shù)據(jù)庫系統(tǒng)用戶可以通過外部接口調(diào)用的方式實現(xiàn)對數(shù)據(jù)的加解密處理,同時也能夠在一定程度上降低對數(shù)據(jù)庫系統(tǒng)性能的影響。
圖4:后置代理加密技術(shù)原理
(一)優(yōu)勢
相比于之前的兩種加密技術(shù),后置代理加密技術(shù)有明顯的優(yōu)勢,其中最突出的是應(yīng)用完全透明性和提供獨立權(quán)控體系:
1、應(yīng)用透明
根據(jù)上面的技術(shù)原理,后置代理加密是在數(shù)據(jù)庫層面對敏感數(shù)據(jù)進(jìn)行處理,應(yīng)用系統(tǒng)對數(shù)據(jù)本身及處理過程完全無感知。因此,啟用數(shù)據(jù)庫加密對應(yīng)用系統(tǒng)不會產(chǎn)生影響,應(yīng)用系統(tǒng)不用做任何改造即可獲得數(shù)據(jù)加密存儲的收益。應(yīng)用系統(tǒng)包括但不限于傳統(tǒng)SQL、數(shù)據(jù)庫內(nèi)的存儲過程和自定義函數(shù)、執(zhí)行數(shù)據(jù)庫操作與管理的腳本、數(shù)據(jù)庫管理工具和用戶的業(yè)務(wù)系統(tǒng)。
2、獨立權(quán)控體系
使用后置代理加密技術(shù),可以在外置的安全服務(wù)中提供獨立于數(shù)據(jù)庫自有權(quán)控體系之外的權(quán)限控制體系,可以有效防止特權(quán)用戶(如DBA)對敏感數(shù)據(jù)的越權(quán)訪問。
3、細(xì)粒度加密
后置代理加密技術(shù)可以實現(xiàn)精確到列級的細(xì)粒度加密,這一優(yōu)勢是由后置代理加密技術(shù)的具體實現(xiàn)決定的。
(二)劣勢
1、開放性較差
后置代理加密技術(shù)對數(shù)據(jù)庫開放性有較強的依賴,需要數(shù)據(jù)庫產(chǎn)品具備外部接口調(diào)用能力,但遺憾的是,并非所有商業(yè)數(shù)據(jù)庫都具備這種能力。
2、部分場景下性能表現(xiàn)不夠好
后置代理加密技術(shù)是通過多級視圖及創(chuàng)建于其上的觸發(fā)器進(jìn)行外部接口調(diào)用來實現(xiàn)加密解密和獨立權(quán)控能力的,觸發(fā)器的運行機制要求對加密表中每一條數(shù)據(jù)中的每個加密列的讀或?qū)懚紩M(jìn)行一次外部接口調(diào)用,因此,當(dāng)查詢中涉及的加密列較多時,或查詢涉及的加密列不多但查詢結(jié)果集中返回大量數(shù)據(jù)時,后置代理加密技術(shù)對數(shù)據(jù)庫的整體性能會有一定的影響,甚至在極端情況下無法滿足業(yè)務(wù)要求。
四、透明數(shù)據(jù)加密
后置代理加密過于依賴數(shù)據(jù)庫自身所具備的擴(kuò)展機制,且數(shù)據(jù)在數(shù)據(jù)庫共享內(nèi)存中也是密文,導(dǎo)致在部分場景下的數(shù)據(jù)庫性能表現(xiàn)不佳。因此,基于后置代理加密技術(shù)又發(fā)展出了透明數(shù)據(jù)加密技術(shù),目的是在保持后置代理加密優(yōu)勢的同時,降低對數(shù)據(jù)庫自身擴(kuò)展機制的依賴性,從而讓數(shù)據(jù)庫系統(tǒng)性能保持在相對合理的水平之上。
圖5:透明數(shù)據(jù)加密技術(shù)原理
(一)優(yōu)勢
和后置代理加密技術(shù)一樣,透明數(shù)據(jù)加密技術(shù)具備應(yīng)用完全透明性,此外,插件形式的透明數(shù)據(jù)加密技術(shù)也可以提供獨立權(quán)控體系,同時可以不依賴于數(shù)據(jù)庫自身的一些特殊功能,具有較強的開放性:
1、應(yīng)用透明
透明數(shù)據(jù)加密也是在數(shù)據(jù)庫層面對敏感數(shù)據(jù)進(jìn)行處理,應(yīng)用系統(tǒng)對數(shù)據(jù)本身及處理過程完全無感知。因此,透明數(shù)據(jù)加密技術(shù)在應(yīng)用時也不會對現(xiàn)有的應(yīng)用系統(tǒng)產(chǎn)生影響,應(yīng)用系統(tǒng)不用做任何改造即可獲得數(shù)據(jù)加密存儲的收益。
2、獨立權(quán)控體系
使用插件形式的透明數(shù)據(jù)加密技術(shù),同樣可以在外置的安全服務(wù)中提供獨立于數(shù)據(jù)庫自有權(quán)控體系之外的權(quán)限控制體系,可以有效防止特權(quán)用戶(如DBA)對敏感數(shù)據(jù)的無限制訪問,進(jìn)一步保證敏感數(shù)據(jù)不會被不正當(dāng)?shù)卦L問和泄露。
3、更強的開放性
相對于后置代理加密技術(shù)依賴于數(shù)據(jù)庫的外部索引接口、外部接口調(diào)用等特殊功能,透明數(shù)據(jù)加密技術(shù)對數(shù)據(jù)庫自身的依賴性小,因此可以在更多類型的數(shù)據(jù)庫上使用透明數(shù)據(jù)加密技術(shù)。
4、性能優(yōu)勢
透明數(shù)據(jù)加密加密技術(shù)本身只是對數(shù)據(jù)庫引擎的存儲管理層進(jìn)行了功能增強,并不影響數(shù)據(jù)庫引擎的語句解析和優(yōu)化等處理過程,數(shù)據(jù)庫自身在數(shù)據(jù)存儲、管理和使用等方面的所有優(yōu)勢都依然可以保留,因此,透明數(shù)據(jù)加密技術(shù)相對于前面幾種數(shù)據(jù)庫加密技術(shù)具備性能上明顯優(yōu)勢。
(二)劣勢
透明數(shù)據(jù)加密是當(dāng)前主流商業(yè)數(shù)據(jù)庫產(chǎn)品所有具有的數(shù)據(jù)安全增強特性,但由數(shù)據(jù)庫廠商提供的透明數(shù)據(jù)加密功能完全依賴于他們自己的設(shè)計,尤其是在密鑰管理的開放性方面,通常不能集成使用第三方密鑰系統(tǒng),而且,這些數(shù)據(jù)庫內(nèi)置的透明數(shù)據(jù)加密無法屏蔽數(shù)據(jù)庫超級用戶對加密數(shù)據(jù)的無限制訪問。
插件形式的透明數(shù)據(jù)加密可以解決密鑰系統(tǒng)開放性和實現(xiàn)獨立于數(shù)據(jù)庫自身權(quán)控體系的增強權(quán)限控制,但由于使用插件技術(shù),對于數(shù)據(jù)庫的版本有較強的依賴,即使專業(yè)的數(shù)據(jù)安全廠商,也僅能對有限的幾種類型的數(shù)據(jù)庫實現(xiàn)透明數(shù)據(jù)加密插件,在數(shù)據(jù)庫類型適用性上有一定的限制。
五、文件系統(tǒng)加密
在數(shù)據(jù)庫加密技術(shù)中,除了從前端應(yīng)用及數(shù)據(jù)庫自身角度實現(xiàn)數(shù)據(jù)庫加密外,基于數(shù)據(jù)庫底層依賴的文件系統(tǒng)或存儲硬件,也可以實現(xiàn)數(shù)據(jù)庫加密。
圖6:文件系統(tǒng)加密技術(shù)原理
(一)優(yōu)勢
文件系統(tǒng)加密技術(shù)的主要優(yōu)勢在于其應(yīng)用完全透明性和數(shù)據(jù)庫類型的開放性:
1、應(yīng)用透明
在數(shù)據(jù)庫加密技術(shù)體系中,文件系統(tǒng)加密技術(shù)只關(guān)心數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)文件的加密存儲,對應(yīng)用系統(tǒng)具備完全的透明性,使用文件系統(tǒng)加密技術(shù)對數(shù)據(jù)庫進(jìn)行加密時,完全不需要應(yīng)用系統(tǒng)做任何修改。
2、強大的開放性
文件系統(tǒng)加密技術(shù)是操作系統(tǒng)內(nèi)核層面的技術(shù),與數(shù)據(jù)庫類型無關(guān),任何一種數(shù)據(jù)庫系統(tǒng),只要其存儲數(shù)據(jù)的方式是文件系統(tǒng)而非裸設(shè)備,則文件系統(tǒng)加密技術(shù)都可以用于對數(shù)據(jù)庫進(jìn)行存儲加密。因此,文件系統(tǒng)加密技術(shù)對數(shù)據(jù)庫系統(tǒng)具備非常強大的開放性。
3、相對更好的性能
在加密數(shù)據(jù)的處理性能方面,文件系統(tǒng)加密技術(shù)表現(xiàn)得相對較好。一方面,因為文件系統(tǒng)加密技術(shù)的數(shù)據(jù)庫無關(guān)性,該技術(shù)不會對數(shù)據(jù)庫引擎存儲和處理數(shù)據(jù)的邏輯有任何影響,數(shù)據(jù)庫系統(tǒng)的功能特性和性能優(yōu)勢可以充分發(fā)。另一方面,文件系統(tǒng)加密技術(shù)是在操作系統(tǒng)的文件管理子系統(tǒng)上部署加密插件來實現(xiàn)數(shù)據(jù)加密,增加了數(shù)據(jù)庫系統(tǒng)與磁盤存儲進(jìn)行交互時的工作量,因此會對數(shù)據(jù)庫系統(tǒng)整體性能造成部分損失,損失的程度與文件系統(tǒng)加密技術(shù)本身的實現(xiàn)及磁盤系統(tǒng)自身的I/O能力有關(guān)。
(二)劣勢
1、無法對數(shù)據(jù)庫內(nèi)部用戶進(jìn)行獨立權(quán)控
由于文件系統(tǒng)加密技術(shù)的數(shù)據(jù)庫無關(guān)性,因此,該加密技術(shù)不具備對于數(shù)據(jù)庫用戶的增強的權(quán)限控制能力,無法防止數(shù)據(jù)庫超級用戶對加密數(shù)據(jù)的訪問,這是文件系統(tǒng)加密技術(shù)在數(shù)據(jù)庫加密領(lǐng)域中相對于前面四種加密技術(shù)的最大劣勢。
2、技術(shù)復(fù)雜度
由于是對操作系統(tǒng)內(nèi)核進(jìn)行功能增強,因此,文件系統(tǒng)加密技術(shù)在實現(xiàn)上有一定的技術(shù)復(fù)雜度,同時,文件系統(tǒng)加密技術(shù)的具體實現(xiàn)可能會對操作系統(tǒng)的穩(wěn)定性造成一定的負(fù)面影響。
六、磁盤加密
(一)優(yōu)勢
磁盤加密技術(shù)應(yīng)用在數(shù)據(jù)庫加密領(lǐng)域中,除具備應(yīng)用完全透明和數(shù)據(jù)庫類型無關(guān)的優(yōu)勢外,其最大的優(yōu)勢就是具有非常良好的加解密性能。磁盤加密技術(shù)通過存儲設(shè)備自身的物理結(jié)構(gòu)實現(xiàn),能夠最大化地發(fā)揮存儲設(shè)備本身的硬件能力,能夠?qū)ι蠈訑?shù)據(jù)庫系統(tǒng)提供無損的性能服務(wù)。
(二)劣勢
與文件系統(tǒng)加密技術(shù)相同,由于數(shù)據(jù)庫無關(guān)性,磁盤加密技術(shù)也不具備對于數(shù)據(jù)庫用戶的增強的權(quán)限控制能力。此外,由于是基于硬件系統(tǒng)的加密技術(shù),國內(nèi)雖然對其有所研究,但受制于磁盤等存儲設(shè)備的生產(chǎn)制造等原因,磁盤加密技術(shù)在國內(nèi)仍然停留在技術(shù)研究層面,完全沒有產(chǎn)業(yè)化和實用化,在國內(nèi)的數(shù)據(jù)庫加密領(lǐng)域甚至是存儲加密領(lǐng)域,都基本上沒有應(yīng)用。