■姚華
常見數據庫加密技術對比
■姚華
從技術手段上來看,現(xiàn)今數據庫加密技術主要有三大類,分別是前置代理及加密網關方式、應用層加密方式以及后置代理方式。這三類技術各自的特點如何,彼此之間孰優(yōu)孰劣,下文詳盡介紹。
該技術思路是在數據庫之前增加一道安全代理服務,對數據庫訪問的用戶必須經過該安全代理服務,在此服務中實現(xiàn)如數據加解密、存取控制等安全策略;然后安全代理服務通過數據庫的訪問接口實現(xiàn)數據在庫中的最終存儲。
這種技術也會存在一些問題和限制:
1)由于在安全增強代理中需要存儲加密數據,因此要解決與數據庫存儲數據的一致性問題,這基本不可實現(xiàn)。
2)數據的聯(lián)合檢索問題:由于在數據庫內外都存在數據,這些數據的聯(lián)合檢索將變得很困難;SQL語法的完全兼容也非常困難。
3)開發(fā)無法透明問題:數據庫協(xié)議雖然存在標準,但事實上每個不同的數據庫版本都會進行若干變更、擴展和增強,使用了這些特性的用戶必須進行改造。同時在安全代理中對數據庫通訊協(xié)議的模擬非常困難。
4)數據庫的優(yōu)化處理、事務處理、并發(fā)處理等特性都無法使用:查詢分析、優(yōu)化處理、事務處理、并發(fā)處理工作都需要在安全增強器中完成,無法使用數據庫在并發(fā)處理和查詢優(yōu)化上的優(yōu)勢,系統(tǒng)的性能和穩(wěn)定性更多地依賴于安全代理;
5)對于對存儲過程、觸發(fā)器、函數等存儲程序的實現(xiàn)支持也非常困難。
另外該技術需要在安全代理服務層提供非常復雜的數據庫管理功能,如:SQL命令解析,通訊服務,加密數據索引存儲管理、事務管理等等,因此存在巨大的開發(fā)工作量及很高的技術復雜度,此外還有類似于存儲過程、觸發(fā)器等無法解決的技術問題。
應用層加密的主要技術原理在于,應用系統(tǒng)通過加密API(JDBC,ODBC,C API等)對敏感數據進行加密,將加密數據存儲到數據庫的底層文件中;在進行數據檢索時,將密文數據取回客戶端,再進行解密。另外應用系統(tǒng)將自行管理密鑰體系。
這種方案的缺點是,應用程序必須對數據進行加解密,增加編程復雜度,但無法對現(xiàn)有的系統(tǒng)做到透明,應用程序必須進行大規(guī)模的改造。從效率角度來看,這種技術方案無法利用數據庫的索引機制,加密后數據的檢索性能將大幅度下降。
這種技術使用“視圖”+“觸發(fā)器”+“擴展索引”+“外部調用”的方式實現(xiàn)數據加密,同時保證應用完全透明。它的核心思想是充分利用數據庫自身提供的應用定制擴展能力,分別使用其觸發(fā)器擴展能力、索引擴展能力、自定義函數擴展能力以及視圖等技術來滿足數據存儲加密,加密后數據檢索,對應用無縫透明等最主要需求。
這種方案的技術原理主要有以下四個方面:
(1)通過視圖實現(xiàn)加密數據透明查詢處理
數據庫的視圖可以實現(xiàn)對表內數據的過濾、投影、聚集、關聯(lián)和函數運算。該方案正是通過數據庫的視圖原理實現(xiàn)對數據的透明訪問;首先對將原有的表進行改名,然后在該表上建立與原表同名的視圖;在視圖內實現(xiàn)對敏感列的解密函數調用,實現(xiàn)數據的解密。
(2)通過觸發(fā)器實現(xiàn)數據的加密插入和更新處理
數據庫中的觸發(fā)器可以實現(xiàn)對數據更新動作的特定行為的響應,同時數據庫中可以支持針對視圖的觸發(fā)器。這種方案在建立的視圖上建立Instead of觸發(fā)器,通過Instead of觸發(fā)器實現(xiàn)對明文數據的加密,將加密數據插入到表中。
(3)通過數據庫的擴展索引接口實現(xiàn)加密索引
以Oracle數據庫為例,在Oracle Data Cartridge的索引擴展機制提供了一套現(xiàn)成的框架,可以自己定義索引并實現(xiàn)Operator,自行編寫索引在Create Index、Insert、Delete、Update語句執(zhí)行、以及Scan Index發(fā)生時的相應處理代碼。通過該機制,可以使用自定義的擴展加密索引,這樣當使用該索引對加密數據進行檢索時,可以進行正常的排序及比較,這也就解決了加密后數據檢索的難題,大幅度提升了密文檢索的效率。
(4)通過外部接口調用實現(xiàn)獨立于數據庫的權限控制和國產加密算法
在實現(xiàn)透明加密訪問和高效索引訪問之外,另一重要目的是實現(xiàn)對國產加密算法的調用和獨立于數據庫的權限控制。實現(xiàn)這一目的的技術關鍵是外部程序調用和外部通訊支持。在數據庫中支持外部程序調用,只要定義好通訊接口即可。那么這種方案可以將加密函數和解密函數做成外部調用,這樣不僅可以在外部調用國產加密設備的加密算法,還可以將權限校驗過程放在數據庫之外完成,確保了對超級用戶的權限限制。