数据加密 - TDE透明数据加密原理
?
首先需要確定你需要加密的列,Oracle 10g數(shù)據(jù)庫將為包含加密列的表創(chuàng)建一個私密的安全加密密鑰(表秘鑰),
然后采用你指定的加密算法(AES或3DES)加密指定列的明文數(shù)據(jù)。此時,保護(hù)表的加密密鑰(表密鑰)就非常重要了。
Oracle 10g通過一個master密鑰來對表密鑰進(jìn)行加密。master密鑰保存在一個叫做“錢夾(wallet)”的安全的地方,
錢夾可以是數(shù)據(jù)庫服務(wù)器上的一個文件,加密的表密鑰保存在數(shù)據(jù)字典中。
?
當(dāng)用戶插入數(shù)據(jù)到需要加密的列中的時候,Oracle 10g從錢夾中獲取master密鑰,用master密鑰解密數(shù)據(jù)字典中的表密鑰,
然后用解密后的表密鑰加密輸入數(shù)據(jù),再將加密后的數(shù)據(jù)保存在數(shù)據(jù)庫中。如下圖所示:
你可以加密表的部分或者所有列,例如一個表有4列,如上圖所示,第2列和第3列被加密,但Oracle只會生成
一個表級的加密密鑰,然后用這個密鑰加密所有的加密列。在磁盤上,第1列和第4列是明文存儲的,第2列和第3列是
加密存儲的。由于數(shù)據(jù)是加密存儲的,所有后續(xù)的組建例如備份和歸檔日志,都是加密的格式。
?
當(dāng)用戶查詢一個加密列的時候,Oracle 10g透明的將加密的表密鑰從數(shù)據(jù)字典中取出,再取出master密鑰,
然后解密表密鑰,再用解密后的表密鑰來解密磁盤上加密的數(shù)據(jù),最后返回明文給用戶。
?
通過這種加密數(shù)據(jù)的方式,即使保存在磁盤上的數(shù)據(jù)被盜,由于master密鑰并沒有被盜,沒有master密鑰的情況下,
數(shù)據(jù)無法被獲取。即使“錢夾(wallet)”被盜,如果沒有錢夾密碼master密鑰還是無法獲取。因此,即使竊賊盜取了
磁盤或者數(shù)據(jù)文件的拷貝,也無法解密數(shù)據(jù)。這樣做滿足了很多規(guī)則和指南的要求,而所有的這些并不需要修改應(yīng)用程序或
者編寫復(fù)雜的加密和密鑰管理系統(tǒng)。
?
?
注意:
- TDE涉及3個密碼,一個是錢夾密碼,用來啟動錢夾;一個是master密鑰,用來加解密表密鑰;一個是表密鑰,用來加解密數(shù)據(jù),錢夾密碼是用戶手工輸入的,master密鑰和表密鑰是系統(tǒng)管理的
- 目前只有Oracle和微軟的SQL Server支持TDE
總結(jié)
以上是生活随笔為你收集整理的数据加密 - TDE透明数据加密原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#Redis哈希Hashes
- 下一篇: fir.im Weekly - 2017