关键词 数据库加密,数据库脱密,加脱密密引擎
1 引言
目前,信息管理系统中的大量数据都是存放在数据库中。因此,数据库也成为这些系统的核心部件之一,其安全性及对敏感数据的防篡改和防盗取的能力,越来越引起大家的重视。而传统的方式是在数据的传输过程中对数据进行加密保护,并没有对数据库本身进行保护,如果一旦有非法入侵者进入数据库,就极易造成重要数据资料的泄露,最终给数据库的用户造成不可挽回的损失。所以,提高数据库的安全性能就成为一个十分急迫的问题。
目前对数据库保护的最有效的方法就是对敏感数据进行加密处理,将明文方数据以密文方式保存,访问时再进行解密操作。这样,即使能够通过非法途径得到数据库的数据,没有相应的密钥,也是得不到其明文形式的。实现数据库加密并结合密钥管理以后,数据库里的数据由用户自己的密钥来进行访问,不同的用户只能访问自己权限以内的数据,这样大大的提高了数据的安全性。由此可见,数据库加密对于数据的安全管理,是不可或缺的重要环节。
对数据库加密的部分就是数据库的加密引擎,是整个数据库加密系统的核心部分,本文将重点讨论数据库加脱密引擎的实现过程和要注意的一些问题。
2 数据库加密系统的基本结构

图1数据库加密系统体系结构
可见,数据库加脱密引擎是数据库加密系统的核心部件,负责在后台完成数据库信息的加脱密处理,对应用开发人员和操作人员是透明的。
3 数据库加脱密引擎的设计
3.1 加脱密引擎的设计
结合文献[1][2]的方案,并结合本人的实践,设计出以下的的数据库加脱密引擎:
图2加脱密引擎的基本结构 虚线之中的是加脱密引擎的基本结构。
3.2 加脱密引擎各个子模块的功能分析。
数据库接口模块的功能是将所有访问数据库的操作封装在一起,屏蔽了各类数据库的特性,“加脱密模块”工作时就不必关心实际使用的是哪种数据库。该模块包含两部分接口:其一是前端数据库客户访问数据库加脱密引擎的接口函数,也就是用户访问接口;其二是数据库加脱密引擎访问后台数据库服务器的接口,即后台数据库接口。
数据字典模块是将初始化引擎时的一些参数在加脱密时提供给加脱密模块使用,这些参数一般是单独保存在数据字典表中,数据内容主要包括待加密表内行列信息、数据类型、是否加密等。
密钥管理模块的功能是给加脱密模块提供密钥和相关的密钥验证与保护。在本文的数据库加脱密引擎中,采用的是数据项加密的方式来对数据库的数据进行保护,这种加密方式的特点是对应每个数据项都有不同的数据项密钥,因此安全性能最好,这种方式实现时密钥管理模块提供的密钥包括表密钥TK、数据项加脱密密钥Kij。其中表密钥TK对应每一个待加密表,在加密时由系统自动生成(根据混沌理论生成所需的表密钥[3])。对用户密钥、表密钥等的保护采用的是主密钥[4]方式进行保护。

图3 加密模块的基本结构