[音乐]
[音乐]
同学们好,下面我们介绍安全机制。
安全机制 前面我们提到过,在系统里面有三要素,第一个是安全
策略,第二是安全机制,第三是安全保证 我们现在说的是安全机制。
那么安全机制呢,其实就是指在 系统里面实施这个安全策略的这个具体的实现的方法
在计算机系统里面呢,安全机制其实是分三种类型 就是第一种类型呢,其实就是关于怎么样去
阻止或者去保护自己不受到伤害 那么这个呢我们叫
prevention,就是怎么样去加强系统的安全性 让这个系统呢不会受到外界的这个恶意的破坏
那么第二种呢其实就是去检测 那么也就说我在整个系统工作的时候,怎么样能够通过一些方法
能够检测到外部,来自外部的一些威胁,或者是内部的一些威胁
那么在它进入系统之前,可以让它,将它阻止在外面
或者说在系统里面出现了这个问题的时候,我能够发现 问题的根源在哪里。
第三个呢是叫恢复,恢复的话是在系统,比如说出现了这个
安全故障,或者是出现了这样的相关的这个安全事件之后
造成了一些危害,那么我怎么样让系统恢复到之前的这种安全的状态? 这个就是我们所说的恢复机制。
所以在一个计算机系统里面如果 真的要保证一个系统的安全性,那么事实上是要提供这三个层面的
这样的安全的机制,一个是提高自己的这个保护能力,自身的保护能力
这有点类似于这个人的这个免疫力,对吧?
第二个是检测,这个检测呢有点类似于我们社会 里面的这个公安系统,它是帮我们做这个社会的保障
那么恢复呢就相当于我们的一些应急的响应 措施或者说我们的系统一旦出了故障,那么我们怎么样能够尽快地
找到有效的办法,能够让它恢复正常,这就是我们在计算机系统里面 所用到的三类机制。
下面我们就会介绍一下在 这个计算机系统里面经常会用到的跟安全机制有关的
比较经典的这个机制的一些概念。
我们先来看第一个概念,就是关于引用监控器 叫
Reference Monitor,这个概念是在 1972 年的时候由 Anderson
首次提出 我们来看这个,这个引用监控器呢它只是访问控制的一个概念
那么主要是用来仲裁系统里面的主体对客体的这样的一个
所有的访问过程来,都由这个引用监控器来进行冲裁
所以这个概念它是,被认为是一个抽象的 一个机器,也就是说这并不是一个我们所说的实际的一个
机制,这是对于机制的一种抽象的概念 这是
Anderson 在它的这个最早的时候提出了,那么后面在这个桔皮书里面,就彩虹系列的
这个词汇里面给出的定义是刚才我说到的第一个 另外呢,在这个
Morri Gasser 这个书里面,他写了一本计算机系统安全的这样的书里面
那么也提到了这个引用监控器的一个概念 那么他当时给出的是从实现的角度上来描述的
他描述的是在计算机系统里面,实施系统安全策略的 那么所有的硬件和软件的组合,他认为是引用监控器
那么这张图呢就是 Morri Gasser 的这个参考书里面给出的这个图 那么大家从这张图里可以看出,这个引用监控器是在
中间,它是来仲裁所有的主体对客体的这样一个访问 那么在这个仲裁过程当中,它依赖于这个访问控制的策略
有时候这个访问控制策略呢有一个依赖的访问控制的一个 data base,一个数据库
另外呢,每一次这样的访问都是安全相关的行为 所以它都会有相关的审计文件做记录
那么引用监控器如果说是一个抽象概念的话,那么引用验证这个机制就是我们所说的
这种一种安全机制,它主要是用来实现 引用监控器的概念的一个机制。
那么这个机制呢 在很早的时候也提出来了,那么这里提出了这个机制所要求满足的三个需求
第一个需求是什么呢?第一个需求就是这个引用验证机制必须是防篡改的
大家知道,引用验证机制是用来仲裁所有主体对客体访问的
所以它自身的完整性是绝对要受到保护的,它不能被恶意用户擅自修改
因为一旦修改,所做的控制就不认为是安全的了。
第二种呢是关于 引用验证机制,这个引用验证机制它总是活跃的,或者总是要被调用 的。
那么这个指的是什么呢?就是说任何一个主体去访问一个客体,那么不能绕过这个机制
那么如果有人绕过,大家可想而知,这个策略就不是针对所有的访问了,而是
有个别人可以绕过去,那么他就可以有特权,那么他就可以不受控制
这可能就是我们安全问题的根源 所以这一块是要求它对所有的行为都是去调用的
第三个就是引用验证机制必须,在实现的时候呢要足够小
小到我们可以去测试,可以去验证 它的这个机制是有效的。
这是关于引用验证机制的三个需求 那么在操作系统里面的这种访问控制机制
或者说这个安全机制,通常呢 引用监控器的实现被叫做安全内核,所以在
1972 年的时候 给出的这个安全内核的概念,就 Roger Schell
他给出的这个安全内核的概念 其实就被认为是引用验证机制的一种类型
主要针对的就是操作系统里面的引用验证的实现方法
那么我们来看一下安全内核它的这个 方法的一个根本。
那么这里给出来了,就是说在一个大型的操作系统里面 由相对小的这个软件部分来负责安全性
那么也就是说在操作系统里面,有一部分,很小的一部分代码
它是用来实现安全性的,那么这一部分代码呢就被称为安全内核
那么同样对于安全内核的实现,也必须前面提到的这个 RVM
的三个原则 第一个就是不可旁过,就是相当于前面提到的这个 所有总是活跃的。
第二个是隔离性,就是相当于是 防篡改。
第三个叫可验证性,其实就是指的它要足够小 小到这种机制呢可以被证明,可以被测试,可以被验证
那么这里给出了这三个设计原则里面在具体实现的时候的一些参考
那么这里重点说一下关于这个验证机制,就是关于可验证的这个原则方面
我们到底应该怎么样去保证,那么通常为了让这个系统的安全性足够小,小到可以去证明
我们要从两个角度去提供一些方法
第一个呢是在设计的时候,我们要采取一些好的,良好的一些设计方法 或者是良好的设计标准。
第二个呢就是在这个 整个的这个软件开发的过程当中要有一些保证的措施
比如说这个第一个就是关于设计的方法 我们要采取一些良好的软件工程的这样的一些技术
然后在内核的这个接口,就是安全接口上要尽量做到这个简化 不要有太复杂的这个接口。
另外呢,就是在内核里面所加的这个安全 相关的部分要尽可能地小,而不要去过大,这是关于设计方面的部分
那么关于这个保证技术方面的要求呢,比如说我的设计完了,我还要去做一些代码的审查
实现完了呢,我还要去做一些渗透测试,甚至在 整个的这个软件过程当中呢,我们要写出形式化的规范
和做这个形式化的验证,这就是我们所说到的这个三个基本设计原则 好,这部分内容我们就介绍到这,谢谢