APP下载

操作系统安全分析方法探讨

2013-05-09周夏芳北京全路通信信号研究设计院有限公司北京100073

铁路通信信号工程技术 2013年1期
关键词:实时性内核进程

周夏芳(北京全路通信信号研究设计院有限公司,北京 100073)

周夏芳,女,硕士毕业于西南交通大学,工程师。研究方向:安全平台,安全保障,参与项目:DS6-60计算机联锁系统开发、DS6-60e全电子计算机联锁系统开发、DS6-60计算机联锁系统安全认证、DS6-60e全电子计算机联锁系统安全认证.获取专利:一种用于轨道交通区域联锁和站间通信的系统(2012,ZL.2009.1.0158488.X);一种二乘二取二主备控制切换系统和方法(2012,ZL.2009.1.0235437.2);一种二乘二取二系统的同步方法和设备(2012,ZL.2009.1.0237497.8).

1 概述

操作系统是一种为应用程序提供服务的系统软件,它位于底层硬件和上层应用软件之间,负责系统资源的分配与管理。在安全控制系统中使用操作系统,能为系统开发、产品功能实现带来巨大便捷。

然而使用操作系统也会带来很多的问题[1]。首先,很多通用的操作系统不具备完整清晰的行为定义,使得应用设计人员无法明确操作系统在具体应用环境中的行为;其次,操作系统的类型很多,同一类型下的操作系统往往也有不同选择,操作系统的行为是否能够满足应用的要求需要慎重考虑;最后,操作系统和其他类型的已开发的软件组件不同,它是计算机硬件和应用软件的接口。操作系统向应用提供的服务失效,不可避免会导致应用软件的失效,而在大多数情况下,应用软件无法对此进行防御,有时必须依靠硬件的防御机制来应对操作系统的失效。

本文根据参考文献[2,3],描述了一种在安全控制系统中采用通用操作系统的分析方法及标准。

C1.操作系统的行为应被准确定义,从而尽可能避免由于应用软件的设计人员对操作行为的误解而引入的风险;

C2.操作系统各方面的行为必须适合于安全应用;

C3.操作系统应具备足够的可靠性。

本文以Linux操作系统为例,分别对特定操作系统如何满足C1、C2、C3标准进行具体阐述。

2 C1操作系统行为的定义

操作系统的行为可分为功能、实时性、容量等多方面[3]。应用设计人员必须准确理解操作系统行为,才能在操作系统支持下完成上层应用软件的正确开发。

系统性的测试能发现大多数由于应用设计人员对操作系统行为误解带来的软件缺陷,但不一定能找出所有这样的缺陷。因此,通过对操作系统行为的完整定义,使得应用设计人员能够准确的理解操作系统行为,对整系统的功能正确性至关重要。

操作系统行为的定义通常有如下形式:完整的用户手册,包括所有的接口函数定义、正常及异常执行时的系统反应等。或者,操作系统源代码是开放的,并具备良好的可读性,应用设计人员可以通过代码本身来理解操作系统的行为。

对于Linux操作系统,可以找到这样一些证据来证明其行为经过明确定义,可以被应用设计人员很好地理解。

1)Linux遵循POSIX[4]标准。POSIX(Portable Operating Sy stem In ter face for Com pu ting Sy stem s)是由IEEE和ISO/IEC开发的标准。该标准描述了操作系统的调用服务接口,用于保证编制的应用程序源代码可以在多种操作系统上移植。

2)L in u x遵 循 LSB标 准。LSB(L in u x Standard Base)可以说是Linux的工业标准,它保证了Linux发行版同Linux应用程序之间的良好结合。它是一个二进制接口规范,使应用程序在系统间迁移时不用重新编译,保证了应用程序在不同Linux发行版上都具有兼容性。

3)很多关于L inu x操作系统及操作系统内核研究的著作,如文献[5]等,有利于开发者对操作系统行为以及接口的理解。

4)Linux文档计划(LPD)提供了许多有用的Linux操作系统文档资源[6]。

5)由于L inux是开源的操作系统,因此如果发现有不清楚的行为,可以在论坛或向LDP寻求帮助。

此外,还有对L in u x应用技能的认证——LPI认证[7],它是站在一个中立的、第三方的角度,对L in ux广泛和通用的技术水平进行考核。应用设计人员具备LPI认证资质,可以更好地保证产品设计者准确理解使用的操作系统行为。

3 C2操作系统适合于应用

根据参考文献[3],并结合操作系统的特性,可以从以下几方面考虑操作系统是否适合于安全应用。

3.1 功能性要求

3.1.1 分区

如果安全相关应用需要多个进程协同工作,操作系统应能提供对资源进行安全管理的手段。这就是分区。分区能防御由于共享资源带来的风险,包括以下内容。

空间上的分区:能防止一个分区改变另一个分区的数据或软件,屏蔽另一分区输出设备的命令。

时间上的分区:能保证一个进程一定能获得CPU处理时间,一定能访问到某个物理设备,而不会受其他进程的影响。

L in u x系统在空间上的分区体现为内核空间和用户空间的划分,时间上的分区则体现在其内核调度策略上。

3.1.2 自发行为

操作系统会有一些非应用命令引起的自发行为(如每天定时执行,或由于某些内部限制到达后执行的清扫功能)。这些行为会增加应用调用操作系统服务的响应时间。影响较大时,可能会导致输入请求响应时间的偏差,或系统吞吐量的变化。安全应用设计时,应考虑操作系统的自发行为是否会对整系统性能产生不可接受的影响。

L in u x并不存在过多的自发行为,它其中的一个自发行为是:每次写文件时并不直接写入磁盘,而是写入磁盘高速缓存中对应页(写过的页面被标记为脏页)。内核线程会定期将脏页更新到磁盘,同时将更新后的脏页回收。这种自发行为可以在文件打开时选择禁止,绕开磁盘高速缓存,直接与块设备打交道,但应该考虑到磁盘I/O性能会因此降低。3.1.3 未使用功能的可移除性

对于任何安全相关应用来说,对于操作系统中未使用的功能都希望可以移除,以防止对应用产生不可预期影响。由于L in u x是以源码形式提供的,它可以做到只有满足安全应用需要的设备驱动和文件系统才被封装进内核。

3.2 实时性要求

系统根据对实时性要求的不同可分为硬实时系统、软实时系统和非实时系统。

硬实时系统有一个刚性、不可改变的时间限制,要求系统要确保任务执行最坏情况下的服务时间,即对于实时事件响应时间的截止期限必须得到满足,否则会破坏系统造成致命的错误;

软实时系统也有一个时间限制,并希望满足该时限的要求。但它是一个柔性的,并不是强制的。它可以容忍偶然的超时错误,即使过了最后时限,任务的执行仍然是有意义的,不会给系统带来致命的错误;

非实时系统对时间没有限制,哪怕是最高优先级任务开始执行的最后时限也无法得到保障。

标准L inux是多任务多用户的分时操作系统,尽管系统通过为实时任务赋予较高优先级使得系统具有一定的实时性,但对于大多数时限要求较高的实时性任务来说,还是远远达不到其对于时间约束的要求。Linux中影响实时性的机制主要有以下几方面。

1)关中断。在系统调用中,为了保护临界资源,Linux处于内核临界区时,中断会被系统屏蔽,这就意味着如果当前的进程正处于临界区,即使它的优先级较低,也会延迟高优先级的中断请求。

2)进程调度。Linux内核是不可抢占的,采用基于固定时间片的可变优先级调度。这对一些要求高优先级进程立即抢占CPU的实时应用是不能满足要求的。

3)最小时钟分辨率。可根据特定应用的实时调度要求调整L in ux最小时钟分辨率,但需考虑由于Linux的进程切换以及频繁时钟中断导致系统开销。

如果系统对实时性要求较高,可以考虑采用RTLinux。它是Linux中的一种实时操作系统,它在L inux内核与硬件之间增加了一个虚拟层,构筑了一个小的、时间上可预测的、与Linu x内核分开的实时内核,使得在其中运行的实时进程能够满足硬实时要求。

3.3 容量要求

操作系统的容量要求指操作系统应可满足特定应用所需要的资源。

系统资源是由操作系统内核来进行统一分配和管理的,例如进程表、文件描述符表等。L in u x的表容量通常足够大,并不会对安全相关应用带来问题。

3.4 健壮性要求

软件的健壮性是指软件在异常输入或苛刻环境条件下能保持正常工作的程度。它有两层含义:一是差错屏蔽能力,指发生异常时系统能不出错的能力;二是差错恢复能力,指发生错误后重新运行时,恢复到没有发生错误之前状态的能力。

操作系统的健壮性可以通过3类异常来考虑:用户进程的非预期行为、外设失效、硬件平台(CPU或内存)的失效。

L in u x对健壮性的要求可通过以下特性得到满足。

1)L inu x的系统调用要对入参进行检查,入参错误时转入异常处理逻辑,因此非法调用不会导致内核崩溃;Linux内核由虚拟内存管理系统保护,用户进程不能直接访问内核空间;内核会跟踪用户进程的异常并向用户进程产生错误报告。

2)外设失效的解决办法依赖于外设驱动。外设失效多表现为响应超时,这时通常会向用户进程返回一个错误信息。

3)如果内核本身产生了异常(如访问到非法内存,或CPU计算错误等),操作系统不会恢复,所有应用进程都会被终止。内核会尝试输出一个错误信息。内核不会自重启,如果应用有重启要求应采用其他解决办法,如使用看门狗。

4 C3操作系统的可靠性

操作系统的可靠性指操作系统支持应用软件稳定运行的能力。根据参考文献[3],可以从以下几方面来搜集操作系统可靠性的证据。

4.1 行业使用经验

L in u x被广泛使用于PC机、服务器和嵌入式系统。根据Linux Cou ters Project[8]的统计,约12万L in u x用户在该网站进行了注册登录。由此得出的估算数字是,世界各地共约有6 400万的Linux用户。

4.2 测试

应尽量选择已具备可信、完整的测试报告的操作系统。由于操作系统的复杂性,通常较难以搜集完整的测试证据。对于特定的应用,至少应结合系统的具体功能进行完整的测试。

目前了解到的部分Linux测试内容如下。

1)LTP(Linux Test Project)对Linux可靠性、健壮性、稳定性的测试。

2)LSB工作组对Linux发行版是否符合LSB标准进行的测试。

3)BA LLISTA计划对Lin ux健壮性的测试。测试结果参见参考文献[9]。

4.3 软件质量的分析

如具备条件,可以对操作系统的软件质量进行分析,或搜集相关分析证据。参考文献[10]对Linux内核软件质量进行了初步的分析。

5 结论

针对通用操作系统在安全控制系统中的适用性,本文描述了一种通用的分析方法及衡量标准,并以L in u x操作系统为例,说明了特定操作系统满足该标准的论证方法。然而除了对操作系统的适用性进行通用的分析,还应结合具体应用,对使用的操作系统功能进行失效分析,并针对可能的风险提出具体失效防御措施。

[1] Pumfrey, D.J. The Principled Design of Computer System Safety Analyses[M]. DPhil Thesis, University of York,1999.

[2] Civil Aviation Authority, Safety Regulation Group, Requirements for the Use of Operating Systems in Satety Related Systems[R]. report OS01, Parts 1 and 2, 1998.

[3] CAP 670, Air Traffic Services Safety Requirement[S]. section SW01 “Regulatory Objectives for Software Assurance in ATS Equipment”,Civil Aviation Authority, Satefy Regulation Group ,2012.

[4] ISO/IEC 9945-1, Information Technology Portable Operating System Interface(Posix)[S]. Part1: System Application Program Interface (API) [C Language], 1996.

[5] D P. Bovet & M Cesati. Understanding the Linux Kernel[M]. O’Reilly & Associates Inc, 2001.

[6] http://www.linux.org/docs/index.html

[7] http://www.lpi.org

[8] http://linuxcounter.net

[9] Koopman P. Comparing the Robustness of POSIX Operating Systems[J]. Proc. 29thAnnual Symposium on Fault Tolerant Computer Systems,15-18 June 1999, Madison, Wisconsin.

[10] H.R. Pierce. Preliminary Assessment of Linux for safety related systems[R]. Research Report 011, 2002.

猜你喜欢

实时性内核进程
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
微软发布新Edge浏览器预览版下载换装Chrome内核
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
一种车载Profibus总线系统的实时性分析
社会进程中的新闻学探寻