• 数据加密


    首先需要确定你需要加密的列,Oracle 10g数据库将为包含加密列的表创建一个私密的安全加密密钥(表秘钥),

    然后采用你指定的加密算法(AES或3DES)加密指定列的明文数据。此时,保护表的加密密钥(表密钥)就非常重要了。

    Oracle 10g通过一个master密钥来对表密钥进行加密。master密钥保存在一个叫做“钱夹(wallet)”的安全的地方,

    钱夹可以是数据库服务器上的一个文件,加密的表密钥保存在数据字典中。

     

    当用户插入数据到需要加密的列中的时候,Oracle 10g从钱夹中获取master密钥,用master密钥解密数据字典中的表密钥,

    然后用解密后的表密钥加密输入数据,再将加密后的数据保存在数据库中。如下图所示:

    你可以加密表的部分或者所有列,例如一个表有4列,如上图所示,第2列和第3列被加密,但Oracle只会生成

    一个表级的加密密钥,然后用这个密钥加密所有的加密列。在磁盘上,第1列和第4列是明文存储的,第2列和第3列是

    加密存储的。由于数据是加密存储的,所有后续的组建例如备份和归档日志,都是加密的格式。

    当用户查询一个加密列的时候,Oracle 10g透明的将加密的表密钥从数据字典中取出,再取出master密钥,

    然后解密表密钥,再用解密后的表密钥来解密磁盘上加密的数据,最后返回明文给用户。

    通过这种加密数据的方式,即使保存在磁盘上的数据被盗,由于master密钥并没有被盗,没有master密钥的情况下,

    数据无法被获取。即使“钱夹(wallet)”被盗,如果没有钱夹密码master密钥还是无法获取。因此,即使窃贼盗取了

    磁盘或者数据文件的拷贝,也无法解密数据。这样做满足了很多规则和指南的要求,而所有的这些并不需要修改应用程序或

    者编写复杂的加密和密钥管理系统。

    注意:

    • TDE涉及3个密码,一个是钱夹密码,用来启动钱夹;一个是master密钥,用来加解密表密钥;一个是表密钥,用来加解密数据,钱夹密码是用户手工输入的,master密钥和表密钥是系统管理的
    • 目前只有Oracle和微软的SQL Server支持TDE
  • 相关阅读:
    一些零碎小知识点积累随笔
    STM32学习笔记——新建工程模板步骤(向原子哥学习)
    记一次电信反射xss的挖掘与利用
    mysql字符串操作相关函数用法总结
    mysql学习笔记
    sigmoid function的直观解释
    多变量线性回归时使用梯度下降(Gradient Descent)求最小值的注意事项
    SAE中Python无法创建多线程的解决方案
    BCNF/3NF 数据库设计范式简介
    web.py下获取get参数
  • 原文地址:https://www.cnblogs.com/tdcqma/p/6307511.html
Copyright © 2020-2023  润新知