數(shù)據(jù)庫加密之應(yīng)用層加密技術(shù)

應(yīng)用層加密技術(shù)

應(yīng)用層透明加密技術(shù)俗稱鉤子透明加密技術(shù)。這種技術(shù)就是將應(yīng)用層API和Hook組合而成的。通過windows的鉤子技術(shù),監(jiān)控應(yīng)用程序?qū)ξ募拇蜷_和保存,當(dāng)打開文件時,先將密文轉(zhuǎn)換后再讓程序讀入內(nèi)存,保證程序讀到的是明文,而在保存時,又將內(nèi)存中的明文加密后再寫入到磁盤中。

應(yīng)用層透明加密(鉤子透明加密)技術(shù)與應(yīng)用程序密切相關(guān),它是通過監(jiān)控應(yīng)用程序的啟動而啟動的。一旦應(yīng)用程序名更改,則無法掛鉤。同時,由于不同應(yīng)用程序在讀寫文件時所用的方式方法不盡相同,同一個軟件不同的版本在處理數(shù)據(jù)時也有變化,鉤子透明加密必須針對每種應(yīng)用程序、甚至每個版本進(jìn)行開發(fā)。

目前不少應(yīng)用程序為了限止黑客入侵設(shè)置了反鉤子技術(shù),這類程序在啟動時,一旦發(fā)現(xiàn)有鉤子入侵,將會自動停止運行,所以應(yīng)用層加密很容易通過反鉤子來避開繞過。

應(yīng)用層加密的主要技術(shù)原理在于,應(yīng)用系統(tǒng)通過加密API(JDBC,ODBC,C API等)對敏感數(shù)據(jù)進(jìn)行加密,將加密數(shù)據(jù)存儲到數(shù)據(jù)庫的底層文件中;在進(jìn)行數(shù)據(jù)檢索時,將密文數(shù)據(jù)取回客戶端,再進(jìn)行解密。另外應(yīng)用系統(tǒng)將自行管理密鑰體系。

這種方案也存在明顯缺陷,最主要的不足在于,應(yīng)用程序必須對數(shù)據(jù)進(jìn)行加解密,增加編程復(fù)雜度,而且無法對現(xiàn)有的系統(tǒng)做到透明,應(yīng)用程序必須進(jìn)行大規(guī)模的改造。從效率角度來看,這種技術(shù)方案無法利用數(shù)據(jù)庫的索引機制,加密后數(shù)據(jù)的檢索性能將產(chǎn)生大幅度下降。