电子工程专辑
UBM China

提高嵌入式操作系统安全性的最优方法

上网日期: 2012年08月15日 ?? 作者: Bill Graham ?? 我来评论 字号:放大 | 缩小 分享到:sina weibo tencent weibo tencent weibo


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友

关键字:嵌入式操作系统? 安全性? RTOS?

作者:Bill Graham

产品营销经理

风河公司

本文讨论了在嵌入式系统设计中需要注意的一些最佳安全保护措施,特别是那些在任务中需要使用的实时嵌入式操作系统(RTOS)和常用于工业与医疗设备中的安全关键系统(SCS)。

在过去的一年里,安全性嵌入式开发人员来说已经迅速提升到最重要的位置。虽然Stuxnet蠕虫病毒唤醒了嵌入式行业的安全意识,但从那以后仍然发生了其它许多值得注意的事件。例如,像在CBS新闻中报道的那样,攻击者能够获得对家用胰岛素泵的控制,并改变它的设置参数,从而可能严重危害病人的人身安全。

另据CNN最近报道,在南休斯顿一位攻击者获得了对控制水处理工厂部分设施的SCADA系统人机界面(HMI)的控制。在这个案例中,HMI安全性方面仅采用了一个很容易被人猜到的口令。

安全性现在已经成为嵌入式开发人员最优先考虑的方面,因为他们创建的系统能够并且很可能被用于一些重要的基础设施,而这些基础设施的自动化程度正越来越高,而且通常是联网工作的,在某些情况下还可能与外部世界相连。

某些类别的设备已经具有一定的安全性,因为从这些设备的初始概念开始安全性就是第一要求,比如政府和部队使用的通信设备。然而,大部分设备都具有潜在的不安全性。重要的是要认识到,没有设备是绝对安全的,开发人员需要通过良好的设计、编程和配置来努力提高安全性。

最佳安全措施

业界已经有许多基本规则和原则可以用来在开发产品过程中指导设计与开发决策(下表1)。首先也是最重要的是要认识到,安全性需要嵌入在里面而不是附加在外面。尽最大可能地改进现有和传统系统很重要,而新项目应该从一开始就要考虑安全性,这样做在项目的后续过程中会有很好的回报。

(电子工程专辑)
表1:安全推荐措施与最优方法之间的关系。

下面是应用于嵌入式开发的最佳安全措施清单:(来源:由Michael Howard和David LeBlanc编写安全代码,2004年)

* 尽量减小攻击面:减少进入系统的攻击向量数量。关闭对大多数用户来说不必要的功能、服务和访问。

* 最小权限:只给应用程序、任务或进程分配刚好够完成当前工作的权限。权限太高会发生不必要的访问或行为。

* 纵深防御:利用不止一个防护层,不要指望一层防护就能提供完整的保护。

* 多样性防御:使用不同类型的防护设备、软件或供应商。

* 保护最薄弱环节:保护最不安全的组件、接口或应用程序,这是最可能受到攻击的地方。因为任何系统的安全性水平只能以最薄弱的组件为准(木桶理论)。

* 错误保护状态:期待发现易受攻击点;时刻准备接受对系统的物理和远程攻击。

* 关于外部系统的假设:不要指望与你的产品连接的其它设备。你不能假设外部设备是安全的,并且要明白你的设备可能被连接到完全开放的网络。

* 默认安全性:将系统的默认配置和行为设置成尽可能安全。关闭对大多数用户来说不必要的功能、服务和访问。

* 简单性和可用性:使用更加简单的设计,这些设计具有可能更少的安全漏洞和易受攻击点,并且更加容易理解、检查和测试。

值得注意的是,没有系统是绝对安全的。然而,正如我们会在后文中看到的那样,遵循一些实用方法可以极大地提高嵌入式系统的安全性。在一些情况下,这些技术可以应用于现有系统;在其它情况下,它们可以成为未来系统设计的建议。

对您的嵌入式系统应用最优方法

(1) 实现更加安全的配置。尽管嵌入式安全性得到了大肆宣传,但许多基于这些系统的运行平台可以通过正确的配置实现更高的安全性。

安全缺陷很可能在新版操作系统中已经得到修复,而老版中可能仍然存在漏洞。

嵌入式操作系统的默认配置通常针对性能和内存容量做过调整,并且默认情况下有许多功能被关闭了。遵循制造商指南激活安全功能,包括:

激活授权和权限等级。任何访问必须得到授权。用户访问必须具有对所有服务来说必要的最低权限。

* 激活网络防火墙。现代实时操作系统(RTOS)都具有网络防火墙功能,而具有网络连接的任何设备在运行时都应启用防火墙。

* 禁用所有不重要的服务。只激活对设备工作来说基本的服务。

* 需要时激活或包括含强大的加密函式库。

* 通过内存管理单元(MMU)激活内存保护;利用实时进程(RTP)代替内核等级。

* 除非绝对必要,否则应以用户权限执行。

* 通过选择更加安全的配置,可以删除许多瞄向设备的攻击向量。最好是假设设备随时会受到攻击,并确保用户接收到的配置本身具有更高的安全性。

(2) 安全的网络通信。现有嵌入式系统的许多安全性问题源自通过开放给大众(企业网络)甚至直接与互联网相连接的网络和访问。

比较保守的观点是,设备的所有外部连接都是不安全的。设备在用户群中的不断普及将产生你无法想像到的用例。最佳方法是保护所有进出设备的通信。

* 激活并充分利用RTOS网络堆栈的通信安全功能。

* 激活网络防火墙;只允许通过指定的TCP/IP端口进行通信。

* 激活安全通信通道:IPsec,SSH,SSL或VPN访问。

* 禁止诸如Telnet等不安全的服务。

* 如果可能的话禁止调试服务。如果不能禁止,要确保这些服务是安全的。

* 设备到设备以及设备到控制的通信要尽量考虑使用基于VPN的基础设施。

(3) 划分系统进行保护。将系统中不同的主要组件划分为多个部分是一种有效的安全技术。在许多情况下,这些分割是物理性的。如今借助虚拟化技术还可以实现虚拟化分割,即在相同设备或处理器上通过软件进行分割。

这里有个例子是将微软的Windows或Linux等通用操作系统(GPOS)与实时操作系统(RTOS)整合在同一设备上,但每个系统都在它们自己的虚拟环境中运行。通过这种方式,GPOS上发生的安全性攻击和漏洞就不会影响到RTOS中执行的任务关键型控制功能。

同样,GUI和和对设备的远程访问可以划分在一起,把控制系统单独划分出来。这样,拒绝服务或破坏GUI部分的远程攻击就不会影响控制系统。这种系统组合的优势是非常显著的,因为它能极大地降低硬件复杂性和成本。

借助虚拟化技术和最新的多核处理器,这种组合现在已经非常实用,并且极具成本效益。另外,关键和非关键任务的分开有利于提高这些设备的安全和保险系数。下图1显示了划分成多个模块的嵌入式系统例子。

(电子工程专辑)
图1:针对安全性进行的系统划分。

攻击者也许能够访问或破坏GPOS,但无法影响到系统的其它部分。虚拟化层可以确保正确地共享处理器时间和对硬件资源的访问,从而防止受损部分影响到其它部分。

举例来说,如果GPOS遭到破坏或进入死循环,也不会使系统的关键部分停止运行。事实上,可以通过重启GPOS部分来恢复系统的正常工作。


1???2?下一页?最后一页





我来评论 - 提高嵌入式操作系统安全性的最优方法
评论:
*? 您还能输入[0]字
分享到: 新浪微博 qq空间
验证码:
????????????????
?

关注电子工程专辑微信
扫描以下二维码或添加微信号“eet-china”

访问电子工程专辑手机网站
随时把握电子产业动态,请扫描以下二维码

?

5G网络在提供1Gbps至10Gbps吞吐量方面具有很好的前途, 并且功耗要求比今天的网络和手机都要低,同时还能为关键应用提供严格的延时性能。本期封面故事将会与您分享5G的关键技术发展,以及在4G网络上有怎样的进步。

?
?
有问题请反馈
推荐到论坛,赢取4积分X