程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 從三個不同的層次實現對數據庫數據的加密

從三個不同的層次實現對數據庫數據的加密

編輯:關於SqlServer

  由於數據庫系統在操作系統下都是以文件形式進行管理的,因此入侵者可以直接利用操作系統的漏洞竊取數據庫文件,或者直接利用OS工具來非法偽造、篡改數據庫文件內容。這種隱患一般數據庫用戶難以察覺,分析和堵塞這種漏洞被認為是B2級的安全技術措施。

  數據庫管理系統層次安全技術主要是用來解決這一問題,即當前面兩個層次已經被突破的情況下仍能保障數據庫數據的安全,這就要求數據庫管理系統必須有一套強有力的安全機制。解決這一問題的有效方法之一是數據庫管理系統對數據庫文件進行加密處理,使得即使數據不幸洩露或者丟失,也難以被人破譯和閱讀。

  我們可以考慮在三個不同層次實現對數據庫數據的加密,這三個層次分別是OS層、DBMS內核層和DBMS外層。

  ⑴在OS層加密。在OS層無法辨認數據庫文件中的數據關系,從而無法產生合理的密鑰,對密鑰合理的管理和使用也很難。所以,對大型數據庫來說,在OS層對數據庫文件進行加密很難實現。

  ⑵在DBMS內核層實現加密。這種加密是指數據在物理存取之前完成加/脫密工作。這種加密方式的優點是加密功能強,並且加密功能幾乎不會影響DBMS的功能,可以實現加密功能與數據庫管理系統之間的無縫耦合。其缺點是加密運算在服務器端進行,加重了服務器的負載,而且DBMS和加密器之間的接口需要DBMS開發商的支持。

  ◆定義加密要求工具

  ◆DBMS

  ◆數據庫應用系統

  ◆加密器

  (軟件或硬件)

  ⑶在DBMS外層實現加密。比較實際的做法是將數據庫加密系統做成DBMS的一個外層工具,根據加密要求自動完成對數據庫數據的加/脫密處理:

  ◆定義加密要求工具加密器

  (軟件或硬件)

  ◆DBMS

  ◆數據庫應用系統

  采用這種加密方式進行加密,加/脫密運算可在客戶端進行,它的優點是不會加重數據庫服務器的負載並且可以實現網上傳輸的加密,缺點是加密功能會受到一些限制,與數據庫管理系統之間的耦合性稍差。

  下面我們進一步解釋在DBMS外層實現加密功能的原理:

  數據庫加密系統分成兩個功能獨立的主要部件:一個是加密字典管理程序,另一個是數據庫加/脫密引擎。數據庫加密系統將用戶對數據庫信息具體的加密要求以及基礎信息保存在加密字典中,通過調用數據加/脫密引擎實現對數據庫表的加密、脫密及數據轉換等功能。數據庫信息的加/脫密處理是在後台完成的,對數據庫服務器是透明的。

  ◆加密字典管理程序

  ◆加密系統

  ◆應用程序


  ◆數據庫加脫密引擎

  ◆數據庫服務器

  ◆加密字典

  ◆用戶數據

  按以上方式實現的數據庫加密系統具有很多優點:首先,系統對數據庫的最終用戶是完全透明的,管理員可以根據需要進行明文和密文的轉換工作;其次,加密系統完全獨立於數據庫應用系統,無須改動數據庫應用系統就能實現數據加密功能;第三,加解密處理在客戶端進行,不會影響數據庫服務器的效率。

  數據庫加/脫密引擎是數據庫加密系統的核心部件,它位於應用程序與數據庫服務器之間,負責在後台完成數據庫信息的加/脫密處理,對應用開發人員和操作人員來說是透明的。數據加/脫密引擎沒有操作界面,在需要時由操作系統自動加載並駐留在內存中,通過內部接口與加密字典管理程序和用戶應用程序通訊。數據庫加/脫密引擎由三大模塊組成:加/脫密處理模塊、用戶接口模塊和數據庫接口模塊,如圖4所示。其中,"數據庫接口模塊"的主要工作是接受用戶的操作請求,並傳遞給"加/脫密處理模塊",此外還要代替"加/脫密處理模塊"去訪問數據庫服務器,並完成外部接口參數與加/脫密引擎內部數據結構之間的轉換。"加/脫密處理模塊"完成數據庫加/脫密引擎的初始化、內部專用命令的處理、加密字典信息的檢索、加密字典緩沖區的管理、SQL命令的加密變換、查詢結果的脫密處理以及加脫密算法實現等功能,另外還包括一些公用的輔助函數。

  數據加/脫密處理的主要流程如下:

  (1) 對SQL命令進行語法分析,如果語法正確,轉下一步;如不正確,則轉6),直接將SQL命令交數據庫服務器處理。

  (2) 是否為數據庫加/脫密引擎的內部控制命令?如果是,則處理內部控制命令,然後轉7);如果不是則轉下一步。

  (3) 檢查數據庫加/脫密引擎是否處於關閉狀態或SQL命令是否只需要編譯?如果是則轉6),否則轉下一步。

  (4) 檢索加密字典,根據加密定義對SQL命令進行加脫密語義分析。

  (5) SQL命令是否需要加密處理?如果是,則將SQL命令進行加密變換,替換原SQL命令,然後轉下一步;否則直接轉下一步。

  (6) 將SQL命令轉送數據庫服務器處理。

  (7) SQL命令執行完畢,清除SQL命令緩沖區。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved