根据数据库按数据组织方式划分的诸多种类,加密方法可以粗略地分为3种,即库外加密、库内加密以及硬件加密。

一、库外加密

对于依赖于操作系统进行数据管理(包括文件管理)的数据管理系统来说,库外加密是大多数数据库管理系统采取的策略。数据库管理系统一般可以通过3个层面的API获取操作系统在数据管理和树访问处理等方面的支持:

1、直接调用操作系统文件系统功能。即最常见的一种方式。

2、直接调用操作系统的I/O模块。

3、直接调用操作系统的存储管理。

例如:可以直接存取访问磁盘的物理柱面、磁道以及扇区,实际上是绕过了操作系统的文件系统管理功能。后两种方式一般是为了追求效率的目标,但是往往要增加许多数据共享方面的难度。

3种方式都可以在数据库外对数据进行加密处理,然后纳入数据库管理系统。实际上是首先

1、在文件系统内对文件加密,形成数据存储块后,通过文件系统一次一个加密分组地进行存人或取出操作;

2、加密后存入文件,从文件取出后进行解密;

3、交给数据库管理系统继续处理。

文件系统和DBMS交换信息主要是块号。数据库管理系统DBMS通过文件系统管理这些加密分组,必要的参数还包括块的长度、块号、块头标志信息域、块尾信息等。原则上讲,库外加密的数据库管理系统可以基本不变,因为文件系统交给数据库管理系统的数据组织方式基本未变。库外加密方式的优点是:对数据库管理系统DBMS的特殊要求比较少,实现上只要增加一个中间层次负责加密解密数据即可。

相对于其他方法,密钥的管理也简单得多,与操作系统内部文件加密的密钥管理基本相同。但是,由于数据在查找时必须全部进行解密操作,因此,往往需要付出较大的时空代价。

此外,在实现数据完整性约束条件时,数据字典中的数据和数据库内的数据的同步问题也需要付出额外的代价,必须在算法或系统内部处理上加以安排。

二、库内加密

经典的数据库系统将内部结构划分为3层,即存储模式、内模式和外模式。

1、存储模式负责描述数据的物理结构;

2、内模式描述数据的全局逻辑结构;

3、外模式又称子模式,负责描述数据的局部逻辑结构。

从3模式结构出发考虑数据库数据加密问题的核心就是在树据的各个层次的映射过程中增加一个加密映射层次,或者称之为加密模式。加密映射层次位于内模式和存储模式之间为好。加密单位或者粒度可以是表、纪录、域或数据元素。

显然所选择的加密粒度的粒度越精细,需要掌管的加密密钥的数量就愈大,密钥管理的难度和复杂性就越高,但是由于加密解密的粒度细化,加密解密的针对性比库外加密方式更强,所以原则上讲时空效率应当是比较好的,而且由于是在数据库管理系统内部实现的,所以和数据存取访问控制机制、授权机制等数据库安全机制的结合比较有效,效率比较高。

三、硬件加密

对数据库而言,硬件加密主要解决静态数据的加密问题。不论哪种加密方式,均可以用硬件加密的方式加以实现。

小知识之数据库管理系统:

数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。