信息安全的核心是数据库的安全,对数据库中数据加密是为增强普通关系数据库管理系统的安全性,提供一个安全适用的数据库加密平台,对数据库存储的内容实施有效保护。它通过数据库存储加密等安全方法实现了数据库数据存储保密和完整性要求,使得数据库以密文方式存储并在密态方式下工作,确保了数据安全。
根据文件型数据库的特点,数据库的加密一般可以有三种方式:
库内加密
如果从关系型数据库的各个方面出发,很容易形成库内加密的思想。关系型数据库的关键术语有:表、字段、行和数据元素。基本上可以针对这几方面形成一种加密的方法。
(1)以表为单位:对于文件型数据库来说,一个文件只有一张表,因而对表的加密可以说是对文件的加密了。对过更改文件分配表(FAT)中的说明等手段可以实现对文件的简单加密,但这种加密方式涉及到文件系统底层,误操作容易造成FAT混乱,而且与文件系统格式有关,因而通常不宜采用。
(2)以记录或字段(即二维表的行或列)为单位加密:通常情况下,我们访问数据库时都是以二维表方式进行的,二维表的每一行就是数据库的一条记录,二维表的每一列就是数据库的一个字段。如果以记录为单位进行加密,那么每读写一条记录只需进行一次加解密的操作,对于不需要访问到的记录,完全不需要进行任何操作,所以使用起来效率会高一些。但是由于每一个记录都必须有一个密钥与之匹配,因此产生和管理记录密钥比较复杂。以字段为单位的加密分析与以记录为单位的加密情况相似。
(3)以数据元素为单位加密:由于数据元素是数据库库内加密的最小单位,因而这种加密方式最彻底的但也是效率最低的。每个被加密的元素会有一个相应的密钥,所以密钥的产生和管理比记录加密方式还要复杂。
库外加密
考虑到文件型数据库系统是基于文件系统的,因而库外加密的办法,应该针对文件IO操作或操作系统而言的,因为数据库管理系统与操作系统的接口方式有三种:一是直接利用文件系统的功能;二是利用操作系统的I/O模块;三是直接调用存储管理。所以在采用库外加密的方法时,可以将数据先在内存中使用DES、RSA等方法进行加密,然后文件系统把每次加密后的内存数据写入到数据库文件中去(注意是把整个数据库普通的文件看待,而不是按数据关系写入),读入时再逆方面进行解密就可以正常使用了。这种加密方法相对简单,只要妥善管理密钥就可以了。缺点对数据库的读写都比较麻烦,每次都要进行加解密的工作,对程序的编写和读写数据库的速度都会有影响。
硬件加密
硬件加密主要是相对于软件加密的,是指在物理存储器与数据库系统之间加上一层硬件作为中间层,加密和解密的工作都由添加的硬件完成。不过由于添加的硬件与原计算机硬件之间可能存在着兼容问题,还有在进行控制读写的时候存在着繁琐的设置,所以这种应用起来也不会太广泛。