下面我們進一步解釋在DBMS外層實現加密功能的原理:
數據庫加密系統分成兩個功能獨立的主要部件:一個是加密字典管理程序,另一個是數據庫加/脫密引擎。數據庫加密系統將用戶對數據庫信息具體的加密要求以及基礎信息保存在加密字典中,通過調用數據加/脫密引擎實現對數據庫表的加密、脫密及數據轉換等功能。數據庫信息的加/脫密處理是在后臺完成的,對數據庫服務器是透明的。
◆加密字典管理程序
◆加密系統
◆應用程序
◆數據庫加脫密引擎
◆數據庫服務器
◆加密字典
◆用戶數據
按以上方式實現的數據庫加密系統具有很多優點:首先,系統對數據庫的最終用戶是完全透明的,管理員可以根據需要進行明文和密文的轉換工作;其次,加密系統完全獨立于數據庫應用系統,無須改動數據庫應用系統就能實現數據加密功能;第三,加解密處理在客戶端進行,不會影響數據庫服務器的效率。
數據庫加/脫密引擎是數據庫加密系統的核心部件,它位于應用程序與數據庫服務器之間,負責在后臺完成數據庫信息的加/脫密處理,對應用開發人員和操作人員來說是透明的。數據加/脫密引擎沒有操作界面,在需要時由操作系統自動加載并駐留在內存中,通過內部接口與加密字典管理程序和用戶應用程序通訊。數據庫加/脫密引擎由三大模塊組成:加/脫密處理模塊、用戶接口模塊和數據庫接口模塊,如圖4所示。其中,"數據庫接口模塊"的主要工作是接受用戶的操作請求,并傳遞給"加/脫密處理模塊",此外還要代替"加/脫密處理模塊"去訪問數據庫服務器,并完成外部接口參數與加/脫密引擎內部數據結構之間的轉換。"加/脫密處理模塊"完成數據庫加/脫密引擎的初始化、內部專用命令的處理、加密字典信息的檢索、加密字典緩沖區的管理、SQL命令的加密變換、查詢結果的脫密處理以及加脫密算法實現等功能,另外還包括一些公用的輔助函數。
數據加/脫密處理的主要流程如下:
(1) 對SQL命令進行語法分析,如果語法正確,轉下一步;如不正確,則轉6),直接將SQL命令交數據庫服務器處理。