从总体上看,设计安全内核与设计操作系统类似,要用到常规的操作系统的设计概念。在设计安全内核时,优先考虑的是完整性、隔离性和可验证性等3条基本原则,而不是那些通常对操作系统来说更为重要的因素,如灵活性、开发费用和方便性等。
采用从头开始建立一个完整的安全操作系统(包括所有硬件和软件)的方法在安全操作系统的开发中并不常见,经常遇到的是在一个现有非安全的操作系统(ISOS)上增强其安全性。基于非安全操作系统开发安全操作系统,一般有以下3种方法,如图4-4所示。
图4-4 安全操作系统的开发方法
1.虚拟机法
在现有操作系统与硬件之间增加一个新的分层作为安全内核,操作系统几乎不变地作为虚拟机来运行。安全内核的接口几乎与原有硬件编程接口等价,操作系统本身并未意识到已被安全内核控制,仍好像在裸机上一样执行它自己的进程和内存管理功能,因此它可以不变地支持现有的应用程序,且能很好地兼容ISOS的未来版本。
虚拟机法在KVM中运用得相当成功,这是由于硬件(IBM370)和原有操作系统(VM/370)的结构都支持虚拟机。采用虚拟机法增强操作系统的安全性时,硬件特性对虚拟机的实现非常关键,它要求原系统的硬件和结构都要支持虚拟机。因此,用这种方法开发安全操作系统的局限性很大。
2.改进/增强法
在现有操作系统的基础上,对其内核和应用程序进行面向安全策略的分析,然后加入安全机制,经改进、开发后的安全操作系统基本上保持了原ISOS的用户接口界面。
由于改进/增强法是在现有系统的基础上开发增强安全性的,受其体系结构和现有应用程序的限制,很难达到很高(如B2级以上)的安全级别。但这种方法不破坏原系统的体系结构,开发代价小,且能很好地保持原ISOS的用户接口界面和系统效率。
3.仿真法
对现有操作系统的内核做面向安全策略的分析和修改以形成安全内核,然后在安全内核与原ISOS用户接口界面中间再编写一层仿真程序。这样做的好处在于,在建立安全内核时,可以不必受现有应用程序的限制,且可以完全自由地定义ISOS仿真程序与安全内核之间的接口。但采用这种方法要同时设计仿真程序和安全内核,还要受顶层ISOS接口的限制。另外,根据安全策略,有些ISOS的接口功能不安全,从而不能仿真;有些接口尽管功能安全,但仿真实现特别困难。
下面利用改进/增强法对UNIX操作系统的某版本进行安全性增强,以此说明安全操作系统的开发方法。
在该版本UNIX操作系统中,系统运行状态分为用户态和核心态两种,认为运行于内核中程序的进程处于核心态,运行于内核之外程序的进程处于用户态。系统保证用户态下的进程只能存取它自己的指令和数据,而不能存取内核和其他进程的指令和数据,并且保证特权指令只能在核心态执行,如所有的I/O指令等在用户态下不能使用。用户程序只能通过系统调用进入核心态才能存取系统资源(文件、目录、设备等),运行完系统调用后又返回用户态。系统调用是用户在编写程序时可以使用的界面,是用户程序进入UNIX内核的唯一入口。一旦用户程序通过系统调用进入内核,便完全与用户隔离,从而使内核中的程序可对用户的存取请求进行不受用户干扰的访问控制。因此,UNIX支持存取控制机制的开发,从而支持安全性的增强。采用改进/增强法来达到对该版本UNIX操作系统的安全性进行增强的目的,如图4-5所示。其中以系统调用为基元,通过引入可信计算基机制,分别在系统调用中实现了安全强制存取控制、自主存取控制、审计、最小特权管理和可信通路等机制,并进行了对隐通道的分析和处理。另外,还新增加了一部分用以支持目前安全机制本身的系统调用。
(www.xing528.com)
图4-5 某版本UNIX操作系统的安全性增强设计方法
具体来说,对该UNIX操作系统主要进行如下安全性增强。
1)对UNIX实用程序进行面向安全策略的分析后将它们分成两部分:可信程序和一般应用程序。可信程序主要包括注册程序、用户管理程序和特权用户程序等,它们主要有两个来源:一部分是对原有程序进行安全性扩充来的,另一部分是新编写开发的,它们与核心的安全机制有关。
2)面向安全策略逐个分析UNIX系统调用的安全性。对所有涉及安全事件的系统调用进一步给出相应的安全检查策略,然后加入相应的安全检验机制。新增加一些系统调用,包括对审计机制相应的操作,主体安全级的设置和读取,客体安全级的设置和读取,以及特权操作等。
3)将核心程序分解为与安全相关的和与安全无关的两部分。与安全相关部分指涉及安全事件的系统调用的执行实体,可把在系统调用层不易实现的少部分安全检查放在这些核心程序中完成。另外新增加一部分核心程序,作为安全检查的执行体和新增加系统调用的执行体。安全操作系统的一般开发过程如图4-6所示。
图4-6 安全操作系统的一般开发过程
(1)建立一个安全模型
对一个现有操作系统的非安全版本进行安全性增强之前,首先要进行安全需求分析。也就是根据所面临的风险、已有的操作系统版本,明确哪些安全功能是原系统已具有的,哪些安全功能是要开发的。只有明确了安全需求,才能给出相应的安全策略。计算机安全模型是实现安全策略的机制,它描述了计算机系统和用户的安全特性。建立安全模型有利于正确地评价模型与实际系统间的对应关系,尽可能精确地描述系统安全的相关功能。
另外还要将模型与系统进行对应性分析,并考虑如何将模型用于系统开发之中,并且说明所建安全模型与安全策略是一致的。
(2)安全机制的设计与实现
建立安全模型后,结合系统的特点选择一种实现该模型的方法,使得开发后的安全操作系统具有最佳的安全/开发性价比。
(3)安全操作系统的可信度认证
安全操作系统设计完成后,要进行反复的测试和安全性分析,并提交权威评测部门进行安全可信度认证。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。