介绍

Oracle 10g R2提供了一个新的特性,让你只需要做如下动作:你可以不写一行代码,只需要声明你需要加密某列。当用户插入数据的时候,数据库透明的加密数据然后存储加密后的数据。同样的,当用户读取数据时,数据库自动进行解密。由于加解密操作对应用程序来说都是透明的,不需要应用程序修改代码,因此这个特性就叫做:透明数据加密(TDE)。

简单来说默认不对数据进行TDE加密,数据库中的某些敏感数据是直接可以在操作系统层面进行读取的,方法不进行阐述。

10gR2 可以对指定列进行加密,11g还可以对表空间进行加密。

配置TDE

制定master密钥存放位置(位置TNS_ADMIN变量为准)

vi  $ORACLE_HOME/network/admin/sqlnet.ora

添加如下参数

ENCRYPTION_WALLET_LOCATION=

(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY= /home/oracle/app/oracle/admin/orcl/wallet)))

Oracle用户手动创建wallet文件夹

mkdir /home/oracle/app/oracle/admin/orcl/wallet

否则报错ORA-28368: cannot auto-create wallet

创建wallet并在其中装入master密钥

SQL> alter system set key identified by "oracle";

System altered.

在$ORACLE_BASE/admin/sid/wallet文件夹中生成密钥文件

ewallet.p12

创建wallet后,它将保持打开状态,直到将其关闭,或者重启数据库。

可以检查wallet的状态

col wrl_type format a7

col wrl_parameter format a55

select wrl_type,wrl_parameter,status from gv$encryption_wallet;

WRL_TYP WRL_PARAMETER

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

STATUS

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

file    /home/oracle/app/oracle/admin/orcl/wallet

OPEN

手动打开wallet,打开是需要密码的

alter system set encryption wallet open identified by  "oracle";

也就是说数据库每次重启都需要安全管理专员手动打开wallet,否则加密数据无法读写。

当然也可以设置自动登录wallet,但是建议在开发或者测试阶段进行。

打开自动登录的方法通过Oracle wallet Manager

运行owm命令打开图形界面,

打开现有wallet(找到master密钥存放路径)

打开自动登录

在master密钥存放路径中生成一个文件cwallet.sso。

关闭wallet

可以通过手动关闭wallet

alter system set wallet close;

注意10g关闭不需要wallet口令,如果wallet被关闭,所有的加密解密将自动终止。

11g 关闭需要wallet口令,语法如下,否则提示ORA-28390: auto login wallet not open but encryption wallet may be open

alter system set wallet close identified by "oracle";

另外,如果设置自动登录11g环境下执行关闭命令不需要输入密码

SQL> alter system set wallet close;

可以执行成功,但是查询gv$encryption_wallet视图,状态依然是OPEN,而不是closed。

此时查询依然可以查询加密内容。

TDE的密钥管理

在对表进行加密时,TDE为每个包含加密字段的表都生成相应的密钥,而不是所有的表都使用相同的密钥。

TDE使用对称密钥技术进行数据加密和解密,性能高。

对于表空间的密钥是存储在数据字典中,前提是它首先使用master密钥对所有的表密钥进行加密。

新表创建加密列

create table ( encrypt [algorithm] [nomac] [no salt]);

[algorithm] 加密算法

[nomac] 10.2.0.4才开始有的参数当加密一个列需要额外的20字节存储密文时,将会生成一个消息验证码。

[no salt]) salt通过在明文中插入某个随机值(在TED中为一个16字节的值)能够有效的增强加密算法的强度,避免对加密数据的“明文"攻击。

create table foo (columnA dataype,columnB dataype encrypt);

该句默认使用192为子长密钥的AES加密算法,使用salt以及一个20位的mac。当然,如果希望某列上用索引,最好不要在其上加入salt。

查看加密列

select owner,table_name,column_name,encryption_alg,salt from dba_encrypted_columns;

对现有列进行加密

alter table modify  ( encrypt ['nomac'] [no salt]);

如果数据量比较大,直接对列加密会增加cpu和存储负载,因此可以考虑使用在线重定义的形式重新组织表。(不赘述)

TDE列加密弊端

使用数据修改捕获(无论同步还是异步)、流、物化视图、透明表空间、LOB就不能用了,随着11G 引入表空间加密,这一问题得到解决。

加密的列如果使用了 salt,则无法在上面创建索引。

因为索引存储的是加密后的值,所以即使不使用salt 也只可以使用基于等式匹配的查询,对于范围查询也无能为力。

因为不同表密钥不同,因此除非事先解密数据,否则无法发现PK/FK的关系定义。

表空间加密

表空间加密,其中的所有存储内容都会进行加密。

create tablespace ts_encrypted datafile  '/home/oracle/app/oracle/oradata/ORCL/datafile/ts_encrypted _d08ww9lb_.dbf' size 100m autoextend on encryption using 'AES192' default  storage(encrypt);

查询表空间加密

select ts.name,et.encryptedts,et.encryptionalg from v$tablespace ts,v$encrypted_tablespaces et where ts.ts#=et.ts#;

列级别加密步骤

1确定待加密的列

2确定tde都能够支持此数据类型

3确定在该列上不存在索引

4确定改了不属于某个PK/FK关系

5对列进行加密

6重新组织表或在线重定义

表空间加密步骤

1确定含有敏感数据的列表

2创建一个新的加密表空间

3使用alert table customer move tablespace encrypted_customer ;将表移动到新表空间。

4索引需要重建,例如:

alter table tde_table1_index1 rebuild tablespace encryptedtbs;

5将表从加密的表空间move到普通表空间,就完成了解密。

11g表空间级透明数据加密的功能提升

相对于10g版本的列级TDE,表空间级TDE提供了更多的灵活性和更好的性能。

下列表格是10g列级TDE和11g 表空间级TDE的比较。

列级TDE

表空间级TDE

加密完成在

PGA

Data Block层

在SGA中加密数据的状态

加密的

解密的

支持的索引类型

只支持b-tree索引

支持所有类型索引

支持外键?

不知道外键加密(因为不同的表用不通的key)

支持外键

支持的索引search方式

支持等值search,不知道范围扫描

支持所有类型的search

支持的数据类型

部分

所有

执行计划是否改变

可能

不改变

是否需要增加存储的占用

对其他产品的支持

TDE支持Dataguard,

TDE不支持传统导出导入exp/imp

TDE支持expdp/impdp,可以直接导出,但是会提示ORA-39173 encryptd data has been stored unencrypted in dump file set ,表时是明文方式存储在DUMP文件中,可以直接导入。

为了保证导出DUMP的安全也可以在导出时使用 ENCRYPTION_PASSWORD参数来对备份文件设置加密口令,导入时只有提供口令密码才能导入数据。

oracle12c加密ted,Oracle数据透明加密-TDE相关推荐

  1. [重庆思庄每日技术分享]-oracle 12c透明加密

    1.查找WALLET的目录 sql>CT WRL_TYPE,WRL_PARAMETER,STATUS,WALLET_TYPE FROM V$ENCRYPTION_WALLET; FILE     ...

  2. oracle实现sha加密解密,oracle部分字段加密解密 实现模糊搜索

    数据库部分字段加密 实现该字段模糊查询 解决方案:从数据库层面 对改字段进行解密 是目前最为方便的 而oracle可以支持将java类带入到oracle从而调用对应的方法. 基本步骤: 编写好对应的加 ...

  3. 一文读懂十大数据存储加密技术

    数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出.密码技术,是实现数据安全最经济.最有效.最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环境中实现对数据的强访问控制, ...

  4. 深入解析数据库透明加密技术

    关注公众号"数安烂笔头"并回复 "标准",可获取数据安全相关标准.报告.白皮书 集合链接 目录 前置加密方式 中置加密方式 数据列加密方式 表空间加密 后置加密 ...

  5. 如何设计云存储服务端数据存储加密机制

    云存储是一种新型的网络存储形式.随着云存储的广泛使用,云存储中的数据安全问题,如数据泄漏.数据篡改,如何设计云存储服务端数据存储加密机制也成了用户广泛关注的问题.云存储可以分为访问层.应用接口层.基础 ...

  6. 透明加密系统设计及实现-绪论

    随着信息时代的到来,计算机成为了人们日常生活的必备之物.大量的桌面计算机和移动终端设备给人们带来了极大的方便,但是也增加的个人的机密信息泄密的可能性.特别是对于机密部门的机密资料和企业公司的核心技术等 ...

  7. 数据保密-第三代透明加密技术

    透明加密技术是近年来针对企业数据保密需求应运而生的一种数据加密技术.所谓透明,是指对使用者来说是透明的,感觉不到加密存在,当使用者在打开或编辑指定文件时,系统将自动对加密的数据进行解密,让使用者看到的 ...

  8. 透明加密软件如何实现数据加密?

    <围城>中有句话是这样说的:"城外的人想冲进去,城里的人想逃出来."其实这句话用来形容数据泄露的途径也很贴切--黑客想窃取,内鬼想售卖.针对这两种途径,透明加密软件做出 ...

  9. 透明加密软件技术优势在哪

    信息时代不断发展,各种信息都是飞快的传播开来,信息安全问题是人们越来越注重的问题,企业建立服务器,加密软件来对企业文件,重要信息来加密,对比与个人隐私,很久之前的XX门事件,都是因为个人隐私保护出现问 ...

最新文章

  1. Microsoft Visual C++ 14.0 is required解决方法
  2. php ajax实现查询功能,ajax实现分页查询功能
  3. 【资料下载区】【iCore、 iCore2相关资料】更新日期2017/1/11
  4. 网络流sap需要注意的地方
  5. touch无法创建文件或者文档
  6. 2021.01.04
  7. 七牛2015结姻大典,约吗?
  8. 今天进行的将zzb从apache迁移到nginx
  9. Redraiment的走法
  10. libtorrent编译
  11. python有道云笔记_Python自动同步有道云笔记到Hexo
  12. web开发框架_Web开发的十大框架
  13. 打开计算机出现服务器运行失败,win7打开Windows Media Player听歌提示“服务器运行失败”怎么办...
  14. 整理 :11个搭讪绝招助你告别单身
  15. 速率法和终点法的区别_两点法终点法速率法
  16. 使用 natbib 进行参考文献管理
  17. IOS开发者证书配置和安装。。。
  18. JavaScript之childNodes 和 children 区别
  19. 酒店管理系统的需求分析
  20. 凡客登录页面html代码,凡客.html

热门文章

  1. 雷丁CAN通讯信号上位机,比德文,宝路达,看通讯报文,查故障,灰常方便实用
  2. 使用git push命令提交更改报错 fatal: unable to access ‘http://github.com/xxxxxx/‘: OpenSSL SSL_read: Connection
  3. busybox | 更改安装目录为/usr/local/bin
  4. 数据结构/栈实现队列
  5. 几大网络电话网站用户体验评测
  6. Taro vs uni-app选型对比经历
  7. 【SeedLab】BGP Exploration and Attack Lab
  8. win10蓝屏的解决方法
  9. Globus INK 内部:欣赏下用于苏联航天的机械导航计算机
  10. 女演员娜扎出游内裤“外露”被指低俗 本人回应:不觉得穿得有问题