论文部分内容阅读
操作系统安全一直是计算机领域内一个重要的课题,如何构建一个安全并且高效的操作系统,是安全操作系统研究的目标。从根本上来说,系统安全的基础是硬件提供的安全机制,如何充分的利用硬件安全机制,建立一个安全的系统结构,就是本文的主题。
Intelx86结构是发展非常成熟的系统硬件结构,得到了广泛的使用,同时,它提供的硬件安全保障机制也是非常完备和复杂的。因此,本系统结构采用Intelx86结构作为硬件基础。
一直以来,操作系统的内核设计有两个方向,微内核结构和单内核结构。这两种结构各有优势,微内核结构的特点是内核足够小,系统服务可以当作上层应用来开发,可扩充性好,然而由于内核服务模块都是以进程的形式运行,决定了它们之间的交互完全是通过进程间通信来完成,如果通讯机制设计的不好,就可能严重的影响系统效率;单内核结构的特点是将系统所有的服务都放在内核中,内核的体积变得庞大,可扩充性差,但是由于模块的交互变得简单,所以系统的效率高。
Linux是典型的单内核操作系统,由于它是开放源代码的,因此,在它的基础上开发安全应用(如防火墙、IDS等)是非常方便的。另一方面,Linux是经过分散在世界各地人们的努力而开发完成并完善的系统,这样的开发过程本身就决定了Linux一定是一个模块化非常好的操作系统。然而,为了提高效率,Linux仍然将这些模块都放在了内核,同时,为了提高可扩充性,Linux提出了动态插入模块的思想,使应用程序的代码能在内核空间内运行,从而使得应用程序能改变内核的行为。然而,并非所有的模块都是安全或通过认证的,一个恶意的模块可以轻易的破坏内核的完整性和可用性。Linux自身在安全性方面的缺陷决定了它并不是开发安全应用的可靠系统。然而,Linux是开放源代码的,因此,将它作为原型参照系统开发,可以大大的缩短开发周期。在本系统中,借鉴了许多Linux中已经成熟的技术,并在这些技术的基础上做了一些改进。
通过对系统内核进行分层,将系统提供的服务分离出去,将系统内核变得最小,这样能使内核安全性可以容易得到验证,并且内核完整性也能得到保证。另一方面,对系统内核被分离出去的系统服务进一步分区,也就是模块化,可以使系统动态加载的模块对其他已有模块的访问都处于安全内核的监督之下,安全内核不但能控制模块间的互相访问,而且可以记录模块访问的轨迹,便于对攻击的进一步的分析。
在本系统的实现方面,本文主要解释和安全相关的内存管理以及系统FO的实现。