投递文章投递文章 投稿指南投稿指南 RSS订阅RSS订阅

网络与信息安全论文―具有安全权限的微内核操作系统模型

来源:iT堂整理 发布时间:2007-12-15 收藏 投稿 字体:【

摘要:操作系统的安全性在网络安全中同样有非常重要的影响,有很多网络攻击方法都是从寻找操作系统的缺陷入手的。互联网上传统Unix操作系统有先天的安全隐患,于是产生很多修补手段来解决它上面的安全问题。但是由于Unix本身结构的原因,在很多修补方案下,仍然存在系统隐患。本文提出了一种基于微内核的操作系统结构,可以从根本上解决操作系统端的安全问题。

关键字:微内核结构、消息调度模块、应用程序管理模块

1、   网络安全中可能存在的问题

网络安全问题包括很多方面很多环节,可以说任何一个方面一个环节出了问题,多会导致不安全现象的发生。不安全因素主要集中在网络传播介质及网络协议的缺陷、密码系统的缺陷、主机操作系统的缺陷。在现实运作中,密码系统已经非常完善,标准的DES、RSA和其他相关的认证体系已经成为公认的具有计算复杂性安全的密码标准协议,这个标准的健壮性也经受了成千上万网络主机的考验。但是在网络协议与操作系统本身上,仍然有很多可被攻击的人口。很多网络安全中的问题集中在操作系统的缺陷上。Unix及类Unix操作系统是在Internet中非常普遍的操作系统,主要用与网络服务。它的源代码是公开的,所以在很多场合下使用者可以定制自己的Unix操作系统,使它更适合网络相关的服务要求。由于网络协议是独立与操作系统的,它的体系结构与操作系统端是无关的,网络协议所存在的安全隐患也是独立于操作系统来修正的。本文主要讨论操作系统端可能存在的问题及可能解决方案。

 

2、   操作系统可能存在的安全问题

在操作系统端,安全问题主要集中在多用户的访问权限问题上。系统特权用户的权限非常大,他能够做系统所能做的任何事情。在Unix系统中,很多系统服务级的后台网络服务程序都拥有系统用户权限,可怕的是,这些后台程序的也是安全问题的最大隐患。Unix是一个巨大内核的操作系统,很多系统级的服务都放在内核中。如果这些服务程序有编程问题,问题也同时带到了内核级的权限中,这样,攻击者就有可能在内核级别进行恶意的操作了。因为没有任何错误的软件是很难存在的,所以只能容忍程序中错误的存在,而在系统结构上解决服务程序的问题。另外,进行严格的应用程序堆栈检查及堆管理,在安全问题上也十分重要。著名的对strcpy()函数攻击就是利用系统没有认真管理堆栈,而导致攻击者在自己的代码空间里获得系统用户权限。总之,如果操作系统能进行更严格的应用程序管理,就有可能使系统更安全。当然,操作系统也是一个计算机程序,任何程序都会有Bug的存在,操作系统也不会例外。那么,如何在承认有Bug存在的情况下尽量使系统安全呢?

 

3、   安全的操作系统结构

也许根本不可能存在一个绝对安全的系统,可是一个好的结构可以使一个系统更难被攻击。在通常被攻击的情况下,攻击者会想办法获得系统用户权限。不可能有编写完全无错程序的办法,那么能够用尽量少系统权限程序完成操作系统功能,是解决现实中有Bug程序的一条可行之路。使用微内核结构的操作系统可以有效的解决一些这样的问题。在微内核结构下,系统的核心只有一个消息调度核心,所有的其他模块通过消息与其他模块互相联系,而通信通过消息调度核心来传输。这样,真正具有系统用户权限的程序只有这个消息调度核心了,它是直接同各种硬件大交道的模块,所有的其他系统服务,如文件系统、内存管理、进程调度都运行在它之上。这样,系统权限的程序也只有消息调度模块,其他的模块可以缩小它在原来Unix系统中的权限了,就象一个国家的军队一样,各个军官拥有他本职范畴内的权力,只有非常少数军官拥有特权(这种特权军官必须存在,否则无法指挥大局),这样的军队系统被世界范围内公认为是最稳固的。这种操作系统的结构如图1,

文件管理模块
 
内存管理模块
 
进程管理模块
 
A
 
C
 
B
 
消息调度模块(内核层)
 
I/O管理模块
 
应用程序管理模块
 
时钟、中断信号
 
I/O硬件端口数据
 
图1,具有安全权限限制的微内核操作系统结构
 
  
 


在图1中,只有消息调度模块(内核层)具有系统权限,其他的服务与模块只有使其可以正常工作的最小权限。应用程序管理模块是以前的Unix/Linux系统所没有的,他主要负责应用程序的权限管理,A、B、C分别是各个应用程序。下面分别对各个模块的结构与功能作一个简单说明。

消息调度模块:这是整个操作系统中具有最高系统权限的模块,它在系统中无所不能,负责管理各种硬件资源,处理中断,I/O端口,并把这些消息发送给相应的处理模块。它也是其他模块间相互通信的中转,也是整个系统的内核。这是,系统的内核不做任何与服务有关的操作,它只是一个消息转发者,也只有它才会和直接硬件打交道。消息调度模块拥有最高的系统权限,但是它不完成任何系统功能,这样也屏蔽了对系统恶意攻击者取得其他权限后,从而攻击消息调度模块的可能。

进程管理模块、文件管理模块、内存管理模块、I/O管理模块:与传统Unix系统中相应的功能模块类似,完成相应的功能。但是在微内核操作系统中,文件管理、内存管理、I/O管理模块不在具有系统用户权限,而只具有与用户程序相同的执行权限,这样可以至少保证文件管理、内存管理、I/O管理的程序错误不会涉及到系统级的安全问题。进程管理模块被赋予比消息调度模块次一级的系统权限,这是因为可以运行多个进程管理模块,产生多个虚拟机。从原则上看,进程调度模块是代码比较简单,不容易出错的模块。进程管理模块中同样包括权限过滤的代码,这段代码必须保证完全真确,才能作为其他模块正常权限工作的保证。所以在保证程序质量的前提下,进程调度模块并不会轻易的受到攻击。由于其他系统服务模块已经没有系统权限了,所以安全问题已经好转很多。文件管理模块由于涉及文件操作,需要访问硬件,所有的操作由进程管理模块过滤,会很容易的去掉那些不符合权限要求的文件请求。在内存管理模块中,应该加入栈越界的代码,而不象传统Unix那样不做任何边界检查,这样象那些用Strcpy又不喜欢进行边界检查的程序就在也不会收到更改返回地址的攻击了。现在即使这段代码非常复杂,也不会象传统巨型内核的Unix那样轻易的导致系统崩溃。I/O管理一般不会成为攻击对象,在微内核结构中,它更加不可能成为攻击对象了,因为I/O管理程序运行在普通用户级别上。图2是这几个模块的结构和具有的功能,

1、  为上层模块提供一个虚拟机

2、  传统Unix的进程调度

3、  对上层的请求进行权限过滤
 
1、  传统Unix的内存管理

2、  边界检查,栈管理,堆管理
 
进程管理模块
 
内存管理模块
 
1、传统Unix的文件管理
 
1、传统Unix的I/O管理
 
文件管理模块
 
I/O管理模块
 
图2,进程管理、内存管理、文件管理、I/O管理的结构功能
 
 
 


  应用程序管理模块:这是在微内核操作系统中新增加的模块,负责对用户应用程序进行管理。应用程序管理模块把应用程序请求的系统调用排队放入一个队列后,向消息调度模块发送,用户程序不由进程管理模块直接控制,有利与进程管理模块的简单性,保证进程管理模块的代码质量。而且,应用程序模块的编程Bug不会波及其他重要的系统服务模块。应用程序管理模块不进行权限的检测与控制,但是它可能接收进程管理模块发来的权限错误消息。

 

4、   系统特性和总结

微内核的结构可以保证最小的模块和代码获得最大的权限,系统的安全性也就随之增强

了许多。能够运行在系统级权限的模块只有消息调度模块――微内核的核心,其他的服务模块只能以与用户权限相同的权限执行。而且,由于各个模块都比较简单,所以在编码上也不容易出错,代码维护也比巨大内核的Unix系统容易。也许,在代码精简方面与容易编程方面微内核的优势更加明显,甚至超超过了体系结构的变化带来的系统安全性。

主要参考资料

1、唐礼勇 “网络与信息安全”研究生讲义 安全程序设计1、2

2、陈钟 “网络与信息安全”研究生讲义 密码技术基础1、2、3、4、5

3、Andrew S.Tanenbaum, Albert S.Woodhull “Operating System Design and Implementation”

最新评论:
评论内容:请自觉遵守互联网相关政策法规。
用户名: 密码: 匿名 注册
热门文章
随机推荐
About iTtang - 联系方法  - 专题列表 - 友情链接  -  高级搜索   -  帮助中心  -