摘 要: 为在数据库安全增强工作中如何进行推理控制给出了一种较为完整的解决方案。
关键词: 多级安全数据库 推理控制 强制访问控制 函数依赖
信息技术的发展使得计算机已经渗透到社会生活的各个方面。随着Internet的广泛应用,网上信息的开放与共享性日益增强,因此,计算机已经成为必不可少的信息处理手段。但随之而来的是对信息的恶意破坏愈加严重,因而使信息安全成为研究的一个重点。数据库作为网上信息的主要载体,其安全性自然成为信息安全的重中之重。
当前被广泛使用的数据库系统一般只达到了C2级安全标准,为了确保数据库中数据的安全性和可用性,只能采用在现有的数据库系统上进行安全增强工作的方法。
多级安全数据库使用基于多级安全模型的强制访问控制MAC(Mandatory Access Control)机制来保证数据库的安全。但是在多级安全数据库中,由于推理通道的存在,即使强制访问机制完全发生作用,有时也不可避免地存在信息泄漏的问题。本文针对在实现多级安全数据库增强器时如何解决推理通道的问题,提出了一种解决方案。
1 多级安全数据库与推理问题
1.1 多级安全数据库
现实世界中的大多数应用需要将信息划分为不同的保密级别,对同一条记录内的不同字段也可能要划分为不同的保密级别,甚至同一字段的不同值之间都要划分为不同的保密级别。在多级安全数据库体系中,对不同的数据项赋予不同的保密级别,然后根据数据项的密级决定某一访问操作是否合法。在对数据进行了分级划分后,MAC通过一定的强制访问控制策略来控制用户对信息的存取,从而保证信息的安全。
多级安全数据库通过使用多级保护机制,扩展了系统安全的粒度,提供了更为全面的安全保证。
1.2 数据库中的推理问题
多级安全数据库中的推理是指:数据库中拥有低安全分类标识的用户,通过获取低安全分类标识的数据,并通过数据库查询之外的操作,可以推断出具有高安全分类标识的信息。下面是Marks[2]给出的一个数据库推理问题的正式定义:
多级安全数据库中的推理是指用户从数据库中获取元组集T,该元组具有属性A。此时如果可以描述出一个元组集T′,具有属性集A′,而且有T′不包含于T或者A′不等于A,则从逻辑上讲,此时存在一个推理通道,从元组集T可以推导出元组集T′。
在多级安全数据库中,通过多级安全模型及其MAC机制能够防止具有低安全分类标识的用户通过查询命令来直接获取高安全分类标识的数据。但是用户可以通过推理来获取高安全分类标识的数据信息,MAC并不能解决因此而带来的信息泄密问题。因此需要对多级安全数据库中的推理通道进行控制。
2 推理控制
2.1 推理问题的分类
多级安全数据库中的推理安全问题可分二类。第一类问题是由于数据库安全设计不合理导致分类的不连续性,从而引起的推理问题。这类问题主要是使用数据库中元数据信息进行推理所引起的;第二类问题是由于语义信息而导致的推理问题。存储在数据库中的信息不仅包括个体的数据条目,还包含这些条目间的关系。但是关系数据模型强调有效的数据结构和操作,缺乏一个可以充分表示应用分类的数据关联。所以通过对于数据项的安全分类标识不能确保数据的安全。如果此时应用的语义,或者说数据条目之间的关系没有被考虑,就会产生安全问题。
2.2 推理控制的方法
从上面对推理问题的分类可以看到,推理所使用的知识可以分成二类:一类是数据库中元数据的信息;另一类是数据库中和应用相关的数据信息。对于第一类知识,由于只和数据库中数据模式相关,因此这样的信息在数据库设计阶段就可以获得。而第二类知识是数据库中和应用相关的数据信息,这样的信息只能在数据库运行期获得。由于用于推理的知识可以在不同的阶段获得,所以可以把推理控制工作分为设计期推理控制和运行期推理控制。
设计期推理控制研究的目的在于产生一个设计良好的多级安全数据库,从而使用户不能通过一系列的查询来推断出受限制的元组。其主要方法是在数据库的设计阶段,使用数据库的元数据信息进行检测,确定可能存在的推理通道,并修改数据库中客体的安全分类标识,从而控制数据库中的推理通道。如修改不成功则要把该条函数依赖关系作为查询期推理控制的规则传送给查询期推理控制模块。 设计期推理控制的结构如图1所示。
在数据库的设计阶段并不能完全解决数据库系统中的所有推理问题,尤其是和存储在数据库中的具体数据相关的推理问题。对于这样的问题,还需要在数据库的运行过程中对用户的查询操作所涉及到的数据进行检测,才能发现存在的推理通道。在关系数据库系统中,对用户所提交的查询命令及其查询结果数据进行分析,并根据系统中所存储的推理规则来进行推理通道的检测,根据检测的结果来进行推理控制,这一过程被称为基于用户查询的推理控制。对于需要使用只有在运行期才能获得的外部知识的推理问题,只能在查询期进行相应的控制。同时,在设计期没有消除的推理通道也要在查询期进行检查和控制。查询期推理控制的结构如图2所示。
3 设计期推理控制的设计和实现
3.1 设计期的推理控制
在设计期,主要考虑由于元数据的使用而导致的推理问题。与元数据相关的推理往往是由于在安全设计时忽略了元数据知识对系统安全的影响,从而造成了潜在的推理通道。对于这样的问题,可以通过调整系统的安全设计来保证信息的安全。具体的方法就是通过分析在设计期就可以获得的元数据信息,使用安全约束规则,发现潜在的违反安全约束规则的安全设计,然后调整或者重新分配客体的安全分类标识,从而保证运行期的安全。这样设计的主要优点是:解决了由元数据引起的推理问题,同时可修改应用的安全设计且不需要在查询期分析大量数据,所以不会影响数据库运行的效率。本文研究的元数据知识主要是和函数依赖相关的信息。
设存在一个关系模式R(A1,A2……An),Ai表示关系R上的属性,r为该关系模式上的一个关系实例,t表示关系r的一个元组。假设X、Y为关系R属性子集,t(X)则表示元组t在属性X上的取值。如果在二个属性集X、Y之间存在函数依赖关系X→Y,则:对于任意一个关系实例r上的二个元组t1、t2,如果有t1[X]=t2[X],则必有t1[Y]=t2[Y],也就是说Y的值依赖于X的值。
此时由于函数依赖关系的存在可能会产生信息泄漏。在多级安全数据库中可以通过调整应用的安全设计来消除上述的推理通道。
3.2 设计期推理控制的设计
设计期推理控制器主要包括以下功能:
(1)知识获取。推理需要外部知识,对于推理的控制,当然也需要获取可能引起推理问题的外部知识。知识获取模块就是用来获取同推理分析相关的知识。它主要包括系统安全管理员通过系统提供的界面输入在设计阶段已知的函数依赖关系。知识获取模块在获取这样的函数依赖关系之后,首先转化为系统内部的数据结构,然后通过计算最小函数依赖集去除冗余的函数依赖关系(包括传递依赖和部分依赖),从而为推理通道分析准备数据。
(2)与强制访问的接口。用来获取数据库安全控制模块中的模式信息,以及相关的安全分类标识信息,即系统的安全设计信息。因为推理控制器对数据库中可能存在的推理通道的分析,主要是为了发现由于函数依赖存在而违反了安全约束规则的一些安全设计。所以首先需要获得的就是安全分类标识信息。同时对于推理通道的控制是通过修改数据库中客体的安全分类标记来完成的,所以需要有与强制访问相应的接口模块。通过该模块可以获取数据库中客体分类标识信息,也可以修改相应的安全分类标识。
对于待检查的关系要获取的信息为:出现在函数依赖集中的各个属性的安全标记和该关系上所定义的关键字集合。
(3)推理控制模块。在获取了与系统安全设计相关的知识及与元数据相关的知识以后,推理控制模块根据安全设计规则对相关知识进行分析,找到可能的推理通道,提示安全管理员,由安全管理员修改安全标记,从而达到去除推理通道的目的。
(4)与查询期推理控制的接口。如果因为各种原因,修改安全标记失败,使得设计期检查发现的推理通道不能被消除,则要把这些存在问题的函数依赖记录下来,加入查询期推理控制的规则库中,以备查询期推理控制使用。
本系统所采用的推理控制规则是:对一条函数依赖关系,其决定因素中,除关键字之外,至少有一个属性,它的安全标记应该不小于被决定因素。即如果存在函数依赖a、b、c=>d,其中a、b、c的安全级别均小于d的安全级别,而d的取值又由a、b、c的取值所决定,则有权访问属性a、b、c,却无权访问d的用户便可推知d的取值,从而引起信息泄漏。对于满足BCNF的关系,因为每个决定因素都是关键字,而关键字往往是检索的主要依据,故安全级别较低。而在函数依赖A→B中,如果A是关键字,则即使A的安全级别低于B的安全级别,由于Unique关键字(包括主关键字)的惟一性约束要求一个Unique关键字只能对应一个元组,因此不会产生推理通道。这样的推理控制规则可以使系统兼具安全性和可用性。
3.3 设计期推理控制的实现
系统实现的算法如下:
输入:某模式下待检查的关系名
输出:该关系中可导致推理问题的函数依赖关系
errorset={ };Pkset={ };fdset={ };
ruleset={ }
GetPK(schemaname,tablename,Pkset);
GetFD(schemaname,tablename,fdset);
for each fd in fdset
{
for each x in fd.forepart
{
if x not in Pkset
{if x.level>m
m=x.level;
}
}
if m<fd.hindpart.level then
errorset=errorset∪fd
}
对存在推理问题的函数依赖关系的集合errorset作如下操作:
for each e in errorset
{
if (modify_level(e))
delete e from errorset
else
ruleset=ruleset∪e;
}
errorset存放可能引起推理问题的函数依赖关系;fdset存放待检查关系上定义的函数依赖集合;Pkset为该关系上的关键字集合;ruleset为修改标记失败的函数依赖的集合,将被用来作为查询期推理控制所使用的规则的一部分;函数modify_level用于修改安全标记,使得函数依赖的前件至少有一个属性的安全级别不小于后件的安全级别。
4 查询期推理控制的设计和实现
4.1 查询期推理控制
设计期的控制并不能避免所有的推理问题,尤其是聚集、关联等问题。因为聚集推理主要通过应用数据来进行,所以只能在数据库的运行期进行相应的控制,才能解决这个问题。
由于多级安全数据库保证了用户不可以直接对敏感信息进行操作,此时信息泄漏是通过多次查询,根据获得的非敏感信息按照一定的推理规则进行推理而产生的。 由于每一次查询都是通过SQL语句进行,所以只要分析多个SQL查询及查询返回的结果集,就可以判断是否存在信息泄漏。
4.2 查询期推理控制设计
查询期推理控制器主要包括下列功能:
(1)规则的获取。获得数据之间的语义联系。这些可作为进行推理所需的规则,包括来自设计期的推理规则、安全管理员输入的规则和系统自动发现的推理规则。
(2)与强制访问控制(MAC)的接口。强制访问控制模块将直接拒绝违反MAC安全策略的查询。通过了强制访问检查的用户查询,将由运行期的推理检测模块作进一步的检查。
(3)推理检测。把结果集返回给用户之前,根据推理规则对当前查询结果和用户的历史查询进行分析。如果发现用户可能使用了相应的推理规则,就说明存在潜在的信息泄漏。此时需要结合安全设计的相关信息,判断推导出的信息对该用户来说是否属于敏感信息。如果是,就认为该查询为恶意推理查询。对于这样的查询需要进行控制,在系统中就会向用户返回空的结果集。
(4)历史查询记录。由于推理检测时要用到用户的历史查询结果,所以要存储一段时间内的历史查询。
(5)与设计期推理控制的接口。从设计期推理控制模块中取得在设计期存在推理问题却未能成功修改安全标记的所有函数依赖关系,并将其作为查询期推理控制的规则。
4.3 查询期推理控制实现
输入:用户的查询
输出:结果集或空集
result=Execsql;known=getlog;
rules=genRule;
for each r in rules
{
if result∪known satisfies r
if sensitive (r)
return { }
}
retrun result;
genRule用来生成进行推理所用到的规则,包括:采用数据挖掘中寻找关联规则的Apriori算法自动进行的规则挖掘;从安全管理员的输入得到规则;从设计期推理控制模块获得的推理规则。Sensitive 用来检查规则r所泄漏的信息对用户是否为敏感的(即安全标识高于用户安全标(接上页)
识),Known存放用户的历史查询记录,result为执行当前查询的结果。
5 结束语
本文为实现多级安全数据库中的推理控制提供了一种较为完整的解决方案,为实现更高安全级别的安全数据库系统中的推理控制提供了基础。该方案目前被应用于国家863计划信息安全领域内的数据库安全增强技术课题中,以期实现一个能够提供B2级(国家标准的结构化保护级)安全标准的主要安全功能的安全增强器,并取得了很好的效果。当前,对于多级安全数据库的推理,很难找到一个完整的理论体系来描述所有的推理问题。由于多级安全数据库推理控制的复杂性,本文虽然给出了解决推理问题的完整框架,但还需要更多的研究工作。
参考文献
1 Stickel X.Detection and Elimination of Inference Channels in Multilevel Relational Database Systems.Proceeding Of the IEEE Symposium on Security and Privacy,1993
2 Marks.Inference in MLS Database Systems.IEEE Trans on Knowledge and Data Engineering,1996;8(1)
3 Su T.Inferences in Database.Dept of Computer Engineering and Science,Case Western Reserve University,Ph.D,1986
4 Su T,Ozsoyogiu G.Data Dependencies and Inference Control in Multilevel Relational Database Systems.Proceedings of the IEEE Symposium on Security and Privacy,1987
5 Han J W,Kamber M.Data Mining Concepts and Techniques. New York:Morgan Kaufmann Publishers,2001