日期:2014-05-16  浏览次数:20443 次

Oracle 11g 新特性 -- Transparent Data Encryption (透明数据加密TDE) 增强 说明


 

 

一.TransparentData Encryption (TDE:透明数据加密) 说明

 

Orace TDE 是Orcle 10R2中的一个新特性,其可以用来加密数据文件里的数据,保护从操作系统层面上对数据文件的访问。11g的TDE 在10gR2的基础上增强,允许在表空间级别进行加密。

 

1.1 11g 中TDE 新增功能

 

一些新增功能可增强透明数据加密(TDE)功能,这些功能是基于相同的基础结构构建的。

为支持TDE 而对LogMiner 所做的更改提供了用于更改捕获引擎的基础结构,这些引擎可用于逻辑备用、流和异步更改数据捕获。要让LogMiner 支持TDE,它必须能够访问加密Wallet。要访问该Wallet,必须装载实例并使Wallet 处于开启状态。LogMiner 不支持硬件安全模块(HSM) 或用户持有密钥。

对于逻辑备用,可在源或目标数据库挖掘日志,因此用于这两个数据库的Wallet 必须相同。

加密列的处理方式在流和基于流的更改数据捕获中均相同。将在Wallet 所在的源中挖掘重做记录。数据以未加密的方式传输到目标位置,然后在目标位置使用Wallet 进行加密。该数据可以使用高级安全选项在传输中进行加密以实现网络加密。

 

 

TDE 中的新增功能包括:

(1)  表空间加密

(2)  支持LogMiner

(3)  支持逻辑备用

(4)  支持流

(5)  支持异步更改数据捕获

(6)  基于硬件的主密钥保护

 

1.2 表空间加密

表空间加密以在写入时进行加密并在读取时进行解密的块级别加密技术为基础,并不在内存中对数据进行加密。影响加密的唯一因素与I/O 相关联。SQL 访问路径不变,并且支持所有数据类型。要使用表空间加密,加密Wallet 必须处于开启状态。

CREATETABLESPACE 命令包含一个用于设置加密属性的ENCRYPTION 子句,以及一个导致使用加密的ENCRYPT 存储参数。可以指定USING 'encrypt_algorithm' 来指示要使用的算法名称。有效的算法包括3DES168、AES128、AES192和AES256。默认算法为AES128。可以在V$ENCRYPTED_TABLESPACES 视图中查看这些属性。

加密的数据在执行操作(如JOIN 和SORT)期间会受到保护。这意味着数据在移动到临时表空间时是安全的。还原日志和重做日志中的数据也受到保护。

如果平台有相同的Endianess和Wallet,则加密的表空间是可移动的。

 

限制:

(1)  无法对临时表空间和还原表空间进行加密(所选的块已加密)。

(2)  Bfiles 和外部表未加密。

(3)  不支持跨不同的endian 平台移动表空间。

(4)  当前无法更改加密表空间的密钥。解决方法是:使用所需的属性创建一个表空间,然后将所有对象移动到新建的表空间中。

 

1.3 硬件安全模块

硬件安全模块(HSM) 是一种物理设备,可以安全地存储加密密钥。它还可以提供安全的计算空间(内存)以执行加密和解密操作。HSM 是Oracle wallet 的一种更安全的代替方法。

透明数据加密(TDE) 可使用HSM 来加强敏感数据的安全性。HSM 用于存储TDE 使用的主加密密钥。因为HSM 是一种物理设备而不是一个操作系统文件,所以在未授权的访问尝试中密钥是安全的。使用主加密密钥的所有加密和解密操作都在HSM 中执行。这意味着主加密密钥永远不会在不安全的内存中公开。

有些供应商可提供硬件安全模块,这些供应商还必须提供相应的库。

 

 

二.示例

 

更多测试参考:

Securing Stored Data Using Transparent DataEncryption

http://docs.oracle.com/cd/E11882_01/network.112/e10746/asotrans.htm

 

2.1 创建Wallet

 

在对LOB 进行加密的SecureFile中也会用到wallet。

Oracle 11g 新特性 -- SecureFiles 说明

http://blog.csdn.net/tianlesoftware/article/details/8231322

 

在sqlnet.ora 文件里添加: ENCRYPTION_WALLET_LOCATION 和WALLET_LOCATION参数。

默认位置是:$ORACLE_BASE/admin/$ORACLE_SID/wallet。

 

--指定ORACLEWALLET的位置这里使用ORACLE_HOME/network/admin,sqlnet.ora里添加如下内容

 

WALLET_LOCATION=

   (SOURCE =

     (METHOD = FILE)

     (METHOD_DATA =

       (DIRECTORY =/u01/app/oracle/product/11.2.0/db_1/network/admin)

     )

   )

 

ENCRYPTION_WALLET_LOCATION=

   (SOURCE =

     (METHOD = FILE)

     (METHOD_DATA =

       (DIRECTORY =/u01/app/oracle/admin/dave/encryption_wallet)

     )

   )

 

SQLNET.WALLET_OVERRIDE= TRUE

SSL_CLIENT_AUTHENTICATION= FALSE

SSL_VERSION =0

 

--