Oracle Transparent Data Encryption 透明加密(一)
摘要
Transparent Data Encryption透明機密技術是Oracle在10g版本之後推出的資料層加密技術。核心概念是藉助外接於資料庫的加密檔案,對資料表列乃至表空間等多層次進行加密。這種技術對儲存在資料庫中的敏感資訊,提供了簡單可靠的安全防護解決方案。
透明加密技術概要
簡單的說,Transparent Data Encryption(以下簡稱為TDE)是一種基於加密鍵key的訪問控制系統。加密過的資料直接放置在資料庫中,如果沒有解密授權,從資料庫中搜尋出的資料都是不可讀的非明文。只有指定的使用者ID進行讀取時,才進行自動的解密操作。
TDE的加密元件機制中包括主加密key(Master Encryption Key)和資料列加密key(Column Encryption Keys)。主加密key是儲存在資料庫外,通常是建立在一個安全目錄的檔案,受到系統級別安全管理。而資料列加密key是建立在資料庫的資料字典中。在資料庫外儲存的主加密key也稱為Oracle Wallet。
在工作的時候,Oracle是不需要利用如觸發器等元件的協助實現TDE功能。只需要指定進行加密處理的物件(資料列、表空間等),Oracle自己進行資料的加密和解密操作。進行加密和解密的時候,Oracle首先使用主加密key對資料字典裡的資料列key進行加解密,之後解密過的資料列key就可以資料列進行加解密操作。相當於將加解密的key分割在資料庫內部和資料庫外部兩部分。
使用TDE有一些獨特的優點:
1、 加密金鑰分割儲存,使得在儲存媒體或者資料檔案丟失的時候,保證敏感資料的安全;
2、 實現資料庫層次的加密,使得應用系統符合如PCI DSS標準在內的安全性規範要求;
3、 對資料使用使用者而言,加密解密的操作完全是透明的;
4、 過去一些不支援資料加解密的應用,可以直接進行無縫的移植。實現資料加密的要求;
同時,使用TDE的時候,還要注意一些限制,比如在外來鍵約束列上不能使用。還有一些特殊的索引型別和資料型別,在使用TDE的時候受到限制。
安裝配置TDE
1、 確定你的版本資訊
TDE是Oracle10gR2中推出的一個新功能,所以在規劃使用TDE的時候,要保證你的Oracle版本是在10gR2或者以上。
下面是筆者測試
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
2、建立一個新目錄,並指定為Wallet目錄
使用TDE的一個重要過程就是對於主加密key的建立管理,資料庫檔案外的key是存放在稱作wallet的目錄中。對key的使用,oracle支援多個資料庫元件使用相同的wallet,但是Oracle推薦使用單獨的wallet來存放主加密key。
設定wallet目錄的方法很簡單,在引數檔案sqlnet.ora中,按照下面的格式加入資訊:
ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=D:\oracle\product\10.2.0\admin\orcl\ORA_WALLET)))
ENCRYPTION_WALLET_LOCATION引數的作用就是告知Wallet的實現方式和物理位置。在上面的例項程式碼中,我們制定了一個目錄路徑,作為主加密Key的存放位置。
3、建立master key檔案,指定wallet密碼
使用SYS使用者登入系統,建立加密檔案。透過命令:
ALTER SYSTEM SET [ENCRYPTION] KEY IDENTIFIED BY password
其中,password相當於設定一個wallet密碼。Oracle Wallet是一個可以開啟關閉的功能元件,設定密碼之後,只有透過密碼口令可以啟用wallet功能。
SQL> alter system set encryption key identified by "password";
System altered
注意,在這裡,我們還可以選取一些更強壯的加密方法,來定義master key。如下:
ALTER SYSTEM SET ENCRYPTION KEY "j23lm781098dhb345sm" IDENTIFIED BY "p3812dH9E";
上述程式碼定義了PKI加密方法。
此時,我們可以發現在設定的目錄下,多出一個Personal Information Exchange型別的檔案,筆者機器上名稱為:ewallet.p12。相當於我們生成的master key檔案。
4、啟動、關閉Wallet
Wallet是一種功能,在實際中可以透過命令啟動或者關閉Wallet功能。
//嘗試開啟wallet功能,“”中包括的是指定的開啟密碼;
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password";
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password"
//因為當前是開啟的狀態,所以提示錯誤
ORA-28354: wallet 已經開啟
//關閉Wallet
SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;
System altered
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password";
System altered
到此,我們成功配置了Wallet,建立了master key。下面我們看如何使用TDE進行資料加密。
加密資料列
對資料列加密是TDE一個常用的功能。我們常常需要對資料庫中某個表的某個敏感資料進行加密處理,方式資訊的外洩。
首先,在定義資料表中的資料列(或者修改資料列)的時候,使用ENCRYPT進行標註。表示這個欄位是使用加密保護的重要字典。
SQL> create table t
2 ( id number primary key,
3 name varchar2(10) ENCRYPT);
Table created
上面的name列,使用了ENCRYPT進行標誌,表明需要對這個欄位進行加密處理,採用預設的加密配置。
注意:在預設不指定的情況下,Oracle在加密之前,對明文都要進行salt處理。所謂salt處理是一種強化加密資料的方法。透過在加密前明文中摻入一個隨機字串,來強化加密層級,防止進行字典攻擊和其他型別的破解操作。如果不需要進行salt處理,就是用No Salt在ENCRYPT後面。
使用salt是有一些限制的,如果列加密使用了salt,在對該列進行索引的時候,會報錯。
在加密演算法方面,Oracle也提供了一些非預設加密演算法,使用的時候,使用using關鍵字配合使用。加密方法如下:
l 3DES168
l AES128
l AES192 (default)
l AES256
下面是一個使用No Salt和指定加密演算法的例子。
SQL> create table t_test
2 (id number primary key,
3 age number encrypt no salt,
4 name varchar2(10) encrypt using '3DES168');
Table created
如果要對一個已經加密處理的資料列,解除加密,使用alter table …和DECRYPT關鍵字就可以實現,這裡不加以累述。
使用資料加密列
我們先向資料表t中插入一批資料
declare
i number;
begin
for i in 1..10 loop
insert into t
values (i,'Names : '||i);
end loop;
commit;
end ;
/
成功插入資料,並可以實現查詢。
SQL> select * from t;
ID NAME
---------- ----------
1 Names : 1
2 Names : 2
……
10 rows selected
似乎和一般的沒有差別,但是如果我們關閉瞭解密Wallet會如何?
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as SYS
//關閉Wallet
SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;
System altered
//重新連回scott
SQL> conn scott/tiger@orcl;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as scott
//報錯
SQL> select * from t;
select * from t
ORA-28365: Wallet 未開啟
//能夠查詢到數目
SQL> select count(*) from t;
COUNT(*)
----------
10
//非加密欄位沒有問題
SQL> select id from t;
ID
----------
1
2
……
10 rows selected
//加密欄位
SQL> select name from t;
select name from t
ORA-28365: Wallet 未開啟
從上面的例子看,TDE的作用就是最大限度的保護加密欄位,防止非法被訪問。
最後我們看看salt對索引的影響。
SQL> desc t_test;
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
ID NUMBER
AGE NUMBER Y //no salt
NAME VARCHAR2(10) Y //salt
SQL> create index ind_t_test_name on t_test(name);
create index ind_t_test_name on t_test(name)
ORA-28338: 無法使用 salt 值加密索引列
SQL> create index ind_t_test_name on t_test(age);
Index created
相關的資料檢視
對於TDE而言,牽扯到的資料字典相對較少,而且容易理解。
l dba_encrypted_columns:記錄所有的加密欄位;
l all_encrypted_columns:記錄當前使用者所能訪問到的所有加密欄位;
l user_encrypted_columns:記錄當前使用者自身Schema所有的加密欄位;
那麼,加密過程中,對效能的影響是如何?對master key的管理有什麼注意之處?我們下次繼續研究。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-681825/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Transparent Data Encryption 透明加密(二)Oracle加密
- Transparent Data Encryption (TDE) in Oracle 10g Database Release 2Oracle 10gDatabase
- oracle 透明加密Oracle加密
- 透明代理Transparent Proxy
- transparent gateway 透明閘道器配置Gateway
- Oracle透明資料加密Oracle加密
- ORACLE透明加密安裝操作Oracle加密
- Oracle TDE(透明資料加密)Oracle加密
- Oracle OCP IZ0-053 Q157(Data Encryption)Oracle
- ORACLE透明加密場景模擬Oracle加密
- Oracle Data Redaction資料加密Oracle加密
- oracle通過透明閘道器(Oracle Transparent Geteways),訪問ms sql server和其他資料庫OracleSQLServer資料庫
- rman backup ENCRYPTION(備份加密特性)測試!加密
- 透明資料加密加密
- 2.9.2 透明資料加密加密
- Oracle Linux 7禁用Transparent HugePagesOracleLinux
- [zt]Oracle 10G:透明資料加密技術(TDE)Oracle 10g加密
- aardio 背景透明的3種方式(透明窗體1 webview2,透明窗體2-win-region-bitmap,透明窗體3-winform-transparent-color)WebViewORM
- 深入理解高階加密標準(Advanced Encryption Standard)加密
- Oracle Transparent GateWay connect to MYSQL fix BUGOracleGatewayMySql
- Oracle 10G 新特性--透明資料加密技術(TDE)Oracle 10g加密
- 達夢加密之外部加密函式的半透明列加密加密函式
- Oracle Data Pump 研究(一)Oracle
- Hadoop KMS配置(HDFS透明加密)Hadoop加密
- TDE 透明表空間加密 Wallet加密
- openGauss-透明資料加密加密
- [重慶思莊每日技術分享]-oracle 12c透明加密Oracle加密
- 資料加密 第六篇:透明檔案加密加密
- oracle 11g高階安全元件測試透明資料加密(表空間加密)記錄Oracle元件加密
- 高階加密標準(英語:Advanced Encryption Standard,縮寫:AES)加密
- OceanBase 安全審計之透明加密加密
- Oracle Transparent Gateway for SQL Server安裝配置說明OracleGatewaySQLServer
- 使用oracle Transparent gateway 連線 sybase 資料庫OracleGateway資料庫
- oracle transparent gateway 10g配置注意事項OracleGateway
- 文件透明加密軟體哪家好?window透明加密軟體產品如何對電子檔案加密?陝西風奧科技加密
- 使用datapump傳輸加密表請先確認TDE Encryption wallet狀態加密
- openGauss 設定透明資料加密_TDE加密
- ORACLE DATA GUARD -一般概念Oracle