据有关资料报道,计算机犯罪80%来自系统内部。实现数据库文件加密以后,各用户(或用户组)的数据用自己的密钥加密,其他用户无法对其进行解密,保护了用户的秘密。另外,数据库的备份内容也可以是密文,能够减少因这些备份介质失窃或丢失而造成的损失。因此,实行数据库文件加密对于保障数据安全十分重要。
一、数据库文件加密系统的基本要求
1、字段加密
数据库文件加密和解密的粒度应是每个记录的字段数据。若以文件或列为单位进行加密,会形成密钥的反复使用,从而降低加密系统的可靠性或者因加解密时间过长而无法使用。
2、密钥动态管理
数据库客体之间隐含着复杂的逻辑关系,一个逻辑结构可能对应着多个数据库物理客体,所以数据库加密不仅密钥量大,而且组织和存储工作比较复杂,需要对密钥实现动态管理。
3、合理处理数据
首先要恰当地处理数据类型,否则DBMS将会因加密后的数据不符合定义的数据类型而拒绝加载;其次,需要处理数据的存储问题,实现数据库文件加密后,应基本上不增加空间开销。在目前条件下,数据库关系运算中的匹配字段,如表间连接码、索引字段等数据不宜加密。文献字段虽然是检索字段,但也应该允许加密,因为文献字段的检索处理采用了有别于关系数据库索引的正文索引技术。
4、不影响合法用户的操作
数据库文件加密系统影响数据操作响应时间应尽量短;此外,对数据库的合法用户来说,数据的录入、修改和检索操作应该是透明的,不需要考虑数据的加/解密问题。
二、数据库文件加密系统结构
1、不同层次实现数据库文件加密
可以考虑在3个不同层次实现对数据库数据文件的加密,这3个层次分别是OS、DBMS内核层和DBMS外层。
在OS层,由于无法辨认数据库文件中的数据关系,从而无法产生合理的密钥,也无法进行合理的密钥管理和使用,因此,在OS层对数据库文件进行加密,对于大型数据库来说,目前还难以实现。
在DBMS内核层实现数据库文件加密,是指数据在物理存取之前完成加密和解密工作。这种方式造成DBMS和加密器(硬件或软件)之间的接口需要DBMS开发商的支持。优点是加密功能强,并且加密功能几乎不会影响DBMS的功能;缺点是在服务器端进行加据诶米运算,加重了数据库服务器的负载。
另一种做法是将数据库文件加密系统做成DBMS的一个外层工具。采用这种加密方式时,加密和解密运算可以放在客户端进行,其优点是不会加重数据库服务器的负载并可实现网上传输加密,缺点是加密功能会受一些限制。
2、数据库文件加密系统结构
数据库文件加密系统设计成2个功能独立的主要部件,一个是加密字典管理程序,另一个是数据库文件加密和解密引擎,体系结构如图1所示。
数据库文件加密系统将用户对数据库信息具体的加密要求记载在加密字典中,加密字典是数据库文件加密系统的基础信息。
加密字典管理程序,是管理加密字典的实用程序,是数据库管理员变更加密要求的工具。加密字典管理程序通过数据库加密和解密引擎实现对数据库表的加密、解密及数据转换等功能,此时,它作为一个特殊客户来使用数据库加密和解密引擎。
数据库加密和解密引擎是数据库文件加密系统的核心部件,负责在后台完成数据库信息文件的加密和解密处理,对应用开发人员和操作人员是透明的。
三、数据库文件加密系统的主要功能模块
1、数据库文件加密及密钥管理
(1)数据库文件加密
数据库加密数据文件的数据文件类型需要处理,否则数据库管理系统将会因加密后的数据文件不符合定义的数据文件类型而拒绝加载。一个解决方法是另外建立密文表用于存放密文,凡是需要加密的数据文件都定义为计算机二进制数据文件类型,加密以后插入数据库的数据文件全部为二进制数据文件类型的数据文件,用户检索时数据库文件加密系统自动解密并转换成用户所需要的数据文件类型。
数据库文件加密系统为数据库用户提供了定义加密要求的手段。通过系统提供的用户界面,用户可以选择需要加密的数据库文件表,并确定该表需要加密的列数据文件。
当应用系统输入一条数据库表记录时,系统查得该表的加密要求,如果需要加密,则对需要加密的列数据进行加密,然后将得到的密文插入到数据库表中。如果该表不需要加密,则将明文直接插入到数据库表中。
当应用系统查得一条数据库表记录时,系统查得该表的加密要求。如果是明文(该表没有加密要求),则直接将明文记录交付用户。如果有加密要求则将每个需要解密的列数据解密,并将所得到的明文交付用户。当修改一条数据库表记录时,情况与插入一条记录相似。
(2)密钥管理方法
本系统实行二级密钥管理。一级密钥为主密钥,二级密钥为工作密钥。主密钥的作用是对二级密钥信息加密生成工作密钥。工作密钥用于对数据库数据的加密和解密。工作密钥信息的长度为128分位,前1 1 2位是记录名,需要带校验地存储在数据库表中;后1 6位是数据库表的列(字段)信息(该字段在表中的某些特征),列信息临时生成。为了存储记录名数据,每个数据库表增加一个记录名字段,在用户录入数据时,系统自动生成记录名数据,使每条记录都有一个记录名并做到各记录名数据互不重复。
设一个表有m列,n条记录,则对于每一个加密单位都有一个对应的二级密钥信息XiYj,组织方法如下:
其中,Xi占1 1 2位,Xi序列的周期为2的112次方≈5×10的33次方。
Yj占16位'允许表列编号0~65536。
XiYj的总长度为112+16=128位在数据需要加密和解密时,将相应的位二级密钥信息用主密钥进行加密即得到工作密钥,用工作密钥完成对数据的加/加密。
应用分析:如果一年需要1×10的220次方条记录,在足够长的时间内可提供不重复的X序列:
(5×10的33次方)÷(1×10的20次方) =5×10的13次方(年)。在足够长的时间内保证了Xi言息的两两互异。一个数据库表的列数不会超过65536列,这就保证了Yj信息的两两互异。由此保证了Yj信息的两两互异。
数据库文件加密系统中还需要其他一些密钥信息。例如多服务器、多数据库、多用户、多用户组等情况时,还需要根据应用增添一些信息,其方法是将以上各类实体分别进行编码、存储并依据不同情况使用。
本数据库文件加密系统中,主密钥保护了工作密钥,工作密钥保护敏感信息。整个系统的安全依赖于主密钥的安全。主密钥的安全需要解决以下几个问题:
主密钥的生成:采用投币法产生128位二进制数据。
主密钥的存储:主密钥经加密并存放于安全区域内,使用时由系统自动获取并解密。本数据库文件加密系统也可将主密钥注入加密卡中以保证安全。
主密钥的更换:在数据库文件加密系统中,主密钥的更换是一个比较棘手的问题。主密钥更换以后,会造成工作密钥的全部更换。数据库中存储有巨大数量的数据,已经加密的数据文件需要用原来的密钥系统解密,而且解密时间将会很长。
2、数据库文件加密管理程序
数据库文件加密管理程序是数据库管理员定义加密数据项的工具,提供了创建加密字典、删除加密字典、表加密、表解密、表修复、加密字典权限管理等功能,它利用数据库加解密引擎来完成已有数据文件的加密或解密处理。
加密字典管理程序由系统管理员使用,普通用户不必关心。它由用户注册、加密字典配置、修改加密定义、表信息检索、密文表配置、数据转换等模块组成。
加密字典配置模块提供用户在当前数据库创建及删除加密字典的功能。加密定义修改模块提供给数据库管理员一个界面,在此界面中,用户可以指定需加密或解密的表、字段,程序根据实际的加密要求,完成数据库结构及加密字典的调整和数据的加解密转换工作。表信息检索模块从数据字典中检索出与某个表有关的各种信息,这些信息包括表名、主键定义、外键定义、索引定义、字段定义等,供其它模块
使用。密文表配置模块的功能是根据用户确定的加密定义创建或删除密文表,同时将加密定义写入加密字典或从加密字典中删去有关内容。数据转换模块是专门为加密定义修改模块服务的,完成一个表的加密、解密、加密列变更3种需求下的数据转换工作。
3、数据库文件加密系统的加密和解密引擎
在数据库文件加密系统体系结构中,数据库文件加密和解密引擎位于应用程序与数据库服务器之间,是数据库文件加密系统的核心部件,负责在后台完成数据库信息的加密和解密处理,对应用开发人员和操作人员是透明的。它由加密和解密处理、语法分析、数据库接口等模块组成。
加密、解密处理模块是数据库加脱嘧引擎的核心模块,包括数据库加解密引擎的初始化、内部专用命令的处理、加密字典信息的检索、加密字典缓冲区的管理、SQL命令的加密变换、查询结果的解密处理、加密算法和解密算法实现等功能子模块,另外还包括一些公用的辅助函数。
语法分析模块的功能是将SQL命令转换成易处理的树形式的语法结构。该模块由词法分析器、语法分析器、语法错误处理、语法树转换成SQL命令等子模块组成。在进行语法分析时,先对SQL命令进行词法分析,分割成各个词法单位,再输入语法分析器,得到一棵语法树。语法分析模块还包括语法树反向生成SQL命令的功能函数,用于将经过加密变换后的语法树转换成新的SQL命令。
数据库接口模块将所有访问数据库的操作封装在一起,屏蔽了各类数据库的特性,使得加密和解密处理模块不必关心实际使用的是哪种数据库。该模块包含两部分接口,一是前端数据库客户访问数据库加密和解密引擎的接口函数,二是数据库加密和解密引擎访问后台数据库服务器的接口函数。
数据库文件加密系统采用在DBMS外层实现数据库文件加密系统的方法,使得系统对数据库最终用户完全透明;而且,数据库文件加密系统完全独立于数据库应用系统,不需要改动数据库应用系统就能实现加密功能;同时,该系统采用分组加密法,二级密钥管理,实现了“一次一密”,具有很高的安全性;更加重要的是该系统在客户端进行数据加解密运算,不会影响数据库服务器的系统效率,数据加密和解密运算基本无延迟。
小知识之DBMS
数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。DBMS提供数据定义语言DDL(Data Definition Language)与数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。