[音乐]
[音乐]
各位同学好,今天我们介绍这个安全概念和设计思想。
首先,我们介绍第一个概念,就是访问控制的这个设计思想。
这个思想是在 1969 年的时候, 由 Lampson
首次提出,在这里面他首先把这个 在这个系统设计里面用到了主体、 客体和这个访问控制的思想。
那么,对访问控制呢进行了一个抽象,比如说在操作系统里面,
他对所有的这个实体组件都要划分成或者是主体,或者是客体, 或者既是主体又是客体。
那么,什么是 主体,什么是客体呢?我们先来介绍下这两个概念。
先看一下什么是客体,客体呢事实上就是一个被动的实体。
那么在操作系统里面呢,其实同学们可能,经常可能会知道,我们经常要建一个文件或者是建- 一个目录,
像那种文件或者目录呢,其实就是我们所说的一个客体。
那么,客体的定义是这样的,就是一个被动的实体。
事实上是被一些进程或者一些主体,实际是去操作,比如说去读、 去写、
去访问,那么这样一种实体呢被称为是客体。
当然啦,有些实体也可能既是客体又是实体。
比如说在操作系统里面的每一个进程, 那么它在去访问一个文件或者一个目录的时候,它有的时候是主体,
那么在它被另一个进程所调动或者说跟另一个进程通讯的时候, 如果它是个被动通讯体,那么这个时候它也成为客体。
那么什么是主体呢?主体是引起信息在这个客体之间流动的这样一个实体。
通常呢这些实体就是指的,呃, 对于我们社会当中,当然是指人啦,对于我们一个系统来讲就是使用这个系统的用户,
和这个使用这个系统的这个里面资源的这些进程, 所以的话这样的实体呢,就被称为是主体,主体。
那么在 操作系统里面,我们大多数以某个用户的这个身份运行起来的那些进程, 就是我们所说的这个主体。
那么,什么是访问控制呢? 这个概念是来自于这个橘皮书的这个
就是词汇的介绍里面,那么,橘皮书的这个 词汇介绍里面,给出的这个访问控制的定义是这样的,
就访问控制呢是这样的一种机制,那么这种机制呢是系统用来授予
你去访问一些数据或者说去执行某一些操作的这样的一个 权限、
授予、 或者是吊销,这样的一个权限的这样一个 机制。
当然啦,做访问控制之前,通常这个 系统必须让你登录到,就是必须允许你进入这个系统。
所以呢,刚开始是要做这个鉴别,那么鉴别之后你才可以拥有访问控制的权限。
所以访问控制呢是在标识与鉴别之后的一个机制。
那访问控制里面还有一个很重要的一点,除了我们前面提到的主体和客体之外, 还有一个非常重要的,就是权限的定义。
那么这个权限如何来定义,其实是跟这个不同的系统有不同的含义。
比如说,我们这里举个例子,比如说你要去创建一个文件或者去删除一个文件, 那么这个其实是文件的这个读啊、 写或者修改的权限。
呃,如果是去执行一个程序,那么这个权限呢就是这个去运行一个程序的这个权限。
那再比如这个数据库里面,你要去查询一个数据库或者需要更新一个数据
库,那么这种查询和更新又是在数据库系统里面的另外的这个权限定义。
所以,权限定义呢可能根据不同的系统,它会有不同的一个划分。
那么,我们在系统设计之前,可能需要考虑你针对的这个系统的 客体会需要让什么样的主体去
拥有什么样的一些权限,所以做访控呢,我们要定义主体,要定义客体, 另外要定义权限。
这是一个 非常经典的一个访问控制的一个实现方法,就是一个访问控制的矩阵。
同学们可以从这张表里可以看到,这里表里的表行是 用户的名字,表列呢是这个访问控制的这个资源的名字。
也就比如说我们的一个文件,这边列得是经典的就是用户的文件。
所以通常行是用户,列是这个,
呃,资源的名字,那么,表项里面填得呢就是我们刚才所说的访问控制权限。
比如说,我们说 Kim 这个用户,他对 DONSFILE
他是有什么样的权限呢?从这张表我们可以很清楚地看到, Kim 对这个
DONSFILE 只有读的权限,但是 Kim 对于这个,呃,
对于这个 PAYROL1 这个文件,他从这里可以看出,他拥有的是读和执行的权限。
所以通过这张表,它正向地给出了允许哪些用户对什么样的 文件进行什么样的访问,这是一个经典的访问控制的一个概念。
下面我们来看一下在 我们的计算机系统里面通用的一些安全需求有哪些。
呃,可能大多数的这个课程里面,尤其是安全的课程里面,同学们听到的这个安全需求主要- 是三种,
一种呢是机密性,一种是完整性,还有一种的可用性。
那么在这里呢,其实我们要讲的是四种需求。
一种需求呢是机密性,第二种是完整性,第三种我们还有一种叫可追究性, 第四种是这个可用性。
我们分别来介绍一下这四个 通用的安全需求到底表示的是什么含义,另外我们可以通过什么样的机制
来保障系统具有这些性质。
先说一下这个机密性, 同学们知道这个机密性其实很容易理解,就说不希望别人去看到,
或者说不希望把你的信息泄露给别人。
当然这种泄露 主要包括两个,一个是这个信息的内容本身是否会被人看到,
第二种呢其实就是指这个资源的存在性,
可能也很重要,比如说是否有一些事物真的存在那个地方。
那么,如果它存在,可能也意味着泄密了。
所以的话这种资源的 内容或资源的存在性可能都是我们要保护的机密性的含义。
那么通常呢这个机密性的保护呢可能需要通过, 可能同学们很容易想到的第一措施可能是通过加密,对吧,
那么加密这种方案呢是传统的这种机密性保护的这种方案,当然它可以达到一定保护的这- 个目的。
另外呢就是我们还可以通过前面我们刚刚提到的那个概念,就是访问控制。
那访问控制的这样一种概念和这种机制呢也可以用来限制特定的用户
对特定文件的这个读的权限,所以的话,这其实也可以达到这个机密性保护的作用,这是- 第一条。
那么第二个通用性的安全需求呢,其实就是我们所说的完整性。
那么从字面上来理解,完整性肯定是希望这个数据不会被别人去修改,对吧。
但是其实不修改,也就意味着你对这个资源本身的内容
或者说这资源本身它的这个修改的人,你是充分信任的。
所以完整性其实我们更强调的是指你对这个数据或资源的一个信赖程度。
那么,数据的完整性呢通常也包含两个,一个是数据本身它的这个内容
的完整性,就说数据本身的内容是否值得你信赖。
第二个呢就是数据来源的这个完整性。
比如说你对于这个数据本身是来自 谁的,是谁创建的这个数据,谁修改的这些数据,
那么,你对这个是否可信任它,对吧,如果信任,那么我们说你对这个数据来源是 完整的。
那么同样这个完整性保护在 一般的这个计算机系统里面,我们通常采用什么样的方式来保护呢?
我们一个是采用这个非常重要的一种方式,最好是还是访问控制。
所以也如前面我们所提到的这样一个访问控制的机制,也可以
来保护数据的完整性,就是限制授权的用户可以对它写, 那么,非授权的用户呢不可以轻易对它写。
那么这些就可以达到一个完整性保护的目的。
第三个需求就是我们所说的这个,增加了一个跟别的地方不同的一个点,叫可追究性。
那么大家知道,这个计算机系统里面, 所有的用户或者说管理员、 普通用户都在使用同样一个系统。
那么系统呢不可能永远是这样一个良好的状态,有的时候会出现故障或者出现
被破坏,被恶意用户破坏的行为,所以的话在系统里面我们经常要去
做一些工作,什么样的工作呢?就是我对这个系统里面的一些特定要保护的数据,
什么样的人访问过,什么样的人可以去修改它,什么样的人可以去管理它。
那么,什么人做过这样的事情,我们可不可以对他进行追究?如果可以,那么我们采用什么的-
办法来追究呢? 对吧,所以我们在计算机系统里面通常要提供相应的办法来
这个使得我们的将来日后可以对这个系统的一些恶意的行为 或一些故障的行为可以进行追究。
那么通常我们采用的可追究的方法 就是一个是标识和鉴别,比如说你用户要进入这个系统,
那么我首先要鉴定你,首先你要声称你是谁,然后我要鉴定是不是你所声称的这个人。
对吧,之后呢我们可能还要看你进去以后 你有没有做违法的事情,就说你是不是按照这个授权的行为在工作。
如果是,那我们会做适当的一些审计。
那么可以鉴定你的行为是不是跟我们所期望的是一致的。
那么即使出了问题也可以保证系统不出问题。
第四个呢我们说的是可用性。
大家知道任何一个计算机系统, 我们说保证它的安全性,也是希望这个系统不因为
有恶意用户导致这个系统呢不能够向外继续提供服务,
所以,可用性通常是指的我们所期望的这些信息或者资源 总是能够对外提供服务的。
当然我们这里所说的可用性更多是强调的是安全相关的可用性, 比如说不会有人去蓄意地这个造成这个数据不可访问,
或者造成我们的服务不可用,如果出现这种行为,那么我们怎么样进行保护和怎么样进行控制。
当然可用性在整个计算机系统里面,它是最 难采取一个特定的一个措施来做到的。
它需要可能全面的一些方法才可以达到。
好,这就是我们这个部分的主要内容。