1.5k likes | 1.6k Vues
安全操作系统. 中国科学技术大学计算机系 陈香兰( 0512 - 87161312 ) xlanchen@ustc.edu.cn 助教:裴建国 Autumn 2008. 第七章 安全操作系统的设计与实现. 对 OS 进行攻击, 是黑客永恒不变的目标, 突破了 OS 的防御, 就有机会得到计算系统的秘密, 就有机会控制应用程序的运行。. 内容提要. 安全操作系统的设计原理 安全操作系统的设计 安全操作系统的开发 安全操作系统关键技术的实现. 内容提要. 安全操作系统的设计原理 安全操作系统的设计 安全操作系统的开发 安全操作系统关键技术的实现.
E N D
安全操作系统 中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ustc.edu.cn 助教:裴建国 Autumn 2008
第七章 安全操作系统的设计与实现 对OS进行攻击, 是黑客永恒不变的目标, 突破了OS的防御, 就有机会得到计算系统的秘密, 就有机会控制应用程序的运行。
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 安全操作系统的开发 • 安全操作系统关键技术的实现
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 安全操作系统的开发 • 安全操作系统关键技术的实现
通用操作系统的安全功能 用户认证 存储器保护 文件和I/O设备的访问控制 对普通对象的定位和访问控制 共享的实现(保证完整性和一致性) 保证公平的服务 IPC和同步 Saltzer和Schroeder的八条设计原则 安全操作系统的设计原理
存储器保护 • 用户程序的运行空间 • 未经批准的用户不能访问! • 即便是对自己的程序空间,访问也要受限! • Linux中的线性区… 返回
公平的服务 • 极端:饿死现象 • 资源: • CPU:公平调度 • 内存:按需分配 • IO设备 • 等等 返回
IPC和同步 • 信号量 • 管道和FIFO • 消息队列 • Socket • 共享内存 返回
75,Saltzer和Schroeder • Saltzer, J.H. and M.D. Schroeder, The protection of information in computer systems. Proceedings of the IEEE, 1975. 63(9): p. 1278-1308. • 以保护机制的体系结构为中心 • 探讨了计算机系统的信息保护问题 • 重点考察了权能和访问控制表的实现结构 • 给出了信息保护机制的8条设计原则 • 并指出,如何证明硬件和软件保护机制的设计与实现的正确性,是一个挑战
信息保护机制的八条设计原则 • 机制经济性原则:要简单而且短小 • Fail-safe默认原则:即失败是保险的。 显式授权 VS 隐式授权 • 完全仲裁原则 • 开放式设计原则:不要基于设计的保密性 • 特权分离原则 • 最小特权原则 • 最少公共机制原则 • 心理可接受性原则:易用性
操作系统安全的可信性 • 操作系统安全的可信性,依赖 • 安全功能在系统中实现的完整性 • 文档系统的清晰说明 • 系统测试 • 形式化程度
操作系统 • 一个大型软件:内核+系统软件+应用程序 • 验证困难 • 解决思路: • 提供安全保证的部分:尽可能小便于验证(测试) Application System Software OS kernel 硬 件
安全操作系统的一般结构 • 高安全级别OS的结构 VS. 低安全级别OS的结构 • 分离的安全内核? • 前者:KSOS,UCLA Secure Linux • 后者:LINVS IV,Secure XENIX,TMACH和Secure TUNIS 安全操作系统的一般结构
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 隔离 • 安全内核 • 分层设计 • 环结构 • 安全操作系统的开发 • 安全操作系统关键技术的实现
通用OS 灵活性 性能 开发费用 方便性 安全内核 隔离性 完整性 可验证性 操作系统设计的基本原则 • 安全操作系统设计的考虑因素 • 隔离性:主要是不同进程间的隔离,是操作系统最基本的安全功能 • 安全内核的设计: • 分层设计 • 环结构设计
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 隔离 • 安全内核 • 分层设计 • 环结构 • 安全操作系统的开发 • 安全操作系统关键技术的实现
隔离 • 有四种方法将一个进程与其他过程分离 • 物理分离:各进程使用不同的硬件设施 • 时间分离:各进程使用不同的时间段(宏观) • 密码分离: • 逻辑分离: • 安全操作系统应该将每个用户与所有其他用户分离开,仔细地只允许受控制的用户间的交互
操作系统中隔离机制的实现方法 • 隔离机制的实现方法: • 多个虚拟存储空间 • 虚拟机
多个虚拟存储空间 存储器 地址0 操作系统空间 用户1空间 用户2空间 … 用户n空间 高端 操作系统空间 对比:早期,多用户OS的存储器,单地址空间
多个虚拟存储空间(举例:IBM MVS) 存储器 存储器 存储器 地址0 地址0 地址0 操作系统空间 操作系统空间 操作系统空间 MAIN 用户2的程序 数据片段 MAIN SUB1 用户1的程序和数据 PROC_A 用户2的程序和数据 用户1的程序 数据片段 DATA1 DYNAMIC_DAT SUB2 用户3的程序 数据片段 DATA2 PROC_B 自由空间 自由空间 用户2的程序 数据片段 高端 高端 高端 操作系统空间 操作系统空间 操作系统空间 内存的实际组织 用户1感觉到的内存 用户2感觉到的内存
多个虚拟存储空间(举例:Linux 2.4.18) 低端 用户态 中断/异常/系统调用 3GB 内核 内核 内核 内核 内核态 高端
虚拟存储器虚拟机 终端 终端 终端 对比:传统的操作系统
虚拟机(举例:IBM VM) 虚拟机:安全? 虚拟机系统
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 隔离 • 安全内核 • 分层设计 • 环结构 • 安全操作系统的开发 • 安全操作系统关键技术的实现
安全内核 • 操作系统中“核”的概念 • “核”是操作系统的一部分,用于完成低级功能 • 常规操作系统中,核的功能包括: • 同步、进程间通信、中断处理等 • 安全内核负责实现整个操作系统的安全机制 • 一般,安全内核被包含在操作系统内核内 • 为什么要将安全功能隔离在安全内核中?
为什么要隔离出一个安全内核 • 优点 • 分隔 • 统一 • 可修改性 • 紧凑性 • 可验证性 • 覆盖面 • 安全内核:有什么缺点? 主要是性能问题
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 隔离 • 安全内核 • 分层设计 • 环结构 • 安全操作系统的开发 • 安全操作系统关键技术的实现
分层设计 层 层间接口 分层操作系统
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 隔离 • 安全内核 • 分层设计 • 环结构 • 安全操作系统的开发 • 安全操作系统关键技术的实现
环结构 ring structure 分层设计的进一步发展 • MULTICS • 参考ppt:http://www.cs.wfu.edu/~fulp/CSC790/access2.pdfhttp://www.cse.psu.edu/~tjaeger/cse497b-s07/slides/cse497b-lecture-24-macsystems.pdf
Multics中的段 • 两类:数据和程序 • 段相关的权限 • 读、写、执行和添加 • 保护环ring • 编号0~63:环编号越大,特权越低 • 内核:0 • 环与一个段相关联,而不是整个进程,称“一个程序在环r中执行” • 环跨越和环跨越fault • 关于门gate
r2 r3 r1 a1 a2
(2) (1) (3) (4) a1 c2 a2 c1
4 2 2 4 6
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 安全操作系统的开发 • 安全操作系统开发方法 • 安全操作系统开发过程 • 安全操作系统的开发 • 安全操作系统关键技术的实现
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 安全操作系统的开发 • 安全操作系统开发方法 • 安全操作系统开发过程 • 安全操作系统的开发 • 安全操作系统关键技术的实现
开发思路 • 1)设计时就考虑建立一个完整的安全OS • 包括硬件和软件 • 如MULTICS • 2)先设计一个通用OS,然后加入安全机制 • 如HP CMW,基于HP UX,达到B1 • 如数据通用公司的DG UX/B1和DG UX/B2,基于DX UX • 后者,安全级别不会超过B2 • B3及以上的SOS必须“从头做起”
一般有三种方法: 基于通用操作系统之上开发安全操作系统
虚拟机法 • 在GOS与硬件之间增加一个新的分层:安全内核 • 安全内核提供的接口几乎与原有硬件等价 • GOS本省并未意识到已被安全内核控制 • 例如KVM • 其硬件(IBM 370)支持虚拟机 • 其原有OS(VM/370)支持虚拟机 • 缺点: • 由于对虚拟机的依赖,局限性太大
改进/增强法 • 在GOS中,对内核和应用程序进行面向安全策略的分析,加入安全机制,进行改造开发 • 保持原有GOS的用户接口 • 优点: • 代价小;用户接口不变;效率变化不大 • 缺点: • 受GOS的限制 • 难达B3
仿真法 • 对GOS的内核进行修改,但不受限于GOS • 在得到的安全内核之上提供一个仿真程序 • 缺点: • 工作量大 • 围绕安全策略,仿真困难
改进/增强法举例 基于某版本通用UNIX操作系统进行安全性开发的例子
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 安全操作系统的开发 • 安全操作系统开发方法 • 安全操作系统开发过程 • 安全操作系统的开发 • 安全操作系统关键技术的实现
安全操作系统开发过程 一致性?? 形式化方法,是非形式化方法的一个补充 形式化方法,要达到完全,是很困难的 半形式化方法 安全操作系统的系统开发过程
用非形式化论据论证系统实现、形式化描述和模型三者是一致的用非形式化论据论证系统实现、形式化描述和模型三者是一致的 操作系统安全性开发过程
内容提要 • 安全操作系统的设计原理 • 安全操作系统的设计 • 安全操作系统的开发 • 安全操作系统开发方法 • 安全操作系统开发过程 • 安全操作系统的开发 • 安全操作系统关键技术的实现
从两个方面进行 安全功能 安全保证 十项安全功能 标识与鉴别 自主访问控制 标记 强制访问控制 客体重用 审计 数据完整性 可信路径 隐通道分析 可信恢复 三个方面的安全保证 TCB自身安全保护 TSF保护 资源利用 TCB访问 TCB设计和实现 配置管理、分发和操作、开发指导性文档、生命周期支持、测试、脆弱性评定 TCB安全管理 安全操作系统的开发