不同层次实现数据库加密
我们可以考虑在三个不同层次实现对数据库数据的加密,这三个层次分别是OS、DBMS内核层和DBMS外层。
在OS层,无法辨认数据库文件中的数据关系,从而无法产生合理的密钥,也无法进行合理的密钥管理和使用。所以,在OS层对数据库文件进行加密,对于大型数据库来说,目前还难以实现。
在DBMS内核层实现加密,是指数据在物理存取之前完成加/脱密工作。这种方式势必造成DBMS和加密器(硬件或软件)之间的接口需要DBMS 开发商的支持。这种加密方式的优点是加密功能强,并且加密功能几乎不会影响DBMS 的功能。其缺点是在服务器端进行加/脱密运算,加重了数据库服务器的负载。这种加密方式如图1所示。
比较实际的做法是将数据库加密系统做成DBMS的一个外层工具(如图2所示)。采用这种加密方式时,加/脱密运算可以放在客户端进行,其优点是不会加重数据库服务器的负载并可实现网上传输加密,缺点是加密功能会受一些限制。图中,“定义加密要求工具”模块的主要功能是定义如何对每个数据库表数据进行加密。在创建了一个数据库表后,通过这一工具对该表进行定义;“数据库应用系统”的功能是完成数据库定义和操作。数据库加密系统将根据加密要求自动完成对数据库数据的加/ 脱密。
加密系统的有关问题
数据库加密系统首先要解决系统本身的安全性和可靠性问题,在这方面,可以采用以下几项安全措施:
1. 在用户进入系统时进行两级安全控制
这种控制可以采用多种方式,包括设置数据库用户名和口令,或者利用IC卡读写器/指纹识别器进行用户身份认证。
2. 防止非法拷贝
对于纯软件系统,可以采用软指纹技术防止非法拷贝,当然,如果每台客户机上都安装加密卡等硬部件,安全性会更好。此外,还应该保留数据库原有的安全措施,如权限控制、备份/恢复和审计控制等。
3. 安全的数据抽取方式
提供两种卸出和装入数据库中加密数据的方式:其一是密文方式卸出,这种卸出方式不脱密,卸出的数据还是密文,在这种模式下,可直接使用 DBMS提供的卸出/装入工具;其二是明文方式卸出,这种卸出方式需要脱密,卸出的数据是明文,在这种模式下,可利用系统专用工具先进行数据转换,再使用DBMS提供的卸出/装入工具完成。
系统结构
数据库加密系统分成两个功能独立的主要部件:一个是加密字典管理程序,另一个是数据库加/脱密引擎,体系结构如图3所示。
数据库加密系统将用户对数据库信息具体的加密要求记载在加密字典中,加密字典是数据库加密系统的基础信息。
加密字典管理程序,是管理加密字典的实用程序,是数据库管理员变更加密要求的工具。
加密字典管理程序通过数据库加/脱密引擎实现对数据库表的加密、脱密及数据转换等功能,此时,它作为一个特殊客户来使用数据库加/脱密引擎。
数据库加/脱密引擎是数据库加密系统的核心部件,负责在后台完成数据库信息的加/脱密处理,对应用开发人员和操作人员是透明的。
按以上方式实现的数据库加密系统具有很多优点。首先,系统对数据库的最终用户完全透明,数据管理员可以指定需要加密的数据并根据需要进行明文/密文的转换工作;其次,系统完全独立于数据库应用系统,不需要改动数据库应用系统就能实现加密功能,同时系统采用了分组加密法和二级密钥管理,实现了“一次一密”;其三,系统在客户端进行数据加/脱密运算,不会影响数据库服务器的系统效率,数据加/脱密运算基本无延迟感觉。
数据库加密系统能够有效地保证数据的安全,即使黑客窃取了关键数据,他仍然难以得到所需的信息,因为所有的数据都经过了加密。另外,数据库加密以后,可以设定不需要了解数据内容的系统管理员不能见到明文,大大提高了关键数据的安全性。