当前位置:首考文秘网>范文大全 > 公文范文 > 操作系统的安全控制和安全模型

操作系统的安全控制和安全模型

时间:2023-05-21 19:40:05 公文范文 来源:网友投稿

一、操作系统采用的安全控制

操作系统采用的安全控制主要包括两方面:访问控制,隔离控制;其中访问控制是安全控制的核心。

1.访问控制

在身份识别的基础上,根据身份对提出资源访问的请求加以控制。它基于对主体(及主体所属的主体组)的识别,来限制他(他们)对客体的访问,还要校验主体对客体的访问请求是否符合访问控制的规定,从而决定对客体访问执行与否。访问控制的基础是主客体的安全属性。

访问控制主要包括三个任务:授权、确定访问权限、实施访问权限。当主体对客体访问时必须考虑:a.访问是有限的,不宜在任何场合下都永远保留主体对客体的访问权;b.遵循最小授权原则,不能进行额外的访问;c.访问方式应该予以检查,也就是说不仅要检查是否可以访问,还要检查允许何种访问。

访问控制包括两种自主型访问控制(DAC)和强制型访问控制(MAC)。

(1)自主型访问控制(DAC):

是指主体可以自主地将访问权,或访问权的某个子集授予其它主体。主要是某些用户(特定客体的用户或具有指定特权的用户)规定别的用户能以怎样的方式访问该客体。

(2)强制型访问控制(MAC):

自主访问控制是保护系统资源不被非法访问的一种有效手段。但是由于它的控制是自主的,也带来了问题。请看下图这个例子:

图1 自主型访问控制示例

这个例子说明:首先UserA和UserB都分别建立了自己的文件file1和file2,然后UserB将file2的写权限给了UserA(注意,这里运用了自主型的访问控制),而UserA不小心运行了一个程序P1(P1可以是一个恶意程序),P1的操作就是读出file1的内容让后将这些内容写进file2(因为P1是被UserA运行的,同时UserA拥有对file1的读写权限,因此P1可以对file1读写)。这样一来,UserA的file1的内容就被泄漏到了UserB的file2中。

通过这个例子我们可以看出DAC存在的弊端。另外,如果某一合法用户可以任意运行一个程序来修改他拥有的文件存取控制信息,而操作系统无法区分这种修改是用户自己的操作,还是恶意程序(如特洛伊木马)的非法操作,解决办法是通过强加一些不可逾越的访问限制,系统可以防止某一些类型的特洛伊木马的攻击。由此,人们提出了一种更强有力的访问控制手段,这就是强制访问控制。

在MAC中是不允许主体更改自己的安全属性,防止进程生成一个共享文件,从而防止一个进程通过共享文件把信息从一个进程传送给另外一个进程。

强制型存取控制(MAC)主要是指:对于系统中客体的安全,由系统(而不是某个用户个人)确定一个主体能否访问一个客体,也就是由系统确定该客体的访问权限。强制访问控制方式中,系统对主体和客体都分配一个特殊的安全属性,而且这一属性一般不能更改,系统通过比较主体和客体的安全属性来决定一个主体是否能够访问某个客体。

强制型存取控制(MAC)缺点:不灵活,给用户正常的访问数据带来了不便。

(3)MAC&DAC二者的结合:

实际系统中,DAC是基本的常用的手段,MAC是辅助的。用DAC来防止其他用户非法入侵自己的文件,MAC使用户不能通过有意或者无意的错误操作来绕过系统的安全机制。

2.隔离控制

(1)物理上的隔离。各个进程使用不同的物理目标。比如用不同的外存储设备存储安全级别不同的数据。

(2)时间上的隔离。具有不同安全要求的进程在不同时间被执行。

(3)逻辑上的隔离。用户感到不存在其他的进程,因为操作系统不允许进程越界的互相访问。但是逻辑上隔离了的程序相对于前两种隔离方式来说,并不一定有很好的安全保障。

(4)密码技术上的隔离。进行以外部进程不能理解的方式隐蔽本进程的数据和计算的活动。比如把文件、数据加密;甚至是指令加密,这就要求处理器能够识别出加密后的指令,当处理器读到了加密的指令后要知道如何解密,可以利用特殊的软件、硬件来处理。

二、操作系统的安全模型-BLP和Biba

1.Bell La Padula——基于保密性的访问模型

图2 BLP模型图

该模型遵循如下规则:

(1)读规则:从下读,不能从上读------主体的保密性访问级别支配客体的保密性访问级别。也就是说,高保密性的客体(文件)不能被低保密性的主体(进程)读取,低保密性的客体(文件)可以被告保密性的主体(进程)来读取。这样就保证了高保密级别的内容不被窃取。

(2)写规则:向上写,不能向下写——客体的保密性访问级别支配主体的保密性访问级别。也就是说,高保密性的主体(进程)不能写入低保密性的客体(文件),低保密性的主体(进程)可以写高保密性的客体(文件)。这样也是为了保证高保密性的内容不会泄漏。

(3)一点说明:只有在主客体的保密级别相同的情况下,主体才能对客体进行读写操作。另外:如果一个进程没有对大于等于该进程密级的文件进行读访问,那么他向下写也是允许的,(这里要求事先读和写访问都没有进行:因为读了高保密级别的文件再向下写肯定是泄密了,同时,一样的内容分别被写到了高保密级别文件和低保密级别文件中也是不允许的);同样,如果一个进程不会对小于等于该进程密级的文件进行(写)访问,那么他从上读也是允许的。

2.Biba——基于完整性的访问模型

图3 Biba模型图

该模型遵循如下规则:

(1)写规则:向下写,不能向上写---主体的完整性访问级别支配客体的完整性访问级别。也就是说,低完整性的主体(进程)不能写高完整性的客体(文件),高完整性主体(进程)可以写低完整性的客体(文件)。

(2)读规则:从上读,不能从下读---客体的完整性访问级别支配主体的完整性访问级别。也就是说,低完整性的主体(进程)可以读取高完整性的客体(文件),高完整性主体(进程)不可以读取低完整性的客体(文件)。

(3)一点说明:只有在主客体的完整性级别相同的情况下,主体才能对客体进行读写操作。另外:如果一个进程不会对大于等于本身完整性级别的文件进行写访问,那么他从下读也是允许的。同样,如果一个进程没有对小于等于本身完整性级别的文件进行(读)访问,那么他向上写是允许的。

举例来说:若一个高完整性级别的进程读了低完整性文件,然后又写了某个高完整性的文件之后,就造成了对这个高完整性的文件的篡改。在实际应用中,完整性保护主要是为了避免应用程序修改某些重要的系统程序或系统数据库。

3.保密性和完整性的联系

BLP是着眼于保密性,而不是防止篡改,而Biba模型是着眼于完整性,这两个性质是互相独立的,一个文件或者进程是可以同时拥有这两个性质的。比如系统中可以存在虽是低完整性的,但是高保密性质的进程,也就是说:允许某些进程出错但绝对不允许泄密,比如应用在军事方面。也有高完整性低保密性进程,比如公用进程,因为这样的进程必须保证系统正常运行。又如,高完整性低保密性文(比如windows系统的注册表)等。

三、操作系统中存在的一些安全问题

1.特洛伊木马

这里主要讨论一下木马的隐蔽特性以及相应的应对策略,同时也介绍了一般的防范措施。

(1)木马的隐蔽特性:

大部分的木马都有自己的隐藏方式。一种是利用名字隐藏自己,木马的可执行文件的名字和一些系统的文件的名字酷似,并且被放置在系统目录中(比如:C:\WINDOWS\SYSTEM\Kernel32.exe)。另外有的木马还采用加密的技术隐藏自己,使被害主机更难以根据它的表面特征来识别它,一般的病毒扫描很难发现。

值得注意的是,有的高水平的木马在对方主机被植入,并将该主机的有用的数据发回至攻击者之后,会将被窃现场恢复原状,从而使被害主机难以发现有入侵。

针对木马的这些隐蔽特性,可以采取如下处理措施:

首先需要严格的系统日志功能,即记录进程对数据的访问。但是日志的功能有些单一,如果某些手段高超木马改动过重要文件,完成入侵之后,又将其恢复成原样,这样,日志是很难检查到该文件是已经被修动过的。

由于木马会通过篡改注册文件来达到启动的目的,可以利用脆弱性水印来检测木马。对注册文件中加入“脆弱水印”,在操作系统后台运行一个“后台进程”实时监测,由于该进程是总在运行的,那么,一旦注册文件的“脆弱水印”被破坏,说明有可能是木马被植入,这样该“后台进程”会立即发现这个木马。

(2)当然对于一般的木马,还是有一定的防范规律的:

a.木马需要一种启动方式,一般在注册表启动组中;因此,可以通过检查注册表中的键值来清除木马。

b.木马需要在内存中才能发挥作用,也就是说木马被运行了之后才会进行恶意操作;一般的木马都有一个被执行的文件,因此,找到这个文件很重要。

c.木马会打开特别的、特定的端口,以便黑客通过这个端口和木马联系;所以,如果发现异常的端口连接,就有必要怀疑木马的存在。

2.贪婪程序

后台程序被故意改动之后,可以占据前台程序的位置(运行资源)。从而阻塞其他用户程序的计算。所以大多数多道程序计算系统都有时钟限制,以防止一个用户占用的前台CPU时间过长。

但是,时钟所计的时间通常是CPU占用的时间,而等待I/O的时间不好预测,因为I/O时间是取决于I/O处理程序的执行时间以及I/O设备的性能的,通常I/O时间是不受到检查的。

因此,如果某个进程申请了一个I/O之后,那些I/O处理程序就被执行。这个申请I/O的进程将会出现两种情况。情况一:停在那里等待I/O返回,然后继续执行。情况二:继续向前运行,等待I/O完成后,返发回来的中断。试想,如果这个I/O处理程序如果被改动为以无限长的时间运行,那么在情况一之下,这个停在那里的进程就不会释放它目前所占用的资源。在情况二之下,该进程将来也会停在某一点(进程在这个点以后的运行是需要I/O的处理结果的),也会占用者资源而不释放,如果这样的申请I/O的进程很多,加之现在还没有很好的解锁机制,系统很有可能崩溃。总之,这两种情况下都会阻止系统中其他任务的运算以及I/O设备资源的利用。

3.陷门

它是在开发测试软件时候,被人为地故意或者非故意留下的。例如:一个程序的一个Switch-Case语句中只考虑了三种Case的情况,但是在实际情况中第4种情况就可能会出现,并且穿过这个Switch-Case程序块,这种漏洞是不可能完全避免的(因为只要是人工开发的,就一定会存在问题,关键是这个bug是否致命)。

另一方面,陷门不一定是有害的,它在发现安全缺陷方面是很有用的。也就是说我们可以在系统中保留一些陷门,然后追踪那些主动或被动漏入陷门的数据或行为的流向,得到了它们留下的“脚印”,从而发现自己系统中的安全缺陷。因为系统中运行的各个进程之间都有一定的相关性,比如父子进程的之间的派生关系。

4.消息泄漏

有的时候操作系统提供的一些正常功能也会为入侵者提供有用的信息,比如:某个用户没有权限看到系统中的某个文件是否存在,但是他可以新建一个和这个文件同名的文件,如果系统提示文件重名,则表明存在,如果新建成功,则表明没有该文件。

又如Finger命令也是系统提供的正常服务命令,但是他会泄漏出用户(特别是管理员)的相关信息(比如用户的登陆时间,IP),下一步攻击者就有根据这些信息来在特定的线路上侦听用户密码。

有的系统会在用户输入账号之后就提示用户系统有没有该账号,于是入侵者就很容易的知道系统是否存在该账号。

这些虽然不是直接的漏洞,但是为攻击提供了间接的信息。改善这种机制的办法是在保证服务以及身份验证的前提下,提供最少的信息,同时健全相应的机制。比如系统在用户输入账号和密码之后再提示该身份是否合法,这样攻击者就不知道是密码出了错还是该账号不存在。

小结

安全控制是保证操作系统安全的关键问题,BLP和Biba是设计安全操作系统的基本、典型的模型。同时,保证操作系统的安全运行,还要考虑方方面面的安全隐患,这些隐患大多是用户程序利用操作系统提供的一些不健全的机制而存在的。

当前操作系统的安全问题大多仍然采用“打补丁”的方法来解决。安全操作系统的设计关键是要全局考虑,从系统的安全结构体系着手,统筹安排。同时还需要指出的是,在实现操作系统的安全机制的同时,应该考虑系统的工作效率问题,因为系统要达到一定的安全级别会影响到它的运行效率,也就是说要在“安全和效率”之间进行权衡。针对不同的实际情况进行不同级别的安全设计。

推荐访问:模型 操作系统 控制

版权所有:首考文秘网 2015-2024 未经授权禁止复制或建立镜像[首考文秘网]所有资源完全免费共享

Powered by 首考文秘网 © All Rights Reserved.。备案号:冀ICP备15026071号-91