收藏 分享(赏)

《操作系统》 9死锁、系统安全课件.ppt

上传人:dzzj200808 文档编号:2718243 上传时间:2018-09-25 格式:PPT 页数:33 大小:1.71MB
下载 相关 举报
《操作系统》 9死锁、系统安全课件.ppt_第1页
第1页 / 共33页
《操作系统》 9死锁、系统安全课件.ppt_第2页
第2页 / 共33页
《操作系统》 9死锁、系统安全课件.ppt_第3页
第3页 / 共33页
《操作系统》 9死锁、系统安全课件.ppt_第4页
第4页 / 共33页
《操作系统》 9死锁、系统安全课件.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

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.1.1 死锁的概念,死锁举例,1.,两个进程P1和P2,执行过程中要用到需互斥使用的资源A和B。两进

2、程的执行框架为下:,.,.,P1的进展,P2的进展,申请B,申请A,申请A,申请B,释放B,释放B,释放A,释放A,死锁区,不可进入的禁区,1,2,3,4,5,6,不可进入的禁区,死锁点,如图所示,给出这两个进程执行时的联合进展情况。,申请资源:若所申请的资源暂时不可用,那么提出申请的进程就只能等待,一直要等到占用该资源的进程释放了资源为止;,2.,死锁的定义,通常,进程以下面的方式使用资源:,.,(1),(2),使用资源;,(3),释放资源。,.,所谓“可抢占资源”,是指可从拥有它的进程手中抢夺过来而不会产生副作用的那些资源;所谓“不可抢占的资源”,是指不能从当前拥有它的进程手中抢夺,否则就

3、会引起不必要的麻烦的那些资源。,.,所谓“死锁”,是指若一个进程集合中的所有进程,都在等待只能由该组进程中的其他进程才能引发的一个事件,那么就说这组进程是死锁的。,“死锁”与“饥饿”是两个不同的概念。在资源分配策略中,一些进程由于它们的优先级不如其他进程高,因此所提出的资源请求被无限期地忽略。这种现象称为“饥饿”。,.,.,死锁是两个或更多的进程占有资源而又请求其他资源时引起的一种状态。某个进程占有着另一个进程请求的资源,同时又请求第二种资源;而另一个进程占有着第二种资源,同时又请求前面进程所占有的资源。如此这般,使几个进程都不能继续执行。,.,定义中所说的“进程都在等待”,只是可能产生死锁的

4、前提,关键是它们在等待谁来引发它们所等待的事件。死锁时,等待引发事件的进程就是该组中的其他进程。由于这组进程中,没有一个进程有能力引发唤醒该进程集合中其他进程的事件,所以它们都只能无限期地僵持在那里而形成死锁。,返回目录,三个进程A、B、C和三个资 源R、S、T(都只一个单元)。现有两种资源申请-释放序列:(1)A申请RB申请SC申请TA申请SB申请TC申请R;(2)A申请RC申请TA申请SC申请RA释放RA释放S。用资源分配图描述这两个申请-释放序列,并对它们做出结论。,9.1.2 资源分配图,可以用“资源分配图”来勾勒系统中各个进程的资源分配情况,从中反映哪个进程已经分配了什么资源,哪个进

5、程由于等候什么资源而处于阻塞。,.,.,资源分配图中,约定圆圈代表进程,方框代表资源,资源结点内的圆点个数表示这种资源可分配的单元数。从一个进程到资源的有向边,表示该进程申请这种资源,但还没有得到;从资源到进程的有向边,表示已把该资源的一个单元分配给了这个进程。如图给出了资源分配图的图例。,请求,Ra,占有,Ra,(a),(b),P1,P1,请求,(c),占有,Rb,请求,占有,请求,Ra,(d),占有,Rb,请求,占有,P1,P2,P1,P2,Ra,例9-1 :,.,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,(d)

6、,A,B,C,R,S,T,(e),(f),A,B,C,R,S,T,序列(1)的资源分配图如图(a)图(f)所示。此序列实施完后,出现了进程和资源间的循环等待,即三个进程A、B、C死锁了。,.,序列(2)的资源分配图如图(g)图(l)所示。整个序列执行完后,在三个进程间没有死锁发生。,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),返回目录,“占有并等待”条件:当进程由于申请不到所需资源而等待时,仍占据已分配到的资源。也就是说,进程不是一次性地得到所需的

7、所有资源,而是在占有一部分资源的情况下,允许继续申请新的资源。,在资源分配中,若一组进程间同时存在下面列出的四个条件,那么就可能出现死锁。,9.1.3 产生死锁的必要条件,.,.,(1),互斥”条件:一旦某个特定资源分配给了一个进程使用,那么该进程就独占使用这个资源,其他进程不得使用,直到它被释放为止。,(2),(3),“不可抢占”条件:已分配给进程的资源,别的进程不能强行夺取,只能由占用它的进程自己释放。,(4),“循环等待”条件:系统中存在两个以上的进程,它们组成一个环路,环路中的每个进程都在等待其他进程占用的资源。,为解决死锁问题,可有下面几种对策。,(1),忽略死锁:系统中任凭出现死锁

8、,出现死锁时,就重新启动系统。,(2),预防死锁:上述四个条件是死锁存在的必要条件,通过破坏四个必要条件之一,就可使系统不具备产生死锁的温床(即条件)。,(3),避免死锁:小心对待进程提出的每个资源请求,只有在能确保所提出的资源请求不会招致死锁时,才接受进程提出的资源请求。,(4),检测死锁并恢复:允许系统出现死锁,能通过一定的办法加以发现和恢复。,返回目录,9.2.1 死锁预防,9.2 死锁的预防、避免、检测与恢复,所谓“死锁预防”,就是试图让设计出来的系统里不包含上述四个必要条件中的某一个。既然排除了发生死锁的可能,系统也就不会出现死锁了。,.,1.,破坏“互斥”条件,破坏“互斥”条件,就

9、是在系统里取消互斥。若资源不被一个进程独占使用,那么死锁是肯定不会发生的。,.,.,但一般来说在所列的四个条件中,“互斥”条件是无法破坏的。因此,在死锁预防里主要是破坏其他几个必要条件,而不去涉及破坏“互斥”条件。,2.,破坏“占有并等待”条件,.,破坏“占有并等待”条件,就是在系统中不允许进程在已获得某种资源的情况下,申请其他资源。即要想出一个办法,阻止进程在持有资源的同时申请其他资源。,.,方法一:创建进程时,要求它申请所需的全部资源,系统或满足其所有要求,或么什么也不给它。这是所谓的“一次性分配”方案。,.,方法二:要求每个进程提出新的资源申请前,释放它所占有的资源。这样,一个进程在需要

10、资源S时,须先把它先前占有的资源R释放掉,然后才能提出对S的申请,即使它可能很快又要用到资源R。,3.,破坏“不可抢占”条件,.,破坏“不可抢占”条件,就是允许对资源实行抢夺。,4.,破坏“循环等待”条件,.,破坏“循环等待”条件的一种方法,是将系统中的所有资源统一编号,进程可在任何时刻提出资源申请,但所有申请必须按照资源的编号顺序(升序)提出。这样做就能保证系统不出现死锁。,1. 输入机 2. 打印机 3. 扫描仪 4. 绘图仪 5. 磁带机 6. CD-ROM,A,B,i,j,A,B,i,j,(a),(b),(c),.,如图(b)所示,假定把不同编号的 资源i和j分配给了进程A和B,那么如

11、果ij, A就不允许再申请资源j,因为这个编号小于A已有资源的编号;如果ij,B就不允许再申请资源i,因为这个编号小于B已有资源的编号。,如图(a)所示,对系统中的5种资源进行了统一编号,进程可以先申请打印机,再申请磁带机,但不能先申请磁带机,再申请打印机,因为那样做不符合规定的资源申请原则。,.,按这样的规则申请资源,不会形成如图(c)所示的循环等待的环路,破坏了“循环等待”的条件。,.,返回目录,9.2.2 死锁避免,1.,“拒绝启动进程”法,.,.,所谓“死锁避免”,是允许系统里存在产生死锁的条件,但对于进程的每次资源申请,都将根据当时资源的分配情况,探测分配结果。只有在探测结果不会有死

12、锁发生时,才正式接受这次资源请求,把资源分配给进程。,拒绝启动进程法:若一个进程对资源的申请会导致死锁,则不启动该进程。,具体做法是考虑有n个进程、m种不同类型资源的系统。定义如下向量和矩阵:,.,(1),系统中每种资源的总量(向量)Resource=R=(R1,R2,Rm);,(2),未分配的每种资源剩余数(向量)Available=V=( V1,V2,Vm);,(3),每个进程对各种资源的最大需求矩阵:,Claim = C =,C11 C12 C1m C21 C22 C2m Cn1 Cn2 Cnm,每个进程已分配的各种资源数矩阵:,(4),Allocation = A =,A11 A12

13、A1m A21 A22 A2m An1 An2 Anm,.,可以看出有以下关系存在:,(1),所有资源或者可分配,或者已经被分配,即:,Rj = Vj +A i j ,对所有的 j,i=1,n,(2),任何一个进程对任何一种资源的申请,都不能超过系统中这种资源的总量,即:,C i j R i ,对所有i,j,(3),分配给任何一个进程的任何一种资源,都不会超过这个进程对该资源的最大需求量,即:,A i j C i j ,对所有i,j,.,有了这些准备工作,就可以给出所谓的“拒绝启动进程”的死锁避免方法,即只有在满足下面的条件:,Rj C(n+1) j +C i j ,对所有的 j,i=1,n,

14、时,才允许启动一个新进程Pn+1,否则拒绝启动。,.,即只有在当前所有进程的最大需求量加上新进程的最大需求量后,系统拥有的各类资源数能够满足它们的要求,那么这才启动一个新的进程。,由于这个“拒绝启动进程”法是建立在所有进程都需要最大资源数的基础之上的,保险系数打得太大,所以不可能是最优的策略。,.,在接到一个进程对资源的请求时,有权根据当前资源的使用情况暂时加以拒绝(即阻塞该进程),但保证在有限的时间内让它得到所需要的资源。,2.,“拒绝分配资源”法,.,.,所谓系统处于“安全状态”,就是至少存在有一个进程的执行序列,能够在有限时间内使所有进程最终都能够运行到结束,不导致死锁;否则,就说系统处

15、于“不安全状态”。,“拒绝分配资源”法即有名的“银行家算法”,它以银行系统所采用的借贷策略为基础建立资源分配的模型。银行只有有限数目的资金(资源),可用来借贷给不同客户(进程)。贷款限额是客户对资金的最大需求量。算法对每个资源申请都进行测试,判断接受申请是否会致使系统进入不安全状态。如果是就拒绝分配;如果接受申请后系统仍然是安全的,那么就予以分配。,.,为实行银行家算法,对进程提出的要求是:,(1),必须预先说明自己对资源的最大需求量;,(2),(3),只能一次一个地申请所需要的资源;,如果已获得资源的最大需求量,那应在有限的时间内使用完毕,并归还系统。,.,为实行银行家算法,系统的承诺如下:

16、,(1),若一个进程对资源的最大需求量没有超过该资源的总量,那么必须接纳这个进程,不得拒绝它;,(2),在“能执行完”标志为0的进程中重复以上两步,直到找不到资源还需数小于系统剩余资源数的进程时为止。,单种资源的银行家算法,.,单种资源银行家算法:,将所有进程的 “能执行完”标志清0,假定接受该请求, 把资源分配给进程,将系统当前所有剩余资源 与”能执行完”标志为0的进 程还需资源数比较,找出一 个能满足其所有需求的进程,找到了吗?,将该进程的”能执行完” 标志置为1,系统收回它 所要求的全部资源数,Y,N,检查所有进程的 “能执行完”标志,还有” 能执行完 ” 标志为0的进程吗?,这一请求不

17、安 全,暂时不予接受,Y,N,这一请求是安 全的,可以分配,在安全状态下,系统接到进程的资源请求后,先假定接受这一请求,把需要的资源分配给这个进程。,(1),(2),在该假设下,检查每个进程对资源的还需要数。看能否找到一个进程,其还需数目小于系统剩余资源数。如果找不到,那么系统就有可能死锁,因为任何进程都无法运行结束。,(3),若找到了,假设它获得了最大资源数,并运行结束。于是把它的“能执行完”标志置为1。这样就能假定收回它使用的所有资源,使系统剩余资源数增加。,(4),(5),若所有进程的“能执行完”均为1,表示接受这次请求是安全的;否则暂时不能接受进程的这次资源请求。,资源总量为10。三个

18、进程A、B、C的最大资源需求量分别是9、4、7,如图(a)所示。若干次请求后,资源使用情况如图(b)所示。现在进程B提出一个资源请求,系统可接受该请求吗?请用银行家算法进行测试,做出判断。,例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

19、,系统剩余数:5,(e),A,B,C,进程,最大需求,9,-,7,已有量,3,0,7,系统剩余数:0,(f),A,B,C,进程,最大需求,9,-,-,已有量,3,0,0,系统剩余数:7,(g),如果在图(b)时接受进程B的一个资源请求,它所导致的图(c)的状态是安全的,系统可以放心地接受这次资源申请。,.,查看矩阵C-A,其中是否存在有一行还需要的各种资源数小于等于向量V。如果C-A中没有这样的行存在,那么表示任何进程都无法运行到结束,因此系统的状态是不安全的,有可能会死锁。,多种资源的银行家算法,此时,系统要设置:向量R(Resource):各种类型资源总量;向量V(Available):各

20、种资源当前可分配量 ;矩阵C(Claim):各进程对各种资源所需总量;矩阵A(Allocation):各进程对各种资源的已拥有量;矩阵C-A:各进程对各种资源的还需要量。,.,(1),(2),(3),系统是否安全,要看每个进程是否能运行到结束,即现有的资源数能否满足在当前分配情况下与每个进程最大资源需求间的差值。这时,对任何一个进程i,下面的条件应该满足:Cij Aij Vj ,对于所有的j。,在多种资源情形下,检查一个状态是否安全的算法步骤如下所列:,1),2),如果发现有这样的行,那么就假设这个进程获得了它所需要的资源,并结束运行。将该进程做上运行结束的标记,并把它占用的资源收回,加到向量

21、V上。这样,系统当前的可分配资源量增加了。,3),重复以上两步。如果所有的进程都被标记为终止,那么表示出发时的状态是安全的;否则表示出发时的状态是不安全的。,返回目录,9.2.3 死锁检测与恢复,1.,每种类型一个资源的死锁检测,所谓“死锁检测”,即系统允许产生死锁,操作系统周期性地在进程和资源之间检测是否出现了循环等待的情形。每当检测到这种情形时,就认为可能会出现死锁,于是采取措施对系统进行恢复。,.,每种类型的资源只有一个可用单元供分配时,能够通过绘制当前的资源分配图,来检测在某些进程间是否已经构成了循环等待。,.,比如系统有AG共7个进程,6个类型的单体资源r w。当前资源所属关系为:进

22、程A已得到资源r,需要资源s;进程B不占有任何资源,需要资源t;进程C不占有任何资源,需要资源s;进程D已得到资源u和s,需要资源t;进程E已得到资源t,需要资源v;进程F已得到资源w,需要资源s;进程G已得到资源v,需要资源u。,.,此时的资源分配图如图(a)所示。观察后知,在进程D、E、G之间存在一个循环等待的环路,见图(b),因此它们已死锁。,.,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,资源,占用的进程,进程,等待的资源

23、,r,A,s,C,t,B,u,B,v,A,A,t,资源分配表,进程等待表,进程,等待的资源,A,t,B,C,s,v,进程等待表,(a),(b),(c),.,假定系统有3个进程AC,有同类型的资源5个r v。在某一时刻,资源的分配情况如图(a)所示。这些分配都能够立即满足,不会出现进程等待资源的情形。,.,这时A提出申请t。由于t已分出去,让A等待会形成环路死锁吗?为此,通过t去查资源分配表,看谁占用了资源t。从“资源分配”表知t分配给了B,而B现在并不等待任何资源,因此,让A等待t不会构成环路。于是把它填入“进程等待”表中,如图(b)所示。,.,随后,B提出对s的请求。反复查看“资源分配”表和

24、“进程等待”表,没有出现循环等待,因此又把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(Available)向量A=(A1,A2,Am)表示系统中m类资源当前可用的数量,A1是类型1的可分配

25、量,A2是类型2的可分配量,等等。,(3),矩阵A(Allocation)该矩阵的元素Aij(1in,1jm),表示进程i当前已拥有的资源j的数目。因此这是“已分配资源矩阵”。,(4),矩阵Q(Request)该矩阵的元素Qij(1in,1jm),表示进程i当前还需要的资源j的数目。因此这是“还需要资源矩阵”。,.,设置一个临时向量W,初始时等于向量V。死锁检测算法的步骤如下:,(1),在矩阵Q里,找一个没被标记的进程Pi,它在Q里对应的第i行小于等于向量W。这里定义:向量X和向量Y有关系XY,当且仅当XiYi(1jm)。,(2),若存在这样的行,那为Pi做上标记,表示它完成;再把矩阵A中第i

26、行与向量W相加(即对1jm,令Wi=Wi+Aij),表示把进程Pi的资源收回,以供其他进程使用。,系统有3个进程和4种资源,当前向量R和V以及矩阵A和Q分别如图所示。试用每种类型多个资源的死锁检测算法,判断系统是否死锁。,每当有资源申请时就检测,这样能够尽早地发现死锁的存在。 CPU将在检测上花费大量的时间。,(3),若不存在这样的进程,那么算法停止。算法结束后,如果还有没有做上标记的进程,那么未标记的进程都是死锁的。,规定每隔k分钟检测一次,或当发现CPU的利用率下降到一定程度时去检测。,.,进行死锁检测的时机,(1),(2),每种类型多个资源的死锁检测算法,与银行家算法类似。但它们间最为不

27、同的一点是这里的算法不涉及每个进程对资源的最大需求量,而银行家算法必须事先知道每个进程对资源的最大需求。,.,例9-6 :,Resource向量R: 4 2 3 1,R1,R2,R3,Available向量V: 2 1 0 0,R1,R2,R3,R4,R4,Allocation矩阵A:,R1,R2,R3,P1 0 0 1 0,R4,P2 2 0 0 1,P3 0 1 2 0,Request矩阵Q:,R1,R2,R3,P1 2 0 0 1,R4,P2 1 0 1 0,P3 2 1 0 0,解:,看矩阵Q。进程P1需一个单元的R3资源,但从向量V(也就是临时向量W)里知现在没有R3资源,无法满足P

28、1的需要;进程P2的申请也无法满足;只有进程P3的申请可被满足。于是进程P3可运行结束,最终释放它拥有的资源。这样,把P3已分资源(在矩阵A里)和还需 资源(在矩阵Q里) 相加,还给系统, 向量A成为: V=(4,2,2,1)。,3.,死锁的恢复,若已检测出几个进程和资源间存在环路,那么下一步就应是使系统从死锁中解脱出来。有各种恢复的方法,但并不都那么地令人满意。,.,利用抢占资源恢复:含义是通过人工干预,把某资源临时地从当前占用它的进程手中抢夺过来,给另一个进程使用,以摆脱当前的死锁危机。,(1),(2),利用回退恢复:含义是系统人员适当安排检查点,周期性地对进程进行检查。一旦检测到死锁,通

29、过记录的信息,就能知道死锁涉及到哪些进程和资源。通过把死锁的进程回退到某个检查点,然后重新启动所有进程。,(3),删除进程恢复:是一种通过强制进程结束的办法来解除死锁,系统终止死锁涉及的某些进程,收回它们占用的资源,然后让余下的进程继续运行。,按照死锁的复杂程度,可能采用的恢复方法如下:,.,(1),删除所有的死锁进程,这是死锁恢复中最常用的方法。,(2),把每个死锁进程回溯到某个检查点,然后重新启动所有进程。这样做可能会再次发生原来的死锁。不过,基于并发进程执行的不确定性,发生这种情况的可能不大。,(3),一个个地删除进程,直到不再发生死锁。选择删除对象的顺序,可是某种最小代价原则。每删除一

30、个进程,就重新调用检测算法,以便判断是否仍然存在死锁。,一个个地由进程手中抢占资源,直到不再发生死锁。这时必须制定一种抢占原则(比如基于最低成本考虑),抢占后必须重新调用检测算法。资源被抢占的进程,需要回溯到前面获得该资源的地方。,(4),返回目录,TENEX是早些时候广泛用于DEC-10计算机上的操作系统,虽然现在不使用了,但由于在它的里面发现了一些安全缺陷而被永远记载在了计算机的安全史中。,.,9.3 系统的安全与保护,9.3.1 安全与保护概述,1.,计算机系统安全隐患的示例,例9-8 :,TENEX使用口令来保护文件,支持请求分页。为让用户能够监控程序的行为,发生缺页时,系统允许调用用

31、户程序。,A,A,A,A,A,A,第一个页面 (在内存中),第二个页面 (不在内存),页面边界 (产生缺页),B,A,A,A,A,A,A,A,A,A,A,F,(a),(b),(c),.,为访问文件,在文件打开时用户会向操作系统提供口令。系统对口令逐个字符检查,只要发现口令错就立即停止打开。,.,入侵者利用TENEX的这些特性,就可达到入侵系统的目的。他可如图(a)所示将口令的第一个字符放在一页的最后,其他字符位于下一页的开始,且精心设计让下一页不在内存。,若口令第一个字符不是A,入侵者就可像图(b)那样改变口令,看它是否以B开头,并重复该过程。,.,中断:如图(b)所示。这种攻击表示系统的某个

32、资源被破坏,或变得不可用、不能用。这是对“可用性”的攻击。比如偷盗了主机的CPU芯片,破坏了硬盘之类的硬件设施,割断通信线路,或者使文件系统无效。,前面各章讨论操作系统具体管理功能时,都涉及过安全和保护问题,但那时是从个体、纵向的角度做出审视。现在这里重提安全和保护,则是从整体、横向的角度做出审视,将着重讲述安全策略和保护机制。,.,2.,安全威胁的类型,.,计算机系统或网络在安全性上受到的攻击,可这样来刻画:从源端(如一个文件或内存的某个区域)到目的端(如另一个文件或某个用户)存在着信息流。图(a)表示没有安全威胁时的正常情形。,信息源端,信息目的端,(a) 正常的信息流,信息源端,信息目的

33、端,(b) 中断,对安全采取的四种攻击方式,.,(1),(2),侦听:如图(c)所示。这种攻击表示未经授权而获得对某种资源的使用和访问。这是对“机密性”的攻击。比如搭线窃取网络中的数据,违法复制文件或数据。这里的未经授权的对象,可以是一个人、一个部门、一台计算机甚至一个程序。,信息源端,信息目的端,(c) 侦听,更改:如图(d)所示。这种攻击表示不仅未经授权获得了对某种资源的使用和访问,而且还进行篡改。这是对“完整性”的攻击。,信息源端,信息目的端,(d) 更改,信息源端,(e) 伪造,(3),(4),伪造:如图(e)所示。这种攻击表示未经授权就将不正当的信息插入系统,制造混乱或错误。这是对“

34、真实性”的攻击。,安全威胁除入侵者恶意制造的外,还会出现下列情况导致系统的不安全:,.,(1),天灾:火灾、洪水、地震、战争、动乱,都会造成数据的意外丢失。甚至像老鼠对磁带、磁盘的撕咬,也可能会导致数据的意外丢失。,(2),软、硬件错误:CPU故障、磁盘或磁带不可读、通信错误或程序里隐含的错误,会造成数据信息的意外丢失。,(3),人为过失:不正确的数据登录、错误的磁盘或磁带的安装、操作失误、遗失数据存储介质(磁盘、磁带)。,3.,对网络安全的攻击,在网络时代的今天,通信线路和网络本身也都归为计算机系统的资源。因此,有时也把硬件、软件、数据信息、通信线路和网络称为是计算机系统的“资产”。网络安全

35、所受到的攻击,也成为了人们必须面对的事情。,.,信息目的端,.,通常,把网络安全攻击分为被动攻击和主动攻击两种。,(1),被动攻击,Internet 或 其他公共设施,用户A,用户B,窃听用户A发送给 用户B的消息内容,Internet 或 其他公共设施,用户A,用户B,分析用户A发送给 用户B的消息内容,(a) 释放消息内容,(b) 通信分析,被动攻击是指攻击者试图了解或使用系统的信息,但不去影响和破坏信息资源。被动攻击的行为是进行监视和窃听,从而达到获取正在通信线路上传输的数据信息的目的。,.,.,这种攻击的表现形式为:“释放消息内容”和“通信分析”,如图(a)和图(b)所示。,.,很难检

36、测出系统受到了被动攻击,因为这样的攻击不对数据信息做任何改变,没有留下任何痕迹,消息的发送和接收都在以正常的方式进行,发送者和接收者意识不到还有第三方已经读取了信息,或正在观察他们之间的通信方式。为了防止这类攻击,只能靠对信息进行加密的方法解决。所以,对付被动攻击,着力点应该放在防止上,而不是在检测上。,(2),主动攻击,主动攻击是指攻击者试图通过更改数据流或产生错误的数据流,达到改变系统资源、或影响系统运行的目的。,.,.,在“伪装”攻击类型中,攻击者假装成某个用户,取得对方的认可,达到干扰和破坏对方正常工作的目的。如图(a)所示。,Internet 或 其他公共设施,用户A,用户B,B接收

37、到攻击者的 消息,以为发自A,(a) 伪装,Internet 或 其他公共设施,用户A,用户B,捕获A发送的消 息,稍后重放给B,(b) 重放,.,在“重放”攻击类型中,攻击者捕获到数据信息,经过修改后再次发送到目的地,以产生未经授权的结果。如图(b)所示。,Internet 或 其他公共设施,用户A,用户B,攻击者修改A 发送给B的消息,(c) 更改消息,.,在“更改消息”攻击类型中,攻击者截获消息,经过对消息内容的修改,发送给目的地,以产生未经授权的结果。如图(c)所示。比如原来的消息为“允许XXX阅读机密账目文件”,篡改后成为“允许YYY阅读机密账目文件”。,Internet 或 其他公

38、共设施,用户A,攻击者破坏由 服务器提供的服务,(d) 拒绝服务,.,在“拒绝服务”攻击类型中,攻击者的攻击会造成通信设施无法正常使用或管理的效果。如图(d)所示。,.,对于主动攻击,人们无法对通信设施和路径进行全天候的现场保护。因此着力点应该放在检测上,努力地去发现它们,并从由它们导致的破坏和延迟中加以恢复。,4.,认证与授权,“安全”属于“策略”范畴,它涉及到计算机的技术、 管理、法律以及政治等诸方面的总体问题;而“保护”属于“机制”范畴,是指操作系统为确保计算机信息安全而采用的各种具体手段。,.,.,可对安全和保护进行抽象:将被保护的信息或资源(如CPU、文件、数据、设备)抽象为“安全实

39、体”,操作系统应阻止所有对安全实体未经授权的访问;把对信息或资源进行访问的对象(如进程、线程) 抽象为“主体”,未经授权的主体不 允许访问特定的安全实体。这一抽 象过程如图所示。,未授权访问,授权访问,认证授权,主体,主体,安全实体,用户与计算机系统的最初交互体现为登录。在登录对话框中,操作系统试图通过提交的信息,去验证来者就是它们所声称的身份。这种保护就是“外部认证”或“用户认证”。,所谓“认证”,是指用来确定需要访问安全实体的主体是否就是它所声称的身份的过程。比如,主体声称它是“XXX”,那么系统的认证机制就要负责确保该主体真的是“XXX”,而不是别的什么。,.,(1),(2),“内部认证

40、”,是指确保执行的线程(进程)不被其他用户拥有。必须认证线程与一个给定进程相关联,进程也必须被认证与一个特定用户相关联。若没有内部认证,用户就有可能去建立一个属于其他用户的线程的机会。这样,一个线程就可以另一个用户的身份运行,那么即使是最有效的外部认证机制,也能很轻易地被入侵者绕过去。,资源W,资源X,资源Y,资源Z,进程B,进程A,进程C,读/写,读/写,读,读,.,所谓“授权”,指在一个主体被认证后,确定它是否有权访问安全实体。比如,主体确实就是“XXX”,它也可能无权看“YYY”的个人账目表。这就是说,系统的授权机制只能允许主体去访问它可以访问的安全实体。,授权的实质就是管理系统的资 源

41、,特别是能够共享的那一部分, 目标是保护一个进程的资源不受其他进程活动的影响或破坏。假定进程A有资源W、X、Y和Z,如图所示。这些资源中的一些可以与别的进程共享 。,.,返回目录,伪装者:是指未经授权的人,穿越了系统的访问控制,以一个合法用户账号的身份使用计算机。,1.,.,9.3.2 具体的安全威胁,入侵者,通常把喜欢闯入与自己毫不相干区域的人称为“入侵者”,也就是通常所说的“黑客”。其实在计算机界,“黑客” 是对资深程序员的一种荣誉称谓。考虑到它的真正含义,应把那些企图非法闯入计算机系统的人称为“骇客”。,.,入侵者的三种类型:,神秘用户:是指夺取了对系统的管理控制权,且使用这一权利躲避系

42、统的访问控制和审计。,(1),(2),违法行为者:是指一个合法用户,未经授权访问了不该访问的数据、程序或资源;或者虽经授权,却错误地使用了他的特权。,(3),入侵者的目的是试图获得对系统的访问,或者提高他访问系统的特权范围。为此,他必须获取被保护的信息。在多数情况下,这就是指口令。,.,.,恶意软件,2.,恶意软件指利用计算机系统本身的漏洞,专门设计来制造破坏或用尽计算机资源的软件,它们常隐藏在合法软件中,或伪装成合法软件。在各种恶意软件中,有些是需要依附于别的程序才能运行的程序段,有的可通过操作系统的调度独立运行。,“后门”是指进入某程序的隐蔽入口点,知道后门的人无需通过正常的安全访问渠道,

43、就可获得访问。为调试和测试程序,系统一般都为程序员提供特殊的权利,以避免繁琐而复杂的认证手续。这样的特殊权利就是“后门”。一旦不道德的程序员把后门用来做未经授权的访问,或被别人窃取,那么后门就变成了对系统的威胁。,.,恶意软件的分类,(1),(2),逻辑炸弹是一种最古老的恶意软件,它被嵌入到某些合法程序代码中,设置发作的条件。只要条件满足,就会发生“爆炸”:那时可能会更改或删除数据或整个文件,导致机器异常终止或实施其他破坏。比如一个特定的日子等。,(3),“特洛伊木马”是一个有用的、但又含有隐秘代码的程序或命令过程,能通过系统的安全检查。执行它时,那段隐秘代码就会去完成那些未授权用户无法直接完

44、成的事。,(4),“病毒”是能通过将其代码内嵌到合法程序之上进行自我繁殖的一个程序段,就如同生物病毒能够自我繁殖一样。典型的病毒在生命周期中将经历潜伏、繁殖、引发、执行四个阶段。,(5),“蠕虫”是一个独立完整的程序,被设计成能在网络上寻找寄生和繁殖场所。它一旦在一个系统内部活跃起来,就会做分裂性的自我复制,通过网络连接在系统间传播。为复制本身,蠕虫可借助的网络工具是:电子邮件途径;远程执行能力;远程登录能力等。,(6),“僵尸”是一个程序,它能秘密控制通过Internet连接的另一台计算机,并通过它向目标Web站点发送大量的登录请求,达到使其拒绝服务的目的。由于是通过另一台计算机发动攻击,因

45、此人们很难追溯到僵尸的始作俑者。,返回目录,9.3.3 具体的安全防护措施,公开系统的设计方案:设计人员以为系统的设计方案越保密越好,这样入侵者才不会知道系统的工作原理,才能免除系统遭受各种攻击。其实这是自欺欺人的想法。入侵者了解和掌握这方面的内容,只是一个时间早晚问题。,1.,系统安全的设计原则,(1),(2),拒绝默认规则:相对于拒绝合法的访问,发现非法访问是容易的。因此,不能给合法的访问提供有缝可钻的“后门”,那样只会对安全带来威胁。,(3),随时检查访问权限:系统不要在进行完访问许可检查后,一直为被检方保持原有信息以方便后续访问时使用。,(4),(5),(6),(7),给进程尽可能小的

46、权限:这样会限制各种攻击的活动范围。比如若编辑程序进程只能具有访问被编辑文件的权限,那么即使在编辑程序里安放了特洛伊木马,它也无法进行破坏活动。,保护机制应该简单、一致,深入到系统的最底层:不要在当前不安全系统的已有架构上,进行改善和修补,系统的安全性是不可能靠修修补补来达到的。,选择用户心理上可接受的安全方案:因为若用户感到保护自己的文件非常吃力,那么他们就不会乐意使用。,整个系统设计尽量简单:功能多的系统,必定庞大,就是潜在的不安全系统。代码越多,安全漏洞和错误就越多。从系统安全性出发,最简单的设计才是最好的设计。,使用一次性口令:系统要求用户定期更换口令,以防止由于口令的泄露而造成损失。

47、最极端的做法是使用一次性口令,即用户每次登录都是使用下一个新的口令,从而确保不让同一个密码重复出现在网络上。,2.,用户认证机制,.,最广泛采用的认证方式是要求用户输入登录名和口令。在口令的选择上,要避免太短或太容易猜出。应该加强对用户的教育,告诉他们采用难以猜测的口令的重要性,并提供选择好口令的指导原则。,.,下面是可采用的另外一些用户认证机制:,(1),使用问答式口令:这种口令机制是每个用户向系统提供一连串的问答列表。登录时,服务器随机地提问,并验证答案。为此,需要提供尽可能多的问题和答案,才能使这种方法见效。,(2),(3),使用实际物体:可以通过检验用户拥有的实际物体达到用户认证的目的,比如磁卡。,(4),使用生物识别:所谓“生物识别”,是指对用户的某些难以伪造的物理特征进行的认证。比如指纹识别、声音识别。,3.,授权保护机制,.,授权机制模型,活动部分是主体,被动部分是安全实体。授权机制应在任意时刻给出任何主体对任何安全实体所持有的访问权限,由这些访问权限反映出系统的安全策略。,(1),.,所谓一个进程的“保护域”,是指关于该进程的一系列(安全实体,访问权限)对,每个对规定了一个安全实体和一些可在其上实施的操作的子集。保护域告诉用户进程,在某安全实体上可做什么和不可做什么。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报