TDE(Transparent Data Encryption):

我们称之为“Oracle 透明数据加密技术”,它属于Oracle数据保护安全策略的一种。有两种数据加密技术,一种是基于列的数据加密,另一种是基于表空间的数据加密。

下面分别来说明一下这两种加密技术。

①  基于列的加密:对某一列进行加密,适用Oracle10GR2以上版本
②  基于表空间的加密:对整个表空间进行加密,适用Oracle11gR2以上版本

TDE(Transparent Data Encryption)优点:

①  对单列进行加密,并且可以创建索引
②  对用户透明,用户感知不到
③  管理简便,无需应用设置

TDE(Transparent Data Encryption)缺点:

①  加密列上只能创建B-tree索引,由于被加密算法编码过键值凌乱,无法支持范围扫描
②  外部对象不可加密
③  可传输表空间不可加密
④  Exp/Imp导出导入不可加密
TDE可支持的加密算法种类
①  AES192(default)
②  AES128
③  AES256
④  3DES168

TDE加密原理

①  先要创建一个“wallet钱包”,这个钱包里面保存着密钥,Oracle就是通过这个密钥对列进行加密和解密的。
②  生成wallet钱包之前先要设定wallet钱包的保存位置

开始实验:--需用用DBA用户做logmnr.

1.设置wallet钱包位置的文件$ORACLE_HOME/network/admin/sqlnet.ora并打开

[oracle@oel-01 admin]$ cat sqlnet.ora
# sqlnet.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

ADR_BASE = /u01/app/oracle
encryption_wallet_location=(source=

(method=file)

(method_data=

(directory=/u01/app/oracle/product/11.2.0/dbhome_1/network/admin)))
在 wallet里创建密钥, testtest是打开或关闭wallet的密码
BYS@ bys001>alter system set encryption key authenticated by "testtest";
System altered.
从操作系统上查看,已经生成了wallet的文件。
[oracle@oel-01 admin]$ ll ewallet.p12
-rw-r--r-- 1 oracle oinstall 1573 Jul 18 20:33 ewallet.p12

2.创建一个使用加密列的表,使用“AES192”加密算法

BYS@ bys001>create table encry_test(a varchar2(9),b varchar2(9) encrypt using 'AEs192');
Table created.
BYS@ bys001>insert into encry_test values('a1','b1');
BYS@ bys001>insert into encry_test values('a2','b2');
BYS@ bys001>commit;

从数据字典中查询加密段的信息

BYS@ bys001>select * from dba_encrypted_columns;
OWNER                          TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------ ------------------------------
ENCRYPTION_ALG                SAL INTEGRITY_AL
----------------------------- --- ------------
BYS                            ENCRY_TEST                     B
AES 192 bits key              YES SHA-1

BYS@ bys001>select * from encry_test;

A         B
--------- ---------
a1        b1
a2        b2
加密字段是否可见完全依赖于wallet里面的密钥是否解密,把wallet关闭,密钥就无法还原加密信息

3.关闭wallet,查询加密表,返回错误 。

BYS@ bys001>alter system set wallet close identified by "testtest";
System altered.
BYS@ bys001>select * from encry_test;
select * from encry_test
              *
ERROR at line 1:
ORA-28365: wallet is not open
创建后wallet默认是打开状态。
BYS@ bys001>alter system set wallet open identified by "testtest";
System altered.
BYS@ bys001>select * from encry_test;
A         B
--------- ---------
a1        b1
a2        b2

4.对加密列进行logminer日志挖掘

BYS@ bys001>select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
                 2344451
BYS@ bys001>insert into encry_test values('a3','b3');

BYS@ bys001>commit;
BYS@ bys001>select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
                 2344469
记录开始和结束DML操作时的SCN。
BYS@ bys001>select group#,status from v$log;

GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 INACTIVE
         3 CURRENT
BYS@ bys001>col member for a50
BYS@ bys001>select group#,member,type from v$logfile;
    GROUP# MEMBER                                             TYPE
---------- -------------------------------------------------- -------
         3 /u01/app/oracle/oradata/bys001/redo03.log          ONLINE
         2 /u01/app/oracle/oradata/bys001/redo02.log          ONLINE
         1 /u01/app/oracle/oradata/bys001/redo01.log          ONLINE
         1 /u01/app/oracle/oradata/bys001/redo01a.log         ONLINE
BYS@ bys001>execute dbms_logmnr.add_logfile(LogFileName => '/u01/app/oracle/oradata/bys001/redo03.log',Options => dbms_logmnr.new);

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.25
BYS@ bys001>execute dbms_logmnr.start_logmnr(options =>dbms_logmnr.dict_from_online_catalog, startscn =>2344451,endscn =>2344469);
PL/SQL procedure successfully completed.

5.查看logmnr.挖掘出的的SQLREDO信息是被解密过的,是明文

BYS@ bys001>select operation,sql_redo,sql_undo from v$logmnr_contents where table_name='ENCRY_TEST';

OPERATION
--------------------------------
SQL_REDO
----------------------------------------------------------------------------------------------------
SQL_UNDO
----------------------------------------------------------------------------------------------------
INSERT
insert into "BYS"."ENCRY_TEST"("A","B") values ('a3','b3');
delete from "BYS"."ENCRY_TEST" where "A" = 'a3' and "B" = 'b3' and ROWID = 'AAASp8AAEAAAAI3AAC';
BYS@ bys001>alter system set wallet close identified by "testtest";
System altered.

6.关闭wallet钱包,wallet关闭密钥就无法还原加密记录。

此时sql_redo查询的信息已经是加密状态

BYS@ bys001>select operation,sql_redo,sql_undo from v$logmnr_contents where table_name='ENCRY_TEST';

OPERATION
--------------------------------
SQL_REDO
----------------------------------------------------------------------------------------------------
SQL_UNDO
----------------------------------------------------------------------------------------------------
INSERT
insert into "BYS"."ENCRY_TEST"("A","B") values ('a3',HEXTORAW('7b848dfd467dc93a559cfc918f635c2152d0e
2cfa6ad22a9d4562f893b3234ec12586403a2cb8dd346d658660aef6429bfef690f'));
delete from "BYS"."ENCRY_TEST" where "A" = 'a3' and "B" = HEXTORAW('7b848dfd467dc93a559cfc918f635c21
52d0e2cfa6ad22a9d4562f893b3234ec12586403a2cb8dd346d658660aef6429bfef690f') and ROWID = 'AAASp8AAEAAA
AI3AAC';

演示TDE的数据加密示例,并用logminer验证加密效果相关推荐

  1. 演示 wxPreferencesEditor 使用的示例

    演示 wxPreferencesEditor 使用的示例 演示 wxPreferencesEditor 使用的示例 演示 wxPreferencesEditor 使用的示例 #include &quo ...

  2. php接口数据加密、解密、验证签名【转】

    <?php /** * 数据加密,解密,验证签名 * @edit http://www.lai18.com * @date 2015-07-08 **/ //header('Content-Ty ...

  3. c 运算符##_C#程序演示关系运算符的示例

    c 运算符## Relational operators are used to compare the values and returns Boolean values, if condition ...

  4. WebSocket数据加密——AES与RSA混合加密

    前言 之前在写"一套简单的web即时通讯",写到第三版的时候没什么思路,正好微信公众号看到一篇讲API交互加密,于是就自己搞了一套AES与RSA混合加密,无意中产生应用在WebSo ...

  5. 【Android 安全】使用 360 加固宝加固应用 ( 购买高级加固服务 | 设置资源加固 | 设置 SO 文件保护配置 | 设置 SO 防盗用文件配置 | 反编译验证加固效果 )

    文章目录 一. 购买加固服务 二. 设置资源加固 三. 设置 SO 文件保护配置 四. 设置 SO 防盗用文件配置 五. 反编译验证加固效果 本博客用于记录下 360 加固保 加固应用流程 ; ( 上 ...

  6. 【Android 安全】使用 360 加固宝加固应用 ( 加固工具准备 | 生成签名 APK | 加固操作 | 反编译验证加固效果 )

    文章目录 一. 加固工具准备 二. 生成签名 APK 三. 加固操作 四. 反编译验证加固效果 本博客用于记录下 360 加固保 加固应用流程 ; ( 上一次加固还是一年前 , 过程全忘了 o(╥﹏╥ ...

  7. 演示: GTS流量×××和CAR流量监管的效果及相关实践计划

     演示: GTS流量×××和CAR流量监管的效果及相关实践计划 演示目标: 1 理解clock rate(时钟频率)和bandwidth(带宽)与接入速率的关系 2 在模拟运营商的接入路由器ISP上配 ...

  8. 某盾验证加密参数分析——cb,data参数(终篇)

    文章目录 前言 一.cb参数 二.data参数 总结 前言 话不多说,上次易盾未破解的参数最终篇,因为写个博客详单与重新再追一遍,今天抽了空算是交差了. 上篇文章某盾验证加密参数分析--fp参数(一) ...

  9. ORACLE TDE 透明数据加密技术

    从ORALE 10GR2开始出现透明数据加密技术(Transparent Data Encryption,TDE) TDE用来对数据加密,通常 SQL 执行的应用程序逻辑不需要进行更改,仍能正常运行. ...

最新文章

  1. IDEA 一些基本概念
  2. 简单工厂模式,抽象工厂模式,反射工厂模式的代码总结
  3. 程序员该做的事 - 每天、每周、每月
  4. SAP两款CRM产品各方面比较:SAP CRM vs SAP Cloud for Customer
  5. WebView退出时停止视频播放
  6. opencv 手册_有兴趣吗?程序员分手手册,教你如何恢复单身
  7. linux添加开机自启动脚本
  8. 【转载】JSON介绍
  9. CSS3j背景渐变,字体颜色渐变,以及兼容IE写法
  10. 英康手机订单系统APP使用说明
  11. PCB的走线电阻的计算方法
  12. Windows消息大全(转载)
  13. 学习matlab(十四)——GUI
  14. Eclipse WTP (Web Tools Platform)
  15. 医患诚信系统——软件项目的风险
  16. GET /static/js/jquery-3.5.1.min.js HTTP/1.1 200 89476
  17. Linux下ORACLE的/u01空间不足解决办法
  18. 细胞制备流程图_B细胞恶性肿瘤的CAR-T免疫治疗或可出现新进展
  19. 给定连接查询ems配送信息
  20. 容器 服务:metrics-server 安装探索

热门文章

  1. 八戒帮扶v5-1.3.8悬赏平台程序源码下载,打造私域流量池
  2. 小组项目第四、五周:后端数据——模拟炒股系统(2)
  3. STM32F103 从8MHz晶振换到12MHz晶振对应的程序修改
  4. Linux必会100个命令(三十一)scp
  5. 安卓今日头条的框架的搭建
  6. 使用计算机时如果发现计算机频繁读写硬盘,在使用计算机时,如果发现计算机频繁地读写硬盘,可能存在的问题是...
  7. RISC-V MCU移植RTOS系列教程(一)
  8. 手机怎么把PDF转PPT?几个步骤轻松转换
  9. 用python画七巧板_canvas绘制七巧板
  10. php循环控制打印表格隔行变色的两种方法