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