APP下载

数据库加密系统研究

2009-04-29

沿海企业与科技 2009年3期
关键词:加密算法

杨 枫

摘要数据库安全保护是指保护数据库中的数据,防止无关人员或非授权人员对数据库中数据的窃取、篡改和破坏。数据库的突出特点是数据的集中存放和共享。随着计算机技术的发展和应用的深入,数据库的应用已触及社会的各个角落。研究数据库加密系统的相关理论,密文索引、密钥管理等数据加密系统中的关键技术,保护数据库中的数据不被窃取、破坏是非常重要的。

关键词数据库加密;加密粒度;加密算法

作者简介杨枫,唐山学院图书馆助理馆员,研究方向:数据库安全,河北唐山,063000

中图分类号TP309文献标识码A文章编号1007-7723(2009)03-0016-0003

一、引言

随着信息技术的发展,数据的安全问题被提到前所未有的高度。传统的数据库保护方式是通过设定口令字和访问权限等方法实现的,数据库管理员可以不加限制地访问数据库中的所有数据。解决这一重大安全隐患的关键是要对数据本身加密,即使数据不幸泄露或丢失,也难以被人破译。

二、数据库加密

数据库加密,大致可以分为两种方式:DBMS外部加密和DBMS内部加密。

DBMS外部加密一般选择在应用程序和操作系统,通过调用加/解密函数来完成加密数据的存储和访问。DBMS外部加密的优点是,不需要修改DBMS,只需要在应用程序或者操作系统中增加相应的加,解密模块即可。但是,这种方法也有一些缺点,首先它不能支持各种加密粒度。在操作系统中加密时,加密的粒度是基于文件,对应到数据库中则是相应的表或者整个数据库,这种加密粒度非常粗糙,最直接的影响是,加/解密的工作相当大,极大地降低系统性能。

在DBMS内部加密,一般选择在数据物理存取之前进行加,解密操作。DBMS在将内存中的数据写到磁盘时,进行加密操作,而从磁盘读取数据到内存中时,进行相应的解密操作。这种方法的优点是,由于DBMS能够区分各种粒度的数据,所以可以支持各种粒度的加密,加密的灵活性较好。另外,在DBMS内部实现加密,可以更有效地和DBMS内部的访问控制机制、授权机制等各种功能结合起来。更重要的是,数据库一个重要特点是被多个应用共享,这种方法的加,解密都是在DBMS内部完成,对应用程序是透明的,不需要在多个应用中进行修改,容易保持数据的一致性。缺点是需要修改DBMS的内核,DBMS是一个非常复杂的软件,对它进行修改是一件非常艰巨的任务。

三、数据库加密系统的基本概念

(1)访问控制:在开放的系统中,对一个主体访问一个客体功能、服务和能力的限制。

(2)自主访问控制:一种基于对主体或客体所属主体组的识别来限制对客体的访问。自主是指对其他主体具有授予某种访问权限的主体能够自主地(直接或间接地)将访问权或访问权的某个子集授予给其他的主体。

(3)强制访问控制:一种基于客体所包含信息的敏感度和主体对该敏感度的客体是否有正式的存取授权来限制对客体访问的机制。

(4)敏感数据:敏感数据就是不应公开的数据。敏感数据取决于具体的数据库和数据的含义。

(5)多级安全:是军事安全模型的一种数学描述,它用计算机可实现的方式定义。多级安全模型有两个重要性质:简单安全特性和一般特性。

(6)多级安全的粒度:是指一个多级安全所控制的最小单位。它的含义与并发控制的粒度相似。多级安全的粒度通常可以分为:表级、列级、元组级、元素级。其中表级最大,元素级最小。

(7)加密粒度:采用同一密钥和加密算法进行加密的数据粒度。

四、加密粒度

按照数据库的结构层次,数据库的加密粒度可以分为数据库级、表级、记录级、字段级和数据项级。根据不同的直用需要,选择合适的加密粒度。

(一)数据库级

加密的对象是整个数据库,这意味着对所有的用户数据表、系统数据表、索引、视图和存储过程等都进行加密处理。这种加密方法简单,只需要对存储在磁盘中的相应数据库文件进行加密处理,密钥的数量少,一个数据库只对应一个密钥,管理方便。但是,数据库的数据共享性高,被多个用户和应用共享使用,需要接受大量的随机访问。一般来说,用户访问数据库时,是为了将符合条件的记录检索出来。如果采用数据库级加密方式,即使只需要查询少量的记录,也需要对整个数据库进行解密,对系统性能会产生极大的影响。

(二)表级

加密的对象是数据库中的表。一般数据库包含多个表,只需对其中一些包含敏感信息的表进行加密,以保护它们的安全性。与数据库级加密比较,采用表级加密粒度,系统的查询性能会有所改善。因为对于未加密表的查询,与传统查询方法一样,系统性能不会受到影响。对于加密表的查询,只需要解密对应的加密表,而不要解密整个数据库。在实行表级加密时,可以采用对存储数据的磁盘块(页面)进行加密。

(三)记录级

加密的对象是数据表中的记录,记录中各字段值一起进行加密处理,加密后输出一列字符串。在实现记录级加密时,通过调用专门的加密函数,对页面中的记录进行加密。与数据库和表级加密相比,这种加密的粒度更细,可选择的灵活性更好。

(四)引字段级

加密的对象是关系中的某个字段。字段级加密是一个很好的选择,因为在实际生活中,一些重要和敏感的信息往往出现在关系中的某些列,如信用卡号、身份证号、银行账号等,只需要对这些重要数据进行加密保护,而没有必要对普通数据也进行加密。

(五)数据项级

加密的对象是记录中的某个字段值,它是数据库加密的最小粒度。数据项级加密的方法更为灵活,它的实现方式与字段级加密相似,但其密钥管理将会更加复杂。

五、加密算法

加密算法是数据加密的核心,加密算法本身的好坏直接影响数据库加密的安全和性能。

在对数据库存储数据进行加密时,由于对称加密算法速度快,对系统的性能影响较小,对称加密算法使用最为广泛。对称算法又可分为两类:序列密码和分组密码。分组密码是在明文分组和密文分组上进行运算,分组长度通常为64位,但有时更长。根据分组的模式,分组密码算法又可分成电子密码本和密码分组链接。电子密码本模式把一个明文组加密成一个密文组,每个明文分组可被独立地进行加密。如果一个数据库用电子密码本模式进行记录级加密,那么任意一个记录可以独立于其他记录被添加、删除或者解密。密码分组链接模式将一种反馈机制加进分组密码中,即前一分组的加密结果被反馈到当前分组的加密中,这样使得每个密文分组不仅依赖于产生它的明文分组,而且依赖于所有前面的明文分组。

序列密码算法采用异或的运算方法,将明文逐位转换为密文。序列密码算法速度较快,但是,序列密码算法中的密钥序列不能重复。因为它的安全性依赖于简单的异或运算,如果每次产生同样

的密钥序列,对攻击者来说,破译该算法就非常容易。所以在实际应用中,数据库中存储数据的加密一般采用分组密码算法。目前数据库加密常用的算法有AES、DES、3DES、RC5。

(一)密钥管理

密钥管理是密文数据库的重要组成部分。安全地管理密钥,在数据解密时快速地获得密钥是十分必要的。在密文数据库系统中,通常采用三级密钥管理方案。用户必须首先通过“用户表”进行用户身份的认证。“用户表”采用一级密钥即主密钥加密。通过身份认证后,用户方可以访问“数据表”。“数据表”经三级密钥即工作密钥加密。在查询中,通过三级密钥解密返回给用户。

在密钥管理中,除了多级密钥的方式,还应注意密钥管理过程中的几个方面:密钥的生成、使用、存储、备份、恢复以及销毁等。

(二)加密字典

支持数据字典功能的数据库管理系统能够自动建立和更新数据字典。加密字典用于保存和管理系统中的加密信息。其主要任务是描述(或定义)密文数据库系统中各类对象所采用的加密算法、加密粒度等。一个密文数据库系统所涉及的对象大致包括数据表、视图、索引、密钥;与完整、安全控制有关的对象,包括用户、角色、用户标识、访问授权、密钥及完整约束条件等。

(三)密文索引

密文索引是一种无序文件的索引,在形成数据文件时,其记录并不一定按主关键字的顺序排列。为加快查找速度,可以把它组织成索引文件。在构建密文数据库索引时,除了要保存数据记录在数据库中的相对位置信息外,还应记录数据库中相应字段的安全类别信息,以便查询时确认用户是否可以浏览记录的密文内容。在建立索引文件结构和设计查询算法时,总体上应坚持下述原则:

(1)查询算法的选择。查询时要尽量减少对密文数据解密的次数,从而减少解密数据在查询时占用的时间。这需要在实现算法时尽可能减少与密文的比较次数。

(2)建立索引的“分治原则”,即应尽量减少集中建立密文索引文件所花费的时间。

(四)完整性约束

网络密文数据库在实现数据的密文存放时,破坏了原有数据库系统的完整性约束,必须重新构建完整性约束,保证数据一致完整地存放在数据库中。重建的约束功能有加密字典保证。

(五)强制访问控制

网络密文数据库系统中强制访问控制依赖于系统的安全等级标志和主体的授权许可访问级别来进行控制。这种强制访问控制机制必须严格控制信息非授权地从高安全级流向低安全级,系统必须对数据的读和写进行严格的控制。

六、结语

数据库加密系统,其实现的主要功能是:对存储在数据库中的数据进行不同级的存储加密。这样就有效地保护了存储在数据库中的重要数据,即使某一用户非法入侵到系统中或盗得了数据库文件,没有解密密钥,他也不能得到所需数据。所以,数据库的加密处理对保护数据的安全性具有非常重要的意义。

猜你喜欢

加密算法
基于整数矩阵乘法的图像加密算法
基于混沌系统和DNA编码的量子图像加密算法
混沌参数调制下RSA数据加密算法研究
基于单图像局部置乱和动态反馈扩散的混沌图像加密算法
HES:一种更小公钥的同态加密算法
基于小波变换和混沌映射的图像加密算法
基于显著像素复合矩阵的多图像同步实时加密算法
Hill加密算法的改进
快速置乱耦合3D混沌映射的图像加密算法研究
对称加密算法RC5的架构设计与电路实现