ITPub博客

首页 > 数据库 > Oracle > 透明数据加密技术

透明数据加密技术

Oracle 作者:程红灵 时间:2013-06-06 13:25:00 0 删除 编辑

   我们知道随着科技的不断的进步数据加密技术愈来愈受重视了,目前的主流的数据库oracle详细的加密技术如下:

Oracle TDE的全称是Transparent Data Encryption 透明数据加密,从10gr2开始支持基于列的加密,从11g开始支持基于表空间的加密。它的优点是对应用透明,管理简便,无需应用设置,但它也有如下限制:

 只能使用B-Tree索引  加密的列无法对索引进行rang scan操作。  外部对象  可传输表空间  exp/imp操作

TDE - 基于列的加密

透明数据加密技术,由于有了Oracle的TDE-基于列的加密,你所要做的只是定义需要加密的列,Oracle将为包含加密列的表创建一个私密的安全加密密钥,然后采用你指定的加密算法加密指定列的明文数据。

TDE支持的加密算法有:

3DES168 AES128  AES192  AES256

下面看一个具体的例子:

1)保证数据库兼容版本高于10gr2

[sql]view plaincopyprint?

SQL> show parameter compatible  

NAME                                 TYPE        VALUE  

------------------------------------ ----------- ------------------------------

compatible                           string      11.2.0.0.0  

2)设定wallet的位置(在sqlnet.ora文件中写入如下内容,需要重启数据库才能生效):

[plain]view plaincopyprint?

ENCRYPTION_WALLET_LOCATION =  

 (SOURCE=  

   (METHOD=file)  

     (METHOD_DATA=  

       (DIRECTORY=C:appxianzhuproduct11.2.0wallet)))  

3)在wallet里面创建key

[sql]view plaincopyprint?

SQL> alter system set encryption key authenticated by"myPassword";  

系统已更改。  

以上命令将会在对应目录下产生wallet

4)创建一个表,对其中某列加密

[sql]view plaincopyprint?

SQL> createtable tde_private(  

  2  id number(10) primarykey,  

  3  info varchar2(50) encrypt using 'AES192'

  4  );  

表已创建。  

SQL> set line 200  

SQL> select * from dba_encrypted_columns;  

OWNER            TABLE_NAME                     COLUMN_NAME                    ENCRYPTION_ALG                SAL INTEGRITY_AL  

---------------- ------------------------------ ------------------------------ ----------------------------- --- ------------

TEST             TDE_PRIVATE                    INFO                           AES 192 bits key              YES SHA-1  

SQL> insertinto tde_private values (1, 'This is private info');  

已创建 1 行。  

SQL> commit;  

提交完成。  

5)如果关闭wallet,无法访问加密的数据:

[sql]view plaincopyprint?

SQL> alter system set wallet close identified by"myPassword";  

系统已更改。  

SQL> select * from tde_private;  

select * from tde_private  

              *  

第 1 行出现错误:  

ORA-28365: Wallet 未打开  

6)重新打开wallet,才可以访问加密的数据:

[sql]view plaincopyprint?

SQL> alter system set wallet open identified by"myPassword";  

系统已更改。  

SQL> select * from tde_private;  

        ID INFO  

---------- --------------------------------------------------

         1 This is private info  

TDE - 基于表空间的加密

透明数据加密技术,这是Oracle 11g推出的新特性,它是对整个表空间进行加密。

下面是创建一个加密表空间的语句:

[sql]view plaincopyprint?

SQL> create tablespace encrypted_ts encryption using 'AES256'default storage(encrypt);  

表空间已创建。  

SQL> select tablespace_name,encrypted from dba_tablespaces where tablespace_name='ENCRYPTED_TS';  

TABLESPACE_NAME                ENC  

------------------------------ ---

ENCRYPTED_TS                   YES  

加密字段 V.S. 加密表空间

表空间加密 是放生在数据存储的时候,也就是存储在文件上的数据已经被加密;字段加密发生在SQL层,由SQL调用一个算法对数据进行加密处理。

表空间加密的数据,不会再收到字段加密的限制,比如:

 字段类型  索引类型  需要 no salt常见索引

 加密表空间的限制

 外部大对象(bfiles)不可以  exp/imp不行,需要用expdp/impdp

透明数据加密技术,看完了上面的介绍后详细的情况还在不断的更新中。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23747975/viewspace-1109282/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-04-18