问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在oracle 10g r2中实现透明数据加密

发布网友 发布时间:2022-04-22 12:54

我来回答

1个回答

热心网友 时间:2023-11-05 14:58

设置加密密钥:
  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 sysdbaalter 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是在数据层面上对表里的数据加密,而且不会影响数据库现有的权限控制策略。
   salt实际上就是在加密过程中引入一个随机性。简单的说,就是一般来说,同样的明文产生同样的密文,这样就导致容易被解密者通过分析词频之类的方式(加解密我不太懂)来通过密文破解明文,如果指定salt,那么即使同样的明文加密后的密文也是不一样的。
  no salt的话,自然就是相同的明文会产生相同的密文了。对于索引来说,要求no salt也就可以理解了
   丢失ewallet加密钱夹的话,是不能再解密数据的。
  Oracle 10gR2的 TDE 特性,对于防止机密信息的泄漏能起到事半功倍的作用!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 oracle 怎么调用存储过程 oracle存储过程查数据并生成文件怎么实现? oracle数据库的存储过程如何加密 具体的实现... oracle 数据库中存储过程输出情况 oracle存储过程是什么 oracle数据库调用存储过程 oracle中的存储过程有什么作用 关于Oracle数据库存储过程的问题 oracle数据库的游标和存储过程怎么写? vivox30视频聊天怎么调能好点? 为什么做过甲状腺手术脖子长的有点向男人猴结呢? vivox30 支持微信视频美颜吗? vivox30内置视频电话功能吗? 为什么vivox30pro锁屏后继续播放视频? vivo手机看视频没有声音怎么办? vivox30手机视频通话有回音是怎么回事? 维沃x30手机看视频,刷抖音卡是怎么回事? vivo手机刷抖音声音大怎么调节 为什么vivox30刷视频会卡? vivox30pro看电影怎么一卡一卡的? oracle 怎么在存储过程中查询数据 i5 8265U,这种低压CPU做3D建模等设计软件够用吗? 送外卖兼职怎么做美团 我想做美团骑士,怎么申请? 怎么做美团骑手,怎么送外卖 新浪微博为什么在某些人的主页看不到他,赞过的微博? 微博账号异常的时候是不是点赞别人看不到 初一写人作文550字 新浪微博为什么看不到别人的赞 初一写人的作文600字左右 初一写人记事作文 为什么我的微博看不到别人赞我了啊? 初一写人作文700字左右 如何在微博看到其他人给自己的评论或点赞? 初一写人作文,600字 微博怎么看不了别人点赞过哪些微博了? 初一写人或写事作文 微博上有的点赞为什么看不到呢? 初一写人作文650字 七年级写人写事作文500到600字