常见的数据库加密技术对比,Oracle钱包工作原理

网关加密

       在数据库和应用之间,串联网关设备,适用于MySQL数据库

        加解密在网关设备上

 缺点:

     不支持模糊查询和关联条件

     不支持函数运算

     数据量大的情况下,加密的过程会比较长

     设备宕机后,业务受影响

优势:

      部署简单,只需要更改端口和IP指向

      支持国密算法

      密钥与数据独立存储,密钥在加密机中,数据在数据库中

列加密

       视图+触发器+队列,代理模式

       密钥存在加密机中,也会存在数据库中

       加解密过程在数据库中进行,加密机宕机不影响业务

表空间加密

       需要使用插件,依赖于原数据库的状态


对于数据库端的技术,Oracle在10g的时候就推出了TDE(Transparent Data Encryption,透明数据加密)特性。TDE透明数据加密允许用户对各个表列或整个表空间进行加密。当用户向加密的列中插入数据时,透明数据加密会自动对该数据加密。当用户选择该列时,数据将自动解密。选择完毕后,数据将重新加密

透明数据加密在数据库之外的一个安全模块(即,wallet钱夹)中存储主密钥

支持的加密算法为:3DES168、AES128、AES192、AES256。

工作过程:

当用户插入数据到需要加密的列中的时候,Oracle 10g从钱夹中获取master密钥,用master密钥解密数据字典中的表密钥(加密密钥),然后用解密后的表密钥(加密密钥)加密输入数据,再将加密后的数据保存在数据库中。

当用户查询一个加密列的时候,Oracle 将加密的表密钥(加密密钥)从数据字典中取出,再取出master密钥,然后解密表密钥(加密密钥),再用解密后的表密钥(加密密钥)来解密磁盘上加密的数据,最后返回明文给用户。

使用这个技术大概分为如下几步:

(1)创建存放主秘钥的文件夹wallet(主密钥用来加密 加密密钥)

(2)修改 sqlnet.ora配置,在sqlnet.ora文件中指定一个wallet路径

(3)创建主秘钥

(4)开启wallet

(5)创建表空间

(6)如果粒度要更细一些的话,可以对表以及表的字段进行Encryption

wallet密码仅仅是登陆owm或进行wallet时需要输入的密码,而master key是存放在wallet中,用于加密解密数据库的加密列或加密表空间。

另外还有一个表密钥,如果一个表有多个列需要进行加密,那么在该表上也只会生成一个表级密钥,当前段用户从该表中取回数据时,会首先取出表密钥然后再取出存在wallet中的master key进行对表密钥的解密,最后用解密后的表密钥去解密加密的列或表空间数据,最终返回明文数据给用户。

 

你可能感兴趣的:(数据安全,oracle,数据库架构,系统安全)