演示TDE的数据加密示例,并用logminer验证加密效果
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验证加密效果相关推荐
- 演示 wxPreferencesEditor 使用的示例
演示 wxPreferencesEditor 使用的示例 演示 wxPreferencesEditor 使用的示例 演示 wxPreferencesEditor 使用的示例 #include &quo ...
- php接口数据加密、解密、验证签名【转】
<?php /** * 数据加密,解密,验证签名 * @edit http://www.lai18.com * @date 2015-07-08 **/ //header('Content-Ty ...
- c 运算符##_C#程序演示关系运算符的示例
c 运算符## Relational operators are used to compare the values and returns Boolean values, if condition ...
- WebSocket数据加密——AES与RSA混合加密
前言 之前在写"一套简单的web即时通讯",写到第三版的时候没什么思路,正好微信公众号看到一篇讲API交互加密,于是就自己搞了一套AES与RSA混合加密,无意中产生应用在WebSo ...
- 【Android 安全】使用 360 加固宝加固应用 ( 购买高级加固服务 | 设置资源加固 | 设置 SO 文件保护配置 | 设置 SO 防盗用文件配置 | 反编译验证加固效果 )
文章目录 一. 购买加固服务 二. 设置资源加固 三. 设置 SO 文件保护配置 四. 设置 SO 防盗用文件配置 五. 反编译验证加固效果 本博客用于记录下 360 加固保 加固应用流程 ; ( 上 ...
- 【Android 安全】使用 360 加固宝加固应用 ( 加固工具准备 | 生成签名 APK | 加固操作 | 反编译验证加固效果 )
文章目录 一. 加固工具准备 二. 生成签名 APK 三. 加固操作 四. 反编译验证加固效果 本博客用于记录下 360 加固保 加固应用流程 ; ( 上一次加固还是一年前 , 过程全忘了 o(╥﹏╥ ...
- 演示: GTS流量×××和CAR流量监管的效果及相关实践计划
演示: GTS流量×××和CAR流量监管的效果及相关实践计划 演示目标: 1 理解clock rate(时钟频率)和bandwidth(带宽)与接入速率的关系 2 在模拟运营商的接入路由器ISP上配 ...
- 某盾验证加密参数分析——cb,data参数(终篇)
文章目录 前言 一.cb参数 二.data参数 总结 前言 话不多说,上次易盾未破解的参数最终篇,因为写个博客详单与重新再追一遍,今天抽了空算是交差了. 上篇文章某盾验证加密参数分析--fp参数(一) ...
- ORACLE TDE 透明数据加密技术
从ORALE 10GR2开始出现透明数据加密技术(Transparent Data Encryption,TDE) TDE用来对数据加密,通常 SQL 执行的应用程序逻辑不需要进行更改,仍能正常运行. ...
最新文章
- IDEA 一些基本概念
- 简单工厂模式,抽象工厂模式,反射工厂模式的代码总结
- 程序员该做的事 - 每天、每周、每月
- SAP两款CRM产品各方面比较:SAP CRM vs SAP Cloud for Customer
- WebView退出时停止视频播放
- opencv 手册_有兴趣吗?程序员分手手册,教你如何恢复单身
- linux添加开机自启动脚本
- 【转载】JSON介绍
- CSS3j背景渐变,字体颜色渐变,以及兼容IE写法
- 英康手机订单系统APP使用说明
- PCB的走线电阻的计算方法
- Windows消息大全(转载)
- 学习matlab(十四)——GUI
- Eclipse WTP (Web Tools Platform)
- 医患诚信系统——软件项目的风险
- GET /static/js/jquery-3.5.1.min.js HTTP/1.1 200 89476
- Linux下ORACLE的/u01空间不足解决办法
- 细胞制备流程图_B细胞恶性肿瘤的CAR-T免疫治疗或可出现新进展
- 给定连接查询ems配送信息
- 容器 服务:metrics-server 安装探索
热门文章
- 八戒帮扶v5-1.3.8悬赏平台程序源码下载,打造私域流量池
- 小组项目第四、五周:后端数据——模拟炒股系统(2)
- STM32F103 从8MHz晶振换到12MHz晶振对应的程序修改
- Linux必会100个命令(三十一)scp
- 安卓今日头条的框架的搭建
- 使用计算机时如果发现计算机频繁读写硬盘,在使用计算机时,如果发现计算机频繁地读写硬盘,可能存在的问题是...
- RISC-V MCU移植RTOS系列教程(一)
- 手机怎么把PDF转PPT?几个步骤轻松转换
- 用python画七巧板_canvas绘制七巧板
- php循环控制打印表格隔行变色的两种方法