數據加密 - TDE透明數據加密原理


 

首先需要確定你需要加密的列,Oracle 10g數據庫將為包含加密列的表創建一個私密的安全加密密鑰(表秘鑰),

然后采用你指定的加密算法(AES或3DES)加密指定列的明文數據。此時,保護表的加密密鑰(表密鑰)就非常重要了。

Oracle 10g通過一個master密鑰來對表密鑰進行加密。master密鑰保存在一個叫做“錢夾(wallet)”的安全的地方,

錢夾可以是數據庫服務器上的一個文件,加密的表密鑰保存在數據字典中。

 

當用戶插入數據到需要加密的列中的時候,Oracle 10g從錢夾中獲取master密鑰,用master密鑰解密數據字典中的表密鑰,

然后用解密后的表密鑰加密輸入數據,再將加密后的數據保存在數據庫中。如下圖所示:

你可以加密表的部分或者所有列,例如一個表有4列,如上圖所示,第2列和第3列被加密,但Oracle只會生成

一個表級的加密密鑰,然后用這個密鑰加密所有的加密列。在磁盤上,第1列和第4列是明文存儲的,第2列和第3列是

加密存儲的。由於數據是加密存儲的,所有后續的組建例如備份和歸檔日志,都是加密的格式。

 

當用戶查詢一個加密列的時候,Oracle 10g透明的將加密的表密鑰從數據字典中取出,再取出master密鑰,

然后解密表密鑰,再用解密后的表密鑰來解密磁盤上加密的數據,最后返回明文給用戶。

 

通過這種加密數據的方式,即使保存在磁盤上的數據被盜,由於master密鑰並沒有被盜,沒有master密鑰的情況下,

數據無法被獲取。即使“錢夾(wallet)”被盜,如果沒有錢夾密碼master密鑰還是無法獲取。因此,即使竊賊盜取了

磁盤或者數據文件的拷貝,也無法解密數據。這樣做滿足了很多規則和指南的要求,而所有的這些並不需要修改應用程序或

者編寫復雜的加密和密鑰管理系統。

 

 

注意:

  • TDE涉及3個密碼,一個是錢夾密碼,用來啟動錢夾;一個是master密鑰,用來加解密表密鑰;一個是表密鑰,用來加解密數據,錢夾密碼是用戶手工輸入的,master密鑰和表密鑰是系統管理的
  • 目前只有Oracle和微軟的SQL Server支持TDE


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM