文章目录
本节开始学习操作系统基本的安全机制,本节主要以访问控制机制为主,简单了解下硬件安全机制。
硬件安全机制
绝大多数实现操作系统安全的硬件机制也是传统操作系统所要求的,优秀的硬件保护性能是高效、可靠操作系统的基础。
计算机硬件安全的目标是,保证其自身的可靠性和为系统提供基本安全机制。其中基本安全机制包括存储安全、运行安全、I/O安全等。
存储安全是依靠划分虚地址空间和段,通过存储器的访问控制达到的安全机制
运行安全是通过分层设计
I/O安全是通过将输人与介质输出访问控制最简单的方式是将设备看作一个客体, 仿佛它们都处于安全防线外。
由于所有的输入输出不是向设备写数据就是从设备接收数据,所以一个进行输入输出操作的进程必须受到对设备的读/写两种访问控制。这就意味着设备到介质间的路径可以不受什么约束,而处理器到设备间的路径则需要施以一定的读/写访问控制。
访问控制机制
访问控制机制的任务有三个:
访问控制一般涉及两种形式:自主访问控制和强制访问控制
自主访问控制(DAC)
概念
自主访问控制是指,文件的拥有者可以按照自己的意愿精确指定系统中的其他用户对其文件的访问权。
为了实现完备的自主访问控制机制,系统要将访问控制矩阵相应的信息以某种形式保存在系统中。
访问控制矩阵的每一行表示一个主体, 每一列表示一个受保护的客体,矩阵中的元素表示主体可对客体进行的访问模式。
因为这样做效率很低,实际的方法是基于矩阵的行或列表达访问控制信息。
基于行的自主访问控制机制(主体角度)
基于行的自主访问控制机制在每个主体上都附加一个该主体可访问的客体的明细表,根据表中信息的不同又可分成以下三种形式,即能力表、前缀表和口令。
文字描述如下
能力表
能力决定用户是否可以对客体进行访问以及进行何种模式的访问 (读、写和执行),拥有相应能力的主体可以按照给定的模式访问客体。
每个用户均需要一个能力表,表里面的条目成千上万,实际运行比较耗时,目前利用能力表实现自主访问控制的系统很少。
前缀表
对每个主体赋予的前缀表,包括受保护客体名和主体对它的访问权限。当主体要访问某客体时,自主访问控制机制将检查主体的前缀是否具有它所请求的访问权。
但是对于可以请求多个客体的主体来说,前缀过多,并且前缀杂乱无章,很难管理。
口令
在基于口令机制的自主访问控制机制中,每个客体都相应地有一个口令。主体在对客体进行访问前,必须向操作系统提供该客体的口令。如果正确,它就可以访问该客体。
区分不同权限,每个客体需要有多个口令,每个用户也要记住多个客体的口令,这种管理方式也很麻烦。
基于列的自主访问控制机制(客体角度)
文字描述如下
保护位
这种方法对所有主体、主体组以及客体的拥有者指明一个访问模式集合。保护位机制不能完备地表达访问控制矩阵,一般很少使用。
访问控制表(ACL)
这是国际上流行的一种十分有效的自主访问控制模式,它在每个客体上都附加一个主体明细表,表示访问控制矩阵。
表中的每一项都包括主体的身份和主体对该客体的访问权限。它的一般结构如图所示。
但是,当访问客体的主体变多后,这个表会越来越长,因此需要优化。下图为优化后的ACL表
(看到这里的时候真心为科学家的思想感到赞叹)
自主访问控制实例
“拥有者/同组用户/其他”
在每个文件上附加有关访问控制信息的二进制位。如下图:
此模式只能进行分组,并不能精确到具体用户的权限。
“拥有者/同组用户/其他”与访问控制表(ACL)相结合
访问控制表只对“拥有者/同组用户/其他”无法分组的用户才使用。
两种自主访问控制模式共存于系统之中,既保持了与原系统的兼容性,又将用户控制粒度细化到系统中的单个用户。
客体重用
客体重用的定义为:“包含一个或多个客体的存储介质(如页面、磁盘扇区、磁带)的主体的重新分配。通过标准系统机制,为新的主体重新分配时不应含有任何可用的残留数据。”
残留数据又称残留信息,是指数据在被以某种形式擦除后所残留的物理表现。存储介质被擦除后可能留有一些物理特性使数据能够被重建。