• 沒有找到結果。

嵌入式安全实时操作系统

在文檔中 嵌 入 式 系 统 应 用 开 发 (頁 119-122)

第 3 章 嵌入式操作系统

3.7 嵌入式实时操作系统发展趋势

3.7.2 嵌入式安全实时操作系统

随着 Internet 应用的广泛深入,计算机系统的安全问题日益引起人们的高度重视。操 作系统是连接计算机硬件与上层软件及用户的桥梁,它的安全性是至关重要的。

以网络为中心的计算基础设施领域面临的一个关键且悬而未决的问题就是病毒,无论 是恶意引入,还是错误代码所致(即程序误码),病毒或程序误码都可以通过自身繁衍,或 者耗尽系统内存或(和)CPU 时间来中断系统服务。对具有 Web 功能的手持设备来说,与 其发生交互作用的服务器、路由器和传送设备等基础设施都可能成为提供病毒发作的温 床。从信号处理到数据传输、Java 程序,以及客户机或服务器应用程序中的错误代码或别 的什么都孕育着病毒发作的机会。

仅就错误代码而言,可以说没有一个稍微复杂一点的程序能消除误码;程序代码越 长,误码就越多。在不断缩短的开发周期压力下,新的开发项目往往需要更大的编程团 队。而由这些团队生成的代码质量往往取决于该项目中能力最差的程序员。虽然调试程序 能检测出一些运行错误(即误码),但不能保证排除所有的错误代码。

流行的嵌入式平台,诸如PowerPC 和 MIPS 处理器,在其内存管理单元中自动带有内 存管理功能。但是,要充分享用这种硬件内存保护功能的优势,系统设计人员必须使用具 有内存保护的实时操作系统(RTOS)访问和使用处理器资源。

由于价格和功耗等因素,大多数嵌入式处理器都采用平面存储器模式。在平面存储模 式中,所有的应用程序和操作系统本身都在同一个地址空间运行。程序可直接存取操作系 统内核和数据。显然,系统可靠性有潜在的危险:一段恶意代码或一个不经意而造成的无 定义指针就能摧毁系统中的应用程序或内核本身。因此一个可靠系统的最基本也是最首要 的要求就是具备内存保护机制的RTOS。

病毒还能用别的方式影响在平面存储RTOS 中编写的应用程序吗?假设一个系统由两 个应用程序构成,每个程序各执行一项任务,且有相同的 CPU 优先级。RTOS 内核包括 一个调度程序,它自动分配任务的 CPU 占用优先级。在理想情况下,每个任务分享 50%

的 CPU 能力和时间。但是,假如其中一个程序由于恶意或错误出现问题,并衍生出 100 个额外的“帮凶”任务,现在就是 101 个坏任务(原来的任务加上它衍生的 100 个“帮 凶”任务),而不是一个任务同那个好程序分享 CPU 时间了。实际上,病毒就是通过衍生 大量“帮凶”任务与好程序抢食 CPU 的。这样一来,好程序不再能分享 50%的 CPU 时 间,而只能占用少于 1%的 CPU 时间。大多数内核调度程序都不能防止这种由衍生任务所 导致的对 CPU 资源的侵吞现象。当一个病毒出现时,它将造成正常任务严重短缺 CPU 资源。

一个典型的平面存储实时操作系统会有一个约占 10KB 内存的小内核。相比之下,一 个有内存保护机制的操作系统(如 Integrity RTOS)的内存占用达 70KB。由于无线手持设备 需要一些占用较大内存的 IP 堆栈及其他中间件,为发挥内存保护和保证资源可用的优 势,相对于平面存储系统来说增加内存占用量也不算过分。

除了内核提供的安全和可靠性外,一个先进的 RTOS 也支持高速缓存初始化、板卡内 存初始化和设备驱动程序,即所谓的板卡支持包(BSP)。但许多平面存储模式的内核不带 这种初始化代码。为了保证系统安全,RTOS 采用称为“时空域保护”的资源保护机制。

(1) 最小执行时间时域保护

时域保护机制可为一定优先级的任务或线程提供有确定比例的最小 CPU 执行时间。

系统开发人员为每一个任务分配一个“权重”或百分比。与前述的平面存储操作系统相比,

系统开发人员为两个任务各分配 50%的权重,并有同样的优先级。如果一个任务又遭到恶

意破坏并派生出 100 个“帮凶”任务,但好任务仍可保留 50%的 CPU 执行时间。有恶意病 毒的任务也获得 50%的执行时间,而现在这份执行时间被分配在 101 个任务上(最初的任 务加 100 个帮凶)。采用这种方式划分使用 CPU,RTOS 就能保持和保护好任务的完整 性,而且可将恶意病毒或程序误码隔离开来,以便识别和纠正。

(2) 分隔调度时域保护

分隔这一概念源于航空电子应用领域。出于对安全的考虑,并为了符合 Arinc 653 的 飞行器设计标准,一架飞行器上的 CPU 所执行的任务必须分隔开,以防止飞行器系统中 的一个误码错误危及另一个。例如,这样可阻止飞行器空中娱乐系统中的误码破坏导航 系统。

分隔调度程序按地址空间进行分隔,每一分隔区相当于一个地址空间。当一个地址空 间运行时,其中的所有线程都可以运行。通过系统开发人员的选择,在某一完整的周期 内,每个地址空间都被分配一个或多个执行时间窗。当某一地址空间窗开始运行时,内核 只运行该地址空间中的任务。因此,在其执行期间,该地址空间的 CPU 资源得以保障。

在某一应用程序中发作的任何病毒或误码都被限制在其分隔区内。同时使识别问题变得十 分容易,而且保证了其他区域不会短缺CPU 资源。

(3) 空域保护

许多操作系统都是从一个中心存储区来分发内存的。当某个任务创建了一个新的任 务,它就要求额外的内存。在这种处理方式中,任何应用程序都可以创建消息队列、任 务、信号标志或发出其他内存请求。所有这些内存请求都必须由那个中心存储区提供,它 通常为系统启动后所剩的可用 RAM。如果一个病毒或误码开始繁殖,并不断要求越来越 多的内存,这些要求很快就会耗尽中心存储区的内存,从而使整个系统崩溃。

为了防止这种情况发生,先进的 RTOS 采用一种叫做“硬通货”的解决方案。根据这 一方案,系统设计人员为每个地址空间分配一定限额的内存。那是它在运行期间所能用的 全部内存资源。

如果特定地址空间中的某个任务或一组任务编程有误,并超出了系统设计人员所分配 的内存份额,那它们就不能继续执行。而且,如果一个病毒或程序误码开始在某一特定地 址空间内衍生,内存限额机制会阻止病毒或误码感染其他地址空间。

这种空间域保护机制也适用于动态产品设计。系统设计人员为额外的升级或应用程序 留出足够的内存,以便让新的应用程序或升级版获得相应的内存份额。

地址空间的数目仅受制于处理器能力或内存容量,先进的RTOS 可处理无穷多个地址 空间、应用程序或任务。

在一个未分隔的系统中,对能访问各种系统设备的应用程序没有限制或控制。而在一 个具有分隔机制的 RTOS 中,只有系统设计人员才能定义那些可以存取某一设备(如文件 系统)的地址空间。如果一个手持设备的终端用户欲下载含有病毒或误码的数据、应用程 序或升级版本,系统设计人员能确保该应用程序不会存取文件系统及重要数据,并能确保 只有真正安全的应用程序才能获准存取数据。

在文檔中 嵌 入 式 系 统 应 用 开 发 (頁 119-122)