摘 要: 用一个改进的高优先级二段锁(2PLHP)算法实现实时数据库并发控制的安全性限制。
关键词: 并发控制 实时数据库 2PLHP算法
实时数据库系统的定时限制可以用事务在给定时间内完成的截止时间来表示。延误截止时间可能导致系统失效,甚至造成损失。除了定时限制,一些实时数据库系统还要求有安全限制。当多用户共享数据库而其中的一些用户有访问限制时,就要用到安全限制。但是,一般的安全数据库模型不能满足时间限制的需求。开发者的工作是要在实时数据库系统中实现安全限制,并且当延误截止时间时不破坏实时性能。安全实时系统要同时满足定时限制和安全限制,但它们可能发生冲突,满足其中一个限制就要牺牲另一个限制。是保持时间限制还是安全限制由系统决定。如果系统要求安全限制和时间限制折中,则要在不违反定时限制的条件下尽可能实现安全限制。
本文分析了实现合适的并发控制算法的实时数据库安全控制的一些因素,提出了一个安全折衷的新方法——动态隐藏通道控制要素(dynamic covert channel control factor)法,并提供了实现基于这种因素的二段锁算法。
1 安全模型
强制安全性可严格限制经认证的数据库用户对数据项的访问,它提供高级的安全保障,被广泛用于军事应用系统中。强制访问控制被典型地用在多级安全(MLS)数据库中,所有的MLS模型都基于数据对象和用户分级。数据对象有安全级别,用户也有明确的级别。如果用户的访问级别包括对象的安全级别,则该用户能够访问该对象。BLP模型定义了已广泛用于多级安全系统中的二个安全性质。(1)当主体的级别等于或高于对象的敏感性级别时,允许读;(2)如果主体的级别等于或低于对象的敏感性级别时,允许写。BLP模型的二个特性阻止数据对象从高级别直接流向低级别。但是,当数据对象作为事务并发执行的结果时,因为隐藏通道(covert channel)的存在而导致对象从高级别非直接地流向低级别。例如,当有高安全级别事务时,低安全级别事务的结果将延时。这样低安全级别的用户能够决定高级别的事务,甚至可能会在延时中接受信息。
强调安全性就可能因为导致延误截止时间而损失实时的完整性。如一个数据冲突中,有较早截止时间的高安全级别事务和较迟截止时间的低安全级别事务,如果低安全级别事务获得数据并阻塞高安全事务,则安全性得到保障,但会违反实时限制。高安全事务有较早的截止时间,可是因为低级别事务的阻塞可能错过截止时间;相反,如果要保持定时限制,就违反了隐藏通道的安全性。
2 安全控制因素
在安全的实时系统中,安全性可以作为强调安全的标准或者作为牺牲安全性来得到更多的延误截止时间和定时性妥协的标准。如果系统允许牺牲安全性得到定时性,则需要一些手段来衡量这种严重性。本文提出用动态隐藏通道控制因素作为衡量手段。下面介绍隐藏通道的特性。
2.1 隐藏通道特性
隐藏通道是指非有意泄露信息的通道,主要有三种类型:存储器隐藏通道、时钟隐藏通道和脉冲隐藏通道。隐藏通道是某一专门操作所特有的属性,并非一般算法或协议。当系统允许安全性和定时性进行交换时,必须提供衡量违反安全严重性的方法。当安全性冲突解决时,事务是有安全级别的。事务安全级别的不同作为衡量违反安全严重性的标准。相互临近的安全级别要比分开的安全级别靠近。这样,安全级别区别越大,隐藏通道就越严格。换句话说,邻近的安全级别之间的隐藏通道没有分开的级别严格。例如,假设有一安全级别按顺序为:非保密级<保密级<秘密级。在非保密级和保密级之间的隐藏通道没有非保密级和秘密级之间严格。
安全实时数据库系统并发控制算法中,在使用事务的截止时间的同时使用了事务安全级别来解决数据冲突。可以相信安全级别的不同是决定是否因为可能牺牲定时性而关闭隐藏通道的观点。
隐藏通道特性指在数据冲突中,如果二个事务的安全级别差别越大,则它们之间的隐藏通道就越严格。
隐藏通道特性显示后果与安全级别或访问级别之间的差别相关。也就是说,访问级别的差别越大,保持安全性和关闭隐藏通道就越重要。如果二个冲突事务是在二个极端的安全级别,打开隐藏通道的后果是最严重的;如果安全级别是相邻的,则后果是最轻的;如果在同一安全级别,则不会有隐藏通道,也就不会有任何后果。
2.2 动态隐藏通道
有可能二个以上的事务涉及一个隐藏通道。如假设有三个事务在三个不同的安全级别,T1在秘密级层,T2在保密级,T3在非保密级。假设系统只允许连续的级别(即级别差为1),猜想在T1和T3之间有隐藏通道,则这个隐藏通道是禁止的,因为级别的差值大于1,而T1和T2、T2和T3之间是可以有隐藏通道的。如果允许T1和T2、T2和T3之间有隐藏通道,就不可避免地打开了T1和T3之间的隐藏通道。为了避免出现这种情况,就要限制T2、T3之间的通道,即使这二个事务是连续的级别。所以需要追踪一个事务涉及的隐藏通道的记录,就需要一个属性来记录一个事务涉及的隐藏通道,记为隐藏通道记录(T)。最初,每个事务都是0记录,只要涉及到隐藏通道,分级级别的差值就会加到先前的记录上,如下表示:
对所有事务T,隐藏通道记录(T)=0 //初始化
对所有事务TL
If TL涉及到事务TH的隐藏通道 Then
隐藏通道记录(TL)=隐藏通道记录(TL)+隐藏通道记录(TH)
+访问级别(TH)-访问级别(TL)
在TL和TH二个事务之间有一隐藏通道,TL在低级别,TH在高级别。只有TL的记录会发生改变,因为TL是不直接收到信息的。隐藏通道记录仅包含先前允许的隐藏通道信息,而不包含当前的隐藏通道信息。
现在用隐藏通道记录来定义动态隐藏通道因素(DCCF)。如果存在T1、T2,且级别(T1)>级别(T2)之间有隐藏通道,则DCCF定义如下:
二个事务之间的隐藏通道只能发生一次。如果T1、T2再次发生冲突,则隐藏通道是不被允许的,这样就能阻止二个事务重复打开一个隐藏通道。在自主访问控制中,用违反安全性记录来防止再次违反也是很普遍的。例如当一个用户输入密码的错误次数太多时,则这个访问账号将被锁住,只有用特殊的方法才能激活这个账号。
2.3 系统安全容许
根据系统要求,违反安全可能容许或者不容许。这里将系统安全容许(SST)作为一个系统许可最大违反安全性的指标。SST=0意味系统不允许隐藏通道,SST=1意味系统允许所有可能存在的隐藏通道。换句话说,SST是表示系统安全违反的最高限制值。如果一系统仅允许在二个连续的访问级别存在一个隐藏通道,则在此条件下,所有隐藏通道差值大于1是不允许的,定义如下:
SST值越小,安全性就越重要。在下面的章节中将用SST表示安全的重要性。在安全冲突中,如果DCCF>SST,则冲突是在安全的条件下解决的,相反,冲突是在实时限制的优先级基础上解决的。
3 安全并发控制算法
本文以上面提到的安全因素为基础,提出了安全2PLHP(Secure two-phase locking high priority)算法。2PLHP算法是2PL算法的改进,它的机制是使所有解决数据冲突的方法倾向于高优先级事务。当一个事务以冲突方式申请被另一事务持有的锁时,优先级较低的持有者重启,优先级较高的申请者被授予锁;如果申请者的优先级低,它等待优先级较高的锁持有者释放锁。另外,只有当新的读锁申请者的优先级高于所有等待写锁操作时,它才可以加入一组读锁持有者。给定T1、T2事务,T1是申请锁事务,T2是占有锁事务,则:
If 截止时间(T1)<截止时间(T2) Then
Abort T2
Else
阻塞 T1
2PLHP算法不能识别安全性,因此,要在申请锁事务和占有锁事务中加入安全限制。对于实时数据库系统有可能出现五种冲突。下面介绍每种冲突的安全2PLHP算法描述。这里,仍假设T1是申请锁事务,T2是占有锁事务。
(1)冲突1
If 截止时间(T1)>截止时间(T2)and 访问级别(T1)>访问级别(T2)阻塞 T1 //优先级和安全都被保持
这种情况下的申请事务在低优先级和高安全级别,申请事务将被退出或阻塞。这样不会有隐藏通道,也不会违反优先级。
(2)冲突2
If 截止时间(T1)>截止时间(T2)and 访问级别(T1)<访问级别(T2)
If DCCF>SST then
Abort T2 //保持安全性
Else
阻塞 T1 //保持优先级
此情况中的申请事务在低的安全级别,如果它被阻塞或退出,则一个隐藏通道将介入。但是如果申请事务将继续而持有锁的事务退出的话,将违反优先级。这时需要计算T2退出的DCCF值,如果DCCF大于SST,则持有锁事务将退出,否则申请锁事务将被阻塞。
(3)冲突3
If 截止时间(T1)<截止时间(T2)and 访问级别(T1)>访问级别(T2)
If DCCF>SST then
Abort T1 //保持安全性
Else
Abort T2 //保持优先级
此情况下的申请事务有高优先级和高访问级别,如果持有锁事务退出,将打开一个隐藏通道。这时需要计算T2退出的DCCF值,如果DCCF大于SST,则T2允许继续和T1退出,否则赋予T1锁,T2退出。
(4)冲突4
If 截止时间(T1)<截止时间(T2)and 访问级别(T1)<访问级别(T2)
If DCCF>SST then
Abort T2 //保持安全性和优先级
此情况下,申请事务在低安全级别和高优先级,能够通过退出T2来解决冲突。优先级将保持,也不会介入隐藏通道。
(5)冲突5
Else If 访问级别(T1)=访问级别(T2)
If 截止时间(T1)<截止时间(T2) then
退出 T2
Else
阻塞 T1
在这种情况下,二个事务有相同的安全级别,因此没有隐藏通道。冲突根据2PLHP算法解决。
安全2PLHP使用的SST值的选择很重要,它提供了在系统中保持优先级和安全性的方法。SST值越小,保持安全性越重要,在安全性的条件下解决冲突花费的时间越多。当事务冲突在低安全级别时,为系统选择合适的SST值,就能够保留100%的隐藏通道。要保证冲突2和冲突3的DCCF值,并使DCCF大于SST,则任何情况下SST大于DCCF都将违反安全性。
尽管2PL算法会发生死锁,但2PLHP算法和安全2PLHP算法可以避免死锁,只是在安全冲突中会延误事务的截止时间。
4 性能评价
图1显示二种算法在SST=0时延误截止时间的比例。二种算法的明显区别是在比例为15到25之间,这时候安全2PLHP算法的延误截止时间比例要高于2PLHP算法。在以后二种算法相差不大。
安全2PLHP算法可以识别隐藏通道,因此,用这种方法安全因素是提高的,如图2所示。在2PLHP算法中安全因素是不稳定的,在0.5之间徘徊。而安全2PLHP算法显示安全因素等于1,意味所有隐藏通道都是自由的。
结果显示,虽然强调安全2PLHP算法的安全性,但不要过多地牺牲实时限制。这是因为需要强调安全性的数据冲突并没有违反基于截止时间的优先级。增加安全性意味低安全级别的事务有更多的冲突需要解决。如果低安全级别的事务有更晚的截止时间,则强调安全性意味失去优先级。但如果有更早的截止时间,则优先级将可保持。因此获得完全的安全性并不意味失去所有的实时限制。
5 小 结
本文介绍了安全实时数据库的特性,提出了新的并发控制算法——安全2PLHP算法。安全2PLHP算法可以用在需要保证定时而控制安全级别的系统中,也可以用在安全性可以和实时限制折中的系统中,即牺牲安全性而更多地保证实时性的系统中。结果显示安全2PLHP算法比2PLHP算法更能保证安全性和定时限制。在安全2PLHP算法中可以选择安全容忍值、合适的容忍值,可以有100%的隐藏通道。
参考文献
1 Ahmed Q N,Vrbsky S V.Issues in security for realtime databases.In:Proceedings of the ACMSE Confer-
ence,1998
2 David R,Son S H,Mukkamala R.Supporting security requirements in multilevel real-time databases.IEEE
Transactions on Knowledge and Data Engineering, 2000;12(6)
3 李国威,刘云生.实时数据库并发控制.小型微型计算机系
统,2001;(12)
4 许倩霞.多级安全面向对象数据库的并发控制模型.微型机
与应用,1998;(9)