热烈祝贺,Dodd的space开张!!! 不想当版主的puber不是好puber!!!

Oracle 10G 新特性--透明数据加密技术(TDE)

上一篇 / 下一篇  2008-02-25 13:59:58 / 个人分类:我是一名DBA

查看( 149 ) / 评论( 24 )

Oracle的最新版本10gR2中,出现最及时的技术应该是透明数据加密技术(Transparent Data EncryptionTDE)

 

TDE用来对数据加密,通常SQL执行的应用程序逻辑不需要进行更改,仍能正常运行。换言之,应用程序可以使用同一语法将数据插入到应用程序表中,并且Oracle数据库在将信息写入磁盘之前将自动对数据进行加密随后的选择操作将透明地解密数据,因此应用程序将继续正常地运行。这一点很重要,因为当前的应用程序通常期望未加密的应用程序数据。显示加密数据至少会使应用程序用户迷惑不解,甚至还会破坏现有的应用程序。

 

设置加密密钥:

 

Oracle透明数据加密提供了实施加密所必需的关键管理基础架构。加密的工作原理是将明文数据以及秘密(称作密钥)传递到加密程序中。加密程序使用提供的密钥对明文数据进行加密,然后返回加密数据。以往,创建和维护密钥的任务由应用程序完成。Oracle透明数据加密通过为整个数据库自动生成一个万能密钥解决了此问题。在启动Oracle数据库时,管理员必须使用不同于系统口令或DBA口令的口令打开一个Oracle Wallet对象。然后,管理员对数据库万能密钥进行初始化。万能密钥是自动生成的。

 

性能:

由于索引数据未被加密,因此加密通常会影响现有的应用程序索引。Oracle透明数据加密对与给定应用程序表关联的索引值进行加密。这意味着应用程序中的相等搜索对性能的影响很小,甚至没有任何影响。例如,假设应用程序card_id存在一个索引,并且此应用程序执行以下语句:

 

SQL> Select cash from credit_card where card_id = '1025023590';

Oracle 数据库将使用现有的应用程序索引,尽管 card_id信息已经在数据库中加密。

准备用于加密的数据库:

 

在本部分内容中,您将更新sqlnet.ora、创建一个加密钱夹(ewallet.p12)、打开此钱夹并为TDE创建万能密钥。执行以下操作:

 

1.您需要更新sqlnet.ora文件以包含一个ENCRYPTED_WALLET_LOCATION条目。打开一个终端窗口,然后输入以下命令:

 

cd $ORACLE_HOME/network/admin

gedit sqlnet.ora

将以下条目添加到文件末尾:

 

ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/admin/test97/wallet/)))

 

如果不加这一项的话,则会提示下面错误:

 

SQL> alter system set key identified by "hurray"

 2 ;

alter system set key identified by "hurray"

*

ERROR at line 1:

ORA-28368: cannot auto-create wallet

 

/opt/oracle/admin/test97/wallet/目录是用来存放生成的钱夹的。

可以为加密钱夹选择任何目录,但路径不应指向在数据库安装过程中创建的标准模糊钱夹(cwallet.sso) 

 

2.接下来,您需要打开钱夹并创建万能加密密钥。从终端窗口中,输入以下命令:

connect / as sysdba
alter system set key identified by "welcome1";

 

此命令的作用为:

 

l         如果指定的目录中不存在加密钱夹,则将创建加密钱夹(ewallet.p12)、打开此钱夹并创建/重新创建TDE的万能密钥。

l         如果指定目录中存在加密钱夹,则将打开此钱夹并创建/重新创建TDE的万能密钥。

 

之后,就可以测试数据了。

 

 

下面是实验记录:

alter system set key identified by "welcome1";

 

SQL> conn dodd/dodd123

create table test (id number,credit_card_number varchar2(16) ENCRYPT NO SALT);

 

SQL> insert into test values(1,'1231243242');

 

1 row created.

SQL> insert into test values(2,'33245235');

SQL> commit;

Commit complete.

 

SQL> select * from test;

 

       ID CREDIT_CARD_NUMB

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

        1 1231243242

        2 33245235

可见,数据查看是明文,因为这个时候,加密钱夹已经打开,数据可以解密。

 

这时,停止数据库,再打开:

SQL> shutdown immediate

 

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> SQL> startup

ORACLE instance started.

 

Total System Global Area 524288000 bytes

Fixed Size                 1979968 bytes

Variable Size            138414528 bytes

Database Buffers         377487360 bytes

Redo Buffers               6406144 bytes

Database mounted.

Database opened.

 

SQL> select * from dodd.test;

select * from dodd.test

                  *

ERROR at line 1:

ORA-28365: wallet is not open

 

 

SQL> select id from dodd.test;

 

       ID

----------

        1

        2

可以看到,因为数据库重启后,加密钱夹处于关闭状态,这时只要查询到加密的列,会提示加密钱夹没有打开。

 

如果用户想打开钱夹,必须具有alter system权限。

 

下面打开wallet

SQL> conn / as sysdba

Connected.

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

 

System altered.

 

SQL> conn dodd/dodd123

Connected.

 

SQL> select * from test;

 

       ID CREDIT_CARD_NUMB

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

        1 1231243242

        2 33245235

 

可以看到,加密钱夹打开后,数据可以被解密。

 

还有一条:sys用户的表不能被加密。

 

可见:Oracle TDE是在数据层面上对表里的数据加密,而且不会影响数据库现有的权限控制策略。

 

l         salt实际上就是在加密过程中引入一个随机性。简单的说,就是一般来说,同样的明文产生同样的密文,这样就导致容易被解密者通过分析词频之类的方式(加解密我不太懂)来通过密文破解明文,如果指定salt,那么即使同样的明文加密后的密文也是不一样的。

 

no salt的话,自然就是相同的明文会产生相同的密文了。对于索引来说,要求no salt也就可以理解了

l         丢失ewallet加密钱夹的话,是不能再解密数据的。

 

Oracle 10gR2的 TDE 特性,对于防止机密信息的泄漏能起到事半功倍的作用!

   --The End--


TAG: 10g oracle tde 新特性

howard_zhang的个人空间 howard_zhang 发布于2008-02-26 21:30:35
不错,帮顶一下
yanggq的个人空间 yanggq 发布于2008-02-26 21:33:44
对于防止盗窃的信息丢失有保密作用
weilaiyxj发布于2008-02-26 22:38:36
TDE是数据级的1p        Z
k:d9yB8u$vP


7`^$po"rDVault是数据库级的
cc59的个人空间 cc59 发布于2008-02-26 22:41:50
方档上讲得很清楚了.
cc59的个人空间 cc59 发布于2008-02-26 22:42:07

QUOTE:

原帖由 cc59 于 2008-2-26 22:41 发表
VX&\uo{JITPUB个人空间官方文档上讲得很清楚了.

ZALBB的个人空间 ZALBB 发布于2008-02-27 00:07:53
现实中,该如何应用?
sx1J;ztoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netITPUB个人空间a9rC{i2v
比如:HR系统中的薪水字段? 是不是日常不允许查看该字段,只有打开钱夹的这一段时间,才允许看?
龙鹰的空间 jiafei9999 发布于2008-02-27 01:31:12
呵呵,赞一个~
alantany的个人空间 alantany 发布于2008-02-27 08:31:50

QUOTE:

原帖由 ZALBB 于 2008-2-27 00:07 发表
fmK,iQoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net现实中,该如何应用?#r%z3_q6q p-U

Y)m"@c4S |2hITPUB个人空间比如:HR系统中的薪水字段? 是不是日常不允许查看该字段,只有打开钱夹的这一段时间,才允许看?
ITPUB个人空间1w%\!b)?o]        [
字段的保护可以使用vpd.
5`ke Gs c9o&]XYITPUB个人空间TDE需要从wallet中得到master key,所以需要open的,所以wallet file绝对不能丢失。
烟囱的个人空间 烟囱 发布于2008-02-27 08:36:23
嗯,真的不错.Nl!jo$M"jw2T vI
oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net!sT+s%MIz.N
但是对数据库的性能的影响到底大不大?有测试吗?
wysfenghuo007的个人空间 wysfenghuo007 发布于2008-02-27 08:51:03
学习了
john_77发布于2008-02-27 08:56:02
学习
brucewoo的个人空间 brucewoo 发布于2008-02-27 11:40:59
学习一下
Dodd的个人空间 Dodd 发布于2008-02-27 12:56:05

QUOTE:

原帖由 ZALBB 于 2008-2-27 00:07 发表
r-j)E#_smspace.itpub.net现实中,该如何应用?
h9?%Kr'Gv-_ Lspace.itpub.net
{:a1f
O{s)|(]%S:^
比如:HR系统中的薪水字段? 是不是日常不允许查看该字段,只有打开钱夹的这一段时间,才允许看?
D Hp5T
UA


([4HKl        I0}space.itpub.netoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netDP,r
{"G;Mq cy~

现实中通常是结合VPD策略来实现访问控制!  关于VPD的内容将在不久后贴出!

Xd0C1mYWITPUB个人空间

s8Z']$q4Y9i9Oh[ 本帖最后由 Dodd 于 2008-2-27 13:03 编辑 ]
Dodd的个人空间 Dodd 发布于2008-02-27 12:57:43
没想到这个贴能被加精,谢谢版主
m?        XZW.o"`ITPUB个人空间
-o$LKAe俺将继续努力!
hanjs发布于2008-02-27 13:15:39

QUOTE:

原帖由 Dodd 于 2008-2-27 12:56 发表
iFU,f{5I:P#t5LE,]'@
u.Y5A&{[;mQ/RKq        mi;L4L%MR |+G
9\ciF Bb,i5m0r
现实中通常是结合VPD策略来实现访问控制!  关于VPD的内容将在不久后贴出!
space.itpub.netr2n3t5P4h%q        A$r*p8~#m

'YK,X.Q{f,HjVoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net7@.B#e&W,rmUI
继续关注LZ下一总结!
xiaodong_1567的个人空间 xiaodong_1567 发布于2008-02-27 16:20:50
不错的主题
'W2`n(W}
f3d7DV
学习
tingsheng发布于2008-02-27 19:40:16
不错,向楼主致敬,谢谢
NinGoo@Itpub NinGoo 发布于2008-02-27 19:47:39
这个东西去年也看了下,不过可能很难碰到实际的应用案例,呵呵WBd5nX

qLmWS4jLhttp://www.itpub.net/viewthread. ... p%3Bfilter%3Ddigest
蒙昭良的个人空间 mengzhaoliang 发布于2008-02-28 00:22:19
楼主很不错,继续出多点精品!
xmlct78的DBA之路 xmlct78 发布于2008-03-06 14:43:22
有实际的案例吗?如果用TDE加密的数据库要进行迁移,要怎么做?
zongyongchun发布于2008-03-06 18:21:10
哎呀,这个我要玩一下,不知道是不是很有意思。
haorman zuohao_lu 发布于2008-03-06 18:26:25
学习了。
%b ]E:|U)D H顶。
sylvanzzy发布于2008-03-06 21:13:17
不错
DINGNING239发布于2008-03-06 21:33:04
学习了
我来说两句

(可选)

日历

« 2008-10-14  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 2306
  • 日志数: 27
  • 图片数: 1
  • 建立时间: 2008-01-22
  • 更新时间: 2008-09-26

RSS订阅

Open Toolbar