信息安全工程师教程学习笔记之多级安全数据库

信息安全工程师 责任编辑:长颈鹿 2016-07-20

添加老师微信

备考咨询

加我微信

摘要:全国计算机技术与软件专业技术资格(水平)考试,这门新开的信息安全工程师分属该考试“信息系统”专业,位处中级资格。官方教材《信息安全工程师教程》及考试大纲于7月1日出版,希赛小编整理了信息安全工程师教程学习笔记之多级安全数据库,供大家参考学习。

    >>>>>信息安全工程师在线辅导 

   

      >>>>>信息安全工程师培训视频

      全国计算机技术与软件专业技术资格(水平)考试,这门新开的信息安全工程师分属该考试“信息系统”专业,位处中级资格。教材《信息安全工程师教程》及考试大纲于7月1日出版,希赛小编整理了信息安全工程师教程学习笔记之多级安全数据库,供大家参考学习。

      完整性约束通常被认为与多级数据库的安全是不相容的。完整性约束强波数据关联到一起,而与此同时,安全性约束强迫数据分开。如果一个完整性约束被定义在了不同安全级别的数据上,将直接导致一个冲突的结果。然而解决方案并没有彻底得牺牲完整性约束。妥协的解决方案经常能被发现,可以保证一些约束想要的得到的结果。虽然不是全部。在这篇论文中我们将展示通过完整性约束的期望目标划分成三个领域:一致性,正确性,可获得性。以来在不牺牲安全性的条件下,达到一些完整性目标,虽然不是全部。

      论文的以下部分被划分如下。在一个关于多级数据库的安全问题的一个简短的概述之后,我们将讨论完整性问题并描述三个完整性的性质,一致性,正确性和可获得性。然后我们将讨论关系型数据库中的完整性问题以及完整性之间的相互影响。我们也将讨论定向的数据库。

      多级数据库中的安全问题

      多数的安全入侵都数产生于关于多级安全数据库中不直接导致数据关联的完整性约束的申请。而不是产生于在多个安全级别的数据上定义的完整性约束会产生一个通道,通过这个通道,高安全级的数据会被传递给较低安全级用户的这个事实。这个通道有两种类型:

      1推理通道。一个处于较低安全级的用户可以使用他所知道的较低安全及的数据以及约束(如果这个约束对其来说是可用的话)来推出同样被这个约束作用的高安全级数据。

      2信号通道。信号通道分为存储通道和时间通道两种

      在一个存储通道中,如果满足一个完整性约束需求这个约束使高安全级数据直接影响低安全及数据的值。一个嵌在高安全级别进程中的木马程序可以讲高级数据译码成低级数据,其方式是通过改变完整性的约束中的高级数据。这样他可以在低级数据中产生可是变得改变。这样通道不仅仅可被用于传递直接被约束的作用的信息,也可以用于其他木马病毒可接触到的信息。

      在一个时间通道中,如果一个完整性约束同时依赖于高安全级和低安全级的数据,则木马病毒就可以通过时间值译码高安全级数据。它将使高安全级数据成为证实完整性约束有效地必要值。而且,这样的一个通道可以传递任何木马程序可接触到的信息。

      基础的不兼容都是由于很多多级安全数据库中,介于安全和完整性之间的冲突产生的,而这种现象我们称之为数据库的基本安全原理,这种原理带有数据库的完整性,一致性,正确性,可获得性。数据库的基础安全原理描述如下:一个数据项的安全级别应该统领所有该安全级别下的数据。数据库的基础安全原理的成因很明确:如果数据可以被不在此安全级别中的其他数据所干扰,那么信息就可以流入其他安全级。

      数据库完整性的属性被定义如下:

      一致性:如果一个数据库是一致性的,任何时候为了派生一个信息都存在两种不同的方法,一个要求提供的信息总是得到相同的反映

      正确性:如果所有的数据满足所有已知的约束,则这个数据库是正确的。

      可获得性:如果数据库中的数据可以对任何许可用户可见,则这个数据库是可以获得的,并且所有被许可进入或更新数据的用户都可以这样做这三个完整性属性有点重叠。然而,正因为他们经常可以相互权衡,我们发现非常容易辨认他们。在这篇论文的其余部分中,我们为发挥其作用定义了一些原则。我们也定义了一些他们的权衡方法,并且讨论了一些关于优化多级数据库各方面属性的技术

      主要的完整性约束。

      在这一部分,我们将讨论通过数据给予数据库正确性的三个基本标准。并描述这些表征与基本安全原则之间产生的冲突,还有解决方案的建议。这段内容基本上来说是Hinke和Schaefer和Denning et al,和我们自己的一些成员的讨论的一个概要。

      主键完整性。

      每一个关系中的元祖都必须有一个单一的主键。这个约束在数据被划分在关系级或列级时不会产生任何问题,因为在这种情况下关系中的所有主键都在同一个安全级下。但是考虑一下,一个低级用户想把一个元组输入进一个同时外加于元素和元祖级的关系中。如果元组中的主键在更高安全集中已经存在,那么,为了维持主键的完整性,则DBMS必须删除元组或提醒用户主键已经存在。在第一种情况,数据对于高级用户的可用性被降低到了一个可能是不可接受的级别,而第二种情况下违反了基本的安全级别;已存在的高级数据被允许影响已存在的低级数据。

      同样的,如果一个数据被分在了元素及,则一个低级用户在试图插入一个低级元素时就不会用被警告在高级别中元素已存在。高级元素也不能被检测出。因此,两个版本的元组将同时存在;一个是高级元素值,一个是低级元素值。如果数据被划分在了元素级,则潜在问题将更加严重。因为这个过程不仅是多个元组共用了一个主键,多个元素也可以接触到所给元组的属性。

      允许多个版本的元组共存以防止安全入侵的策略首先被Hinke和Schaefer提出。如今以其命名的比较知名的polyinstantiation,其为海景项目带来财富。Polyinstantiation在21号论文中已经被深入讨论了,所以我们在这里就不细致的描述了。然而我们将简单的回顾一下解决polyinstantiated元素。例如,看一下图表一中的关系flights。

      在这之中属性风别为Flight Number,Destination和Payload并且每个元素都有自己的分级。

1.png

      现在考虑一下图表一中的flight701。一个低级用户将可以看到这个航班且无权访问Destination和Payload属性。因此,这个用户或两个这样的用户可以为这个元素输入自己的值。如图表2所示,这可能导致高级用户查看时会产生四种不同的结果。换句话说,潜在的与polyinstantiated元素的数量是指数增长。

2.png

      在最初海景项目所用的来解决这个问题的方法中,所有的潜在的元组都被允许存在:因此,正确性就被牺牲了。因为只有一个元组可能是正确的。在随后的工作中,这个方法被改进为只有一定数量内的元组被允许显示。Lunt和Hsieh修改了最初的海景运算法则,这样当同一个元组中两个或多个范围内的用户在同一个交换中更新时polyinstantiated元素就可以被限制在一个特定的区域中,Jajodia和Sandhu给出了一个运算法则,他将在每个关系的基础上按需求展示策略。Haigh,O‘Brien和Thomsen则提出了一种运算法则只允许每个安全级显示不多于一个元组。

      所有的以上技术都限制了polyinstantiated元组的显示。然而,正确性还是被牺牲了,因为即使是使用约束性最强的运算方法,共用一个主键的多个元组依然存在。在某些情况下,我们可以从这些特点中得到好处,其方法是将低级元组做完设计的主要方面来误导用户关于已存在的分级数据的认识。然而,并不是一直都是这种情况。实际上,在一些情况下低级信息可能更敏感,比如说,这个低级信息是最新的。

      这个问题被最近的一个运算方法解决了,它消去了所有的polyinstantiated。在Sword数据库系统中,一个用户在其可以接触一个高级的元素之前,必须先登录到一个低级别层中,并将元素升级。Sandhy和Jajodia提出了一个运算法则,其产生了一个不依赖于真实的代码的类似的结果。并且在其处理不同安全级别的元组时,约束性较小。这个运算方法曾经一度有利于实现正确性:一个元素的多种版本在任何时刻都不可以共存。然而他们达到这个目的却是以牺牲可获得性为代价的。在这两种情况下,约束性都是在用户可以接触到高级数据的的方法下实现的。Sword运算方法对其的约束更甚,一旦一个高级的元组在升级一个低级元组的主键时被创建出来,将不会再有低级元组可以被输入进关系中,因为允许这种操作的存在可能导致违反主键完整性的潜在威胁,同时也可能导致信号通道的产生。因为高级元组时通过升级低级元组产生的,这也就是说,一旦一个高级元组被创建则不会有新的低级元组被输入。

      实体完整性。

      每个元组都必须含有一个不为空的主键,当数据被划分在关系或元组级时,安全性的考虑将不会导致一个实体完整性的问题。然而,当数据被划分在列级或元素级时,如果主键的安全级别高于或与关系中的其他元素的安全级别是不可比较的时候,则问题可能产生。因此,在数据库中要求关系中的所有主键的安全范围都被数据的安全级别所控制,就像Hinke和Schaefer所说的那样,是必要的。(注意,这个要求意味着所有范围内的主键都必须处在相同的安全级别中)根据关系被定义的方法,这个方法将减少数据的可获得性。例如:考虑一下下面这个例子,与Hinke和Schaefer讨论的相似。令R是ABCD的关系,主键是AB。假设A和D都是高度敏感的,B和C则不是,而且C只作用于B,为了维持实体完整性,C必须至少被划分在与A同级的高度。而将关系R分割成ABC和BC两个关系就可以避免这个问题。

      Hinke和Schaefer推荐的解决方法是,存储数据,这样关系中就可以产生尽量少的剩余;他们建议使用第三种正常形式。

      参照完整性。

      如果一个关系中的一个属性是另一个关系的外键,则这个关系中的所有元组被以空值输入属性或在其它拥有这个主键的关系中被输入值的同时输入值。在这种情况下,数据库的完整性可能在四个数据处理方法中的其中一个被采纳时被违反。例如:假设数据库被划分在关系层,并且关系中的一个低安全级的外键参照一个更高安全级分组的关系中的元组。如果一个用户执行了一个较低的清空操作,则其主键就会比较危险了。类似的问题也会发生在数据被划分在元组,列以及元素级中。

      最有效地减少悬挂密钥的方法需要,假设一个元素A与关系R构成一个新的关系R’,此时R中的安全类A也贡献给R’中的A。但是在【DENN87】中已经指出,如果R中的A严格的贡献给R’中的A则可能导致信号通道的产生。假设,一个在T中的A被设计成R’的外键。T’是包含R’中的A的一个关系,这里有两种方法可以在用户尝试删除T’时实施参照完整性。方法一:如果T被定义为一个比T’高级别的项则可以手动删除T中的A。方法二:开启一个信号通道,因此通过重复的删除和插入T,一个秘密进程可以向未分类的进程传递信息,即重复读尝试删除和插入T’。方法一是手动的从T中删除A,当T’被删除,不会打开信号通道,只有数据的安全级别较高时才使用方法二。

      正如Gajnak所指出的那样,更深远的问题可能在对已经存在的polyinstantiated强制实施参照完整性时产生。当一个元素参照polyinstantiated元组时,它应该参照哪个元组?另外当参照完整性被实施在多个链接上时(也就是说,如果AB的一个外键,属于C,且同时其又是D的一个外键),则其可能的参照数量也呈指数增长。

      海景中提出的方法是将参照完整性只在相同的安全层中强制实施。因此正确性虽然还是为了保全安全性牺牲了,但是还是在没有违反安全性的情况下被强制实施了。Burns曾经建议有选择的执行安全级与安全级之间的参照完整性,这样信号通道就可以被控制,或者因为其他一些原因被认为不会构成严重的威胁。

      参照完整性并没有吸引到与主键完整性相同数量的关注。这很可能是因为,知道现在大多数商业的数据库管理系统也没有实施参照完整性,因此就没有必要在多级数据库中提供一个在单级数据库中都没有被提供的特性。然而,正如Burns所指出的这种情况已经在转变:商业的数据库管理系统已经开始提供参照完整性。而且也不难想象多级安全之间的参照完整性将会更好用:考虑以下,一个已经分级的电脑系统中使用未分级的部件的详述。他被希望在以后的研究中给予与polyinstantiated同样的关注,并介绍了一些新的解决方案。在这个解决方案中,正确性,一致性和可获得性被根据彼此相互交换来为解决独立数据库的申请问题提供了最好的办法。


    返回目录:信息安全工程师教程学习笔记之系统安全汇总(一)


    希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库软考历年真题)、软考培训教材软考视频教程,多样的培训方式包括在线辅导面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取

!
咨询在线老师!