首页 百科知识 数据库系统的安全对策

数据库系统的安全对策

时间:2022-06-17 百科知识 版权反馈
【摘要】:8.3.3 数据库系统的安全对策为了保护数据库系统免受上述威胁的影响,达到其基本的安全要求,应当采取合理的安全对策。在这里,仅讨论与数据库系统有关的用户管理、存取控制、数据加密、审计跟踪和攻击检测这些安全对策。数据库系统不允许一个未经授权的用户对数据库进行操作。DBMS中对数据库的存取控制是建立在操作系统的安全机制的基础之上的。

8.3.3 数据库系统的安全对策

为了保护数据库系统免受上述威胁的影响,达到其基本的安全要求,应当采取合理的安全对策。这些安全对策要能保证数据库中的数据不会被有意的或无意的攻击所破坏,能保证不会发生数据的外泄、丢失和毁损。

实际上,安全问题并不是数据库系统所独有的,所有计算机化的系统中都存在这个问题。只是由于数据库系统中存放了大量数据,并为许多用户直接共享,才使安全性问题更为突出。由于安全性问题有系统问题与人为问题,所以一方面用户可以从法律、政策、伦理、道德等方面控制约束人们对数据库的安全使用;另一方面还可以从物理设备、操作系统等方面加强保护,保证数据库的安全;此外,也可以从数据库本身实现数据库的安全性保护。

在计算机系统中,安全对策一般是分级设置的,图8-1表示的就是一种常见的安全控制模型。

img185

图8-1 安全控制模型

在用户要求进入计算机系统时,系统首先根据用户输入的用户标识进行用户身份鉴定,只有合法的用户才被允许进入计算机系统。对已进入系统的用户,DBMS还要进行存取控制,只允许用户进行合法操作。操作系统一级也会有自己的保护措施。数据最后还可以加密存储。在这里,仅讨论与数据库系统有关的用户管理、存取控制、数据加密、审计跟踪和攻击检测这些安全对策。

1.用户管理

用户所要访问的数据库系统、操作系统、文件系统以及网络系统等在用户管理方面非常相似,采用的方法和措施也十分近似。在一个多用户系统中乃至在网络环境下,识别用户永远是安全控制机制中最重要的一个环节,也是安全防线的第一个环节。

这里的用户管理包括标识和鉴别。通过核对用户的名字或身份(ID),决定该用户对系统的使用权。数据库系统不允许一个未经授权的用户对数据库进行操作。标识是指用户向系统出示自己的身份证明,其最简单的方法就是输入用户名和口令字。用户用身份和口令登录时,系统用一张用户口令表去鉴别用户身份,表中只有用户名和口令两个字段,此时,用户输入的口令并不显示在屏幕上,而只是以某种符号代替,如“*”号。系统根据用户的输入鉴别此用户是否为合法用户。这种方法简便易行,但保密性不是很高。另外一种标识鉴定的方法是用户先标识自己,而系统提供相应的口令表,这个口令表不是简单地与用户输入的口令作比较,而是系统给出一个随机数,用户按照某个特定的过程或函数进行计算后给出结果值,系统同样按照这个过程或函数对随机数进行计算,如果与用户输入的相等则证明此用户为合法用户,系统可以再接着为用户分配权限。否则,系统认为此用户根本不是合法用户,拒绝其进入数据库系统。

鉴别是系统验证用户的身份证明。身份认证是安全系统最重要而且最困难的工作。除口令控制外,用户身份认证还可以采用比较复杂的计算过程和函数来完成,而智能卡技术、数字签名技术和生理特征(如指纹、体温、声音等)认证技术的迅速发展也为更具有高安全要求的用户身份认证提供了实用可行的技术基础。

标识过程和鉴别过程往往容易混淆。具体而言,标识过程是将用户的用户名与程序或进程联系起来;而用户的鉴别过程目的在于将用户名和真正的合法授权的用户相关联。

2.存取控制

数据库的存取控制机制是定义和控制用户对数据库数据的存取权限,以确保只授权给有资格的用户访问数据库并防止和杜绝对数据库中数据的非授权访问。

一般而言,存取权限是由两个要素组成的:数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。在数据库系统中,定义存取权限称为授权。这些授权定义经过编译后,存放在数据字典中。当用户提出存取操作时,DBMS查找数据字典,并根据其存取权限对操作的合法性进行检查,若用户的操作请求超过了定义的权限,系统将拒绝执行此操作。这就是数据库的存取控制。

数据库管理系统DBMS中对数据库的存取控制要比操作系统中对文件的存取控制机制复杂得多。因为,DBMS需要对更为精细的数据粒度加以控制,而数据库中的粒度有记录、表格、属性、字段和值等。DBMS中对数据库的存取控制是建立在操作系统的安全机制的基础之上的。一般来说,就存取控制而言,在低安全等级的操作系统之上很难建立高安全等级的数据库系统;而在高安全等级的操作系统之上建立的数据库也不一定就是高安全等级的。

存取控制可以分为自主存取控制(DAC)和强制存取控制(MAC)两类。自主控制方法中,拥有数据库对象的用户即拥有对数据的所有存取权限,而且用户可以将其所拥有的存取权限转授予其他用户。自主存取控制很灵活,但在采用自主存取控制策略的数据库中,这种由授权定义的存取限制很容易被旁路,使系统无法对抗对数据库的恶意攻击。因此,在要求更高程度的安全性系统中应该采用强制存取控制的方法。强制存取控制方法中,对数据库中每个存取对象指派一个密级,对每个用户授予一个存取级。对任意一个对象,只有具有合法存取级的用户才可以存取,可以有效地防止“特洛伊木马”类的恶意攻击。

对于存取权限的定义称为授权。这些定义经过编译后存储在数据字典中。每当用户发出数据库的操作请求后,DBMS查找数据字典,根据用户权限进行合法权检查。若用户的操作请求超出了定义的权限,系统则拒绝此操作。授权编译程序和合法权检查机制一起组成安全性子系统。

下面是三个安全性公理,第(2)和第(3)公理都假定允许用户更新(Update)数据。

(1)如果用户Ⅰ对属性集A的访问(存取)是有条件的选择访问(带谓词P),那么用户Ⅰ对A的每个子集也是可以有条件地选择访问(但没有一个谓词比P强)。

(2)如果用户Ⅰ对A的访问是有条件地更新访问(带谓词P),那么用户Ⅰ对A也可以是有条件地选择访问(但谓词不能比P强)。

(3)如果用户Ⅰ对属性A不能进行选择访问,那么用户Ⅰ也不能对A有更新访问。

3.数据加密

数据库系统,担负着存储和管理关键业务数据和信息的任务。每个信息系统都要保证其安全性和保密性,一般而言,数据库系统提供的安全控制的措施能满足一般的数据库应用,但对于一些重要部门或敏感领域的应用,仅有这些是难以完全保证数据的安全性的。因此就有必要对数据库中存储的重要数据进行加密处理,以强化数据存储的安全保护。

数据加密是防止数据库中数据泄露的有效手段,与传统的通信或网络加密技术相比,由于数据保存的时间要长得多,所以对加密强度的要求也就更高。此外,由于数据库中数据是多用户共享,所以对加密和解密的时间要求也同样更高,同时还要求不会明显降低系统性能。

现在有许多强大的加密技术可保证数据的保密性、完整性、真实性和不可否认性,包括给专用密钥和公钥加密。

(1)数据库加密的特点

较之传统的数据加密技术,数据库密码系统有其自身的要求和特点。传统的加密以报文为单位,加解密都是从头至尾按顺序进行。数据库数据的使用方法决定了它不可能以整个数据库文件为单位进行加密。当符合检索条件的记录被检索出来后,就必须把该记录迅速解密。然而该记录是数据库文件中随机的一段,无法从中间开始解密,除非从头到尾进行一次,然后再去查找相应的这个记录,这显然是不合适的,所以必须解决随机地从数据库文件中某一段数据开始解密的问题。

①数据库密码系统应采用公开密钥。因为数据库的数据是共享的,有权限的用户随时需要使用密钥来查询数据,因此,数据库密码系统宜采用公开密钥的加密方法。

②多级密钥结构。数据库关系运算中参与运算的最小单位是字段,查询路径依次是库名、表名、记录名和字段名。因此,字段是最小的加密单位。也就是说当查得一个数据后,该数据所在的库名、表名、记录名、字段名都应是知道的。对应的库名、表名、记录名、字段名都应该具有自己的子密钥,这些子密钥组成了一个能够随时加、解密的公开密钥。

可以设计一个数据库,其中存放有关数据库名、表名、字段名的子密钥,系统启动后将这些子密钥读入内存供数据库用户使用。与记录相对应的子密钥,一般的方法应是在该记录中增加一条子密钥数据字段。

③加密机制。有些公开密钥体制的密码,如RSA密码,其加密密钥是公开的,算法也是公开的,但是其算法是每个人一套,而作为数据库密码的加密算法不可能因人而异,因为寻找这种算法有其自身的困难和局限性,机器中也不可能存放很多种算法,因此这类典型的公开密钥的加密体制也不适合于数据库加密。数据库加、解密密钥应该是相同、公开的,而加密算法也应该是绝对保密的。

数据库公开密钥加密机制应是一个二元函数:密文=F(密钥,明文)

解密过程即是加密过程的逆过程:明文=F′(密钥,密文)。

由此可知,数据库密码的加密机制应是既可加密又可解密的可逆过程

④加密算法。加密算法是数据加密的核心,一个好的加密算法产生的密文应该频率平衡,随机无重码规律,周期很长而又不可能产生重复现象。窃密者很难通过对密文频率、重码等特征的分析获得成功。同时,算法必须适应数据库系统的特性,加、解密响应迅速。

著名的MH背包算法就是一种适合数据库加密的算法。

(2)数据库加密的范围

经过加密的数据库须经得起来自OS和DBMS的攻击;此外,DBMS要完成对数据库文件的管理和使用,还必须具有能够识别部分数据的条件。因此,只能对数据库中的数据进行部分加密。数据库中不能加密的部分包括:

索引字段。为了达到迅速查询的目的,数据库文件需要建立一些索引,它们的建立和应用必须是明文状态,否则将失去索引的作用。

②关系运算的比较字段。DBMS要组织和完成关系运算,参加并、差、积、商、投影、选择和连接等操作的数据一般都要经过条件筛选,这种“条件”选择项必须是明文,否则DBMS将无法进行比较筛选。例如,要求检索工资在1 000元以上的职工人员名单,“工资”字段中的数据若加密,SQL语句就无法辨认比较。

③表间的连接码字段。数据模型规范化以后,数据库表之间存在着密切的联系,这种相关性往往是通过“外部编码”来联系的,这些编码若加密就无法进行表与表之间的连接运算。

(3)数据库加密对数据库管理系统原有功能的影响

目前DBMS的功能都比较完备,特别是像Oracle、Sybase这些采用Client/Server结构的数据库管理系统,具有数据库管理和应用开发等工具。然而,数据库数据加密以后,DBMS的一些功能将无法使用。

①无法实现对数据制约因素的定义。Sybase数据库系统的规则定义了数据之间的制约因素。数据一旦加密,DBMS将无法实现这一功能,而且,值域的定义也将无法进行。

值得注意的是,数据库中的每个字段的类型、长度都有具体的限定。数据加密时,数值类型的数据只能在数值范围内加密,日期和字符类型的数据也都只能在各自的类型范围内加密,密文长度也不能超过字段限定的长度,否则DBMS将无法接受这些加密过的数据。

②密文数据的排序、分组和分类。select语句中的group by、order by、having子句分别完成分组、排序、分类等操作。这些子句的操作对象如果是加密数据,那么解密后的明文数据将失去原语句的分组、排序、分类作用,显然这不是用户所需要的。

③SQL语言中的内部函数将对加密数据失去作用。DBMS对各种类型数据均提供了一些内部函数,这些函数不能直接作用于加密数据。

④DBMS的一些应用开发工具的使用受到限制。DBMS的一些应用开发工具不能直接对加密数据进行操作,因而它们的使用会受到限制。

数据库加密不是绝对安全的,对数据库安全与保密这一领域的研究的重要性和迫切性是显而易见的。目前的DBMS对数据库的加密问题基本都没有经过仔细考虑,如果在DBMS层考虑这一问题,那么数据库加密将会出现新的格局。

4.审计跟踪和攻击检测

审计功能在系统运行时,将自动把数据库的所有操作记录在审计日志中,攻击检测系统则是根据审计数据分析检测内部和外部攻击者的攻击企图,再现导致系统现状事件,从而分析发现系统安全的弱点,追查有关责任者。

虽然存取控制在经典和现代安全理论中都是实行系统安全策略的最重要的手段,但软件工程技术目前还没有达到形式证明一个系统的安全体系的程度,因此不可能保证任何一个系统都不存在安全漏洞,也还没有一种可行的方法可以彻底解决合法用户在通过身份认证后滥用特权的问题,这样审计跟踪与攻击检测不仅是保证数据库安全的重要措施,也是任何一个安全系统中不可缺少的最后一道防线。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈