![教学课件9:第43~4节信息流控制机制_第1页](http://file4.renrendoc.com/view/cab100c599eeb46ae45a8c229b2c47d3/cab100c599eeb46ae45a8c229b2c47d31.gif)
![教学课件9:第43~4节信息流控制机制_第2页](http://file4.renrendoc.com/view/cab100c599eeb46ae45a8c229b2c47d3/cab100c599eeb46ae45a8c229b2c47d32.gif)
![教学课件9:第43~4节信息流控制机制_第3页](http://file4.renrendoc.com/view/cab100c599eeb46ae45a8c229b2c47d3/cab100c599eeb46ae45a8c229b2c47d33.gif)
![教学课件9:第43~4节信息流控制机制_第4页](http://file4.renrendoc.com/view/cab100c599eeb46ae45a8c229b2c47d3/cab100c599eeb46ae45a8c229b2c47d34.gif)
![教学课件9:第43~4节信息流控制机制_第5页](http://file4.renrendoc.com/view/cab100c599eeb46ae45a8c229b2c47d3/cab100c599eeb46ae45a8c229b2c47d35.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.3.1安全性与精确性
设F是一个信息流系统中所有可能信息流的集合,E是在给定的流控制机制下可执行的F的子集,P是给定策略下授权的流。如果EP,即所有可执行的流都是授权的,那么系统是安全的。如果E=P,即所有授权的流都是可执行的,那么安全系统是精确的。安全性与精确性图示(非授权的流)P(给定策略下授权的流)E(给定机制下可执行的流)
F所有可能的流设s0是一个初态,s0肯定是授权的,因为流都与状态转换相关,此时没有状态变化,也就没有流。再设s是通过执行命令序列α从s0推出的状态,那么s是授权的当且仅当所有流xs0ys都是授权的,即SC(xs0)≤SC(ys)。根据关系≤的传递性,如果系统中每一状态转换引起的流都是授权的,该系统就是安全系统。
同时支持访问控制策略和信息流控制策略的系统的统一安全性定义:
如果si是授权的,那么通过执行命令c从状态si转换到状态si+1,si+1是授权的,当且仅当c是安全保持的,即c满足访问控制策略和信息流动策略。一个保护系统是安全的,当且仅当(1)初始状态是授权的,并且(2)每一状态转换所得状态也是授权的。
例1
考虑赋值语句“y:=kx”。假定在一个策略中,SC(k)≤SC(y)成立,但SC(x)≤SC(y)不成立。如果总是禁止其执行,是安全的,但不精确。如果k=0或H(x)=0,执行语句不导致流xy的发生。设计“仅对实际流xy证明关系SC(x)≤SC(y)”的机制,远比设计“对能够潜在地引起流xy的任何运算,证明关系SC(x)≤SC(y)”的机制困难。对于进一步复杂的问题,一个给定的系统是否安全的或精确的,一般而言是不可判定的。
构造一个既满足安全性又满足精确性的机制是困难的。
例2
考虑语句
iff(n)haltstheny:=xelsey:=0其中f是任意函数,且关系SC(x)≤SC(y)不成立。考虑两个系统,一个总是允许该语句的执行,而另一个则禁止执行它。显然,不解决停机问题,第一个系统是否安全,或第二个系统是否精确的都是不可判定的。研究结果表明,构造一个既是安全的、又是精确的机制在理论上是不成立的。
在一个安全系统中,任何客体y的安全类至少和存储在y中的信息的安全类一样高。可变类SC(y)的安全级可增可降,不一定在时间上必须单调增加的。实际上,如果高安全类信息从y清除后,那么SC(y)可以降低。
只要不违反系统的安全策略,在任何时刻都可以提高或降低一个客体的安全类例3考虑下述语句序列y:=x;z:=y;y:=0;在第一条语句执行前,SC(y)必须满足SC(x)≤SC(y)以符合流xy的要求,在第一条语句执行后,就有SC(y)=SC(x)。执行最后一条语句后,y中的内容被清空了,不再含有关于x的信息。因此,SC(y)可以低于SC(x)。4.3.2流的信道
1、正规信道(Legitimatechannels)。通过设计者指定的信息传送渠道(如进程参数)在程序或进程间传送信息的。2、存储信道(Storagechannels)。是指由多个进程或程序共享的客体,例如通过共享文件或程序中的全局变量传递信息。3、隐蔽信道(Coverchannels)是指不被设计者或用户所知道的泄漏系统内部信息的信道,例如,通过观察某个进程的操作规律,判断这个进程在干什么。这种信道也并不完全面向信息交换,例如,进程在系统加载过程中产生的某些效果。正规信道的安全防护最简单。存储信道的安全防护要困难得多,因为每一个客体(可能是文件、变元和状态比特)都需要保护。
例4
一个进程P可以通过共享文件F的锁定位把一个值X传送给另一个进程Q,虽然限制X只能被P使用,不能被Q直接访问。方法是:P首先根据X的二进制值在规定的时间区段内安排文件的打开或者关闭,使文件F的打开与关闭次数与X的二进制值关联起来;进程Q在同样的时间段内,请求使用该文件,根据请求是否被允许的次数就可以决定X的相应二进制值。
问题在于可以将信息用某种外部观察者可检测的物理现象编码。例如,一个进程可以使它的执行时间正比于它所读到的某机密变量X的值,通过测量独立于系统运行时钟上的运行时间,另一个进程(或用户)可以确定X的值。这种类型的隐蔽信道称为“时钟信道”,其他资源,如电力消耗,甚至控制台上的内部寄存器显示灯等都有可能被用作隐蔽信道。隐蔽信道的防范是困难的对隐蔽信道的唯一技术解决办法是要求作业事先说明它们的资源要求。所请求的资源都交给作业控制,即使作业未运行完,系统也必须精确地在指定的时间内把这些资源收回。应用这种策略后,很难从事先不知道的执行时间或资源推导出某些东西。即使如此,用户仍能从他们的程序是否成功地结束而推出某些东西。
4.4基于执行的机制
在执行时刻检查信息流安全性方法的原理比较直观,这种机制相对容易理解一些;在编译时刻(程序未执行的情况下)验证信息流的安全性,需要了解一些编译的知识和一些比较抽象的验证技术,因而基于编译的执行机制理解起来比较困难。
4.4.1流安全的访问控制
在访问控制机构中增加流控制是合理的,方法如下:
给每个进程p指定一个安全类SC(p),SC(p)说明p可以读入的最高类和可写入的最低类。P(in:x1,x2,…,xm,out:y1,y2,…,yn)访问控制允许p对客体x获得读访问仅当SC(x)≤SC(p),允许p对客体y获得写访问仅当SC(p)≤SC(y)。因此p能够从x1,x2,……,xm读出而向y1,y2,……,yn写入,仅当SC(x1)SC(x2)……SC(xm)≤SC(p)≤SC(y1)⊙SC(y2)⊙……⊙SC(yn)显然,该关系保证了进程内部的所有流(显式的或隐式的)安全性。
SC(y1)SC(y2)…SC(yn)输出安全类SC(y1)⊙SC(y2)⊙…⊙SC(yn)最大下界SC(p)SC(x1)SC(x2)…SC(xm)最小上界SC(x1)SC(x2)…SC(xm)输入安全类图4-8结合流控的访问控制机制
P(in:x1,x2,…,xm,out:y1,y2,…,yn)动态可变的安全类(即动态指派)方式会导致信息流泄漏(后面举例说明);采用固定安全类方式,不会出现泄漏问题。为了安全起见,大多数基于访问控制机制约束的客体与进程只能使用固定的安全类。进程p的安全类在初始化p时就被确定了。
例1
考察表4-1中所示的copy1过程。x是一个参数,设x=0或1,则该过程完成把x的值传送给y的操作Procedurecopy1(x:integer;vary:integer);/*
把x拷贝到y*/Varz:integer;Beginy:=0;z:=0;ifx=0thenz:=1;/*
执行后SC(z)=SC(x)*/ifz=0theny:=1;/*
执行后SC(y)=SC(z)*/endendcopy1
表4-1copy1程序
存在隐式流xz假定copy1由两个并发进程P1和P2共同执行,在某一时刻被分裂为:
P1:ifx=0thenz:=1;
P2:ifz=0theny:=1;进程P1和P2可以通过全局变元z通信,而z具有动态可变安全类。再假设SC(P1)和SC(P2)被置为对读或写操作的所有客体安全类的最小上界(),y和z初始时为0都为LOW类;仅当对z进行赋值时,SC(z)也随着修改,仅当对y进行赋值时,检查对y的流的安全性。下面讨论P1,P2执行copy1的执行情况:
P1:ifx=0thenz:=1;
P2:ifz=0theny:=1;(1)当x=0时,P1以z=1终止,此时由于P1有读x与写z的操作,根据约定有SC(z)=SC(P1)=SC(x);因此SC(P2)通过读z被置为SC(x)。在P2中测试条件“z=0”失败,所以不执行向y的赋值操作(y的值仍为0),因而关系SC(P2)≤SC(y)未得到验证。P1:ifx=0thenz:=1;
P2:ifz=0theny:=1;(2)当x=1时,测试条件“x=0”失败,P1读过x以SC(P1)=SC(x)终止;由于z:=1未被执行,所以(z,SC(z))仍保持为(0,LOW),因此SC(P2)也为LOW;在P2中测试条件“z=0”成立,执行向y的赋值操作后,y变为1,且关系LOW≤SC(y)得到验证。在上述两者情况下,copy1的最后结果都为y=x,但都没有检验关系SC(x)≤SC(y)是否成立。所以当关系SC(x)≤SC(y)不成立时,便产生了信息泄漏问题。当客体和进程都有固定安全类时,就不会产生这样的问题。P1:ifx=0thenz:=1;
P2:ifz=0theny:=1;假定P1以读x所需的最小类执行,即SC(P1)=SC(x),P1将不会被允许向z写入,除非SC(x)≤SC(z)成立,类似地,P2将不允许读z,除非SC(z)≤SC(P2)成立,并且P2也不允许写入y,除非SC(P2)≤SC(y)成立。因此,没有信息能够从x流到y,除非满足SC(x)≤SC(z)≤SC(y)。
流安全访问控制为在用户进程内提供一个简单和有效的信息流控制机制。在这种机制下,由于在一个进程内不区别不同类的信息,还有局限性。例如,一个进程P既读机密的(HIGH),又读非机密的(LOW)数据,那么SC(P)必须是HIGH,被P写的任何客体也必须有HIGH类。P不能对LOW类的客体写访问,因为没有办法知道传送给这些客体的信息是机密的或非机密的。所以,进程不能把仅从非机密的输入推出的信息给LOW客体。
一般而言,仅用访问控制来实现“同时处理不同类信息的进程”中的安全性是不可能的。这就排除了应用访问控制去实施“必须访问不同类信息,但又要和不同类进程通信”的某些操作系统进程的安全性。另外,在系统进程内部的流必须是安全的,以免其他进程利用这一点通过系统状态变元来建立泄漏信道。例如,文件编辑程序中的特洛伊木马程序,可以利用这种信道泄漏正在编辑中的绝密信息给具有较低安全类的用户。
4.4.2基于执行机制的模型
数据标记机是一种研究执行时生效机制的保护系统模型,它是Fenton,J.S.,于1973年在其博士论文(信息保护系统)中提出的。模型机的设计应该是简洁的。数据标记机是一台扩充的Minsky机,它包含为每一类寄存器(存储器单元)的安全类所作的标记。
一台Minsky机含有3条指令:
x:=x+1/*加1指令*/
ifx=0thengotonelsex:=x-1/*零条件分支或减1*/
halt/*停机指令*/这里,x是一个寄存器,n是语句标号,尽管它很简单,但它可以计算所有可计算的函数,只要至少有两个(无限的)寄存器和一个含有0的寄存器。
表4-2数据标记机指令语义
指令执行效果(pc是程序计数器)1、x:=x+12、ifx=0thengotonelsex:=x-1
2’、if’x=0thengotonelsex:=x-13、return4、haltifSC(pc)≤SC(x)thenx:=x+1elseskipifx=0
then{push(pc,SC(pc));SC(pc)=SC(pc)⊕SC(x);pc:=n}else
{ifSC(pc)≤SC(x)thenx:=x-1elseskip}
ifx=0then{ifSC(x)≤SC(pc)}thenpc:=nelseskip}else{ifSC(pc)≤SC(x)thenx:=x-1elseskip}pop(pc,SC(pc))ifemptystackthenHaltPc=pc+1对表4-2需要以下几点说明:1、程序计数器pc的安全类SC(pc)
(1)初始时,SC(pc)=LOW;(2)每当一个进程执行条件分支“ifx=0thengoton”时,就把pc的当前值和类(pc,SC(pc))压入栈中,并用(n,SC(pc)SC(x))代替(pc,SC(pc))。把SC(pc)提高为SC(pc)SC(x)是因为机器已经读过x的信息。(3)降低SC(pc)的唯一办法是执行return指令,它把(pc,SC(pc))的值恢复为早先的值。这将迫使程序返回到条件分支后面的指令,因此执行路径不再直接地以x的值为条件。
Fenton的重要观察结论是:把SC(pc)与进程联结起来,足以监测由进程导致的所有的隐式流。
2、在执行赋值语句“y:=y±1”之前,须由硬件检测SC(pc)≤SC(y),如果不满足,则禁止赋值。因为如果赋值语句在直接以x1,x2,……,xm的值为条件的一条路径上,此时,SC(pc)=SC(x1)SC(x2)……SC(xm),SC(pc)≤SC(y)保证了隐含流xiy(i=1,…,m)安全性;如果赋值语句不在上述路径上,此时SC(pc)=LOW,SC(pc)≤SC(y)自然满足。3、执行halt指令之前要求栈空,所以,程序若没有从每一分支返回就不能终止。这就保证程序的最后状态仅含有LOW安全级的信息。4、如果所有违反安全性的流都不报错,由2、3点可知程序的执行是完全安全的,因为没有xiy(i=1,…,m)的隐式流。如果对违反安全性的流报错(即把skip改为差错报告),并且使不安全的程序夭折执行,那么不安全程序最多泄漏1比特的信息。5、表4-2中的if’语句允许一个程序分支而毋需把程序放到栈中。因为SC(x)≤SC(pc)蕴涵着SC(pc)=SC(pc)SC(x),因而放在栈中对安全是不必要的。
从以上说明数据标记机的保护特性是:只需在显式赋值时检查SC(pc)≤SC(y)是否成立,并保证停机之前栈空。若不报告违反安全性的错误,则任何程序的执行都是安全的;若要在发生违反安全性的流时报错,则最多泄漏1比特信息。
例2
表4-1中的copy1过程把x的值传送给y。如果SC(x)≤SC(y)不成立,显然是不安全的。表4-3中是copy1程序的数据标记机的目标代码。表4-4中给出的执行踪迹表明当x=0和SC(x)≤SC(z)时,标记机执行每一指令的作用。
表4-3copy1在数据标记机上的目标代码
1、ifx=0thengoto4elsex:=x-12、ifz=0thengoto6elsez:=z-13、halt4、z:=z+15、return6、y:=y+17、return/*假定y和z都已初始化为0*/Procedurecopy1(x:integer;vary:integer);/*
把x拷贝到y*/Varz:integer;Beginy:=0;z:=0;ifx=0thenz:=1;/*
执行后SC(z)=SC(x)*/ifz=0theny:=1;/*
执行后SC(y)=SC(z)*/endendcopy1
表4-1copy1程序
存在隐式流xz表4-4copy1目标程序的执行代码
指令xyzpc
初始14523000LOWSC(x)1LOW0
SC(x)≤SC(z)?
LOW≤SC(z)Emptystack安全性检查可以证明仅当SC(x)≤SC(z)≤SC(y)时,引起从x到y的流。所以原copy1程序是安全的。
数据标记机的保护特性是可以在实际系统中实现的。可用具有标记存储器的单累加器机器为例来说明。在存储器地址的标记区存放数据客体的安全级。一个可变的标记SC(acc)表示在累加器中信息的安全类。和标记机一样,用堆栈存储(pc,SC(pc)),其中SC(pc)仍表示程序计数器的安全类。典型指令的语义示于表4-5,减法、乘法等运算的语义类似于ADD,没有列出。
指令
语义解释LOADxacc:=x;SC(acc):=SC(pc)SC(x)STOREyIfSC(pc)SC(acc)≤SC(y)theny:=accelseskipADDxacc:=acc+x;SC(acc):=SC(acc)SC(pc)SC(x)Jmpnpc:=nJmpznIf(acc=0)then{push(pc,SC(pc));SC(pc):=SC(acc)SC(pc);pc:=n}Jmpz’nIf(acc=0)and(SC(acc)≤SC(pc))thenpc:=nelseskipRETURNpop(pc,SC(pc))STOPIfemptystackthenstop表4-5单累加器机器指令的语义
例3“y:=x1*x2+x3”的执行踪迹(表4-6)
目标代码
执行踪迹LOADx1acc:=x1;SC(acc):=SC(pc)SC(x1)MULTx2acc:=acc*x2;SC(acc):=SC(acc)SC(pc)SC(x2)ADDx3acc:=acc+x3;SC(acc):=SC(acc)SC(pc)SC(x3)STOREyIfSC(acc)SC(pc)≤SC(y)theny:=acc请注意,通过联结于STORE的安全性检测,证明了SC(x1)SC(x2)SC(x3)SC(pc)≤SC(y)是成立的。以上假定存储器的安全类是固定的。如果存储器的标记可变,通过把STOREy的语义改为y:=acc;SC(y):=SC(pc)SC(acc)(*)是不足以保证安全的,因为该语义没有对所有的隐式流进行约束。但把STOREy的语义改为ifSC(pc)≤SC(acc)then{y:=acc;SC(y)
:=SC(acc)}(**)同时相应地,把LOADx的语义改为acc:=x;SC(acc):=SC(pc’)SC(x)这里的SC(pc’)是栈顶元素中的SC(pc)(若无栈顶元素,则SC(pc’)=LOW)。这样修改后,安全性还是能够保证的。换言之,1、对显式流,更改客体的安全类以反映流的要求;2、对隐式流,把SC(y)=SC(acc)作为固定类(不受当前SC(pc)影响)那样来证明。安全性是能够保证的。另外,存储器安全性类可变时的上述验证方法不是以数据标记机为支持的,这是因为数据标记机完全是对固定类而言的。4.4.3动态安全性检查
考虑语句“ifx=1theny:=1elsez:=1”,其中SC(x)=HIGH,假定x=1时,SC(y)=HIGH而SC(z)=LOW;当x≠1时,SC(y)=LOW而SC(z)=HIGH。如果静态检查,需要SC(x)≤SC(y)和SC(x)≤SC(z)都成立,此语句就会被拒绝执行。考虑语句“ifx=1theny:=1elsez:=1”,其中SC(x)=HIGH,假定x=1时SC(y)=HIGH而SC(z)=LOW,当x≠1时,SC(y)=LOW而SC(z)=HIGH。若实施动态检查,x=1时只需检查关系SC(x)≤SC(y)成立否,x≠1时只需检查SC(x)≤SC(z)成立否,该语句就可以安全地执行。这个例子说明动态检查的执行机制一般会比静态检查的执行机制精确。通常基于执行的机制总是动态的。一、假定每一客体都有固定的安全类
1、显式流。一个显式流总作为执行一条形为“y:=f(x1,x2,……,xm)”的赋值语句的结果出现。只要在向y赋值的时刻能够对关系SC(x1)SC(x2)…SC(xn)≤SC(y)实施检查,就能够保证显式流xiy(i=1,…,n)的安全性。如果关系成立,则执行正常的赋值操作;若关系不成立,则产生一个报错信息,并跳过该赋值语句或使程序夭折,这样可以不泄漏任何数据的信息。
2、隐式流。考虑赋值语句“y:=f(y)”。如果是直接以变元x1,x2,……,xn为条件,即为“iff(x1,x2,……,xn)theny:=f(y)”形式的语句,只要在向y赋值的时刻对关系SC(x1)
SC(x2)…SC(xn)≤SC(y)实施安全性检查,就能够保证隐式流xiy(i=1,…,n)的安全性。“iff(x1,x2,……,xn)theny:=f(y)”如果关系成立,则执行正常的赋值操作;若关系不成立,若机制采取跳过该赋值语句且也不报错,那么就可以保证完全安全。这是因为安全性检查失败时y的值没有被更改,就好象程序没有做测试似的。若要报错或使程序夭折,则最多可以泄漏该不安全程序的1个比特的信息。
例1
再考察语句“ifx=1theny:=1”。该语句不仅对y显式赋值时存在隐式流(xy),即使在没有显式赋值时也会出现从x到y的隐式流。但按以上结论,我们仅需按下述方法执行即可保证安全:ifx=1thenifSC(x)≤SC(y)theny:=1elseskipelseskip设x是0或1,y初始时为0,SC(x)=HIGH而SC(y)=LOW,这时流xy是不安全的。但因为当x=1时检查关系SC(x)≤SC(y)不成立和当x=0时因测试条件“x=1”不成立而跳过了对y的赋值操作,因此语句终止时y总是0,但又没有给出关于x的信息,制止了隐式流xy,因而语句的执行是安全的。但如果在安全性检查时,一个错误标记E被置为1,那么x的值就会从E的值体现出来,E=1蕴涵着x=1,E=0蕴涵着x=0,因此就泄漏出有关x的1比特信息。
3、显式的与隐式的混合流。假设一个赋值语句
y:=f(x1,x2,……,xm)是直接以变元xm+1,……,xn为条件的,执行机制只要在给y赋值时检查关系SC(x1)SC(x2)…SC(xm)SC(xm+1)…SC(xn)≤SC(y)是否成立,就能够证明显式流xiy(1≤i≤m)和隐式流xiy(m+1≤i≤n)的安全性。如果关系成立,按正常赋值执行;如果关系不成立,且赋值被跳过也不报错,则是完全安全的,如果报错或使程序夭折,则最多会泄漏出不安全程序1比特的信息。
以上结论都是根据Fenton的数据标记机的保护特性得出的,由于该保护特性能够在一般计算机系统中实现,所以上述机制都能实现。此外,也要求程序必须在SC(PC)=LOW的状态终止(PC是程序计数器),否则可能会泄漏出1比特的信息。
二、假定每一客体有可变的安全类
客体的安全类会随着信息的流动而变化,如何控制客体安全类的更改?一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度全地形挖掘机械购置合同
- 2025年度原木深加工产品研发合作协议
- 2023-2024学年安徽省六安市高二下学期6月月考历史试卷
- 2025年能源互联网策划合作发展共识协议
- 2025年公共设施改善合作协议
- 2025年自营批发服务项目立项申请报告
- 2025年企业合同管理咨询协议
- 2025年飞机燃油系统项目申请报告模范
- 2025年分店销售委托合同实施效果评价
- 2025年钢增强塑料复合管项目立项申请报告模板
- 商业银行不良资产处置方式汇总课件
- 注塑生产过程控制流程
- 三相分离器操作手册
- 一年级下册口算题(可直接打印)
- 儿童文学应用教程(第二版)完整全套教学课件 第1-12章 儿童文学与课程-儿童文学与小学语文习作教学
- 青岛生建z28-75滚丝机说明书
- 公务员面试应急应变题目大全及解析
- 学校年级组长工作计划
- 2023年广州市青年教师初中数学解题比赛决赛试卷
- 对折剪纸课件
- 膝关节痛风的影像学诊断
评论
0/150
提交评论