現在數據庫系統主要基於三個層次進行數據庫加密工作,即0S、DBMS內核層、DBMS外層。目前常用的辦法是在DBMS外核層加密。DBMS外核層加密是將數據庫加密系統做成DBMS的一個工具,其優點是不會加重數據庫服務器的負載並可以實現網上傳輸加密,缺點是加密功能會受一些限制。作為一種通過加密方式來保護數據的專門系統,數據庫加密系統並不是一個數據庫應用系統,而是一個將DBMS部分功能、文件加密器和密鑰管理三者緊密結合起來的系統。顯然數據庫加密系統實際上主要實現的還是加密器(包括加密定義工具)的功能,它既可工作於數據庫應用系統與DBMS之間,又可作為一個獨立工作的系統直接與DBMS交互。
選擇數據庫加密方法要充分考慮數據庫特點,如數據保存比較長,每次操作涉及數據量較大等。下面分析幾種常用的加密方法,為了適合數據庫的特點,還需要對數據庫加密方法進行局部的改動。
第一、基於記錄的數據庫加密技術
一般而言,數據庫系統中每條記錄所包含的信息都具有一定的封閉性,即從某種程度上說它獨立完整地存儲了一個實體的數據,因此是最常用的數據庫信息加密手段。這種方法的基本思路是:基於記錄的加密技術在各自密書的作用下,將數據庫的每一個記錄加密成密文並存放於數據庫文件加密中;記錄的查找是通過將需查找的值加密成密碼文后進行的。
第二、基於文件的數據庫加密技術
把數據庫文件作為整體,用加密器和加密算法對整個數據庫文件加密,形成密文來保證數據的真實性和完整性。利用這種方法,數據的共享是通過用戶用解密密鑰對整個數據庫文件進行解密來實現的,但多方面的缺點極大地限制了這一方法的實際應用。首先,數據修改的工作將變得十分困難,需要進行解密、修改、復制和加密四個操作,極大地增加了系統的時空開銷;其次,即使用戶只是需要查看某一條記錄,也必須將整個數據庫文件解密,這樣無法實現對文件中不需要讓用戶知道的信息的控制。因此,這種力法只適用於能回避這些限制的應用環境。