下文是美国电气与电子工程师学会计算机学会《IEEE Computer》2006年第5期的一篇论文“Can We Make Operating Systems Reliable and Secure”,作者Andrew S. Tanenbaum、Jorrit N. Herder、Herbert Bos。
长期以来微内核体系结构由于其性能较单核结构逊色而被人忽视。如今微核结构有可能由于其潜在的高可 靠性而重新风光,因为现在许多研究人员把可靠性看得比性能更为重要。
您什么时候碰到过一台电视机出现系统崩溃或者需要您去网络上下载什么紧急的软件升级补丁?除非那是一台极为老久的机器(即使如此也不会麻烦您去软件升级,只不过需要更换零部件罢了-译者注)。而一台新的电视机只不过是一个由一颗处理器、一个大屏幕监视器、一些解调无线电信号的模拟电子部件、一些特殊的(相对于一般计算机而言)读写(I/O)设备:遥控器、内置卡式录像带机或DVD驱动器以及ROM里的一些软件组成的计算机而已。
这一问,触及到计算机界人士讳莫如深的一个难堪的“秘密”,为什么电视、DVD录像机、MP3播放器、移动电话和其他软件驱动的电子设备都十分可靠、安全,而计算机却做不到呢?当然有许多“解释”,比如计算机是可变的、计算机可以允许用户改变软件、信息技术产业还不成熟等等。但是,当我们步入一个绝大部分的计算机用户是非专业技术人员的时代时,上述理由对于他们来说,就看起来越来越像是毫无说服力的借口。
消费者对于计算机的期待和对电视机一样:买了以后,插上电源,就能完美地工作10年。作为信息技术的专业人员,我们必须面对这个挑战,并且尽量使计算机像电视机 一样可靠安全。
要做到可靠和安全,最大的障碍就是操作系统。虽然应用程序也存在着许多缺陷,但是如果操作系统没有毛病,应用程序中的缺陷只能产生有限的破坏。因此我们将集中讨论操作系统。
然而,在进入细节之前,有必要先说明一下可靠与安全之间的关系。这两个方面的问题一般都是由相同的原因造成的,即软件中的缺陷。一个缓冲区溢出错误会导致系统崩溃(可靠性问题),也会让精心编写的病毒或蠕虫接管计算机(安全性问题)。尽管我们主要关注可靠性,但在改善可靠性的同时也会提高安全性。
系统为什么不可靠?
当前的操作系统有两个特征使得它不可靠、不安全:一是规模巨大,二是故障隔离的性能很差。Linux内核拥有超过250万行的代码。Windows XP的内核则是前者的2倍还多。
一项关于软件可靠性的研究表明:每1000行可执行代码中会包含6~16个缺陷[1],而另一项研究则估计可执行代码的缺陷密度(fault density)为每千行2~75个[2]。按照每1000行代码中有6个缺陷的保守估计,Linux内核大约存在15000个缺陷,而Windows XP中的缺陷至少是它的2倍。
更糟糕的是,通常大约70%的操作系统带有设备驱动程序,而这些驱动程序的失效密度是普通代码的3~7倍,所以上面提到的缺陷数可能在总体上被低估了[3]。显然,发现并修正所有的缺陷是根本不可行的,更何况缺陷的修补经常会引入新的缺陷。
当前操作系统的巨大规模意味着没有人能够理解其全部情况。显然,在没有人真正很好理解一个系统的情况下要将其工程化是极为困难的。
这给我们提出了第2个议题:故障隔离。没有哪个人能弄懂航空母舰的全部零件是如何工作的,但其子系统都实现了彼此很好地隔离,这样就不至于产生厕所阻塞影响到导弹发射子系统的问题。
操作系统的各个部件没有这种隔离。现代操作系统包含成百上千个链接在一起的过程,作为一个独立的二进制程序以内核的形式运行。在这几百万行内核代码中,每一行都能够重写与之无关的组件使用的关键数据结构,从而以很难检测到的方式造成系统崩溃。此外,如果病毒或者蠕虫感染了一个内核过程,我们也无法阻止它快速蔓延至其他子程序并控制整台机器。
回到舰船的例子。现代舰船的船壳内分成许多隔间。如果某一个隔间出现了裂缝,只有这个隔间漏水,不会影响整个船体。当前的操作系统就像隔间发明之前的船只,每一个漏缝都能使整只船沉没。
所幸研究人员正在研究构建更可靠的操作系统。下面我们根据方法的“彻底性”按照从最保守到最激进的次序介绍四种不同途径。(待续)
相关推荐
本文介绍了一个基于Linux操作系统的安全设计和实现,通过添加SMS/OS管理软件,实现了一个B1级安全的Linux操作系统。该系统的设计和实现主要解决了计算机系统的安全问题,确保了计算机系统中的硬件、软件及信息的机密...
因此,操作系统安全是计算机信息系统安全的一个不可缺少的支柱,对安全操作系统进行研究具有重要的意义。 操作系统安全内容: 2002年7月,我国发布并实施保护操作系统技术的安全标准GA/T388-2002,即《计算机信息...
操作系统的主要目标是提供一个高效、安全、可靠的计算环境,帮助用户更好地使用计算机。 操作系统的发展历程 操作系统的发展可以追溯到计算机的早期阶段,当时操作系统只是简单的批处理系统,逐步发展到多道批处理...
测试依据的标准是GB/T20272《信息安全技术 操作系统安全技术要求》,基于GB/T18336《信息技术 安全技术 信息安全技术评估准则》的通用要求。 获得认证证书后,保持认证证书有效是申请方的责任。如果需要扩展认证...
其中,安全操作系统是整个信息系统安全的基础。 本文主要介绍了 Linux 安全操作系统的构建方法与技术,包括安全操作系统的设计目标、构建过程及相关方法与技术。尤其是各种安全机制的实现原理。 在 Linux 安全操作...
Linux操作系统是一个开源的操作系统,具有高度的可扩展性和可靠性,可以满足安全操作系统的要求。 然后,需要了解安全操作系统的测试方法。安全操作系统的测试方法可以分为静态测试和动态测试两种。静态测试是指在...
凝思安全操作系统V6.0.60是一款专为安全性...总的来说,凝思安全操作系统V6.0.60的安装手册是一个全面的指南,涵盖了从准备工作到安装后的维护的所有细节,旨在帮助用户顺利完成安装并开始使用这个安全可靠的操作系统。
SAFERTOS作为一款专门为安全关键型应用设计的实时操作系统,不仅提供了卓越的性能和可靠性,还通过预认证大大简化了最终产品的认证流程。对于那些需要满足严格安全标准的项目来说,SAFERTOS无疑是一个理想的选择。...
《orange's一个操作系统的实现-【自己动手写操作系统第二版】》是一本深入浅出的操作系统构建指南,作者为于渊。这本书旨在帮助读者通过实际操作来理解操作系统的原理和构造,适合对操作系统感兴趣的DIY爱好者和...
从以上内容可以看出,麒麟操作系统安全体系的构建是一个复杂而全面的过程,涵盖了从硬件到软件的各个层面。麒麟软件在操作系统研发上注重安全性与技术标准的领先性,致力于为用户提供一个安全可靠的操作环境。同时,...
操作系统安全配置管理办法旨在指导和规范 XX 公司信息通信分公司信息系统的操作系统安全配置方法和日常系统操作管理,以提高重要信息系统的安全运行维护水平,规范化操作,确保信息系统安全稳定可靠运行。...
其次,我们有深度 Linux(Deepin),它是一个致力于为全球用户提供美观易用、安全可靠的 Linux 发行版。深度 Linux 不仅仅对最优秀的开源产品进行集成和配置,还开发了基于 HTML5 技术的全新桌面环境、系统设置中心...
2022年物联网操作系统安全白皮书 本白皮书旨在指出能有效保护物联网操作系统的安全机制、安全体系以及安全技术,推动适合于物联网设备及操作系统的安全技术的研发和应用。下面是从白皮书中提炼出的相关知识点: 一...
云操作系统的目标是提供一个能够支持大规模分布式计算、资源调度和安全管理的平台,使用户可以按需获取计算资源。 云计算的概念基于分布式计算、并行计算和网格计算的技术基础,通过互联网将计算任务分发到多台...
操作系统安全性是指操作系统中的一系列安全机制和技术,旨在保护操作系统和用户数据免受未经授权的访问、泄露、修改和破坏。操作系统安全性包括系统级安全管理、用户级安全管理、文件级安全管理、通信网络安全管理和...
总结来说,"Linux文件系统安全可靠机制的研究与实现"这一研究提出了一个新的方法来增强Linux操作系统的安全性。通过限制物理存储空间和实现用户空间与系统空间的隔离,SpaceFS能够在保护操作系统免受篡改的同时,为...
本文的目的在于设计并实现一个高效的 64 位操作系统,以适应当前计算机硬件的发展和软件需求的增长。该操作系统将具有以下特点:支持 64 位地址空间和处理器架构;提高系统运行效率和稳定性;增强系统安全性和可靠性...
智能汽车操作系统安全性和可靠性设计 智能汽车操作系统是汽车电子电气架构(EE Architecture)的核心组件,负责管理和控制汽车的各种功能。随着汽车智能化的发展,智能汽车操作系统需要满足越来越高的安全性和可靠...
Cloud Kernel龙蜥操作系统是一款专为云环境设计的高性能、高安全性的操作系统,它的核心在于优化了传统的Linux内核,以更好地适应云计算的需求。本文将深入探讨基于Cloud Kernel龙蜥操作系统进行自动化缺陷检测、...