消息调度模块:这是整个操作系统中具有最高系统权限的模块,它在系统中无所不能,负责管理各种硬件资源,处理中断,I/O端口,并把这些消息发送给相应的处理模块。它也是其他模块间相互通信的中转,也是整个系统的内核。这是,系统的内核不做任何与服务有关的操作,它只是一个消息转发者,也只有它才会和直接硬件打交道。消息调度模块拥有最高的系统权限,但是它不完成任何系统功能,这样也屏蔽了对系统恶意攻击者取得其他权限后,从而攻击消息调度模块的可能。
进程管理模块、文件管理模块、内存管理模块、I/O管理模块:与传统Unix系统中相应的功能模块类似,完成相应的功能。但是在微内核操作系统中,文件管理、内存管理、I/O管理模块不在具有系统用户权限,而只具有与用户程序相同的执行权限,这样可以至少保证文件管理、内存管理、I/O管理的程序错误不会涉及到系统级的安全问题。进程管理模块被赋予比消息调度模块次一级的系统权限,这是因为可以运行多个进程管理模块,产生多个虚拟机。从原则上看,进程调度模块是代码比较简单,不容易出错的模块。进程管理模块中同样包括权限过滤的代码,这段代码必须保证完全真确,才能作为其他模块正常权限工作的保证。所以在保证程序质量的前提下,进程调度模块并不会轻易的受到攻击。由于其他系统服务模块已经没有系统权限了,所以安全问题已经好转很多。文件管理模块由于涉及文件操作,需要访问硬件,所有的操作由进程管理模块过滤,会很容易的去掉那些不符合权限要求的文件请求。在内存管理模块中,应该加入栈越界的代码,而不象传统Unix那样不做任何边界检查,这样象那些用Strcpy又不喜欢进行边界检查的程序就在也不会收到更改返回地址的攻击了。现在即使这段代码非常复杂,也不会象传统巨型内核的Unix那样轻易的导致系统崩溃。I/O管理一般不会成为攻击对象,在微内核结构中,它更加不可能成为攻击对象了,因为I/O管理程序运行在普通用户级别上。图2是这几个模块的结构和具有的功能,
应用程序管理模块:这是在微内核操作系统中新增加的模块,负责对用户应用程序进行管理。应用程序管理模块把应用程序请求的系统调用排队放入一个队列后,向消息调度模块发送,用户程序不由进程管理模块直接控制,有利与进程管理模块的简单性,保证进程管理模块的代码质量。而且,应用程序模块的编程Bug不会波及其他重要的系统服务模块。应用程序管理模块不进行权限的检测与控制,但是它可能接收进程管理模块发来的权限错误消息。
4、 系统特性和总结
微内核的结构可以保证最小的模块和代码获得最大的权限,系统的安全性也就随之增强
了许多。能够运行在系统级权限的模块只有消息调度模块――微内核的核心,其他的服务模块只能以与用户权限相同的权限执行。而且,由于各个模块都比较简单,所以在编码上也不容易出错,代码维护也比巨大内核的Unix系统容易。也许,在代码精简方面与容易编程方面微内核的优势更加明显,甚至超超过了体系结构的变化带来的系统安全性。
主要参考资料
1、唐礼勇 “网络与信息安全”研究生讲义 安全程序设计1、2
2、陈钟 “网络与信息安全”研究生讲义 密码技术基础1、2、3、4、5
3、Andrew S.Tanenbaum, Albert S.Woodhull “Operating System Design and Implementation”
RSS订阅







收 藏
推 荐