數(shù)據(jù)庫加密之基于視圖和觸發(fā)器的后置代理技術(shù)


數(shù)據(jù)庫加密

這種技術(shù)使用“視圖”+“觸發(fā)器”+“擴(kuò)展索引”+“外部調(diào)用”的方式實(shí)現(xiàn)數(shù)據(jù)加密,同時(shí)保證應(yīng)用完全透明。它的核心思想是充分利用數(shù)據(jù)庫自身提供的應(yīng)用定制擴(kuò)展能力,分別使用其觸發(fā)器擴(kuò)展能力、索引擴(kuò)展能力、自定義函數(shù)擴(kuò)展能力以及視圖等技術(shù)來滿足數(shù)據(jù)存儲(chǔ)加密,加密后數(shù)據(jù)檢索,對(duì)應(yīng)用無縫透明等最主要需求。

這種方案的技術(shù)原理主要有以下四個(gè)方面:

(1)通過視圖實(shí)現(xiàn)加密數(shù)據(jù)透明查詢處理

數(shù)據(jù)庫的視圖可以實(shí)現(xiàn)對(duì)表內(nèi)數(shù)據(jù)的過濾、投影、聚集、關(guān)聯(lián)和函數(shù)運(yùn)算。該方案正是通過數(shù)據(jù)庫的視圖原理實(shí)現(xiàn)對(duì)數(shù)據(jù)的透明訪問;首先對(duì)將原有的表進(jìn)行改名,然后在該表上建立與原表同名的視圖;在視圖內(nèi)實(shí)現(xiàn)對(duì)敏感列的解密函數(shù)調(diào)用,實(shí)現(xiàn)數(shù)據(jù)的解密。

(2)通過觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)的加密插入和更新處理

數(shù)據(jù)庫中的觸發(fā)器可以實(shí)現(xiàn)對(duì)數(shù)據(jù)更新動(dòng)作的特定行為的響應(yīng),同時(shí)數(shù)據(jù)庫中可以支持針對(duì)視圖的觸發(fā)器。這種方案在建立的視圖上建立Instead of觸發(fā)器,通過Instead of觸發(fā)器實(shí)現(xiàn)對(duì)明文數(shù)據(jù)的加密,將加密數(shù)據(jù)插入到表中。

(3)通過數(shù)據(jù)庫的擴(kuò)展索引接口實(shí)現(xiàn)加密索引

以O(shè)racle數(shù)據(jù)庫為例,在Oracle Data Cartridge的索引擴(kuò)展機(jī)制提供了一套現(xiàn)成的框架,可以自己定義索引并實(shí)現(xiàn)Operator,自行編寫索引在Create Index、Insert、Delete、Update語句執(zhí)行、以及Scan Index發(fā)生時(shí)的相應(yīng)處理代碼。通過該機(jī)制,可以使用自定義的擴(kuò)展加密索引,這樣當(dāng)使用該索引對(duì)加密數(shù)據(jù)進(jìn)行檢索時(shí),可以進(jìn)行正常的排序及比較,這也就解決了加密后數(shù)據(jù)檢索的難題,大幅度提升了密文檢索的效率。

(4)通過外部接口調(diào)用實(shí)現(xiàn)獨(dú)立于數(shù)據(jù)庫的權(quán)限控制和國(guó)產(chǎn)加密算法

在實(shí)現(xiàn)透明加密訪問和高效索引訪問之外,另一重要目的是實(shí)現(xiàn)對(duì)國(guó)產(chǎn)加密算法的調(diào)用和獨(dú)立于數(shù)據(jù)庫的權(quán)限控制。實(shí)現(xiàn)這一目的的技術(shù)關(guān)鍵是外部程序調(diào)用和外部通訊支持。在數(shù)據(jù)庫中支持外部程序調(diào)用,只要定義好通訊接口即可。那么這種方案可以將加密函數(shù)和解密函數(shù)做成外部調(diào)用,這樣不僅可以在外部調(diào)用國(guó)產(chǎn)加密設(shè)備的加密算法,還可以將權(quán)限校驗(yàn)過程放在數(shù)據(jù)庫之外完成,確保了對(duì)超級(jí)用戶的權(quán)限限制。