




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息安全技术体系 何长1 Chapter6 操作系统 2 CONTENTS 01 安全操作系统的地位和作用 02 安全操作系统的发展 03 安全操作系统的体系结构 04 安全操作系统的设计 目录 05 安全操作系统的关键技术 3 安全操作系统的地位和作用 操作系统是所有系统资源的基本控制器 这使得它成为主要的攻击目标 操作系统是抵御各种非法操作的第一道防线 它能防御来自其他人的攻击 确保内存或磁盘中的重要区域不被未经授权的程序覆盖 对不同的用户以及远程操控进行识别和授权 并保证重要硬盘资源公平共享 显然安全技术要素 安全机制应该首先设置在信息系统的最底层 才能确保整个信息系统的安全性 如果硬件的物理安全受到威胁 上层信息系统的保密性 完整性 可用性将不复存在 因此 物理安全是信息系统的硬件安全基础 操作系统安全是信息系统的软件安全基础 4 普通操作系统的安全特性 共享的实施进程间通信和同步对操作熊保护数据的保护保证公平服务硬件接口用户鉴定内存保护文件和输入 输出设备的访问控制对一般对象的分配和访问控制 5 操作系统的历史回顾 操作系统的发展不像其他事物 它并不是从一个简单的形态直接发展成复杂的样子的 而是经历了一个起伏前进的过程 1 单用户2 多道程序和共享使用3 多任务处理 6 受保护对象 1 多道程序设计的出现意味着计算机系统需要保护以下几个方面 内存 可共享的I O设备 如磁盘 可连续复用的I O设备 如打印机和磁带驱动器 可共享的程序或子程序 网络 可共享数据 7 操作系统设计 对象保护 操作系统由许多独立的程序构成 它不是单一的程序 一个结果良好的操作系统会从关键部分到装饰部分实现多个层次的功能和保护 这种排序在理论上式精细的 但在实践中 某些功能涉及多个层 8 操作系统设计 对象保护 考虑一个与安全相关的操作系统活动的例子 密码认证 事实上 该活动包括几个不同的操作 如以无特定顺序显示用户输入口令的输入框 接收密码字符 以 之类的方式进行响应 比较用户输入的密码与存储的密码 检查用户的身份是否被验证或在系统表中修改用户的密码 更改系统密码表比在密码输入时用 显示具有更重要的安全性 因为更改此系统表可能会允许未经授权的用户访问 在这个更改过程中 需要的仅仅是一个显示框交互接口 这个接口列出的功能可能发生在操作系统的不同级别 9 操作系统设计 对象保护 现代操作系统有许多不同模块 并非所有的代码都来自同一个源 例如 硬件设备驱动程序可能来自设备制造商或第三方 用户可以安装附件来实现不同的文件系统或用户界面 你可以猜到 更换文件系统或用户界面需要与操作系统的几个层次整合 例如 反病毒代码等系统工具 被称为 钩子 或被纳入操作系统的程序 这些工具与操作系统一起加载 以便当用户程序执行时可以被激活 虽然它们来自不同的源 但所有这些模块 驱动程序和附件可以被共同认为是操作系统的组成部分 因为他们以提升权限的方式来执行关键的功能 10 操作系统设计 自我保护 操作系统为了保障安全性 必须保护自己不被破解 操作系统不仅需要防御恶意的用户程序 也需要防御未整合在一起的模块 驱动程序和附件 并且对于能够信任哪些组件及信任哪些功能 操作系统只有有限的信息 操作系统不是一个单一结构 它也不是载入内存中的一个对象 操作系统是分阶段加载的 首先加载基本的输入 输出系统 用以访问下一步将加载的引导设备 接下来操作系统加载一些引导 bootstrap 加载程序和软件 用来获取和安装操作系统后面的模块 加载程序实例化一个原始内核 它为操作系统创建低级别的功能提供支持 如同步支持 进程间通信 访问控制和安全性及进程调度 这些功能反过来帮助开发先进的功能 如文件系统 目录结构和操作系统的第三方加载项 最后 激活为用户提供的支持 11 实现安全功能的操作系统工具 1 操作系统同时实现支持访问控制的底层表和访问控制检查机制 2 操作系统的另一个有关访问控制的重要功能是审计 audit 即记录哪个主体在什么时候以什么方式访问哪个对象 审计不是防御工具 它是安全漏洞出现后的反应工具 如果关键信息被泄露 审计日志可以帮助我们找到哪些信息已经泄露 也许还能知道是谁在什么时候泄露的 这些信息可以限制漏洞带来的损伤 也能使我们从出现的漏洞中得到启示 防止以后再次出现这种问题 由于系统行为的数据量非常庞大 所以操作系统不可能记录每一个行为 审计日志的写入行为也是一个行为 也将产生一条记录 这样第一次访问后就会产生一个无限的记录链 然而 即使我们抛开记录审计的问题 每一次内存信息发生位置改变或每一次搜索文件目录都需要审计记录 此外 只有当审计跟踪信息用于分析时 它才是有用的 太多的数据会阻碍分析的及时性和有效性 12 实现安全功能的操作系统工具 虚拟化 虚拟化 Virtualization 通过使用一些资源提供另一种资源类型的外观 1 虚拟机 Virtualmachine 2 管理程序 Hypervisor 3 沙箱 Sandbox 4 蜜罐 Honeypot 13 实现安全功能的操作系统工具 共享和分离 最基本的保护就是分离控制 Separation 保护一个用户的对象独立于其他用户 在操作系统中 分离控制主要有以下4种方式 物理分离 时间分离 逻辑分离 密码分离 14 实现安全功能的操作系统工具 共享和分离 不保护 分离 完全共享或完全不共享 访问限制共享 限制对象的使用 15 实现安全功能的操作系统工具 内存的硬件保护 1 界地址2 基址 范围寄存器3 标记结构4 虚拟内存 5 分段式 6 分页式 7 段页式 16 6 2安全操作系统的设计 6 2 1简约设计操作系统本身是很难设计的 它们处理很多事务 如中断和上下文转换 并且必须是开销最小化 以免影响用户的计算和交互 将安全功能加入操作系统中大大增加了操作系统设计的难度 然而 对于安全性的需求变得越来越普遍 好的软件工程原则启示我们安全因素在设计初期考虑比在设计末期考虑更好 因此 本节将研究具有高度安全性的操作系统设计 17 6 2安全操作系统的设计 6 2 2分层设计一个内核化的操作系统至少由4层组成 硬件 内核 操作系统和用户 其中每一层都可以包含一些子层 在用户一级 通常有一些自身就构成了隔离的安全层析的准系统程序 如数据库管理程序或用户接口外壳 1 分层信任安全操作系统的分层观点可以被描述成一系列的同心圆 最敏感的操作位于最内层 然后 可以通过进程与中心距离来判断其可信度和访问权限 离中心越近的进程越可信 分层方法是实现封装的另一个途径 分层被认为是一个好的操作系统的设计方法 每一层调用内层的服务 同时也向外层提供一定功能级的服务 18 6 2安全操作系统的设计 6 2 2分层设计分层的另外一个理由是对破坏进行控制 分层结构有两个好处 层次结构 Hierarchicalstructuring 允许我们识别非常关键的部分 然后认真分析其正确性 这样问题就会少一些 隔离将问题的影响范围限制在问题发生的层及上层 从而可以限制大多数问题的影响 这些设计特性 内核 分离 隔离和层次结构 一直以来都是很多可信系统模型的基础 作为最佳的设计和实现 它们经历了时间的考验 19 6 2安全操作系统的设计 6 2 2内核化设计内核 Kernel 是操作系统的一部分 它执行操作系统的最底层功能 在标准的操作系统设计中 内核实现这样一些操作 如同步 进程间通信 消息传递及中断处理 内核也被称为核或核心 安全内核 securitykernel 负责实施整个操作系统的安全机制 安全内核负责在硬件 操作系统 计算系统的其他部分之间提供安全接口 一般来说 安全内核被包含在操作系统核中 下面几种原因解释了为什么要将安全功能隔离在安全内核中 20 6 2安全操作系统的设计 6 2 2内核化设计下面几种原因解释了为什么要将安全功能隔离在安全内核中 覆盖隔离统一可修改性紧凑性可验证性 21 6 2安全操作系统的设计 6 2 4引用监视器安全内核中最重要的部分就是引用监视器 referencemonitor 它控制着对对象的访问 引用监视器并不只是一段代码 它也可以是对设备 文件 内存 进程间通信及其他种类的对象的访问控制的集合 22 6 2安全操作系统的设计 6 2 4引用监视器一个引用监视器的功能就像操作系统或可信软件周围的砖墙一样 抗干扰 不可绕过 可分析 引用监视器不是可信操作系统中唯一的安全机制 其他的安全组件包括审计 识别 鉴别过程和设置执行参数 如允许访问的主体是谁及允许他们访问哪些对象 这些安全组件与引用监视器交互 从引用监视器那里接受数据或为它提供操作数据 23 6 2安全操作系统的设计 6 2 5正确性和完整性安全因素渗透在操作系统设计和结构之中 需要考虑其正确性和完整性 正确性 correctness 是指一个操作系统控制着主体和对象间的交互 因此操作系统设计的每一个方面都必须考虑安全性 即操作系统设计必须包括这样一些定义 如哪些对象将以什么样的方式被包护 什么样的主体具有访问权 以及这些访问权处于什么等级 从安全需求到设计必须有一个清晰的映射 使得所有开发者可以看出两者之间的关联 完整性 completeness 则要求在任何有必要的地方都有安全功能 虽然这个要求似乎是不言自明的 但是并非所有的开发者都认为在他们设计和编写代码是必须考虑安全性 因此完整性安全有一定的挑战 安全性在可信操作系统的最初设计中至关重要 安全性很少作为一个附件被集成 它必须是最初理念 需求 设计和实施的一部分 24 6 2安全操作系统的设计 6 2 6安全设计原则 1 机制经济性 economy 原则 保护机制应设计得尽可能的简单和短小 2 失败 保险 fail safe 默认原则 访问判断应建立在显示授权而不是隐式授权的基础上 显示授权指定的是主体该有的权限 隐式授权指定的是主体不该有的权限 3 完全仲裁原则 对每一个客体的每一次访问都必须经过检查 以确认是否已经得到授权 4 开放式设计原则 不应该把保护机制的抗攻击能力建立在设计的保密性的基础之上 应该在设计公开的环境中设法增强保护机制的防御能力 25 6 2安全操作系统的设计 6 2 6安全设计原则 5 特权分离原则 为一项特权划分出多个决定因素 仅当所有的决定因素具备时 才能行使该项特权 6 最小特权原则 分配给系统中的每一个程序和每一个用户的特权应该是它们完成工作所必须享有的特权的最小集合 7 最少公共机制原则 把由两个以上用户共同和被所有用户依赖的机制的数量减少到最小 8 心理可接受性原则 为使用户习以为常 自动地正确运用保护机制 把用户界面设计得易于使用是根本 26 6 2安全操作系统的设计 6 2 7可信系统可信系统 有证据证明它能实现一些功能或规则的系统 可信系统是指这个系统不但达到了设计的安全需求 而且还能证明用户对系统质量的信任是正确的 也就是说 信任是由系统的使用者来感受的 而不是由系统的生产者 设计者或制造商来决定的 作为用户 或许你不能直接去评价一个系统是否值得信任 你即可能会相信设计方案 也可能会相信专家的评估 还可能相信同行的意见 但最终 还得由你自己来确定需要的信任度 如果我们知道一个软件的代码已经经过了严格的开发和分析 使得我们有路由相信该代码只做其被要求做的事情 我们就说这个软件是可信软件 trustedsoftware 27 6 2安全操作系统的设计 6 2 7可信系统当我们确信操作系统能够对运行在它之上的组件或系统的访问进行正确的控制 就可以认为它是可信的 可信软件常常被用作一种一般用户访问敏感数据的安全方式 可信程序在不允许用户直接访问敏感数据的情况下 使用户能执行有限的 安全的 操作 可信系统有三个特征 一个已经定义好的策略 它详尽地说明了实施的安全特性 合适的措施和机制 通过它可以充分实施安全特性 独立的审查或评估 以确保机制被选中并被适当地实施 确保安全策略在实际上被执行 28 6 2安全操作系统的设计 6 2 8可信系统的功能1 可信计算基 TrustedComputingBase TCB TCB是可信系统中用于实施安全策略的所有事物的一个统称 换一种说法 就是可信计算基由可信操作系统的某些部分构成 我们依靠这些部分来正确地实施安全策略 我们对整个系统的信任建立在TCB之上 1 TCB的功能TCB是由下列安全实施依赖的系统元素构成的 硬件 包括CPU 内存 寄存器和I O设备 一些进程概念 以便我们能够分离并且保护关键的安全进程 原始文件 如安全访问控制数据库和识别 鉴别数据 29 6 2安全操作系统的设计 6 2 8可信系统的功能1 可信计算基 TrustedComputingBase TCB 1 TCB的功能受保护的内存 以防引用监视器受到干扰 一些进程间通信 以便TCB的不同部分能够相互传递数据并且激活其他部分 例如 引用监视器能够激活并且将数据安全地传递给审计程序 上述元素似乎包含了操作系统的大部分内容 但事实上TCB只是一个很小的子集 TCB只是包含了一个原始的文件管理器 用来处理TCB需要的小而简单的文件 用于提供外部可视文件的复杂文件管理器在TCB之外 30 6 2安全操作系统的设计 6 2 8可信系统的功能1 可信计算基 TrustedComputingBase TCB 1 TCB的功能TCB必须维护每一个域的保密性和完整性 监视4个基本的交互 进程激活 在多道程序环境下 进程的激活和钝化是经常发生的 从一个进程切换到另外一个进程需要一个完整的改变 内容包括寄存器 重定位映射表 文件访问表 进程状态信息及其他指针 它们中的大部分都是安全敏感信息 执行域切换 在一个域中运行的进程经常会激活其他域的进程以获得更多的敏感数据和服务 31 6 2安全操作系统的设计 6 2 8可信系统的功能1 可信计算基 TrustedComputingBase TCB 1 TCB的功能TCB必须维护每一个域的保密性和完整性 监视4个基本的交互 内存保护 因为每个域包含的代码和数据都存储在内存中 因此TCB必须监视内存引用以确保每个域的保密性和完整性 输入 输出 I O 操作 在一些操作系统中 软件涉及I O操作中的每一个字符 这种软件将最外层域的用户程序和最内层 硬件 域的I O设备连接起来 因此 I O操作能够贯穿所有的域 32 6 2安全操作系统的设计 6 2 8可信系统的功能1 可信计算基 TrustedComputingBase TCB 2 TCB的设计将操作系统划分为TCB和非TCB 这为设计者和开发者提供了便利 因为这意味着所有和安全相关代码都被放置在某个逻辑部分 为了确保非TCB代码不会影响安全实施 TCB代码必须运行在一些可以将其区分开的受保护状态下 这种结构一旦创建 TCB之外的代码就能够任意被修改 且不会影响TCB实施安全的能力 这种改变能力对开发者非常有帮助 因为这意味着操作系统的主要部分 设备驱动器 用户接口管理器等 能够在任何时间被修改 只有TCB代码需要更加小心的控制 最后 对于可信操作系统的安全评估来讲 TCB和非TCB的划分大大简化了评估 因为不需要考虑非TCB 33 6 2安全操作系统的设计 6 2 8可信系统的功能1 可信计算基 TrustedComputingBase TCB 3 TCB的实现和安全相关的活动可以会在不同的地方被执行 安全性与下述操作都有潜在的相关性 包括每一次的存储访问 I O操作 文件或程序访问 用户的初始化及终止和进程间通信 在模块化的操作系统中 对上述每种活动可以用单独的模块来处理 每个模块既有与安全相关的功能 还有其他的功能 将所有的安全功能都包含在TCB中会破坏现有操作系统的模块性 集各种安全功能于一体的TCB也会因为太大而不易分析 不过 设计者可能会将现有操作系统的安全功能隔离出来 从而创建一个安全内核 34 6 2安全操作系统的设计 35 6 2安全操作系统的设计 6 2 8可信系统的功能1 可信计算基 TrustedComputingBase TCB 3 TCB的实现更为合理的方法是先设计一个安全内核 然后再围绕这个安全内核设计操作系统 一个基于安全内核的设计中 安全内核在系统硬件之上形成一个接口层 安全内核监视着所有的操作系统的硬件访问 并执行所有的保护功能 安全内核依靠硬件的支持 允许操作系统处理与安全无关的大部分功能 这样 安全内核就比较小且更有效 由于这种划分 计算机系统至少具有三个执行域 安全内核 操作系统和用户 36 6 2安全操作系统的设计 6 2 8可信系统的功能2 安全启动启动是系统设计的一个已知的弱点 在操作系统的全部功能开启之前 其防护能力是有限的 随着越来越多的组件开始运作 它们开始完全控制住资源 在启动过程中 威胁的程度也会因为用户没有激活和网络连接尚未建立而降低 可信系统设计师意识到系统启动时的脆弱性 尤其是从先前错误中重启 因此 可信系统的设计文件 例如桔皮书 要求开发者证明系统启动时 所有的安全功能都能正常工作 不会受到任何以前系统会话的影响 37 6 2安全操作系统的设计 6 2 8可信系统的功能3 可信路径用户与操作系统内部主体结构的连接时保障安全的关键 但是在其他方面 如不能期望用户暴露独特的验证数据给任何要求访问它的软件 你知道 任何普通水平的程序员可以编写代码来弹出一个输入用户名和口令的对话框 你怎么能保证该对话框来自于密码管理器 并会将输入的数据传到密码管理器呢 如何知道这个对话框是合法的 这个问题是认证的另一个方面 应用程序要确保你就是你所指的用户 但是你也需要知道应用程序正好也是那个正确的应用程序 38 6 2安全操作系统的设计 6 2 8可信系统的功能3 可信路径这个问题很难在应用层上得到解决 但在操作系统层上却比较容易 可信路径 trustedpath 是不可伪造的连接 用户可以通过它放心地直接与操作系统进行通信 不用经过中间任何可能有欺骗行为的应用程序 可信系统需要一个可信路径 用来处理所有重要安全身份的验证操作 如更改密码 桔皮书要求操作系统和用户之间要有一个可行通信路径来进行初始
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论