计算机系统信息安全:操作系统安全

主要介绍了可信操作系统的发展历程、基本概念、安全机制与安全功能及其保障机制。举例说明了操作系统所面临的威胁,例如控制流篡改、关键数据篡改和隐蔽信道。
展开查看详情

1.第8章 操作系统安全 南京大学计算机系 黄皓教授 2011年12月5日

2. 参考文献  Charles P. Pfleeger, Shari Lawrence Pfleeger. 李毅 超等译。信息安全原理与应用。电子工业出版社, 2004年7月第1版。  刘克龙等,安全操作系统原理与技术,科学出版 社,2004年7月第1版。  卿斯汉等,操作系统安全,清华大学出版社, 2004年8月。 2011-12-05 南京大学计算机系讲义 2

3. 内容 1. 可信操作系统研究的发展 4. 可信操作系统的安全机制与 2. 操作系统面临的威胁 安全功能  控制流篡改  硬件安全机制  关键数据篡改  标识与鉴别  隐蔽信道  访问控制 3. 可信操作系统的基本概念  可信通道  安全功能与安全保障  安全审计  可信与不可信  最小特权管理  引用监视器 5. 可信操作系统的保障机制  安全核  形式化的描述与验证  可信计算基  入侵检测 2011-12-05 南京大学计算机系讲义 3

4.1. 可信操作系统研究的发展

5. 7.1 可信操作系统研究的发展 萌芽与访问控制抽象  1969年Weissman C. 发表了有关ADEPT-50安全控制的研 究成果。 ADEPT-50运行于IBM/360硬件平台。  高水印模型(high-water-mark model):  为客体标上敏感级别(sensitivitylevel)属性。  对于读操作,不允许信息的敏感级别高于用户的安全级别 clearance)。  对于写操作,在授权情况下,允许使信息从高敏感级别移向低 敏感级别。 Weissman C., Security Controls in the ADEPT-50 Time Sharing System。 Proceedings of the1069 AFIPS Fall Joint Computer Conference, AFIPS Press, 119-133. 2011-12-05 南京大学计算机系讲义 5

6. 7.1 可信操作系统研究的发展 访问矩阵(access matrix)  Lampson B.W. 通过形式化表示方法,运用主体(subject)、客体 (object)和访问矩阵(access matrix)的思想,第一次对访问控制问题进 行了抽象。  Lampson B.W., Dynamic Protection Structures. In Proceedings of the AFIPS, Fall Joint Computer Conference, volum 35, Las Vegas, Nevada, 27-38. Nov. 1969.  访问矩阵是以主体为行索引、以客体为列索引的矩阵,矩阵中的每 一个元素表示一组访问方式,是若干访问方式的集合。  矩阵中第i行第j列的元素Mij,记录着第i个主体Si,可以执行的对第j个 客体Oj的访问方式,比如Mij,等于(read,write)表示Si可以对Oj 进行 读和写访问。 2011-12-05 南京大学计算机系讲义 6

7. 7.1 可信操作系统研究的发展 多级安全(Multilevel security system) Ware W.H., Security Controls for Computer Systems(U), Report of Defense Science Board Task Force on Computer Security. Technical Report, the Rand Coporation, Santa Monica, CA, published for the Office of the Director of Defense Research and Engineering, Washington, D.C.。  Ware W.H.推出的研究报告对多渠道访问的资源共享的计算机系统引起的安 全问题进行了研究。  结合实际的国防信息安全等级划分体制,提出了解决计算机安全问题的建 议途径。  研究的主要目标是多级安全系统(multi-level security system)在计算机中的实 现。  对计算机安全系统的设计提出了两个限制条件:  计算机安全系统必须与现实的安全等级划分结构一致。  计算机安全系统必须与现实的手工安全控制规程相符。 2011-12-05 南京大学计算机系讲义 7

8. 7.1 可信操作系统研究的发展 多级安全(Multilevel security system)  安全控制措施的特点  系统灵活性:在应用中可调整个体和信息的安全等级  可靠性:贯彻“失败-保险”思想,当不能确定是否授权时,采 取不授权的措施)  可审计性:记录安全相关行为人可管理性(安全控制、审计控制 等管理)  可依赖性:避免拒绝对用户的服务  配置完整性:确保系统自身的完整  报告认为计算机系统的安全控制是个系统设计问题,必 须从硬件、软件、通信、物理、人员和行政管理规程等 各个方面综合考虑。 2011-12-05 南京大学计算机系讲义 8

9. 7.1 可信操作系统研究的发展 安全评价标准  1983年,美国国防部颁布了历史上第一个计算机安全评价标准,这 就是著名的可信计算机系统评价标准,简称TCSEC,又称橙皮书。 1985年,美国国防部对TCSEC进行了修订。  TCSEC标准是在基于安全核技术的安全操作系统研究的基础上制定 出来的,标准中使用的可信计算基(Trusted Computing Base,TCB) 就是安全核研究结果。 Nibadi G.H., Specification of a Trusted Computing Base, M79-228, The MITRE Corporation, Bedford, MA, USA。  给出了TCB的定义,该方法要求把计算机系统中所有与安全保护有 关的功能找出来,并把它们与系统中的其他功能分离开,然后把它 们独立出来,以防止遭到破坏,这样独立出来得到的结果就称为 TCB。 2011-12-05 南京大学计算机系讲义 9

10. 7.1 可信操作系统研究的发展 国外安全操作系统  1984年, AXIOM公司的Kramer S.发表了 LINUS IV 。4.l BSD Unix为原型,结合TCSEC标准的要 求,对安全性进行了改造和扩充。  身份鉴别  自主访问控制  强制访问控制  安全审计  超级用户特权分离 2011-12-05 南京大学计算机系讲义 10

11. 7.1 可信操作系统研究的发展 安全XENIX系统开发  1986年, IBM公司的Gligor V. D.等发表了安全 XENIX系统设计与开发成果。  实现了TCSEC B2-A1级的安全要求。  它采用改造法,对原有的XENIX内核进行改造 和扩充,使它支持新的安全策略。 2011-12-05 南京大学计算机系讲义 11

12. 7.1 可信操作系统研究的发展 System V / MLS  1988年AT&T Bell实验室的Flink II C.W. 和Weiss 发表了System V / MLS 系统的设计与开发成果。  以Unix System V为原型,以TCSEC B级为设计 目标。 2011-12-05 南京大学计算机系讲义 12

13. 7.1 可信操作系统研究的发展 安全TUNIS  1989年加拿大多伦多大学的Grenier G.L., Holt R. 和Funkenhauser M. 发表了安全TUNIS系统。  TUNIS(Toronto UNIversity System)是加拿大多伦多大学开发的一个 与Unix 兼容的操作系统,用强类型的Turing Plus高级语言编写。  安全TUNIS是以TUNIS为原型的安全操作系统。  Grenier等指出,如果不进行系统的重新设计,以传统的Unix系统为 原型,很难开发出高于TCSEC标准的B2级的安全操作系统,主要原 因是C语言不是安全语言,Unix的内部模块化程度不够。  Turing Plus是一个可验证语言,安全TUNIS的目标是B3-A1级。 2011-12-05 南京大学计算机系讲义 13

14. 7.1 可信操作系统研究的发展 ASOS  1990年TRW公司的Waldhart N.A. 和Di Vito B. L.等发表了ASOS系统 的设计与开发成果。  ASOS(army secure operating system)是针对美军的战术需要而设计的 军用安全操作系统。  从1984-1986,ASOS项目的过渡时期,产生了一个运行在 MCF(Military Computer Family)计算机原型上的DS操作系统原型。  1986-1989, ASOS项目组开发出了MLS(A1)和DS(C2)两个操作系 统。  ASOS项目在形式化验证中建立了两个层次的描述和证明,一个层 次用于抽象的安全模型,一个层次用于形式化的顶层描述。 2011-12-05 南京大学计算机系讲义 14

15. 7.1 可信操作系统研究的发展 多策略与信息域  一个信息域由一些信息对象、一些用户和一个信息安全策略构成。  支持多种安全策略的系统将拥有与安全策略数量一样多的信息域, 这样的系统有能力处理数量非常多的信息域。  每一个信息对象落在一个信息域中,受所落信息域的信息安全策略 控制。  每个信息域可以拥有自己的信息安全策略,几个信息域也可以共享 一个安全策略。  安全操作系统应该能够灵活地支持在一个计算平台上同时工作的多 种安全策略,应该能够与不同平台上能够支持相同安全策略的其他 操作系统进行互操作。 2011-12-05 南京大学计算机系讲义 15

16. 7.1 可信操作系统研究的发展 DTOS  1997年完成的DTOS(Distributed trusted operating system)以Mach为基础。  策略灵活性:采用安全判定与安全实施分离支持安 全策略的灵活性。  Mach兼容  性能接近Mach内核的性能 2011-12-05 南京大学计算机系讲义 16

17. 7.1 可信操作系统研究的发展 动态策略  从单一策略支持到多种策略支持,安全操作系统 迈出了向实际应用环境接近的可喜一步。  支持策略灵活性的系统  有能力对执行安全策略控制下的高级功能的低级对 象进行细粒度的访问控制  能够确保访问权限的传播与安全策略保持一致  有能力撤回先前已授予的访问权限 2011-12-05 南京大学计算机系讲义 17

18. 7.1 可信操作系统研究的发展 Flask体系结构  Flask是以Fluke操作系统为基础开发的安全操作系统原型。Fluke是 一个基于微内核的操作系统。  DTOS项目之后,Mach微内核的工作没有得到持续的支持,因而 NSA和Utah大学合作启动了Fluke保障计划项目,把DTOS安全体系 结构集成到Utah大学开发的Fluke操作系统中。同时,对该体系结构 进行了改造,后来形成的就是Flask安全体系结构。  安全性:主要的安全性目标是在DTOS安全体系结构的基础上建立 一个策略灵活的访问控制模型的原型,重点是对动态安全策略的支 持。  保障能力:保障能力目标是通过运用形式化描述和推理手段实现对 关键安全功能的验证。 2011-12-05 南京大学计算机系讲义 18

19. 7.1 可信操作系统研究的发展 SE-Linux  以Linux操作系统为基础,采用Flask安全体系结构。  Flask是基于微内核的系统原型,Linux是非微内核的操作 系统。  Flask项目完成后,作为Flask系统的主要开发者的美国国 家安全安全局(NSA)启动了把Flask的安全体系结构集成 到Linux操作系统中的项目  网络伙伴公司(NAI)的实验室、安全计算公司(SCC)和 MITRE公司等协助NSA完成集成工作。  NSA已经在Linux内核的主要子系统中实现了Flask安全体 系结构,这些子系统包括进程、文件和socket等操作的强 制访问控制。  NAI实验室与NSA合作进一步开发和配置这个安全增强 的Linux系统,SCC和MITRE协助NSA开发应用层的安全 策略和增强的实用程序。 2011-12-05 南京大学计算机系讲义 19

20.2. 操作系统面临的威胁

21. (1) 控制流篡改 — 缓冲区溢出攻击  int DoSomething(char *str){ char buffer[BUFFER_LEN]; strcpy( buffer, str); } buffer sfp ret address *str 地址低端 地址高端 2011-12-05 南京大学计算机系讲义 21

22. 缓冲区溢出攻击的危害  进程或内核的服务如果存在缓冲区溢出,可被 利用来  改变程序的控制流  加载并执行shellcode  修改内核资源  改变执行流程 最终达到:  攻击者能获得非法的权限  攻击者能非法地提升权限;  攻击者可以安装后门;  泄露内核机密信息。 2011-12-05 南京大学计算机系讲义 22

23. 一些缓冲区溢出攻击的例子  ping of death  Netmeeting  Linuxconf  IMAPD  AOL  Microsoft Windows 2000 ActiveX控件  IIS4.0/5.0 Phone book 服务器缓冲区溢出。  SQL Server 2000扩展存储程序缓冲区溢出。 2011-12-05 南京大学计算机系讲义 23

24.(2) 关键数据篡改 — 进程隐藏的攻击与检测  修改数据:攻击者可以在不修改内核代码和控制 流的情况下隐藏它们的进程。  修改ps所依赖的底层数据,使其无法看到被隐藏的 进程。  能够让进程调度程序调度被隐藏的进程。 2011-12-05 南京大学计算机系讲义 24

25. init_task hidden process run_list run_list run_list run_list tasks tasks tasks tasks pid gid pid gid pid gid pid gid uids uids uids uids per_cpu_runqueues prio_array bitmap array[0] active array[1] expired array[2] …… array[n] 2011-12-05 南京大学计算机系讲义 25

26. init_task hidden process run_list run_list run_list run_list tasks tasks tasks tasks pid gid pid gid pid gid pid gid uids uids uids uids per_cpu_runqueues prio_array bitmap array[0] active array[1] expired array[2] …… array[n] 2011-12-05 南京大学计算机系讲义 26

27. init_task hidden process run_list run_list run_list run_list tasks tasks tasks tasks pid gid pid gid pid gid pid gid uids uids uids uids per_cpu_runqueues prio_array bitmap array[0] active array[1] expired array[2] …… array[n] 2011-12-05 南京大学计算机系讲义 27

28. (3)隐蔽信道 高安全 高安全 引用监 级主体 级客体 控机制 × × × 低安全 低安全 级客体 级主体 引用监控 隐蔽 机制未控制 信道 的信息 2011-12-05 南京大学计算机系讲义 28

29.7. 不干扰模型 (3)隐蔽信道  例:假如两个用户要共享一个系统。这两个用户是分开的,每个用 户都有一个自己的虚拟机,并且他们不能直接通信。然而,他们根 据负载而共享CPU。  如果用户Matt(具有SECRET级别)运行一个需要占用CPU时间较长的 程序,用户Holly(具有CONFIDENTIAL级别)运行一个需要占用CPU 时间较短的程序,则Matt的程序将占用大部分的CPU时间。  这就提供了一条可供Matt和Holly通信的隐蔽信道。  他们先协商好共同的开始时间和时间片长度(例如,在中午12:00开 始,时间片长度为1分钟)。如果要传输比特1,则Matt就在这个时间 片运行他的程序;如果要传比特0,Matt就不在这个时间片运行他的 程序。  这样,每隔一分钟,Holly尝试运行一个程序,如果这个程序可以运 行,则表示Matt的程序没有占用CPU,所以要传输的比特是0;如果 这个程序在这个时间片内不能运行,则要传输的比特是1。在这个例 子中,虽然没有传统意义上的“写”,但信息却从Matt传到Holly, 从而违反了Bell-LaPadula模型的约束条件。 2011-12-05 南京大学计算机系讲义 29