此文档着重强调数据库方面
行加密处理。这种加密方法简单快捷,只需对相应数据库文件进行加密处理即可,对于企业或者用户简单的备份整个数据库,可以采取这种操作方便加密粒度。但是,使用中的数据库如果采用这种方法则会非常不合适,因为数据库中的数据共享性高,会同时被多个用户和应用访问使用,即使只需要查询一条记录,也需要对整个数据库进行解密,对系统性能会产生极大的影响。 ●数据库的表级加密
安全数据库将表分成两大类,含加密字段的表和不含加密字段的表。对于加密的数据表则整个块加密,否则不加密,且每块使用一个密钥。安全数据库中,如果一个表中存放敏感数据,那么这个表的每一个页面的数据域在内存中是明文,在外存中是密文。
表级加密的对象是数据库中的表。与数据库级加密比较,采用表级加密粒度,系统的查询性能会有所改善,因为对于未加密表的查询,与传统查询方法一样,系统性能不会受到影响,对于加密表的查询,只需要解密对应的加密表,而不要解密整个数据库。在实行表级加密时,可以采用对存储数据的磁盘块(页面)进行加密。
当*将内存中的数据写出到外存中时,首先查询安全字典,如果需要加密存储,则用安全字典中当前密钥加密。在将数据从外存读入内存后,如果页头标识页面是加密过的,则取出相应的密钥解密。加密时,只加密页面中的数据域。解密时,当数据块从外存读入内存时,如果页头标识页面是加密过的,则从安全字典中取出相应的密钥解密数据域。
和对整个数据库加密一样,对数据库进行表级加密实现方法简单,但是加密的粒度较粗,一张表中会含有大量不需要加密的数据,把不需要加密的数据进行加密,会导致不必要的性能损失。
●数据库的字段级加密
*以一种可插拔的方式扩展用于支持多种加密算法(如:MD5等)的数据类型,用于实现对字段级的数据加密,将加密的字段从原始的数据中分离出来,单独存放。按照此种处理方案,同一个表中的明文密文存放在不同的文件或页面中。每个被加密后的字段数据块都作为独立的行在数据库加密库表里为所属主表存储。加密库表提供相应的索引对数值的快速检索。通过加密算法加密过的大体积数据只是在把结果集发送给客户端的时候才抽出来。因此,加密字段对应的主表要小得多,并且它的大部分行都存储在共享缓冲区里,因此就可以不需要任何线外存储。
对数据库进行字段加密不需要对所有的数据进行加密,加密的粒度更小,对于不需要访问到的记录,完全不需要进行任何操作,所以使用起来效率会高一些。但是由于每一个字段都