经典的私密性模型

本文介绍了信息安全领域的经典模型,包括Bell-LaPadula模型的私密性保护,Biba模型的完整性保护,以及Clark-Wilson模型的商业完整性需求满足,最后探讨了Chinese Wall模型如何防止利益冲突。各模型通过不同规则确保数据的私密性、完整性,并对操作权限进行严格控制。
摘要由CSDN通过智能技术生成

Bell-LaPadula model

最早的计算机私密性形式化模型之一,对计算机私密性技术的发展影响深远。

多级私密性模型(Multilevel Security Model),从低到高分‘UNCLASSIFIED’、‘CONFIDENTIAL’、‘SECRET’、‘TOP SECRET’四个密级。

对于客体Object,根据其敏感程度分配密级;对于主体Subject,根据其访问的客体分配密级。

如果主体在某密级有权限,则该密级称为此主体的‘安全准入级别(Security Clearance)’,记作level(s) ;

如果客体被划分到某密级,则该密级称为此客体的‘安全分级(Security Classification)’,记作level(o) ,安全分级的值又称为label,如:客体o的安全性分级是TOP SECRET,则称客体o的label是TOP SECRET。


定义1. ** The simple security property says that a subject s can read an object o if
and only if level(o) ≤ level(s). 主体不能访问自己安全准入级别不到的客体。又称为no-reads-up规则(主体不能向上读客体),该规则是
*强制访问控制***。

定义1的规则不能防止信息的**‘Flowing Downward’**.

Flowing Downward: 例如冯广健的安全准入级别是CONFIDENTIAL,根据定义1,由于level(《绿色兵团》) = SECRET > CONFIDENTIAL = level(冯广健) ,冯广健不能访问《绿色兵团》,但谢丹青可以访问《绿色兵团》,谢丹青把《绿色兵团》写进了《大象历险记》专辑,同时,冯广健有《大象历险记》的访问权限,这时,属于SECRET的《绿色兵团》就泄露到了CONFIDENTIAL的安全准入级别。

由此引出定义2:

定义2. The ∗-property says that a subject s can write an object o if and only if
level(s) ≤ level(o). 又称为no-writes-down规则(主体不能向下写客体),该规则是***强制访问控制***。

根据该规则,因为level(谢丹青) = SECRET > level(《大象历险记》) ,所以谢丹青不能把《绿色兵团》写入到《大象历险记》,从而防止了Flowing Downward。

客体的所有者(owners of objects )可以自主访问控制:

定义3. The discretionary security property says that a subject s can read an
object o only if the access-control matrix entry for s and o contains the read right. 自主访问控制

对于‘读’权限,需要检查定义1和定义3

例如:只有 level(《大象历险记》) ≤ level(谢丹青) 且 在系统访问控制矩阵中,谢丹青有《大象历险记》的读权限,即满足定义1和3,则谢丹青可以读《大象历险记》。

对于‘写’权限,需要检查定义2.

基本安全性定理(Basic Security Theorem). Let a system Σ have a secure initial state 𝜎0. Further, let every command in this system obey the simple security property, the ∗-property, and the discretionary security property. Then every state 𝜎i, i ≥ 0, is also secure. 如果系统的每条命令都满足定义1、定义2、定义3的约束,并且系统的初态s0是安全的,则系统的可达状态si也是安全的。

可以将基本安全性定理推广到有数量更多的递增密级的情况。


问题

Erin为政府部门的欧洲分部European Department(EUR)工作,Don为该部门的亚洲分部Asia Department(ASIA)工作,Erin和Don的安全准入级别都是SECRET。Erin能看的文件,Don也必须看到,反之亦然。

要满足这种需求,只是增加更多的安全级别的不行的。

解决:

一个可选方法是“将安全密级level进行扩展”,增加一个分类category,这样,一个**安全级别(security compartment)**是二元组(level, category)。

这样,Erin的安全级别是(SECRET, {EUR}) ,Don的安全级别是(SECRET, {ASIA}) 。文件同样处理,文件EurDoc的密级是(CONFIDENTIAL, {EUR}) ,文件AsiaDoc的密级是(SECRET, {ASIA}),文件EurAsiaDoc的密级是(SECRET, {EUR, ASIA})。有level(Erin) = (SECRET, {EUR}), level(EurDoc) = (CONFIDENTIAL, {EUR}), 且 level(EurAsiaDoc)= (SECRET, {EUR, ASIA})

为了对安全级别进行对比,引入关系’dom’,表示‘大于等于’。

定义:令L和L是安全级别,C和C是分类,则:
( L , C ) d o m ( L ′ , C ′ ) 当 且 仅 当 L ′ = L 且 C ′ ⊆ C (L, C)dom(L′, C′) 当且仅当L′ = L且C′ ⊆ C (L,C)dom(L,C)L=LCC
根据该定义,对比主体和客体的安全级别:
l e v e l ( E r i n ) = ( S E C R E T , E U R ) d o m ( C O N F I D E N T I A L , E U R ) = l e v e l ( E u r D o c ) ; level(Erin) = (SECRET, {EUR}) dom (CONFIDENTIAL, {EUR}) = level(EurDoc) ; level(Erin)=(SECRET,EUR)dom(CONFIDENTIAL,EUR)=level(EurDoc)

l e v e l ( E u r A s i a D o c ) = ( S E C R E T , E U R , A S I A ) d o m ( S E C R E T , E U R ) = l e v e l ( E r i n ) . level(EurAsiaDoc) = (SECRET, {EUR, ASIA}) dom (SECRET, {EUR}) = level(Erin) . level(EurAsiaDoc)=(SECRET,EUR,ASIA)dom(SECRET,EUR)=level(Erin).

用dom关系,将之前的定义1和定义2进行推广:

定义1. The simple security property says that a subject s can read an object o if
and only if level(s) dom level(o).

定义2. The ∗-property says that a subject s can write to an object o if and only
if level(o) dom level(s).

定义3. 假设自主访问控制的规则中忽略分类,只看密级。

对于文件EurDoc,因为level(Erin) dom level(EurDoc),Erin可以读EurDoc(由**定义1可得),但不能写EurDoc(由定义2**可得)。

对于文件EurAsiaDoc,因为level(EurAsiaDoc) dom level(Erin),Erin不能读EurDoc(由**定义1可得),但可以写EurDoc(由定义2**可得)


问题:

如何确定Erin和Don两个人共同的最高读权限和最低写权限?

解决前提:必须明确dom的性质

dom关系的性质

  1. 自反性——level(s) dom level(s);

  2. 非对称性——当level(s) dom level(o) and level(o) dom level(s) 时,有level(s) = level(o);

  3. 传递性——如果level(s1) dom level(o) 且 level(o) dom level (s2),则有level(s1) dom level (s2);

  4. (两个安全级别的)下确界/最大下限 greatest lower bound (glb)——

    定义. Let A = (L, C) and B = (L′, C′). Then glb(A, B) = (min(L, L′), C ∩ C′).

    例:Erin和Don的最高读权限是:
    g l b ( l e v e l ( D o n ) , l e v e l ( E r i n ) ) = ( S E C R E T , χ ; ) . glb(level(Don), level(Erin)) = (SECRET, χ; ). glb(level(Don),level(Erin))=(SECRET,χ;).

  5. (两个安全级别的)上确界/最小上限 least upper bound (lub)——

    定义. Let A = (L, C) and B = (L′, C′). Then lub(A, B) = (max(L, L′), C ∪ C′).

    例:Erin和Don的最低写权限是:
    g l b ( ( l e v e l ( D o n ) , l e v e l ( E r i n ) ) = ( S E C R E T , E U R , A S I A ) . glb((level(Don), level(Erin)) = (SECRET, {EUR, ASIA}). glb((level(Don),level(Erin))=(SECRET,EUR,ASIA).

dom关系的上述五点性质表明安全级别(security compartment)的二元组是一个名为‘格(lattice)’的数学结构。(因此Bell-LaPadula model是一个格模型)


当Bell-LaPadula model应用于具体的系统时,开发人员通常会做一些修改,比如约束当前安全级别的写操作、限制安全级别的数量等。该模型可用于抵御恶意软件对文件的改写(只能读,不能写)。

Biba’s Strict Integrity Policy Model

Bell-LaPadula model模型的变体,注重完整性/完备性,和Bell-LaPadula model在数学上是对偶关系。

可信性问题中,高可信的程序,对不可信的数据进行处理,得到结果也是不可信的,也就意味着程序失去了可信性(reads down)。高可信的程序,只有对更加可信的数据进行处理时,程序的可信性才能够保持(reads up)。也就是说,(程序对数据处理的)结果的可信性是程序和数据可信性的最小取值。

i-level(s)是Bell-LaPadula模型中主体s的一个**integrity compartment(完整性级别)**,则可信程序处理不可信数据造成可信度降低的“reads down” (a trustworthy process reading untrustworthy data) 现象必须被禁止;不会影响程序可信度的“reads up”是被允许的。(注意:强调的是主体/程序的完整性

由此可得与Bell-LaPadula模型中定义1类似的定义:

定义1. The simple integrity property says that a subject s can read an object o if and only if i-level(o) dom i-level(s). 主体只能读完整性级别在其上的客体。(reads up: 对主体而言,read的客体的完整度是up的(较高的)。)


如果一个‘可信的程序’写数据到一个‘不可信的文件’,则文件的可信度可能会/也可能不会得到提升。但如果一个‘不可信的程序’写数据到一个‘可信的文件’,则文件的可信度会下降。一个主体/程序s的‘writes down’是允许的,‘writes up’是禁止的。

由此可得与Bell-LaPadula模型中定义2类似的定义:

定义2. The ∗-integrity property says that a subject s can write to an object o if and only if i-level(s) dom i-level(o). (writes down: 对主体而言,write的客体的完整度是down的(较低的))


假设一个程序date有一个子程序time,如果date的完整度dom(不低于)time的完整度,数据流从高完整度流向低完整度,根据定义2,是允许的;如果time的完整度dom date的完整度,则违背了定义2,需禁止。

由此可得与Bell-LaPadula模型中定义2类似的定义:

定义3. The execution integrity property says that a subject s can execute a subject s′ if and only if i-level(s′) dom i-level(s). (注意:这是主体和主体间的关系)


定理:如果信息可以从object o1 传输到 object on ,根据上述3个定义可知,i-level(o1) dom i-level(on) .

即:如果满足上述3个定义中的规则,则信息不会从低完整度的对象/客体流向高完整度的对象/客体,因此信息的完整度不会降低。


该模型可用于对程序进行分析,防止安全性降低。

首先,设置两个完整性级别**(UNTAINTED, Ø)** (this means the set of categories in the compartment is empty) and (TAINTED, Ø), where (UNTAINTED, Ø) dom (TAINTED, Ø),简写为UNTAINTED ≥ TAINTED

所有的常量都分配一个UNTAINTED的标签,而变量的完整性标签则是根据程序的数据流分配的。例如:根据表达式的完整性为变量分配标签,如果表达式中的变量同时有UNTAINTED和TAINTED两种标签,则该表达式的标签是TAINTED(选最小的);如果变量是由不可信源 赋值的,则该变量的完整度标签为TAINTED。

如果系统调用或库函数调用中,需要传递实参到形参,则检查实参的完整度是否高于形参,如果实参完整度较低,则进行抛出异常、警告日志等处理。

例如,假设想要预防格式化字符串攻击(format string attack),该攻击利用C语言printf函数中的漏洞。printf函数的第一个参数是一个格式化字符串,该字符串决定其他的参数个数。利用该格式化字符串的内容,攻击者可以重写变量的值,并且对栈造成威胁,导致程序故障,达到攻击目的。格式化字符串攻击的关键步骤是为格式化字符串赋一个不期望的值。

部分有缺陷的代码为:

if (fgets(buf, sizeof(buf), stdin) != NULL) printf(buf);  

该代码将输入的一串字符读到数组buf中,然后迅速将数组内容打印出来。如果输出字符串为"xyzzy%n",则栈中的某些元素会被重写为5。因此,printf函数的第一个参数的完整性级别为UNTAINTED。

当fgets函数运行时,变量buf的完整度标签为TAINTED,这是因为该参数的赋值输入是不可信的。当该函数调用printf函数时,由于fgets函数的第一个参数会传值给printf函数的第一个参数,需要对这两个参数的完整度进行对比,前者是TAINTED,后者为UNTAINTED,即对于printf函数来说,实参的完整度低于形参,TAINTED ≤ UNTAINTED,从而分析得到一个非法的数据流。

Clark-Wilson Model

Lipner认为,商用完整性模型有5个需求:

  1. 用户不能自己写程序直接对可信数据进行操作,而应该使用已被认证的程序去访问可信数据;
  2. 程序员只能在非生产系统(nonproduction systems)上进行开发和测试,如果需要,使用生产数据的非生产备份。
  3. 将程序从非生产系统迁移到生产系统时,需要特殊的处理过程。
  4. 3.的程序迁移处理过程必须是可控制的、可审核的。
  5. 管理员和系统审核员必须能够访问系统日志和系统的当前状态。

Biba模型只能通过例证说明如果合理分配完整性级别,可以满足1和5,其他3条关注的是管理流程上的完整性。总之,Biba模型不能满足这些需求。

​ Clark-Wilson Model被提出用于描述大部分商业公司内的管理流程。下面首先用一个例子给出相关术语和概念:

​ 假设一个银行,D是每天的存款额,W是每天的取款额,I是当天开始时银行账户的剩余存款,F是每天结算后的银行存款,这些款额必须满足约束:I+D-W=F。

  • 该约束被称为**‘完整性约束(Integrity Constraint)’**,如果银行的系统不能满足该约束,则银行的完整性就被破坏了;
  • 如果系统满足完整性约束,则称系统处于‘一致的(Consistent)’的状态;
  • 如果一次操作,将系统状态从一个一致的状态变迁到另一个一致的状态,则该操作被称为‘良构事务(well-formed transactions)’。如:一个客户从一个账户转账到另一个账户,该转账操作是良构事务,但对于该操作的子操作(子操作1. 从第一个账户取钱;子操作2. 存钱到第二个账户),单独来看,这些子操作不是良构事务,因为如果只有一个子操作完成了,则系统处于不一致状态。
  • 用于验证所有完整性约束是否被满足的程序/流程称为**‘完整性验证程序/流程(integrity verification procedures, IVPs)** ‘;
  • 必须满足完整性约束的数据称为受约束数据项(constrained data items, CDIs),当受约束数据项满足相应约束时,则称受约束数据项处于’有效Valid‘状态
  • 除受约束数据项以外的数据称为非受约束数据项(unconstrained data items, UDIs)
  • 对于实现良构事务的函数来说,除了数据需满足完整性约束外,函数还需被证明是良构的且被正确实现,这样的函数被称为转变程序(transformation procedure, TP)。

Clark-Wilson Model有9条规则,其中5条与数据、转变程序的认证相关,另外4条描述了在模型的实现中如何进行认证。

认证规则1. 完整性验证程序必须保证系统处于一致的状态。//用于保证系统处于一致状态

**关系certified**用于关联一个转变程序TP和某个受约束数据项CDIs集合,其中TP将CDIs从一个有效状态转移到另一个有效状态(可以是同一个有效状态,也可是不同的有效状态)。

认证规则2. 转变程序TP将与其关联的受约束数据项CDIs从一个有效状态转移到另一个有效状态。

实施规则1. 系统必须维护certified关系,并保证对**某受约束数据项CDI**而言,只有与其通过certified关联的转变程序TP才能操作该CDI。//保证系统对certified关系进行追溯

通常公司里,能够使用TP的用户是严格受限的。例如,银行里,出纳员不能将几百万的资金共一个银行转移到另一个银行,只有银行主管能进行该操作。引出实施规则2:

实施规则2. 系统必须建立一个**用户和每个转变程序TP受约束数据项集合CDIs**间的关系,用户通过相关的TP访问CDIs。如果某用户没有与某TP、CDIs相关联,那么该用户不能用该TP访问相关CDIs。

实施规则2表明,系统能够正确识别用户。因此,需要实施规则3:

实施规则3. 系统必须能够鉴别每个试图运行转变程序TP的**用户**。

系统对用户身份的鉴别形式取决于模型的具体实例,例如,银行主管可能用生物特征识别设备和密码对自己的身份进行验证,从而能够让自己能够将几百万的资金从一个银行转到另一个银行;而对于出纳员,其只能操作少量资金,因而可能只需用密码对其身份进行鉴别。

之前其他模型里谈过的职责划分在Clark-Wilson模型中同样有体现:

认证规则3. The allowed relation must meet the requirements imposed by separation of duty. 需求requirements的实现划分为若干职责duty,需求和职责间是allowed关系。

商业中完整性保证的一个基本原则是操作operations必须能够被审查,这需要记录足够多的信息,以便用于确定某事物做了什么,从而有认证规则4:

认证规则4. 所有转变程序TP的必须能够附加足够多的信息,以便能够在某**append-only CDI(只能进行数据追加的受约束数据项)上进行操作重现。append-only CDI**通常是日志。

目前为止,我们所讨论的TPs的所有输入都为CDIs,但这是不现实的。例如,在银行例子中,出纳员需要输入账户信息、存款和取款金额,但这些信息都不是CDIs,出纳员可能会输错某些信息。在转变程序TP根据这些信息进行处理前,这些输入信息必须被审查过,从而保证TP能够进行正确的处理。因此有认证规则5:

认证规则5. 对于输入中含有非受约束数据项UDI的**转变程序TP,要么执行一个良构事务(well-formed transactions)**,要么没有事务使用任何UDI的数据值。这样,TP要么拒绝UDI的输入,要么将输入转变为CDI。

该规则还能避免不好的TPs,如果输入可以导致TP因漏洞表现出非期望的行为,则该TP就通不过该规则的认证。

模型ongoing可能存在冲突。之前的规则里,用户可以认证一个能操作某CDI的TP,然后在这个CDI上运行该认证过的TP。但可能存在的问题是,某恶意用户,可能会认证通过能执行非良构事务的TP,进而导致系统违背完整性约束。诚然,职责划分能够解决这个问题,这正是实施规则4的内容:

实施规则4. 对某TP而言,只有该TP的认证者才能改变该TP上的certified关系。进而,TP的认证者、TP所关联的CDI的认证者,并不可能在相关的CDI上执行该TP。(即:认证和执行工作相剥离)


回顾Liner的5条需求,TPs对应Liner所说的程序,CDIs对应他所说的生产数据(production data)。为满足需求1,Clark-Wilson模型中的认证者(certifiers)必须是可信的,普通用户不能对TPs或CDIs进行认证。实施规则4和认证规则5实现了该需求。

需求2:不对开发程序/工具进行认证,因为这些开发程序不属于TPs,不能在生产数据上执行。

需求3中的特殊处理程序对应TPs。认证规则4描述了一个日志,TP将信息附加到日志里,从而能够被审查。此外,TP被定义为一个受约束的程序/过程,并且实施规则4和认证规则5控制着TP的运行。

需求4:在安装之前,程序是UDI,安装完成后,程序就变为CUI或TP了。并且Clark-Wilson模型有日志用于捕获TP所有操作的所有相关信息,该日志可以被管理者或审查员访问。

需求5:管理员和审查员能够运行完整性验证程序/流程IVP检查系统的完整性,从而获取系统的状态。

总之,Clark-Wilson模型满足商业完整性模型的所有需求。

​ Clark-Wilson模型重要性体现在两方面:1)该模型符合大部分商业公司的工作方式,包括职责划分;2)将认证和实施进行区分。但该模型的实例不能自我认证,但所有的模型都这样,好歹该模型考虑了认证方面的工作。

Chinese Wall Model/Brewer-Nash Model

该模型是为了防止利益冲突。该模型将同一个公司的客体objects划分为不同的company data sets,并且将company data sets划分为不同conflict-of-interest classes。如果两个公司(用他们的company data sets表示)在同一个conflict-of-interest class里,则他们之间有利益冲突。该模型的规则保证在美国conflict-of-interest class中的company data sets只能被一个主体subject读取。

规则:

定义1. The CW-simple security property says that a subject s can read an object
o if and only if either:

  1. s has not read any other object in *o’*s conflict-of-interest class; or
  2. The only objects in o’s conflict-of-interest class that s has read are all in o’s
    company data set.

例如:所有的银行都在同一个conflict-of-interest class中,假如小吕是ABC银行的客户经理,并且最近她想跳槽到ICBC银行,如果她去了ICBC,那么她就有了访问ICBC信息的权限,特别是ICBC的company data set中的客体(通常是涉密文件信息),这样就意味着小吕可以读取同一个conflict-of-interest class中两个company data sets中的客体,这是定义1的规则所禁止的。模型中的临时数据/元素很重要,就算小吕跳槽到ICBC了,根据***CW-simple security property*** 的条件2,由于她之前读过ABC的客体,她不能/不适合到ICBC工作。这样的话比较在理,如果小吕再去ICBC工作的话,可能无意间损坏ABC的利益。

定义1的CW-simple security property暗含着s可以读取任何脱密处理后的客体。如果s没有读过脱密信息,则条件1满足;如果s读过脱密信息,因为所有的脱密信息都在同一个company data set中,所以条件2也满足。


写操作会引起另一个问题。例如:小白和小黄都是人民银行的员工,小白常驻ABC负责该银行的相关业务,小黄常驻ICBC负责其相关业务。人行和ABC、ICBC这些银行不在同一个conflict-of-interest class中,那么小白和小黄就没有利益冲突。但ABC的涉密信息可以通过小白泄露给小黄,再到ICBC,反之亦然,这样就有人的利益发生冲突了。小白将从ABC读取的涉密信息写成文件放到了人行的company data set,小黄从人行读取了该文件,这样ICBC的小黄就获取了ABC的涉密信息,产生了利益冲突。这种情况应该避免,从而有了下述规则:

定义2. The CW-∗-property says that a subject s can write to an object o if and only if both of the following conditions are met:

  1. The CW-simple security property allows s to read o; and
  2. All unsanitized objects(涉密信息) that s can read are in the same company data set as o.

写的话,首先主体得有读客体的权限;其次,主体能写的客体必须和他能读的客体在同一个company data set中。这样,小白就不能把涉密信息写成文件放到人行的company data set中,就算想放,也只能放到ABC的company data set中。

​ 对于非涉密信息,假设小兰也是人行的,她有读取人行非涉密信息的权限,当她想写文件到人行的company data set中时,根据定义1,由于她能读,所以她也能写。对于涉密信息,小兰的读写也都是在同一个company data set中的,这没什么问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值