1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,9,章 死锁、系统安全,9.3.3,具体的安全防护措施,9.1,死锁概述,9.1.1,死锁的概念,9.1.2,资源分配图,9.1.3,产生死锁的必要条件,9.2,死锁的预防、避免、检测与恢复,9.2.1,死锁预防,9.2.2,死锁避免,9.2.3,死锁检测与恢复,9.3,系统的安全与保护,9.3.1,安全与保护概述,9.3.2,具体的安全威胁,进程,P1,:进程,P2,:,申请资源,A,申请资源,B,申请资源,B,申请资源,A,释放资源,A,释放资源,B,释放资源,B,释放资源,A,9.1,死锁概述,9
2、1.1,死锁的概念,死锁举例,1.,两个进程,P1,和,P2,,执行过程中要用到需互斥使用的资源,A,和,B,。两进程的执行框架为下:,.,.,P1,的进展,P2,的进展,申请,B,申请,A,申请,A,申请,B,释放,B,释放,B,释放,A,释放,A,死锁区,不可进入的禁区,1,2,3,4,5,6,不可进入的禁区,死锁点,.,Request(B);,Request(A);,Release(B);,Release(A);,Q,.,Request(A);,Request(B);,Release(A);,Release(B);,P,P,、,Q,有,6,种不同的并发执行顺序:,9.1,死锁概述,9.
3、1.1,死锁的概念,两个进程,P,和,Q,,执行过程中要用到需互斥使用的资源,A,和,B,。两进程的执行框架为下:,3.7,死锁问题,(DEADLOCK),3.7.1,概述,2.,死锁的例子,3.7,死锁问题,(DEADLOCK),3.7.1,概述,2.,死锁的例子,Q,获得,B,,,然后获得,A,;,然后释放,B,和,A,;当,P,恢复执行时,它可以获得全部资源,3.7,死锁问题,(DEADLOCK),3.7.1,概述,2.,死锁的例子,Q,获得,B,,,然后获得,A,;,P,执行并阻塞在对,A,的请求上;,Q,释放,B,和,A,;当,P,恢复执行时,它可以获得全部资源,3.7,死锁问题,(
4、DEADLOCK),3.7.1,概述,2.,死锁的例子,Q,获得,B,,,然后,P,获得,A,;,由于在继续执行时,,Q,阻塞在,A,上而,P,阻塞在,B,上,死锁是不可避免的,3.7,死锁问题,(DEADLOCK),3.7.1,概述,2.,死锁的例子,P,获得,A,,,然后,Q,获得,B,;,由于在继续执行时,,Q,阻塞在,A,上而,P,阻塞在,B,上,死锁是不可避免的,3.7,死锁问题,(DEADLOCK),3.7.1,概述,2.,死锁的例子,P,获得,A,,,然后获得,B,;,Q,执行并阻塞在对,B,的请求上;,P,释放,A,和,B,;当,Q,恢复执行时,它可以获得全部资源,3.7,死锁
5、问题,(DEADLOCK),3.7.1,概述,2.,死锁的例子,P,获得,A,,,然后获得,B,;,然后释放,A,和,B,;当,Q,恢复执行时,它可以获得全部资源,2.,死锁的定义,“死锁”与“饥饿”是两个不同的概念。在资源分配策略中,一些进程由于它们的优先级不如其他进程高,因此所提出的资源请求被无限期地忽略。这种现象称为“饥饿”。,.,返回目录,一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程,。,竞争资源:,为多个进程所共享的资源不足,引起它们对资源的竞争而产生死锁。,并发执行的顺序不当。,进程运行过程中
6、请求和释放资源的顺序不当,而导致进程死锁,死锁发生的原因,9.1.2,资源分配图,.,资源分配图中,约定圆圈代表进程,方框代表资源,资源结点内的圆点个数表示这种资源可分配的单元数。从一个进程到资源的有向边,表示该进程申请这种资源,但还没有得到;从资源到进程的有向边,表示已把该资源的一个单元分配给了这个进程。,请求,Ra,占有,Ra,(a),(b),P1,P1,请求,(c),占有,Rb,请求,占有,请求,Ra,(d),占有,Rb,请求,占有,P1,P2,P1,P2,Ra,.,A,B,C,R,S,T,(a),A,B,C,R,S,T,(b),A,B,C,R,S,T,(c),A,B,C,R,S,T,
7、d),A,B,C,R,S,T,(e),(f),A,B,C,R,S,T,三个进程,A,、,B,、,C,和三个资源,R,、,S,、,T,(都只一个单元)。现有两种资源申请,-,释放序列:(,1,),A,申请,RB,申请,SC,申请,TA,申请,SB,申请,TC,申请,R,;,.,A,B,C,R,S,T,(g),A,B,C,R,S,T,(h),A,B,C,R,S,T,(i),A,B,C,R,S,T,(k),A,B,C,R,S,T,(j),A,B,C,R,S,T,(l),返回目录,三个进程,A,、,B,、,C,和三个资源,R,、,S,、,T,(都只一个单元)。现有两种资源申请,-,释放序列:(,2,
8、A,申请,RC,申请,TA,申请,SC,申请,RA,释放,RA,释放,S,。,(2)“,占有并等待”条件:当进程由于申请不到所需资源而等待时,仍占据已分配到的资源。也就是说,进程不是一次性地得到所需的所有资源,而是在占有一部分资源的情况下,允许继续申请新的资源。,9.1.3,产生死锁的必要条件,(1)“,互斥”条件:一旦某个特定资源分配给了一个进程使用,那么该进程就独占使用这个资源,其他进程不得使用,直到它被释放为止。,(3)“,不可抢占”条件:已分配给进程的资源,别的进程不能强行夺取,只能由占用它的进程自己释放。,(4)“,循环等待”条件:系统中存在两个以上的进程,它们组成一个环路,环路
9、中的每个进程都在等待其他进程占用的资源。,返回目录,9.1.3,产生死锁的必要条件,为解决死锁问题,可有下面几种对策。,(1),忽略死锁:系统中任凭出现死锁,出现死锁时,就重新启动系统。,(2),预防死锁:上述四个条件是死锁存在的必要条件,通过破坏四个必要条件之一,就可使系统不具备产生死锁的条件。,(3),避免死锁:小心对待进程提出的每个资源请求,只有在能确保所提出的资源请求不会招致死锁时,才接受进程提出的资源请求。,(4),检测死锁并恢复:允许系统出现死锁,能通过一定的办法加以发现和恢复。,返回目录,9.2.1,死锁预防,9.2,死锁的预防、避免、检测与恢复,所谓“死锁预防”,就是试图让设计
10、出来的系统里不包含上述四个必要条件中的某一个。既然排除了发生死锁的可能,系统也就不会出现死锁了。,1,、破坏“互斥”条件,破坏“互斥”条件,就是在系统里取消互斥。若资源不被一个进程独占使用,那么死锁是肯定不会发生的。,但一般来说在所列的四个条件中,“互斥”条件是无法破坏的。因此,在死锁预防里主要是破坏其他几个必要条件,而不去涉及破坏“互斥”条件。,9.2.1,死锁预防,9.2,死锁的预防、避免、检测与恢复,2,、破坏“占有并等待”条件,破坏“占有并等待”条件,就是在系统中不允许进程在已获得某种资源的情况下,申请其他资源。即要想出一个办法,阻止进程在持有资源的同时申请其他资源。,.,方法一:创建
11、进程时,要求它申请所需的全部资源,系统或满足其所有要求,或么什么也不给它。这是所谓的“一次性分配”方案。,.,方法二:要求每个进程提出新的资源申请前,释放它所占有的资源。这样,一个进程在需要资源,S,时,须先把它先前占有的资源,R,释放掉,然后才能提出对,S,的申请,即使它可能很快又要用到资源,R,。,3.,破坏“不可抢占”条件,.,破坏“不可抢占”条件,就是允许对资源实行抢夺。,.,返回目录,可抢占资源:是指可从拥有它的进程手中抢夺过来而不会产生副作用的那些资源;,不可抢占的资源:是指不能从当前拥有它的进程手中抢夺,否则就会引起不必要的麻烦的那些资源。,4.,破坏“循环等待”条件,.,破坏“
12、循环等待”条件的一种方法,是将系统中的所有资源统一编号,进程可在任何时刻提出资源申请,但所有申请必须按照资源的编号顺序(升序)提出。这样做就能保证系统不出现死锁。,1.,输入机,2.,打印机,3.,扫描仪,4.,绘图仪,5.,磁带机,6.CD-ROM,A,B,i,j,A,B,i,j,(a),(b),(c),假定把不同编号的资源,i,和,j,分配给了进程,A,和,B,,那么如果,i,j,,,A,就不允许再申请资源,j,,因为这个编号小于,A,已有资源的编号;如果,i,j,,,B,就不允许再申请资源,i,,因为这个编号小于,B,已有资源的编号。,对系统中的,5,种资源进行了统一编号,进程可以先申请
13、打印机,再申请磁带机,但不能先申请磁带机,再申请打印机,因为那样做不符合规定的资源申请原则。,返回目录,9.2.2,死锁避免,1.,“拒绝启动进程”法,.,.,所谓“死锁避免”,是允许系统里存在产生死锁的条件,但对于进程的每次资源申请,都将根据当时资源的分配情况,探测分配结果。只有在探测结果不会有死锁发生时,才正式接受这次资源请求,把资源分配给进程。,拒绝启动进程法:若一个进程对资源的申请会导致死锁,则不启动该进程。,具体做法是考虑有,n,个进程、,m,种不同类型资源的系统。定义如下向量和矩阵:,.,(1),系统中每种资源的总量(向量),Resource=,R,=(R1,,,R2,,,Rm,)
14、2),未分配的每种资源剩余数(向量),Available=,V,=(V1,,,V2,,,Vm,),;,(3),每个进程对各种资源的最大需求矩阵:,Claim=,C,=,C,11,C,12,C,1m,C,21,C,22,C,2m,C,n1,C,n2,C,nm,每个进程已分配的各种资源数矩阵:,(4),Allocation=,A,=,A,11,A,12,A,1m,A,21,A,22,A,2m,A,n1,A,n2,A,nm,(1),所有资源或者可分配,或者已经被分配,即:,R,j,=,V,j,+,A,i j,,对所有的,j,i,=,1,n,(2),任何一个进程对任何一种资源的申请,都不能超过
15、系统中这种资源的总量,即:,C i j R i,,对所有,i,,,j,(3),分配给任何一个进程的任何一种资源,都不会超过这个进程对该资源的最大需求量,即:,A i j C i j,,对所有,i,,,j,.,有了这些准备工作,就可以给出所谓的“拒绝启动进程”的死锁避免方法,即只有在满足下面的条件:,R,j,C,(n+1)j,+,C,i j,,对所有的,j,i,=,1,n,时,才允许启动一个新进程,Pn+1,,否则拒绝启动。,.,即只有在当前所有进程的最大需求量加上新进程的最大需求量后,系统拥有的各类资源数能够满足它们的要求,那么这才启动一个新的进程。,由于这个“拒绝启动进程”法是建立在所有进程
16、都需要最大资源数的基础之上的,保险系数打得太大,所以不可能是最优的策略。,.,2.,“,拒绝分配资源”法,.,所谓系统处于“安全状态”,就是至少存在有一个进程的执行序列,能够在有限时间内使所有进程最终都能够运行到结束,不导致死锁;否则,就说系统处于“不安全状态”。,“拒绝分配资源”法即有名的“银行家算法”,它以银行系统所采用的借贷策略为基础建立资源分配的模型。银行只有有限数目的资金(资源),可用来借贷给不同客户(进程)。贷款限额是客户对资金的最大需求量。,算法对每个资源申请都进行测试,判断接受申请是否会致使系统进入不安全状态。如果是就拒绝分配;如果接受申请后系统仍然是安全的,那么就予以分配。,
17、2),在接到一个进程对资源的请求时,有权根据当前资源的使用情况暂时加以拒绝(即阻塞该进程),但保证在有限的时间内让它得到所需要的资源。,2.,“,拒绝分配资源”法,.,为实行银行家算法,对进程提出的要求是:,(1),必须预先说明自己对资源的最大需求量;,(2),(3),只能一次一个地申请所需要的资源;,如果已获得资源的最大需求量,那应在有限的时间内使用完毕,并归还系统。,.,为实行银行家算法,系统的承诺如下:,(1),若一个进程对资源的最大需求量没有超过该资源的总量,那么必须接纳这个进程,不得拒绝它;,单种资源的银行家算法,.,将所有进程的,“能执行完”标志清,0,假定接受该请求,把资源分配
18、给进程,将系统当前所有剩余资源与,”,能执行完”标志为,0,的进程还需资源数比较,找出一个能满足其所有需求的进程,找到了吗?,将该进程的,”,能执行完”,标志置为,1,系统收回它,所要求的全部资源数,Y,N,检查所有进程的,“能执行完”标志,还有,”,能执行完”,标志为,0,的进程吗?,这一请求不安,全,暂时不予接受,Y,N,这一请求是安,全的,可以分配,资源总量为,10,。三个进程,A,、,B,、,C,的最大资源需求量分别是,9,、,4,、,7,,如图(,a,)所示。若干次请求后,资源使用情况如图(,b,)所示。现在进程,B,提出一个资源请求,系统可接受该请求吗?请用银行家算法进行测试,做出
19、判断。,例,9-2,:,A,B,C,进程,最大需求,9,4,7,已有量,0,0,0,系统剩余数:,10,(a),A,B,C,进程,最大需求,9,4,7,已有量,3,2,2,系统剩余数:,3,(b),A,B,C,进程,最大需求,9,4,7,已有量,3,3,2,系统剩余数:,2,(c),A,B,C,进程,最大需求,9,4,7,已有量,3,4,2,系统剩余数:,1,(d),A,B,C,进程,最大需求,9,-,7,已有量,3,0,2,系统剩余数:,5,(e),A,B,C,进程,最大需求,9,-,7,已有量,3,0,7,系统剩余数:,0,(f),A,B,C,进程,最大需求,9,-,-,已有量,3,0,0
20、系统剩余数:,7,(g),如果在图(,b,)时接受进程,B,的一个资源请求,它所导致的图(,c,)的状态是安全的,系统可以放心地接受这次资源申请。,.,多种资源的银行家算法,(1),此时,系统要设置:向量,R(Resource,),:各种类型资源总量;向量,V(Available,),:各种资源当前可分配量;矩阵,C(Claim,),:各进程对各种资源所需总量;矩阵,A(Allocation,),:各进程对各种资源的已拥有量;矩阵,C-A,:各进程对各种资源的还需要量。,.,(2),系统是否安全,要看每个进程是否能运行到结束,即现有的资源数能否满足在当前分配情况下与每个进程最大资源需求间的差
21、值。这时,对任何一个进程,i,,下面的条件应该满足:,Cij,Aij,Vj,,对于所有的,j,。,返回目录,(1),查看矩阵,C-A,,其中是否存在有一行还需要的各种资源数小于等于向量,V,。如果,C-A,中没有这样的行存在,那么表示任何进程都无法运行到结束,因此系统的状态是不安全的,有可能会死锁。,多种资源的银行家算法,.,检查一个状态是否安全的算法步骤如下所列:,(2),如果发现有这样的行,那么就假设这个进程获得了它所需要的资源,并结束运行。将该进程做上运行结束的标记,并把它占用的资源收回,加到向量,V,上。这样,系统当前的可分配资源量增加了。,(3),重复以上两步。如果所有的进程都被标记
22、为终止,那么表示出发时的状态是安全的;否则表示出发时的状态是不安全的。,返回目录,9.2.3,死锁检测与恢复,1.,每种类型一个资源的死锁检测,所谓“死锁检测”,即系统允许产生死锁,操作系统周期性地在进程和资源之间检测是否出现了循环等待的情形。每当检测到这种情形时,就认为可能会出现死锁,于是采取措施对系统进行恢复。,.,每种类型的资源只有一个可用单元供分配时,能够通过绘制当前的资源分配图,来检测在某些进程间是否已经构成了循环等待。,9.2.3,死锁检测与恢复,比如系统有,A,G,共,7,个进程,,6,个类型的单体资源,r,w,。当前资源所属关系为:进程,A,已得到资源,r,,需要资源,s,;进
23、程,B,不占有任何资源,需要资源,t,;进程,C,不占有任何资源,需要资源,s,;进程,D,已得到资源,u,和,s,,需要资源,t,;进程,E,已得到资源,t,,需要资源,v,;进程,F,已得到资源,w,,需要资源,s,;进程,G,已得到资源,v,,需要资源,u,。,.,r,A,s,C,D,F,w,u,G,t,B,E,v,(a),D,u,G,t,E,v,(b),也可通过建立“资源分配”表和“进程等待”表,来检测系统对资源的分配是否构成环路。,.,A,B,t,s,(d),C,v,资源,占用的进程,进程,等待的资源,r,A,s,C,t,B,u,B,v,A,A,t,资源分配表,进程等待表,进程,等待
24、的资源,A,t,B,C,s,v,进程等待表,(a),(b),(c),.,假定系统有,3,个进程,A,C,,有同类型的资源,5,个,r,v,。在某一时刻,资源的分配情况如图(,a,)所示。这些分配都能够立即满足,不会出现进程等待资源的情形。,.,这时,A,提出申请,t,。由于,t,已分出去,让,A,等待会形成环路死锁吗?为此,通过,t,去查资源分配表,看谁占用了资源,t,。从“资源分配”表知,t,分配给了,B,,而,B,现在并不等待任何资源,因此,让,A,等待,t,不会构成环路。于是把它填入“进程等待”表中,如图(,b,)所示。,.,随后,,B,提出对,s,的请求。反复查看“资源分配”表和“进程
25、等待”表,没有出现循环等待,因此又把,B,等待,s,的情况记录在“进程等待”表中,如图(,c,)所示。,.,C,提出申请资源,v,。形成环路,出现死锁,并可知这个死锁涉及到进程,A,、,B,、,C,,以及资源,s,、,t,、,v,。如图(,d,)所示。,向量,R(Resource,),向量,R=(R1,,,R2,,,,,Rm,),,表示系统中有,m,种资源类型,,R1,是类型,1,的资源量,,R2,是类型,2,的资源量,等等。即,R,是系统中现有的各类资源数。,2.,每种类型多个资源的死锁检测,在每种类型有多个资源时的死锁检测,涉及如下的向量和矩阵:,.,(1),(2),向量,V(Availa
26、ble,),向量,A=(A1,,,A2,,,,,Am),表示系统中,m,类资源当前可用的数量,,A1,是类型,1,的可分配量,,A2,是类型,2,的可分配量,等等。,(3),矩阵,A(Allocation,),该矩阵的元素,Aij,(,1,i,n,,,1,j,m,),表示进程,i,当前已拥有的资源,j,的数目。因此这是“已分配资源矩阵”。,(4),矩阵,Q(Request,),该矩阵的元素,Qij,(,1,i,n,,,1,j,m,),表示进程,i,当前还需要的资源,j,的数目。因此这是“还需要资源矩阵”。,.,设置一个临时向量,W,,初始时等于向量,V,。死锁检测算法的步骤如下:,(1),在矩
27、阵,Q,里,找一个没被标记的进程,Pi,,它在,Q,里对应的第,i,行小于等于向量,W,。这里定义:向量,X,和向量,Y,有关系,XY,,当且仅当,XiYi,(,1,j,m,)。,(2),若存在这样的行,那为,Pi,做上标记,表示它完成;再把矩阵,A,中第,i,行与向量,W,相加(即对,1,j,m,,令,Wi,=,Wi+Aij,),表示把进程,Pi,的资源收回,以供其他进程使用。,系统有,3,个进程和,4,种资源,当前向量,R,和,V,以及矩阵,A,和,Q,分别如图所示。试用每种类型多个资源的死锁检测算法,判断系统是否死锁。,每当有资源申请时就检测,这样能够尽早地发现死锁的存在。,CPU,将在
28、检测上花费大量的时间。,(3),若不存在这样的进程,那么算法停止。算法结束后,如果还有没有做上标记的进程,那么未标记的进程都是死锁的。,规定每隔,k,分钟检测一次,或当发现,CPU,的利用率下降到一定程度时去检测。,.,进行死锁检测的时机,(1),(2),每种类型多个资源的死锁检测算法,与银行家算法类似。但它们间最为不同的一点是这里的算法不涉及每个进程对资源的最大需求量,而银行家算法必须事先知道每个进程对资源的最大需求。,.,例,9-6,:,Resource,向量,R,:,4 2 3 1,R,1,R,2,R,3,Available,向量,V,:,2 1 0 0,R,1,R,2,R,3,R,4,
29、R,4,Allocation,矩阵,A,:,R,1,R,2,R,3,P1 0 0 1 0,R,4,P2 2 0 0 1,P3 0 1 2 0,Request,矩阵,Q,:,R,1,R,2,R,3,P1 2 0 0 1,R,4,P2 1 0 1 0,P3 2 1 0 0,解,:,看矩阵,Q,。进程,P1,需一个单元的,R3,资源,但从向量,V,(也就是临时向量,W,)里知现在没有,R3,资源,无法满足,P1,的需要;进程,P2,的申请也无法满足;只有进程,P3,的申请可被满足。于是进程,P3,可运行结束,最终释放它拥有的资源。这样,把,P3,已分资源(在矩阵,A,里)和还需,资源(在矩阵,Q,里
30、相加,还给系统,,向量,A,成为:,V=(4,,,2,,,2,,,1),。,3.,死锁的恢复,若已检测出几个进程和资源间存在环路,那么下一步就应是使系统从死锁中恢复出来。,.,(1),利用抢占资源恢复:含义是通过人工干预,把某资源临时地从当前占用它的进程手中抢夺过来,给另一个进程使用,以摆脱当前的死锁危机。,(2),利用回退恢复:含义是系统人员适当安排检查点,周期性地对进程进行检查。一旦检测到死锁,通过记录的信息,就能知道死锁涉及到哪些进程和资源。通过把死锁的进程回退到某个检查点,然后重新启动所有进程。,(3),删除进程恢复:是一种通过强制进程结束的办法来解除死锁,系统终止死锁涉及的某些进
31、程,收回它们占用的资源,然后让余下的进程继续运行。,返回目录,3.,死锁的恢复,按照死锁的复杂程度,可能采用的恢复方法如下:,(1),删除所有的死锁进程,这是死锁恢复中最常用的方法。,(2),把每个死锁进程回溯到某个检查点,然后重新启动所有进程。这样做可能会再次发生原来的死锁。不过,基于并发进程执行的不确定性,发生这种情况的可能不大。,(3),一个个地删除进程,直到不再发生死锁。选择删除对象的顺序,可是某种最小代价原则。每删除一个进程,就重新调用检测算法,以便判断是否仍然存在死锁。,(4),一个个地由进程手中抢占资源,直到不再发生死锁。这时必须制定一种抢占原则(比如基于最低成本考虑),抢占后必
32、须重新调用检测算法。资源被抢占的进程,需要回溯到前面获得该资源的地方。,返回目录,TENEX,是早些时候广泛用于,DEC-10,计算机上的操作系统,虽然现在不使用了,但由于在它的里面发现了一些安全缺陷而被永远记载在了计算机的安全史中。,.,9.3,系统的安全与保护,9.3.1,安全与保护概述,1.,计算机系统安全隐患的示例,例,9-8,:,TENEX,使用口令来保护文件,支持请求分页。为让用户能够监控程序的行为,发生缺页时,系统允许调用用户程序。,A,A,A,A,A,A,第一个页面,(,在内存中,),第二个页面,(,不在内存,),页面边界,(,产生缺页,),B,A,A,A,A,A,A,A,A,
33、A,A,F,(a),(b),(c),.,为访问文件,在文件打开时用户会向操作系统提供口令。系统对口令逐个字符检查,只要发现口令错就立即停止打开。,.,入侵者利用,TENEX,的这些特性,就可达到入侵系统的目的。他可如图,(a),所示将口令的第一个字符放在一页的最后,其他字符位于下一页的开始,且精心设计让下一页不在内存。,若口令第一个字符不是,A,,入侵者就可像图,(b),那样改变口令,看它是否以,B,开头,并重复该过程。,.,中断:如图,(b),所示。这种攻击表示系统的某个资源被破坏,或变得不可用、不能用。这是对“可用性”的攻击。比如偷盗了主机的,CPU,芯片,破坏了硬盘之类的硬件设施,割断通
34、信线路,或者使文件系统无效。,前面各章讨论操作系统具体管理功能时,都涉及过安全和保护问题,但那时是从个体、纵向的角度做出审视。现在这里重提安全和保护,则是从整体、横向的角度做出审视,将着重讲述安全策略和保护机制。,.,2.,安全威胁的类型,.,计算机系统或网络在安全性上受到的攻击,可这样来刻画:从源端(如一个文件或内存的某个区域)到目的端(如另一个文件或某个用户)存在着信息流。图,(a),表示没有安全威胁时的正常情形。,信息源端,信息目的端,(a),正常的信息流,信息源端,信息目的端,(b),中断,对安全采取的四种攻击方式,.,(1),(2),侦听:如图,(c),所示。这种攻击表示未经授权而获
35、得对某种资源的使用和访问。这是对“机密性”的攻击。比如搭线窃取网络中的数据,违法复制文件或数据。这里的未经授权的对象,可以是一个人、一个部门、一台计算机甚至一个程序。,信息源端,信息目的端,(c),侦听,更改:如图,(d),所示。这种攻击表示不仅未经授权获得了对某种资源的使用和访问,而且还进行篡改。这是对“完整性”的攻击。,信息源端,信息目的端,(d),更改,信息源端,(e),伪造,(3),(4),伪造:如图,(e),所示。这种攻击表示未经授权就将不正当的信息插入系统,制造混乱或错误。这是对“真实性”的攻击。,安全威胁除入侵者恶意制造的外,还会出现下列情况导致系统的不安全:,.,(1),天灾:
36、火灾、洪水、地震、战争、动乱,都会造成数据的意外丢失。甚至像老鼠对磁带、磁盘的撕咬,也可能会导致数据的意外丢失。,(2),软、硬件错误:,CPU,故障、磁盘或磁带不可读、通信错误或程序里隐含的错误,会造成数据信息的意外丢失。,(3),人为过失:不正确的数据登录、错误的磁盘或磁带的安装、操作失误、遗失数据存储介质(磁盘、磁带)。,3.,对网络安全的攻击,在网络时代的今天,通信线路和网络本身也都归为计算机系统的资源。因此,有时也把硬件、软件、数据信息、通信线路和网络称为是计算机系统的“资产”。网络安全所受到的攻击,也成为了人们必须面对的事情。,.,信息目的端,.,通常,把网络安全攻击分为被动攻击和
37、主动攻击两种。,(1),被动攻击,Internet,或,其他公共设施,用户,A,用户,B,窃听用户,A,发送给,用户,B,的消息内容,Internet,或,其他公共设施,用户,A,用户,B,分析用户,A,发送给,用户,B,的消息内容,(a),释放消息内容,(b),通信分析,被动攻击是指攻击者试图了解或使用系统的信息,但不去影响和破坏信息资源。被动攻击的行为是进行监视和窃听,从而达到获取正在通信线路上传输的数据信息的目的。,.,.,这种攻击的表现形式为:“释放消息内容”和“通信分析”,如图,(a),和图,(b),所示。,.,很难检测出系统受到了被动攻击,因为这样的攻击不对数据信息做任何改变,没有
38、留下任何痕迹,消息的发送和接收都在以正常的方式进行,发送者和接收者意识不到还有第三方已经读取了信息,或正在观察他们之间的通信方式。为了防止这类攻击,只能靠对信息进行加密的方法解决。所以,对付被动攻击,着力点应该放在防止上,而不是在检测上。,(2),主动攻击,主动攻击是指攻击者试图通过更改数据流或产生错误的数据流,达到改变系统资源、或影响系统运行的目的。,.,.,在“伪装”攻击类型中,攻击者假装成某个用户,取得对方的认可,达到干扰和破坏对方正常工作的目的。如图,(a),所示。,Internet,或,其他公共设施,用户,A,用户,B,B,接收到攻击者的,消息,以为发自,A,(a),伪装,Inter
39、net,或,其他公共设施,用户,A,用户,B,捕获,A,发送的消,息,稍后重放给,B,(b),重放,.,在“重放”攻击类型中,攻击者捕获到数据信息,经过修改后再次发送到目的地,以产生未经授权的结果。如图,(b),所示。,Internet,或,其他公共设施,用户,A,用户,B,攻击者修改,A,发送给,B,的消息,(c),更改消息,.,在“更改消息”攻击类型中,攻击者截获消息,经过对消息内容的修改,发送给目的地,以产生未经授权的结果。如图,(c),所示。比如原来的消息为“允许,XXX,阅读机密账目文件”,篡改后成为“允许,YYY,阅读机密账目文件”。,Internet,或,其他公共设施,用户,A,
40、攻击者破坏由,服务器提供的服务,(d),拒绝服务,.,在“拒绝服务”攻击类型中,攻击者的攻击会造成通信设施无法正常使用或管理的效果。如图,(d),所示。,.,对于主动攻击,人们无法对通信设施和路径进行全天候的现场保护。因此着力点应该放在检测上,努力地去发现它们,并从由它们导致的破坏和延迟中加以恢复。,4.,认证与授权,“安全”属于“策略”范畴,它涉及到计算机的技术、,管理、法律以及政治等诸方面的总体问题;而“保护”属于“机制”范畴,是指操作系统为确保计算机信息安全而采用的各种具体手段。,.,.,可对安全和保护进行抽象:将被保护的信息或资源(如,CPU,、文件、数据、设备)抽象为“安全实体”,操
41、作系统应阻止所有对安全实体未经授权的访问;把对信息或资源进行访问的对象(如进程、线程),抽象为“主体”,未经授权的主体不,允许访问特定的安全实体。这一抽,象过程如图所示。,未授权访问,授权访问,认证授权,主体,主体,安全实体,用户与计算机系统的最初交互体现为登录。在登录对话框中,操作系统试图通过提交的信息,去验证来者就是它们所声称的身份。这种保护就是“外部认证”或“用户认证”。,所谓“认证”,是指用来确定需要访问安全实体的主体是否就是它所声称的身份的过程。比如,主体声称它是“,XXX”,,那么系统的认证机制就要负责确保该主体真的是“,XXX”,,而不是别的什么。,.,(1),(2),“内部认证
42、是指确保执行的线程(进程)不被其他用户拥有。必须认证线程与一个给定进程相关联,进程也必须被认证与一个特定用户相关联。若没有内部认证,用户就有可能去建立一个属于其他用户的线程的机会。这样,一个线程就可以另一个用户的身份运行,那么即使是最有效的外部认证机制,也能很轻易地被入侵者绕过去。,资源,W,资源,X,资源,Y,资源,Z,进程,B,进程,A,进程,C,读,/,写,读,/,写,读,读,.,所谓“授权”,指在一个主体被认证后,确定它是否有权访问安全实体。比如,主体确实就是“,XXX”,,它也可能无权看“,YYY”,的个人账目表。这就是说,系统的授权机制只能允许主体去访问它可以访问的安全实体。,
43、授权的实质就是管理系统的资,源,特别是能够共享的那一部分,,目标是保护一个进程的资源不受其他进程活动的影响或破坏。假定进程,A,有资源,W,、,X,、,Y,和,Z,,如图所示。这些资源中的一些可以与别的进程共享。,.,返回目录,伪装者:是指未经授权的人,穿越了系统的访问控制,以一个合法用户账号的身份使用计算机。,1.,.,9.3.2,具体的安全威胁,入侵者,通常把喜欢闯入与自己毫不相干区域的人称为“入侵者”,也就是通常所说的“黑客”。其实在计算机界,“黑客”是对资深程序员的一种荣誉称谓。考虑到它的真正含义,应把那些企图非法闯入计算机系统的人称为“骇客”。,.,入侵者的三种类型:,神秘用户:是指
44、夺取了对系统的管理控制权,且使用这一权利躲避系统的访问控制和审计。,(1),(2),违法行为者:是指一个合法用户,未经授权访问了不该访问的数据、程序或资源;或者虽经授权,却错误地使用了他的特权。,(3),入侵者的目的是试图获得对系统的访问,或者提高他访问系统的特权范围。为此,他必须获取被保护的信息。在多数情况下,这就是指口令。,.,.,恶意软件,2.,恶意软件指利用计算机系统本身的漏洞,专门设计来制造破坏或用尽计算机资源的软件,它们常隐藏在合法软件中,或伪装成合法软件。在各种恶意软件中,有些是需要依附于别的程序才能运行的程序段,有的可通过操作系统的调度独立运行。,“后门”是指进入某程序的隐蔽入
45、口点,知道后门的人无需通过正常的安全访问渠道,就可获得访问。为调试和测试程序,系统一般都为程序员提供特殊的权利,以避免繁琐而复杂的认证手续。这样的特殊权利就是“后门”。一旦不道德的程序员把后门用来做未经授权的访问,或被别人窃取,那么后门就变成了对系统的威胁。,.,恶意软件的分类,(1),(2),逻辑炸弹是一种最古老的恶意软件,它被嵌入到某些合法程序代码中,设置发作的条件。只要条件满足,就会发生“爆炸”:那时可能会更改或删除数据或整个文件,导致机器异常终止或实施其他破坏。比如一个特定的日子等。,(3),“特洛伊木马”是一个有用的、但又含有隐秘代码的程序或命令过程,能通过系统的安全检查。执行它时,
46、那段隐秘代码就会去完成那些未授权用户无法直接完成的事。,(4),“病毒”是能通过将其代码内嵌到合法程序之上进行自我繁殖的一个程序段,就如同生物病毒能够自我繁殖一样。典型的病毒在生命周期中将经历潜伏、繁殖、引发、执行四个阶段。,(5),“蠕虫”是一个独立完整的程序,被设计成能在网络上寻找寄生和繁殖场所。它一旦在一个系统内部活跃起来,就会做分裂性的自我复制,通过网络连接在系统间传播。为复制本身,蠕虫可借助的网络工具是:电子邮件途径;远程执行能力;远程登录能力等。,(6),“僵尸”是一个程序,它能秘密控制通过,Internet,连接的另一台计算机,并通过它向目标,Web,站点发送大量的登录请求,达到
47、使其拒绝服务的目的。由于是通过另一台计算机发动攻击,因此人们很难追溯到僵尸的始作俑者。,返回目录,9.3.3,具体的安全防护措施,公开系统的设计方案:设计人员以为系统的设计方案越保密越好,这样入侵者才不会知道系统的工作原理,才能免除系统遭受各种攻击。其实这是自欺欺人的想法。入侵者了解和掌握这方面的内容,只是一个时间早晚问题。,1.,系统安全的设计原则,(1),(2),拒绝默认规则:相对于拒绝合法的访问,发现非法访问是容易的。因此,不能给合法的访问提供有缝可钻的“后门”,那样只会对安全带来威胁。,(3),随时检查访问权限:系统不要在进行完访问许可检查后,一直为被检方保持原有信息以方便后续访问时使
48、用。,(4),(5),(6),(7),给进程尽可能小的权限:这样会限制各种攻击的活动范围。比如若编辑程序进程只能具有访问被编辑文件的权限,那么即使在编辑程序里安放了特洛伊木马,它也无法进行破坏活动。,保护机制应该简单、一致,深入到系统的最底层:不要在当前不安全系统的已有架构上,进行改善和修补,系统的安全性是不可能靠修修补补来达到的。,选择用户心理上可接受的安全方案:因为若用户感到保护自己的文件非常吃力,那么他们就不会乐意使用。,整个系统设计尽量简单:功能多的系统,必定庞大,就是潜在的不安全系统。代码越多,安全漏洞和错误就越多。从系统安全性出发,最简单的设计才是最好的设计。,使用一次性口令:系统
49、要求用户定期更换口令,以防止由于口令的泄露而造成损失。最极端的做法是使用一次性口令,即用户每次登录都是使用下一个新的口令,从而确保不让同一个密码重复出现在网络上。,2.,用户认证机制,.,最广泛采用的认证方式是要求用户输入登录名和口令。在口令的选择上,要避免太短或太容易猜出。应该加强对用户的教育,告诉他们采用难以猜测的口令的重要性,并提供选择好口令的指导原则。,.,下面是可采用的另外一些用户认证机制:,(1),使用问答式口令:这种口令机制是每个用户向系统提供一连串的问答列表。登录时,服务器随机地提问,并验证答案。为此,需要提供尽可能多的问题和答案,才能使这种方法见效。,(2),(3),使用实际
50、物体:可以通过检验用户拥有的实际物体达到用户认证的目的,比如磁卡。,(4),使用生物识别:所谓“生物识别”,是指对用户的某些难以伪造的物理特征进行的认证。比如指纹识别、声音识别。,3.,授权保护机制,.,授权机制模型,活动部分是主体,被动部分是安全实体。授权机制应在任意时刻给出任何主体对任何安全实体所持有的访问权限,由这些访问权限反映出系统的安全策略。,(1),.,所谓一个进程的“保护域”,是指关于该进程的一系列(安全实体,访问权限)对,每个对规定了一个安全实体和一些可在其上实施的操作的子集。保护域告诉用户进程,在某安全实体上可做什么和不可做什么。,图给出三个进程的保护域,每个域里都有一些安全






