《课件8:第4-1~2节信息流控制》由会员分享,可在线阅读,更多相关《课件8:第4-1~2节信息流控制(76页珍藏版)》请在金锄头文库上搜索。
1、第4章 信息流控制原理4.1 信息流的格模型4.2 基于格的多级安全模型4.3 信息流控制机制综述4.4 基于执行的信息流控制4.5 基于编译的信息流控制4.6 实际系统的信息流机制概述 信息的泄漏原因: 1、访问控制机制有缺陷 2、缺乏适当的信息流策略 3、缺乏实现信息流策略的适当机制。 信息流控制策略: 1、规定信息的安全类和客体安全类之间的 关系 2、不同安全类客体之间信息的流动关系。 4.1 信息流的格模型 格模型是Denning D.E.于1975年在他的博士 论文“计算机系统中的安全信息流”中发表 的。 格模型是用来描述信息流的信道与策略,但 不是指定信息从一个客体流向另一个客体。
2、 格模型也是状态转移类模型:通过格结构的 流动策略、状态和状态转换对信息流系统进 行形式化。4.1.1 格与信息流动策略 1、格的定义:如果(L,)是一个偏序集合, L中每一对元素a和b都有最大下界与最小上界, 则称二元组(L,)是格。 格中的最大下界和最小上界分别用ab和ab表示 。(L,)是一个偏序集合,蕴涵着关系具有 以下性质(其中A、B、C是L中的元素): 1)自反的:AA。 2)传递的:若AB且BC ,则AC。 3)反对称的:若AB且又有BA,则有A=B。 2、有限格 在保护系统中,主体、客体(包括存储段、变量 单元等)的个数是有限的。研究有限格是必要的 。有限格还有以下性质: 1)
3、任何有限格都存在最小上界(也称为最大元素, 记为HIGH)和最大下界(也称为最小元素,记为 LOW)。设L=a1,a2,an,根据最大元素与最小 元素的定义有:(1) LOW= a1a2an(2) HIGH= a1a2an 2)且对于任意元素AL有ALOW=A,AHIGH=A,即 LOW为运算的幺元素,HIGH为运算的幺元素。 3、线性格与子集格 1)线性格:在N个元素的集合S上,这N个 元素之间的关系是一个线性序的关系。 对于所有的S中的元素a和b都有:(1)ab=max(a,b) (2)ab=min(a,b)(3)LOW元素对应于位于线性序最低端 元素,而HIGH元素对应于最高端元素。 2
4、)子集格:给定一个有限集合S,可以由S 上的所有子集集合上的一个非线性排序 形成一个子集格。 有序关系对应于子集间的包含关系; 最大元素对应于所有子集的并(), 是全集S本身; 最小元素对应于所有子集的交(), 是空集 。10(a)x,y,z (high)y,zx,zx,y (low)zyx (b)图4-1 线性格与子集格 4、格的乘积 格的代数系统形式: 设(L,)是一个代数系统,和是集合L上的二 元运算。 如果运算和都满足交换律、结合律,并且也满足 吸收律(即有a(ab)=a和aab=a),则代数系统(L, ,)也是格。 例如:设(L,)和(S,)是两个格,定义一个 代数系统(LS,+)如
5、下:对于任意的(a1,b1)、(a2,b2) LS有: (a1,b1)(a2,b2)=(a1a2,b1b2) (a1,b1)+(a2,b2)=(a1a2,b1b2),则称 (LS,+)是格(L,)和(S,)的积 代数。 两个格的积代数也是一个格,因为在 LS上运算和+都是封闭的,并且满 足交换律、结合律和吸收律。 图4-2中是图4-1中的两个格的积代数 。 0,x,y,z0,y,z0,x,z0,x,y0, 0,z0,y0,x 1,x,y,z1,y,z1,x,z1,x,y1, 1,z1,y1,x 图4-2 格的积代数 二、信息流动策略 每一个信息流动策略都可以用一有限格 (SC,)描述,SC是安
6、全类的集合。 如果A、BSC,且AB,则说明信息A的 安全类低于B的安全类。 根据安全策略的要求,只能允许信息在 一个类内或向高级别的类流动,但不允 许向下或流向无关的类。 任何一个信息流动策略都可以找到一个 格来描述。 如果你给出的流动策略不符合一个格的 要求,可以按照格的定义重新把它修改 成一个格. 例如,可把图4-3(a)所示非格策略, 改变成图4-3(b)的格图。 改变的方法如下: CFADBEHighFCALowBABDE1、D、E等价,压缩为一个类 2、F、DE无最小上界,可添加一个结点HIGH 3、A、B无最大下界,可添加一个结点Low 4、A、B无最小上界,可添加一个结点AB4
7、.1.2 系统的信息安全性状态 系统的信息安全性状态(简称为信息状态) 是由系统中每一个客体的值和安全性类描 述的。 客体可能是一个逻辑结构,诸如一个文件 、记录、记录中的字段和程序变元; 或可能是一个物理结构,诸如存储器单元 (区)、寄存器(包括地址或指令寄存器 )、或一个用户。 符号说明:对于一个客体x,x:代表x的名字与它的值,SC(x):表示它的安全类。xs:强调x在信息状态s中的值SC(xs):强调x在信息状态s中的安全类 客体安全类SC(x)可是一个常量或变元。 静态约束:对于固定类的客体,在x的生 命期中,SC(x)都是常数,即对于所有的 信息状态s和s都有SC(xs)= SC(
8、xs)。 动态约束:对于可变类的客体,x的安全 类SC(x)随着x的内容而变化,即SC(xs)依 赖于xs。信息流的控制机制需要支持固定类和可变类: 对于永久或全局性客体采用固定类, 对临时或局部客体采用可变类。 对用户指派一个固定安全类,称为用户安全类 所有客体都有固定的安全类。 信息流授权的概念: 对于给定的客体x和y,根据信息流的流动策略 ,信息从x流到y是授权的当且仅当xy; 如果x、y都有可变类,那么SC(y)是它在流动 之后的类,SC(x)是它在流动之前的类。 4.1.3 状态转换与信息流 状态转换是由创建和删除一个客体、改 变一个客体的值或它的安全类产生的。 设s是在状态s下执行
9、命令序列后到达的 状态,表示为:s s。 一般说来可执行语句的执行都会产生信 息的流动,并改变系统的状态。 例如,执行交换两个单元内容的过程 SWITCH(X,Y)的结果使得X的内容 流向Y和Y的内容流向了X。 信息流伴随着改变一个客体值的运算。 一个流xsys是允许的,当且仅当 SC(xs)SC(ys),即y的最后类至少和x的初 始类一样大。 考虑赋值句 “y := x”。认为存在从x到y的 直接流x y。 考虑语句序列 “z := x;y := z”。该序 列的执行能够通过中间变元z,以及直接 流xz,导致一个间接流xy。 考虑语句“If x=1 then y := 1”。执行本语 句之前
10、,y的初始值为0。 当该语句执行后,y中便含有x的确切值, 只有一个比特的信息(量)从x传送到y。 由执行if语句而导致的流xy称为隐式流 ,以区别于由一个赋值语句导致的显式流 。 隐式流是指不是由显式赋值形成的但却又 存在的暗流。 间接流是由若干个具有传递关系的显式流 形成的, 给定在状态s中的一个客体x和在s中的客体y 。设H(x|y)是给定ys时xs的暧昧度。H(x|y)是 在给定ys时xs的暧昧度。 如果在状态s中y不存在,那么H(x|y)=H(x)。 根据信息论的知识,如果H(x|y)H(x|y),那 么在状态s中命令序列的执行导致了从x到y 的信息流,记为xsys。 由流xsys传
11、送的信息量是: I(,x,y,s,s)= H(x|y) - H(x|y) 由此定义可以看出,信息流总是伴随着 改变一个客体值的运算。一个流xsys 是允许的,当且仅当SC(xs)SC(ys),即y 的最后类至少和x的初始类一样大。 信道容量:设Ps(x)表示在状态s下x的概 率分布,流xy的信道容量是“在x的所 有可能的概率分布上传送的信息量之和” ,即: C(,x,y)=Ps(x) I(,x,y,s,s) 注意,如果y能用n比特表达,任何传送 给y的命令序列的信道容量至多是n比特 。 例1 考虑赋值句 “y := x”。 假设x是在范围0,15中的整数变元,所有 的取值都是等概率的。设pi表
12、示x=i的概率 ,显然,当0i15时,pi=1/16,其他取值 时,pi=0 ; 如果y初始时不存在,那么: H(x|y)=H(x)=pilog2(1/pi)=161/16log21 6=4 因为在赋值后,x的值能够根据y的值确定 ,即H(x|y)=0。因此有0-4个比特的信 息量传送给y。 请注意,如果x的值是已知的,语句“y:= x” 的执行就不导致流xy,这是因为:H(x|y)= H(x|y)=H(x)=0。 如果x和y都被表达为32比特,则容量就是 32比特。 如果x和y都是n维向量,且每一个向量元素 是32比特,则容量是32n比特。 在这种情况中,当所有的字都是等概率时 ,就达到了满
13、容量。 例2 考虑语句序列 “z := x;y := z” 。 该序列的执行能够通过中间变元z,以及 直接流xz,导致一个间接流xy。 但是该序列没有导致流zy,因为y的最 后值没有揭示关于z的初始值的任何信息 。 其实z只是一个中间变元,不是信息源。 例3 考虑语句“z := x+y”和“z := xy”, 此处“”表示按位模2加。 设x和y都是范围0,15内的整数,且所 有的值都是等概率的,因此,H(x)=H(y)=4 对于第一个语句,给定z的值后,x和y不 再是等概率的, 例如,z=0蕴涵着x和y都必须为0,z=1蕴 涵着x和y两者同时只能有一个为1,另一 个为0。这样H(x|z)和H(
14、y|z)都小于4比特 ,语句的执行减少了x和y的不肯定性。 对于第二个语句“z := xy”,给定z的值 ,不会减少关于x和y的不肯定性,说明 没有从x、y到z的信息流。 任意给定z值,仍可任意选x,y使之满足 语句要求。 本例表明,一个客体y仅仅函数地依赖于 客体x,不一定产生流xy,产生流的条 件是必须能够从y知道关于x的某些东西 。 例4 考虑语句“If x=1 then y := 1”。设y 的初始值为0。 假设x的取值为0或1,且是等概率的,因 此有H(x)=1。 当该语句执行后,y中便含有x的确切值 ,使得H(x|y)=0。因此只有一个比特的 信息(量)从x传送到y。 即使x不限制
15、在0,1范围内,y的值也减 少了x的不肯定性(y=1蕴涵着x=1,而 y=0蕴涵着x1)。 由执行if语句而导致的流xy称为隐式流 ,以区别于由一个赋值语句导致的显式 流。 隐式流与间接流的区别:间接流是由若 干个具有传递关系的显式流形成的,而 隐式流则是指不是由显式赋值形成的但 却又存在的暗流。 值得注意的是,甚至当x1时,对y的赋 值会被跳过,流xy也会出现。 不过,必须有对y赋值的可能性,并且这 一赋值必须以x的值为控制条件。否则, y的值不能减少关于x的不肯定性。 例5 考虑语句“if (x=1) and (y=1) then z:= 1”,这里z的初值为0。 假定x与y两者都是0或1,且这两种取值 都是等概率的,因此,有H(x)= H(y)=1。 z=