Oracle Transparent Data Encryption - 透明数据加密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Oracle的透明数据加密,是Oracle高级安全选项中的一个部分,需要额外支付软件费用。这一选项,可以结合多种手段进行加密,包括使用Wallet(PKCS#12标准)以及支持PKCS#11 RAS硬件设备。
Oracle的透明数据加密,是Oracle高级安全选项中的一个部分,需要额外支付软件费用。
这一选项,可以结合多种手段进行加密,包括使用Wallet(PKCS#12标准)以及支持PKCS#11 RAS硬件设备。
在10g中,透明加密支持基于列级的加密,而在Oracle 11gR2中,增加了基于表空间的透明加密。

以下是官方文档中关于 加密解密 的流程图:


以下是一个简单测试。

首先在SQLNET.ora文件中增加如下一段:
ENCRYPTION_WALLET_LOCATION=
  (SOURCE=(METHOD=FILE)(METHOD_DATA=
    (DIRECTORY=D:\Oracle\11.2.0\NETWORK\ADMIN\encryption_wallet\)))

在SQL*Plus中创建Wallet密钥:
SQL> connect / as sysdba
Connected.
SQL> alter system set encryption key authenticated by "eygle";

System altered.

关闭和打开Wallet:
SQL> alter system set encryption wallet close;
alter system set encryption wallet close
*
ERROR at line 1:
ORA-28390: auto login wallet not open


SQL> alter system set encryption wallet close identified by "eygle";

System altered.

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

System altered.

在创建数据表时可以指定加密:
SQL> connect eygle/eygle
Connected.
SQL> create table tde (id number(10),data varchar2(50) encrypt);

Table created.

SQL> insert into tde select user_id,username from dba_users;

9 rows created.

SQL> commit;

Commit complete.

SQL> connect / as sysdba
Connected.
SQL> select * from eygle.tde;

        ID DATA
---------- --------------------------------------------------
         0 SYS
         5 SYSTEM
        34 EYGLE
         9 OUTLN
        31 APPQOSSYS
        30 DBSNMP
        32 WMSYS
        14 DIP
        21 ORACLE_OCM

加密和解密是自动进行的。

查询dba_encrypted_columns视图可以找到加密列:
SQL> select * from dba_encrypted_columns;

OWNER      TABLE_NAME      COLUMN_NAME          ENCRYPTION_ALG                SAL INTEGRITY_AL
---------- --------------- -------------------- ----------------------------- --- ------------
EYGLE      TDE             DATA                 AES 192 bits key              YES SHA-1

如果关闭Wallet,则加密列不可访问:
SQL> select * from eygle.tde;
select * from eygle.tde
                    *
ERROR at line 1:
ORA-28365: wallet is not open

SQL> alter system set encryption wallet close identified by "eygle";

System altered.

SQL> select * from eygle.tde;
select * from eygle.tde
                    *
ERROR at line 1:
ORA-28365: wallet is not open


SQL> desc eygle.tde
 Name                                                              Null?    Type
 ----------------------------------------------------------------- -------- -------------------------------
 ID                                                                         NUMBER(10)
 DATA                                                                       VARCHAR2(50) ENCRYPT

SQL> select id from eygle.tde;

        ID
----------
         0
         5
        34
         9
        31
        30
        32
        14
        21

9 rows selected.

在加密列时,存在两个选项:Salt和No Salt。
Salt在加密前对数据增加随即字符串,增加破解的难度,使得同样的字符串加密结果不同;而对于NO Salt,则同样字符串可以获得同样的加密输出,其安全性相对略低。

在加密列上,如果使用Salt方式,则不能创建索引,Salt加密和索引两种属性互斥,不能同时设置:
SQL> create index idx01 on tde(data);
create index idx01 on tde(data)
                          *
ERROR at line 1:
ORA-28338: Column(s) cannot be both indexed and encrypted with salt
当使用缺省Salt方式加密时,此时允许对于加密列创建索引:
SQL> create table tde2 (id number(10) encrypt no salt,data varchar2(50) );

Table created.

SQL> insert into tde2 select user_id,username from dba_users;

9 rows created.

SQL> select * from tde2;

        ID DATA
---------- --------------------------------------------------
         0 SYS
         5 SYSTEM
        34 EYGLE
         9 OUTLN
        31 APPQOSSYS
        30 DBSNMP
        32 WMSYS
        14 DIP
        21 ORACLE_OCM

9 rows selected.

SQL> commit;

Commit complete.

SQL> create index idx1 on tde2(id);

Index created.
当执行导出时,Oracle会给出提示:
D:\>expdp eygle/eygle directory=temp dumpfile=tde2.dmp tables=TDE

Export: Release 11.2.0.2.0 - Production on Thu Sep 8 15:35:19 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "EYGLE"."SYS_EXPORT_TABLE_01":  eygle/******** directory=temp dumpfile=tde2.dmp tables=TDE
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "EYGLE"."TDE"                               5.562 KB       9 rows
ORA-39173: Encrypted data has been stored unencrypted in dump file set.
Master table "EYGLE"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for EYGLE.SYS_EXPORT_TABLE_01 is:
  D:\TEMP\TDE2.DMP
Job "EYGLE"."SYS_EXPORT_TABLE_01" completed with 1 error(s) at 15:35:23

提示表明,加密数据在转储文件中,以非加密方式存储,但是当执行导入时,需要存在加密Wallet才能够执行导入,否则将会出现ORA-28362的异常。
目录
相关文章
|
3月前
|
算法 安全 搜索推荐
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
|
3月前
|
SQL Oracle 关系型数据库
关系型数据库Oracle Data Guard
【7月更文挑战第11天】
27 1
|
3月前
|
Oracle 关系型数据库 数据库
|
3月前
|
SQL 监控 Oracle
关系型数据库Oracle 的Data Guard:
【7月更文挑战第7天】
33 3
|
11月前
|
Oracle 关系型数据库
Oracle 中data与timstamp互转
Oracle 中data与timstamp互转
|
10月前
|
数据安全/隐私保护
ACK Acknowledgement 确认 AES Advanced Encryption Standard 高级加密标准 ATM Asynchronous Transfer Mode异步传输模式
ACK Acknowledgement 确认 AES Advanced Encryption Standard 高级加密标准 ATM Asynchronous Transfer Mode异步传输模式
36 0
|
存储 Oracle Java
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
|
算法 大数据 数据安全/隐私保护
RSA加密:javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes
RSA加密:javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes
474 0
|
算法 网络安全 数据库
MD5 Encryption Of String ( UTF-8 ) / UE4 MD5 加密
MD5 Encryption Of String ( UTF-8 ) / UE4 MD5 加密
268 0
|
运维 Oracle 关系型数据库
【大数据开发运维解决方案】Oracle Data Redaction数据加密测试
最近有个做Java开发的网友问我,怎么在Oracle进行数据加密呢?我给他推荐了Data Redaction。Oracle Database 12c中加入了Data Redaction这个新的安全特性。当然在11g的Database Advanced Security Administrator’s Guide官方文档中就介绍了。
【大数据开发运维解决方案】Oracle Data Redaction数据加密测试