淺談數(shù)據(jù)庫透明加密(TDE)
1. 數(shù)據(jù)加密技術(shù)概述
數(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)。
圖片
? 磁盤加密技術(shù)
這種加密方式,是通過磁盤加密系統(tǒng)或存儲加密網(wǎng)關(guān)進行加密。其對數(shù)據(jù)庫文件所在的磁盤扇區(qū)進行加密,并在數(shù)據(jù)庫訪問這些扇區(qū)時進行解密。這種加密方式對數(shù)據(jù)庫自身是透明的,數(shù)據(jù)庫管理系統(tǒng)不會感知到加密或解密過程的存在。這種加密方式在存儲層工作,只能防止在磁盤丟失時敏感數(shù)據(jù)的泄漏。所有具有訪問磁盤權(quán)限的用戶都可以訪問到真實的數(shù)據(jù)庫文件,因此對于控制了操作系統(tǒng)的攻擊者來說,這種加密方式并沒有提供防護能力。
? 文件系統(tǒng)加密技術(shù)
在操作系統(tǒng)文件驅(qū)動層,將數(shù)據(jù)庫的存儲文件經(jīng)過加密后存儲到磁盤上,并在數(shù)據(jù)庫訪問這些文件時進行解密。這種加密方式對數(shù)據(jù)庫自身來說也是透明的,數(shù)據(jù)庫管理系統(tǒng)不會感知到加密或解密過程的存在。這種加密方式可以防止因磁盤丟失和文件被復(fù)制而導(dǎo)致敏感數(shù)據(jù)泄漏。然而,對于控制了數(shù)據(jù)庫系統(tǒng)的攻擊者來說,文件仍然是開放的,因此沒有真正的防護能力。
? 透明數(shù)據(jù)庫加密技術(shù)
有些數(shù)據(jù)庫自身提供了加密機制,在數(shù)據(jù)庫內(nèi)核實現(xiàn)了存儲的加密。這種加密方式可以有效防止因磁盤丟失和文件被復(fù)制而導(dǎo)致敏感數(shù)據(jù)泄漏。然而,對于控制了數(shù)據(jù)庫系統(tǒng)的攻擊者來說,這種加密方式并不可靠,沒有提供防護能力。此外,其密鑰管理通常不會對數(shù)據(jù)庫用戶開放,因此安全性得不到保證,也無法得到國內(nèi)相關(guān)評測機構(gòu)的認(rèn)可。
? 后置代理加密技術(shù)
這種技術(shù)是通過數(shù)據(jù)庫的內(nèi)置能力,如通過使用視圖、觸發(fā)器和擴展索引等機制,可以實現(xiàn)透明加密。由于引入了獨立的第三方程序,通過控制加密和解密的權(quán)限,增加了額外的訪問控制。對于數(shù)據(jù)庫內(nèi)的不同用戶,也可以控制其對加密數(shù)據(jù)的訪問。然而,這種加密方式無法越過應(yīng)用系統(tǒng),實現(xiàn)應(yīng)用系統(tǒng)用戶對敏感數(shù)據(jù)的訪問控制。此外,這種加密方式依賴于數(shù)據(jù)庫系統(tǒng)的擴展索引機制,并不能在所有數(shù)據(jù)庫上實現(xiàn)。
? 前置代理加密技術(shù)
這一技術(shù)是通過對數(shù)據(jù)庫前端部署數(shù)據(jù)庫加密網(wǎng)關(guān),或者通過擴展數(shù)據(jù)庫訪問驅(qū)動(如JDBC驅(qū)動)實現(xiàn)數(shù)據(jù)庫加密。這種方式理論上能夠支持所有的數(shù)據(jù)庫,是一種通用的解決方案,且安全性更高。但需要這一層能實現(xiàn)對所有訪問語句和訪問機制的支持,例如對存儲過程和觸發(fā)器等都需要提供支持。
? 應(yīng)用系統(tǒng)加密技術(shù)
這一方式是通過應(yīng)用系統(tǒng)自身完成數(shù)據(jù)加密或者通過應(yīng)用前置一個加密網(wǎng)關(guān)來實現(xiàn)。針對前者需要較大的研發(fā)投入實現(xiàn)所需加密能力,后者則通過將數(shù)據(jù)加密的位置提前,在數(shù)據(jù)進入應(yīng)用系統(tǒng)之前進行加密。后者這種加密方式可以控制應(yīng)用系統(tǒng)的用戶對數(shù)據(jù)的訪問權(quán)限,并且真實數(shù)據(jù)對所有數(shù)據(jù)庫用戶都是不可見的,是最安全的一種加密方式。事實上,無論是這兩種方式的哪一種,都會由于應(yīng)用系統(tǒng)的復(fù)雜性,實現(xiàn)的難度也較大。
總之,數(shù)據(jù)被加密的位置離用戶越近,安全性越高,同時實現(xiàn)的難度也越大。以上所述的幾種加密方式,數(shù)據(jù)加密的位置離用戶是逐步靠近的,防護能力也是逐步提升的。
2. 數(shù)據(jù)庫透明加密(TDE)
1).何為TDE
透明數(shù)據(jù)加密(TDE)是一種數(shù)據(jù)庫端存儲加密技術(shù),全稱為Transparent Data Encryption。這種技術(shù)對應(yīng)用系統(tǒng)完全透明,通常由數(shù)據(jù)庫廠商在數(shù)據(jù)庫引擎中實現(xiàn)。在數(shù)據(jù)庫引擎的存儲管理層中增加一個數(shù)據(jù)處理過程,當(dāng)數(shù)據(jù)由數(shù)據(jù)庫共享內(nèi)存寫入到數(shù)據(jù)文件時對其進行加密,而當(dāng)數(shù)據(jù)由數(shù)據(jù)文件讀取到數(shù)據(jù)庫共享內(nèi)存時則對其進行解密。因此,數(shù)據(jù)在數(shù)據(jù)庫共享內(nèi)存中以明文形態(tài)存在,而在數(shù)據(jù)文件中則以密文形態(tài)存在。由于該技術(shù)的透明性,任何合法且有權(quán)限的數(shù)據(jù)庫用戶都可以訪問和處理加密表中的數(shù)據(jù)。
圖片
2).TDE 優(yōu)點
- 可以確保對敏感數(shù)據(jù)進行加密,并簡化加密活動,不依賴數(shù)據(jù)庫系統(tǒng)之外的能力。
- 不同于后置代理方式,無需補充表、觸發(fā)器或視圖來解密授權(quán)用戶或應(yīng)用程序的數(shù)據(jù)。對于數(shù)據(jù)庫用戶和應(yīng)用程序,表中的數(shù)據(jù)是透明解密的。
- 對于訪問此數(shù)據(jù)的數(shù)據(jù)庫用戶和程序,TDE可用于為處理敏感數(shù)據(jù)的應(yīng)用程序提供穩(wěn)健的數(shù)據(jù)加密,而對應(yīng)用程序的更改最少或沒有更改。
- 不影響數(shù)據(jù)庫自身能力,通常管理動作,如利用在線表重新定義,是可以在生產(chǎn)系統(tǒng)上加密數(shù)據(jù)而不停機。
- 性能損耗極小,通常可以忽略。
3).TDE 缺點
- 不能完全阻止SQL注入攻擊。SQL注入攻擊者如果使用應(yīng)用系統(tǒng)訪問數(shù)據(jù)庫的授權(quán)用戶對數(shù)據(jù)庫發(fā)起攻擊,則能夠獲得加密系統(tǒng)對該用戶的相應(yīng)授權(quán),能夠訪問到該授權(quán)項下的敏感數(shù)據(jù)。
- 不能完全阻止攻擊者偽造身份對數(shù)據(jù)庫的攻擊。當(dāng)攻擊者通過社交工程,完全竊取并偽造了具有對敏感數(shù)據(jù)合法訪問權(quán)限的用戶的帳號、密碼、以及應(yīng)用系統(tǒng)、IP信息時,數(shù)據(jù)庫加密將不能對其訪問進行限制。
- 不能完全阻止授權(quán)應(yīng)用系統(tǒng)后門程序?qū)?shù)據(jù)庫的違規(guī)訪問。當(dāng)應(yīng)用系統(tǒng)被授權(quán)訪問敏感數(shù)據(jù),但是被開發(fā)者留有后門時,數(shù)據(jù)庫加密系統(tǒng)并不能識別這種后門并加以阻止。
- 對合規(guī)性的滿足上有一定缺陷,原因是其密鑰管理方式共存于數(shù)據(jù)庫中(部分可依賴外部),難以滿足嚴(yán)格監(jiān)管要求。
- 加密粒度較粗,無法實現(xiàn)精細(xì)粒度控制,通常只能對庫、文件級別,個別可做到表級加密。無法實現(xiàn)針對列或行級的加密能力
4).主流產(chǎn)品TDE能力
目前主流的數(shù)據(jù)庫產(chǎn)品大多已支持?jǐn)?shù)據(jù)庫透明加密,但各產(chǎn)品的加密能力差異較大。這里收集了部分產(chǎn)品的加密能力,供參考。
圖片