常见的数据库加密技术对比,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进行对表密钥的解密,最后用解密后的表密钥去解密加密的列或表空间数据,最终返回明文数据给用户。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷雨之际

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值