CSDN博客

img yako

信息安全-四: Seaview模型

发表于2004/10/23 13:32:00  3426人阅读

第四讲    Seaview模型

 

Seaview模型是一个多级安全关系数据库系统的形式化模型。它的目标是设计一个达到DoD(美国国防部)可信计算机系统评估准则(TCSECA1级的多级安全数据库系统。

多级安全关系数据库系统是指数据库中存放着安全级不同的各种数据,以适应不同安全级别用户的需要。按照强制安全策略的要求,仅当用户的安全级高于或等于(亦称“支配”)数据的安全级时,用户才能读访问这些数据。

 

一、多级关系模式和客体的安全标记

       一个多级安全关系数据库系统,安全级标记的粒度可以是关系,也可以是记录,也可以是属性,但以上定义方式都难以得到高安全级的数据库系统。因为按以上定义方法,或者会使某些敏感数据的安全级降低,或者会使某些数据的安全级升高,也就是或者牺牲安全性或者降低数据的可用性。在Seaview之前有些模型是这样定义的。

       用户对数据库的操作在很多情形下实际上都是以数据项为其访问对象,这些数据的敏感程度往往差异很大。例如在一张人员表中查询50岁以上人员的健康状况,这其中有些人的健康状况不是任何人都可以查询的,需有一定的安全级等。

       因此,Seaview模型将访问控制粒度定为数据项,即对每一数据项都有安全级标记。为此,它将标准的关系模式R(A1,A2,,An)扩展为R(A1,C1,A2,C2,An,Cn)。使每一数据属性Ai之后还有一与之相对应的安全级别属性Ci,即在每一数据项后,都带有该数据项的安全标记。(一个关系的属性表名称为关系模式,关系模式就是二维表的表框架,其中R为关系名,A1, A2,……An为属性名。)

表一

d8

d7

d6

d5

d2

d3

d4

d1

       例如:

A1

C1

A2

C2

A3

C3

001

d2

24

d5

x

d5

013

d3

15

d7

y

d8

005

d8

35

d8

z

d8

D

R

K

d

r

       假设安全级的偏序关系呈以下形式,由于数据库中数据客体复杂的关系,Seaview模型对库、表、记录也均定义了安全级且要求这些数据客体的安全级呈以下关系(令D表示数据库,R表示某张表的关系模式,r表示记录,K表示记录r中的主关键字,d表示r中不是主关键字的任一数据项):

class(D)class(R)class(K)class(d)class(r)

注意:主关键字K可能由多个属性组成,若为多个属性值组成,则要求每个属性值的安全级相等。

       在标准的关系模型中,允许属性值为空,在多级关系中也允许属性值为空,对它也要定义安全级,但安全级取Ci中的最低值。

       上述安全级的关系规定的理由是:

       1.若class(D)高于class(R),则安全级低于class(D)的用户无法知道该库的存在,便不能访问库中与自己安全级相匹配的数据。

       2.类似地,若class(R)class(r),则安全级低于class(R)用户不知道该关系存在,因此无法去访问R中与自己安全级相匹配的数据。

       3.主关键字是用来唯一地标记该记录的,常作为查询的条件,它的安全级应低于其它属性值的安全级。

       4.整条记录的安全级class(r)高于记录中所有数据项的安全级,常取各class(d)的最小上界。它使得用户的安全级只有当其支配class(r)时,才能看到该记录中所有的数据项,否则只能看到部分数据项。

 

复习数学概念:

一、            偏序关系及次序图;

二、            最小上界和最大下界;

class(r)=class(d1)class(d2) ∨…… class(dn)

         =lub(class(di))  dir

class(R)=glb(class(di))  diR

class(D)=glb(class(Ri))  RiD

 

例如,对于表一,class(r1)=d5class(r2)=d8class(r3)=d8class(R)=glb(d2,d3,d5,d7,d8)=d1

       class(R)取各数据项安全级别的最大下界。(不能取d5,也不能取d7,因为不能满足上述不等式关系,且若如此的话,则d5主体或d7主体看不到关系的存在。

       对于一个主体u,仅当class(u)class(R)时,u才有权访问R,但u不一定能访问关系R中所有的数据。

       例如,class(u)=d1,则u知道表R存在(可访问表R的模式,可向R插入数据)。

       class(u)=d5,则看到的是过滤后的关系,如表二所示。

 

表二

A1

C1

A2

C2

A3

C3

001

d2

24

d5

x

d5

013

d3

null

d3

null

d3


      
class(u)=d7,则看到的是过滤后的关系,如表三所示。

表三

A1

C1

A2

C2

A3

C3

013

d3

15

d7

null

d3

       class(u)=d8­,则可以看到全部数据项(即整张表)。

因此每一用户读访问这张表时,看到的是以自己安全级过滤后的视图。

二、Seaview模型的安全性质(安全策略)

       1.若class(u) class(R)class(u)<class(R)或两者不可比),则u看不到R的存在。

       2.若class(u)class(R),则u可以访问R,但不一定能访问到R中所有的数据,具体规则如下:

       对每条纪录r

       class(u)class(r),则u能查询到r,并能看到r中所有的数据。

       class(u) class(r),(小于class(r)或不可比),则u可以看到记录r中的部分数据。

              iclass(u)class(Kr),则u能看到主关键字Krr中安全级≤class(u)的数据。而其它的数据,u看起来全为空值。

              iiclass(u) class(Kr)(小于class(Kr)或不可比),则u不能看到r中任何数据。

       u可以对R进行插入和修改操作。如d1~d8均可对表进行插入,对其能看见的数据作修改。修改策略是:

       低不能改高(数据完整性保护);

       高不能改低(防止信息泄漏);

       只有同级才能改。

 

三、多事例

       Seaview模型的安全策略控制下,在数据库中可能出现这样的现象:相同名字,同时存在多个数据实体。Seaview模型用不同的安全级来区别这些实体——这种现象称为多事例。

       1.多事例关系(由“查询”引起的)

       在任一状态下,不同安全级的主体检索同一多级关系时,将得到的是不同的关系,这些不同的关系,称为是多事例关系。

       多事例关系用关系名R和安全级class(R)来表示。

       例如,上面的表一、表二和表三可分别记作(R,d8)(R,d5)(R,d7)

       2.多事例记录(由“插入”引起的)

       具有相同的主关键字,但主关键字的安全级不同的记录称为是多事例记录。

由于各数据项及各记录的安全级不相同,因此, 当主体uclass(u)class(R),主体u向关系R中插入一条记录时,则可能会导致产生多事例记录。原因是:

1.可能R中已有相同主关键字的高级别或者安全级不可比的记录存在(该用户不可见)。为了防止信息泄露,不能告诉他该记录已存在,也不能覆盖原有的记录,采取的方法是再添加一条与原记录主关键字相同,但其安全级别不同的记录。多事例对这个主体不可见。但高级别主体可同时看到这两条记录。

       2.若R中已有低安全级的相同主关键字的记录,则可以拒绝此操作,也可产生高安全级的多事例。

 

       例,安全级为d7的主体用主关键字005添加一条记录到表三,则d8的主体看到表四,而d7主体看到表五。

 

 

 

表五


表四


A1

C1

A2

C2

A3

C3

001

d2

24

d5

x

d5

013

d3

15

d7

y

d8

005

d8

35

d8

z

d8

005

d7

20

d7

w

d7

A1

C1

A2

C2

A3

C3

013

d3

15

d7

null

d3

005

d7

20

d7

w

d7

      

       3.多事例数据项(由“修改”引起的)

       在相同的记录中,某数据项的值和其安全级呈现多种不同的取值,这样的数据项称为是多事例数据项。

       当主体u修改关系R中的数据项时,可能会导致产生多事例数据项。

       主体u修改记录中的空值,该空值往往是隐藏着高安全级的数据,或安全级与u不可比的数据(空值的安全级很低,用户可能是可见的),低可以修改高,但不能破坏其完整性。

A1

C1

A2

C2

A3

C3

001

d2

24

d5

x

d5

013

d3

15

d7

y

d8

013

d3

15

d7

p

d7

005

d8

35

d8

z

d8

005

d7

20

d7

w

d7

表六

因此只能让其再产生一条记录,用新的记录来产生数据项的多事例。

例如,d7的主体要修改表五中nullp,则d8的主体看到的如表六。而d7的主体只能看到第三条和第五条记录。其中,“p  d7为多事例数据项。

       主体u修改记录中已存在的低级别的数据(高可修改低,但不会造成泄露)

表七


       此时不能用修改值覆盖旧值,以免造成信息泄露。因此必须再创建相同的记录,但相应数据项是多事例的。

A1

C1

A2

C2

A3

C3

001

d2

24

d5

x

d5

013

d3

15

d7

y

d8

013

d3

15

d7

p

d7

005

d8

35

d8

z

d8

005

d7

20

d7

w

d7

013

d3

48

d8

y

d8

013

d3

48

d8

p

d7

       例,d8主体修改表六中记录013中的A2,由“15改成“48,则系统处理方法是创建两条新记录(实际上,d8也可只修改一条,但处理起来可能更复杂),如下表:d8可见表七中所有数据项。

       此时,d7主体看不见这两条记录,仍只能看上面的三、五两条。

 

 

 

 

 

 

 

四、多级关系的存储

       多事例使得多级关系中出现了大量的数据冗余,Seaview模型将多级关系分解成关系模型的标准关系,将多级数据按照不同的级别分开存储,这样做消除了冗余且较大程度地减少了信息的泄露。

       当用户查询多级关系R时,再构造R的相应级别的视图。其分解和恢复算法复杂。

       Seaview模型是BLP模型在数据库上的一个具体应用,但它有修改。如高安全级用户可修改低安全级用户的数据、低安全级用户亦可以修改高安全级(看到的是空值)的数据,但各自视图不一样,不会造成泄露。用多事例来解决完整性可能被破坏的问题。但付出的代价是数据的冗余(或查询和存储时的效率)。

       优:1.安全级定义粒度是数据项级,较好地实现了数据的安全性和可用性。2.是多级安全策略在数据库上实施的一个范例,且用多实例的方法解决了高可修改低,低可修改高的问题,不会导致数据完整性的被破坏。3.数据分级存储更有利于对高安全级数据的保护。

       缺:数据分解和恢复的算法复杂,在查询时间上要付出代价。

阅读全文
0 0

相关文章推荐

img
取 消
img