摘 要:随着计算机特别是网络的发展,信息科技进入了日新月异的时代。数据库逐渐成为信息系统核心部分并广泛应用于企业、政府和军事等各个领域,数据的共享日益增加,由此数据的安全工作越来越重要。以明文形式存放的数据,即使置于口令、防火墙和入侵检测系统的保护之下,也是很容易被窃取、盗用和破坏的。数据库中大量数据的安全问题、敏感数据的防窃和防篡改问题,已成为当前计算机安全的一个重要课题。
关键词:数据库安全;加密系统
引言
随着网络技术的不断发展,计算机在社会生活的许多方面都得到了应用。然而在计算机给人们的工作和生活带来方便的同时,各种安全隐患也应运而生了。为了提高网络系统的安全性能,人们采用了许多保护手段,如:在系统中增加防火墙和入侵监测系统等,但是这些措施仍然不能避免系统遭受破坏,不能完全保证系统的安全性。数据库系统作为信息系统的核心部件,数据库文件作为信息的聚集体,显然其安全性将是信息系统安全性的重要指标。使用没有安全保证的数据库,一个信息系统不可能具有高的安全性能。所以,数据库的安全问题已成为信息安全领域的主要研究课题之为了提高数据库的安全性能,数据库厂商也提供了许多安全措施,目前大型数据库ORACLE、SYBASE都提供了有关的用户标识和鉴定、存取控制、视图、审计功能、数据库备份与恢复等基本安全技术。然而这些功能显然是不够的,这些安全技术只能满足一般的数据库安全应用,而对于高度敏感性数据,数据库系统所提供的安全性措施难以保证数据的安全性,数据库中数据是以明码文方式存放的,只要黑客避开了系统认证,进入到数据库系统中,他就可以盗取或修改数据库中他需要的任何数据。此外,威胁数据库安全的并不完全是外部人员,系统内部的管理人员或企业内部职员对数据库安全的威胁更大,此时防火墙、入侵检测等防护措施没有任何作用,他们很容易实现对数据库的拷贝、修改等操作,从而给企业造成重大损失。
一、数据库安全概述
在计算机网络应用系统中,信息的存储和管理基本是由数据库来实现的,所以信息安全很重要的部分涉及数据库的安全。然而,数据库安全与数据库应用又是一对矛盾的关系。首先,数据库应用就是为广大合法用户提供方便、快捷的信息服务,而数据库安全为了保证信息的保密性和完整性,则需要增加许多安全措施以防止非法用户的窃取和泄密,这样必将影响数据库的性能,也给数据库应用增加一定的复杂程度。所谓数据库的安全性,就是指保护数据库以防非法使用所造成的数据破坏、更改、泄露。
1、数据库安全的实现技术
数据库安全问题可归结为保证数据库系统中各种对象存取权的合法性(保证访问,阻止非法访问)和数据库内容本身的安全(防泄漏、篡改或破坏)两个方面,围绕这两个方面,数据库的安全可采用如下技术。
(l)存取控制技术
存取控制技术是数据库安全的核心,一般采用多层控制,即系统登录控制、数据库使用权控制及数据库对象操作权控制。系统登录控制,又称为标识/鉴别技术,即输入用户名及口令,由系统进行身份验证。数据库使用权及数据库对象操作权控制数据库的授权系统将各种使用与操作权授予用户。
(2)隔离控制技术
隔离控制技术在数据库中也是一项很重要的安全技术。通过某种中间机制,将与存取对象隔离。用户不能直接对存取对象进行操作,而是通过中间机构间接进常用的中间机构有视图和存储过程。
(3)加密技术
加密技术是将数据库中的原始数据(明文)转换成人们所不能识别的数据(密文),以达到防止信息泄漏的目的。
(4)信息流向控制技术
信息流向控制技术是将数据库信息内容按敏感程度分成多个密级(如绝密、机密、秘密、一般),以防止信息从高安全级流向低安全级。
(5)推理控制技术
推理控制技术是防止用户从对数据库的合法访问得到的信息,推断出他所不应了解的信息。推理控制技术特别适用于统计数据库的安全。
2、数据库系统中存在的潜在威胁与数据库系统保护
现在任何一个信息系统中,数据库都是作为信息存储的主要载体,是信息系统必不缺少的一部份。随着网络技术的广泛应用,在给用户带来方便的同时,在安全性方面也提出了新的挑战。现在的数据库系统己不仅仅限制在一台单机上和一个局域网内,hitemet的普及使世界上任何一个连入互联网的计算机都可以成为这个大家庭中的一员。在互联互通的网络环境下如何保护自己计算机上或信息系统内的信息安全,己成为函待解决的严峻问题。数据库的安全问题也己成为数据库用户乃至数据库厂商着重注意的问题。在各大数据库系统的新版本中都新加入了安全方面的措施。下面对数据库系统存在的主要安全问题做一些简要介绍。
一般来说,数据库中储存的往往是政府或企业的机密数据,或者是个人隐私或国家机密,这些信息就不可避免的成为一些怀有商业或政治目地的不法入侵者的首要攻击目标。如果这些关键数据被恶意修改或删除,或者被泄漏出去,就会给国家或企业造成严重的经济损失或名誉损失。
二、数据库加密技术
随着信息技术的发展,数据的安全问题被提到前所未有的高度。一方面,企业本身需要对自己的关键数据进行有效的保护;另一方面,越来越多的企业开始从应用服务提供商(APphcationServieeProvider,ASP)处获得应用支待和服务,在这种情况下,企业的业务数据存放在ASP处,其安全性无法得到有效的保障。因为传统的数据库保护方式是通过设定口令字和访问权限等方法实现的,这就留下了一个很大的安全漏洞—数据库管理员可以不加限制地访问数据库中的所有数据。解决这一问题的关键是要对数据本身加密,即使数据不幸泄露或丢失,也难以被人破译。数据库加密系统,其实现的主要功能是:对存储在数据库中的数据进行不同级的存储加密。这样就有效的保护了存储在数据库中的重要数据,即使某一用户非法入侵到系统中或盗得了数据库文件,没有解密密钥,他也不能得到所需数据。所以数据库的加密处理对保护数据的安全性具有非常重要的意义。
1、数据库加密技术要求
由于数据库中的数据有其所独特的属性,所以数据库中数据的加密有一些特殊的要求和限制,概括起来有以下几点:
(1)与传统的通信网络加密技术相比,数据库中数据保存的
时间相对较长,加密时不太可能采取一次一密的形式,所以对于加密强度的要求就更加严格和苛刻。对于一个内部攻击者来说,可以很容易的将数据库中的加密数据盗窃出去,然后进行破译分析,所以数据库中数据的加密对强度要求较高,至少在数据的有效期内是无法破译的。
(2)对数据库中数据最大量和最主要的使用方式是查询操作,所以加/解密的速度一定要快,否则数据加/解密过程可能导致整个数据库系统性能的大幅下降。由于数据库中解密操作的数据量与查询操作是正比的,所以加/解密速度,尤其是解密速度,对于数据库而言更为重要。数据库加密技术要能够保证不会明显降低系统性能。
(3)数据库加密后,数据库系统中数据的组织结构相对于原系统而言不能有大的变动,数据占用的存储空间也不能有大的变化。如果可能,应尽量做到加密前后数据长度相等,至少要相当。
(4)与通信网络中的数据相比,数据库中的数据处于更为开放的数据共享环境中。通信环境中,用户基本上只有线路两端的两个用户。网络环境中,用户数量虽然不仅仅限于线路两端的两个用户,但是无论是在广域网坏境还是局域网环境中,从通信的角度来看,仍可以认为是两个用户的通信问题。但是在数据库环境中,数据库中的数据是由多个用户共享的,并且大多数用户又只能访问数据库中的小部分数据,因此应该将数据库的加密机制与数据库的访问控制、用户授权等机制有机地结合起来。
(5)与通信网络加密、文件系统加密相比,数据库加密要求更加灵活、可靠的密钥管理体制。数据库加密通常采用比通信网络加密、文件系统加密更为复杂的密钥,而且由于密钥的有效期较长,所以密钥的管理也更为复杂。如果密钥管理混乱或者出现失误,如密钥泄露、丢失等,不仅会导致数据库中敏感信息的泄漏,还可能会导致数据库服务中断、拒绝服务等情况的发生。由于数据库中加密数据的密钥更换会涉及大量数据,所以密钥的定期更新也是需要重点考虑的问题,必须采用一种高效的密钥更新机制,使得既完成了密钥的定期更新又能保持数据库服务的连续性。
(6)数据库系统的加密机制不仅要保证对数据库中的加密数据进行查询、更新等操作的效率,同时要保证数据库中加密数据的完整性,此外还要保证加密粒度的灵活性。
2、数据库加密系统的设计与实现
本数据库加密系统采用基于字段的加密方式,密文直接存储在原数据表中,由于密文长度可能大于明文长度,所以,在数据库设计时,加密字段的长度设置大一些。为简化密钥的管理和不影响数据库操作的效率,密钥的管理采用折中的方法,每个记录一个密钥,因此在数据库设计时为每个表增加一个存放密钥的字段。用户对数据库信息具体的加密要求记载在加密字典表中,加密字典管理程序完成加密字典表的维护工作,是数据库管理员变更加密要求的工具。数据库加解密处理由数据库加解密引擎完成,它是数据库加密系统的核心部分,负责完成加解密处理,对数据库应用系统的用户是透明的。
3、数据库加解密引擎的设计
数据库加解密引擎位于应用程序和数据库管理系统之间,形成一种三层次的结构,是数据库加密系统的核心模块,它工作在后台,负责数据的加密和解密,并且加解密过程对于用户是透明的。它由初始化、数据库接口、加密密钥的生成、sQL语法分析、加密处理、解密处理等模块组成,以公共函数的形式给出。
1、初始化模块主要负责获取加、解密引擎在进行加解密时所必须的信息,这些信息通常被放在加密字典中,主要包括字段数据类型、大小、精度、小数位数、是否加密等。
2、数据库接口模块将所有访问数据库的操作封装在一起,屏蔽了各类数据库的特性,使得加解密处理模块不必关心实际使用的是哪种数据库。该模块包含两部分接口,一是前端数据库客户访问数据库加解密引擎的接口函数;二是数据库加解密引擎访问后台数据库服务器的接口函数。
3、本系统实行二级密钥管理。一级密钥为主密钥,二级密钥为工作密钥。主密钥的作用是对二级密钥信息加密生成工作密钥。工作密钥用于对数据库数据的加/解密。数据库的每条一记录录入的时间信息都是唯一和确定的,所以可以在每条记录录入时增加时间字段,并对时间进行处理,把时间信息中的年、月、日、小时分、秒、毫秒信息进行处理得到一个整数型,把这个数作为函数voidsrand(unsignediniseed)中的伪随机数种子,得到一个伪随机数。再把伪随机数和用户密钥进行异或处理,结果作为算法密钥,以此可以增加密钥的安全性,使算法更加难以破解。
4、sQL语法分析模块功能是将用户提交的SQL命令转换成易处理的树形式的语法结构,用于加解密语意分析,得到sQL语句中的表名、字段名以及需要加解密处理的数据。
5、加密模块块是加解密引擎的核心,它主要负责数据的加密。在该模块中,加密算法是其核心,如上所述我采用的是AES加密标准。该模块除了要对数据进行加密外.还要负责数据的拆分和组装。任何一种加密算法一次加密的数据长度都是有限的,而需加密数据的长度往往会超过这个长度.因此必须对需加密的数据以加密算法一次能加密的数据的长度为单位进行拆分;而加密以后又需要将加密后的数据组装在一起。当数据的长度不够时,该模块会在数据后面添O以达到加密的基本长度:解密后,解密模块还要负责去掉添加的O以还数据本来面目。
6、解密模块和加密模块一起构成了加解密引擎的核心,它的作用和加密模块相反,主要负责数据的解密。在该模块中解密算法是其核心,解密算法与所使用的加密算法应一致。与加密模块一样,解密模块也具有对数据进行拆分和组装的功能。
.随着hiteTnet技术和规模的不断发展,其应用的范围和领域迅速扩大,安全问题日益突出,特别是在与金融、电子商务、数据库相关的领域中安全性要求更高。在满足系统所有的应用需求的基础上,用传统的方法解决安全问题,存在很多弊病。而且安全问题是集技术、管理和法规于一体的,绝对的安全是没有的,但通过各方面的努力,可以将网络中潜在的威胁降到最低限度。加密是网络安全、数据库安全、电子商务安全的核心问题,加密算法、密钥管理、字段类型处理等问题是网络数据库加密的重要研究问题。在数据库安全和加密技术的研究方面,本文只是作了一些阶段性的工作,许多细节还有待于进一步深入研究。
参考文献:
[1] 谷利泽.数据库应用中安全技术的设计和实现.北京邮电大学,2001:2-7
[2] 朱鲁华,陈荣良.数据库加密系统的设计与实现.计算机工程.2002(8):61-63
[3] 卢开澄.计算机密码学[M〕.第3版.北京:清华大学出版社,2003
[4] 刘翔.加密数据库中加密机制与加密字典的研究、设计及应用.中山大学,2003:12-14.