嵌入式系统安全问题解决方案综述

2013-08-01 07:14杨东升吴启迪
微型电脑应用 2013年6期
关键词:内核嵌入式代码

杨东升,江 勇,潘 明,汪 镭,吴启迪

0 引言

随着网络和通信技术的不断发展,安全已经成为通用计算机系统、嵌入式系统、通信系统中广泛研究的对象。

由于嵌入式系统具有体积小、性能强、功耗低等突出特征,目前在工业过程控制、国防军事、电子设备及网络通信设备、消费性数码产品等领域发挥着举足轻重的作用,拥有广阔的市场需求和发展前景。同时,网络的连接性大大改变了嵌入式系统的传统定义,从手持设备到医学监控器、工业控制器再到大型电话系统,已经很难找到未连接到网络的嵌入式系统了。连接到网络的嵌入式系统需要与其它计算机系统进行通信,这些嵌入式系统被要求处理机密信息或进行关键操作,这就使得嵌入式系统的安全性成为设计者和开发者主要的关注点之一。研究开发出性能良好且安全可靠的嵌入式产品,成为众商家的共同追求。在这种情况下,嵌入式系统的安全性研究变得日益重要,如果没有一个有效、低耗、低成本的解决方案,很多有创意的嵌入式系统及产品就无法被人们信任,因而也就无法投入使用。

1 嵌入式系统安全性需求分析

1.1 嵌入式系统的安全需求

嵌入式系统经常提供可能被恶意实体从事破坏活动的重要功能。在讨论嵌入式系统的一般安全需求之前,必须注意到,典型嵌入式系统从制造到使用的链条中会牵涉到许多实体。不同实体对象的安全需求也有所不同。

举例说明,我们以一个具备无线声音、多媒体和数据通信的最先进的移动电话为例,如图1所示:

图1 移动电话的安全需求

显示出以移动电话内部HW/SW 元件提供者(例如基带处理器、操作系统)、移动电话制造商、服务运营商、应用服务商(例如移动银行业务)、内容供应商(例如音乐或视屏)和移动电话最终用户的观点分别出发的安全需求。终端用户主要关心私人信息的安全存储和通信,软件提供商主要关心多媒体内容能够安全地发送到另一个移动电话,而移动电话制造商只关心电话专有固件的保密性。对于每一种情形,不可靠(具有潜在恶意)的实体组也是多样的。例如从内容供应商的观点来看,移动电话用户本身就可能是一个不可靠实体。这一部分概略地说明了典型嵌入式系统的主要安全需求,并将从制造到使用的链条中不同实体对象的安全需求加以区别和整合,给出一套嵌入式系统的完整安全模型。各类型嵌入式系统的典型安全需求,如图2所示:

图2 嵌入式系统的一般安全需求

(1)用户使用系统之前首先对系统和设备进行确认和授权。

(2)只有设备被授权,安全网络通道才能提供一个网络连接或者服务通道。

(3)安全通信功能包括确认通信伙伴、确保通信数据的机密性和完整性、防止通信事务被搁置,并且保护通信实体的身份。

(4)安全存储要求储存在系统中的敏感信息具有机密性和完整性。

(5)内容的安全执行通过系统存取的数字内容加以限制。

(6)可用性的意义:确保系统执行的指令始终来自合法的使用者,不被非法指令所打乱。

1.2 可靠性分析

高可靠性和安全性是嵌入式系统的要求和特点。工业用嵌入式系统往往工作于工业企业的现场,一旦出现故障,有可能造成整个生产过程混乱,甚至产生更严重的后果。因此,可靠性是嵌入式系统最重要、最突出的基本要求。可以这样说,可靠性是嵌入式系统的生命线。

嵌入式系统设计师经常需要在安全性、可靠性和产品上市时间之间进行艰难的平衡。三者之间,前两者是需要优先保证的。首先,良好的安全性是所有具有网络连接性能设备的必备条件。其次,微处理器、操作系统和开发工具的不断进步使得更高的可靠性设计成为可能,也为产品的安全性和更快上市打下了坚实的基础。当然要实现这个目标的前提是选择正确的架构,该架构包括处理器、操作系统和部分软件在内。在系统设计的一开始就必须把高可靠性作为设计目标之一。

一般有经验的工程师都会采用模块化的设计方式,将应用系统划分成多个软件模块,并通过定义完善的接口来控制这些模块之间的互操作。但提供更高级别的可靠性还需要采取更多的措施,除了模块化外,还要具有划分、隔离和分离的能力。要想获得最高等级的可靠性,需要首先将模块放进相互隔离的存储器区域,然后通过处理器来管理硬件并选择合适的操作系统,合理控制主机资源的通信和使用,加强模块的分离性。具体来说,需要做到以下几点:

(1)模块化

模块化,然后分割设计,使每个模块只执行单一的功能且与所有其它模块隔离开来,如图3所示:

图3 模块化设计框图

每个模块均可以被看门狗进程重新启动,如果该模块发生故障,那么相应的看门狗就会重启这个模块。模块化的系统相应来说会具有更高的可靠性。

(2)保持模块的简单化

模块过于复杂会导致脆弱性,降低行为的可重复性。不同种类的芯片或多内核的设计也将增加系统的复杂性。在保证处理能力能够满足的前提下,尽量采用单处理器,避免那些复杂设计。

(3)确保选用的处理器和操作系统具有较强的存储器管理功能

没有存储器保护就想建立非凡、可靠和安全的产品是不可能的。存储器保护帮助对系统进行分割,并实现“深度防御”,从而保证系统某部分的弱点不会级联起来影响其它部分。

(4)置所有东西于内核之外

内核是唯一一个系统中的所有模块都要依赖的部件,因此它必须异常稳固。在内核空间运行任何对象只会降低可靠性,并带来安全性问题。

(5)选择符合公认的安全和可靠性标准的内核架构

任何人都可以声称拥有可靠安全的操作系统,但很少有人独立地验证过他们声明的内容。在安全领域,需要选择那种基于由国家安全机构开发的独立内核保护机制的架构的芯片。

(6)使用强制执行高安全编码标准的工具

Misra C是汽车工业软件可靠性协会(MISRA)为汽车工业开发的一个安全的C子集,其中许多代码非常可靠和安全。因此可在内部使用Misra标准,并选择用来强制执行这些标准的工具。

2 基于安全构架的嵌入式系统结构体系

2.1 系统结构设计空间

过去嵌入式系统往往只执行一种或几种固定功能。现在的趋势是嵌入式系统能够执行多种功能并具备下载新的软件来执行新功能的能力。越来越CPU化。虽然这大大增加了嵌入式系统的灵活性和使用寿命,但同时也给恶意组织的攻击提供了更多途径和可能。我们下面就来大致分析一下,在无处不在的网络和普遍深入的计算环境中,资源有限的嵌入式系统所面临的安全挑战。

安全嵌入式过程系统的结构设计空间,如图4所示:

图4 信息处理安全的结构设计空间

第一行列出了不同的宏观结构模型,并在下面作了进一步描述。包含了嵌入式通用处理器(EP)、专门应用程序指令集处理器(ASIP)及带有连接处理器总线的常规硬件加速器的通用处理器三者之间的相互对比。第二行详述了如何选择指令集结构和宏观结构使基本处理器调整至合适位置。第三行清楚地说明了必须选择和设计的安全处理特征。第四行列出了在嵌入式处理器和嵌入式系统设计中抵抗攻击特征的选择。

2.2 安全处理结构

我们现在描述一个提供所需安全功能的宏观结构模型的演化。像机密性、完整性和认证这类基本安全功能,均能够以适当的安全协议和加密算法来执行。加密算法包括对称性加密法、非对称性加密法和安全混列算法。然而,这些加密算法相当密集并且能量贫瘠,对于资源有限的嵌入式系统来说是一个挑战。

有一种仅用硬件的加密方法,即利用应用程序专用集成电路(ASICs)在硬件中执行一个特定的加密算法。这种“硬件算法”在只需要一种或少量加密法时能够提高成本利用率,同时会产生很大数量的ASICs。然而,当需要大量算法来支持多种安全协议、新的标准以及多种装置的互操作时,它在成本和灵活性方面的效率是非常低的。

下面分析只用软件的加密方法。假设使用典型的嵌入式通用处理器(EP)作为履行安全协议和加密处理的核心。这种加密方法将同时面临处理间隙和电池间隙的问题。处理间隙是指使用密码的标准安全协议的最低计算需求,这个要求并不低,市场上大部分无线手持设备中的处理器是无法达到的。电池间隙是指由电池供电的无线手持设备的安全处理所需要的相当数量的额外能量消耗。例如,当设备加密传输数据时,相当一部分能量消耗在安全处理之中。

目前大部分嵌入式系统安全功能的实现,使用的是软硬件结合的方法。这样可以更有效地执行安全功能并提高效率。例如,大多数执行时间花费在如RSA这种公钥算法中的模计算,而加速器芯片可以为模相乘提供硬件加速。还有一种情况是将加速硬件与处理器内核自身紧密地整合,并以惯用指令调用它。有一种专业名称来形容它,叫做“应用程序专用指令处理器(ASIP)法”。例如,嵌入式处理器Xtensa就允许设计者用一套专门的应用程序或惯用指令来扩展处理器的基本指令集。一个典型的例子是,在硬件中用对称性密码加密,并用惯用指令调用它。这样可以以极少的能量消耗为DES提供非常有效的加速。对于某些嵌入式系统,这虽然不是最合适的,但通常却是效率成本比最高的解决方案。

2.3 防护外部攻击的结构体系

上述的安全处理结构只执行像机密性、完整性和认证这些基本的安全功能,并不提供对来自恶意机构的软件或硬件攻击的保护。而且加速加密和安全协议的结构特征不保护DoS攻击。然而,这些来自外部的攻击显然是嵌入式系统保证安全性的很大威胁。

设计者做了一些努力来提供对攻击的防护,但是这个问题的涵盖范围很广,目前仍然是一个开放的研究领域。对于其中一些专用的应用程序,目前已经有了一些解决方案,例如处理软件、音乐或电影盗版问题的数字权管理(DRM)方案,DVD播放器的数字权管理方案,抵御密码盗窃专门攻击的解决方案,等等。在不远的将来,这些都很可能成为嵌入式系统中最普遍的配置。在数字权管理的问题当中,现今有价值的软件或多媒体文件可以通过互联网极为快速而广泛的传播,这对于大的确定容量的所有者和发行商的版权保护问题是巨大的挑战。

在学术研究方面,对于计算机安全的结构特征研究在30年前就已开始。在最近的一二十年里,由于RISC处理器作为高性能处理器的结构比较通用,而且也被行业所普遍认可,所以在计算机结构方面的研究或教育相对比较少地专注于安全问题。近来这种状况有所改变,一些学术文献又开始对计算机安全结构问题,尤其是在结合网络传输与加密的情形下进行一些探讨和研究。提出了通过加密和散列技术提供存储完整性,并通过在缓冲器溢出攻击中,探测返回地址破坏的方法,来阻止机器劫持和恶意代码插入。

3 提升嵌入式系统安全性的两种技术

3.1 TrustZone技术

刚才已经阐述过,在系统设计完成后才开始考虑安全问题是行不通的,增强系统安全的措施必须从一开始就集成到系统的整体设计中。这也就意味着需要从基础上实现系统的安全特性,即从CPU内核的标准制订上就开始考虑这个问题。

通过在CPU内核的设计中集成的系统安全性扩展,ARM为在嵌入式系统中实现安全特性提供了基础。这种集成被称为TrustZone,是ARMv6内核构架下的重要扩展特性之一。TrustZone技术对CPU内核的功耗、性能和硅片面积不产生大的影响,为设计具有高度安全性的嵌入式系统提供了坚实的基础。

3.1.1 TrustZone技术原理及优势

ARM公司的解决办法是通过在CPU内核开辟一块可信代码区,来实现完整的系统安全性。这块可信代码区相对较小,运行在处理器的安全区域里面。其内部的代码为系统级的安全性奠定了基础——从系统的引导启动到各个不同级别的代码可信执行。可信代码可以被用来处理诸如信息解密、签名验证等任务。

通过开辟可信代码空间,ARM处理器有效提升了系统的安全性。这种机制可以安全地保存用户的私人密钥,确保数据的私密性。它还可以防止对关键数据的篡改,这样如果一个商务流程通过认证和授权之后,就可以保证其后的操作的完整性。可靠性也是一个安全的系统的重要特征之一,通过在CPU内核引入结构性的变化——开辟可信代码空间——之后,就可以确保系统有一个安全的核心,并对软件破解有很强的抵御能力。

和很多其他系统特性一样,我们不可能不计代价地实现系统的安全性。尽管系统安全性正在逐渐成为一个必备的特性,在它可以正式应用之前还必须找到一个低成本的实现方案。TrustZone技术通过在CPU内部增加安全性设计,具备了以下的优势:

(1)从系统引导启动开始就保证了安全性,确保系统有一个安全的初始化过程。

(2)易于对软件应用进行验证。。

(3)能够不受限制地灵活地实现整个系统的安全性。

(4)使OS对安全性的支持保持一致,有利于制订一个针对安全性的工业标准。

(5)对使用TrustZone技术的不同ASICs,可以保证软件兼容性。

(6)所增加的硬件成本很低。

(7)对系统性能影响很小。

TrustZone技术使安全性可以有一个灵活的、模块化的实现方案。设计者和生产者可以在系统中按照自己的需求实现自己的安全性设计,并通过在CPU内核中的安全技术来得到保证。

3.1.2 TrustZone技术实现方法

TrustZone技术的实现方法,如图5所示:

图5 利用TrustZone技术修正的安全体系

它通过对CPU构架和内存子系统的硬件设计升级,引入了一个安全区域的概念。构架上的关键性改变之一是增加了一个S比特,以指明当前系统是否在安全状态下。这个S比特不仅可以影响CPU内核和内存子系统,还可以影响片内外设的工作。

S比特表明了当前内核的运行状态。设计中用一个独立的处理器运行模式(监视器模式)控制系统的安全状态以及指令、数据的访问权限。监视器模式通过修改S比特来实现在安全状态和普通状态之间的切换。作为保卫系统安全性的网关,监视器模式还要负责保存当前的上下文状态。如果需要,还要在安全状态和普通状态之间切换时清空寄存器。

在系统中S比特可以将安全状态和普通状态明确区分开。TrustZone 技术还包括了一个增强的内存子系统——cache和MU。它们可以识别S比特并判断出当前系统是否处于安全状态下。S比特仅能在监视器模式下被改变,而系统仅仅会定义数目有限的监视器模式入口。通过控制对监视器模式的访问,在整个系统级别实现安全性就变得非常切实可行了。

TrustZone技术作为ARM结构的一个组成部分,同时也是处理器内核的标准之一。ARM公司的长期发展计划确保了TrustZone安全性扩展将作为未来ARM平台的标准化部分提供给客户,以支持高安全性产品的设计。ARM架构为所有ARM合作伙伴所共享的标准,具有从设计、开发工具、生产、服务到产品化的完整产业链。

3.2 微核技术

3.2.1 可信赖的计算基础(TCB)

移动设备的安全标准明显比我们常用的个人计算机高。随着这些设备功能的急剧增加,嵌入式系统中的软件驱动程序也会渐渐和个人计算机一样复杂。

什么是可信赖的计算基础(TCB)?举例来说,在过去的几年中,嵌入式系统行业朝着具有内存保护和支持它的操作系统方向发展。在这种趋势下,商业操作系统越来越流行,尤其是像Linux和Windows的嵌入式版本。这些系统均会为嵌入式系统的使用而进行裁剪,当把它们剥离到最低限度,可能只有一个内核(定义为硬件特权模式的执行代码),也许包含20万行代码,这就是一个下界规模的TCB。而20万行代码如果要保证没有一个漏洞,几乎是不可能的。

3.2.2 微内核

具有可信TCB的关键是拥有一个可以被检测的内核。一个非常小的内核仅仅只包含具有优先级的代码。任何没有优先级的代码,其功能仍然没有优先级(在内核外),这就是所谓的微内核。它包含有略多于结构要求的两个部件间的接口,用来控制不同地址空间之间的通信,即跨进程通信。

一个严格意义上的微内核至今仍未建立,但是具有良好的逼近,尤其是L4微核,其最成熟和广泛的应用是L4Ka::Pistachio。它由Karlsruhe大学开发,大约有1万行代码(只计算代码需要建立一个特殊的结构,例如ARM)。对一个期望没有漏洞的系统来说,1万行代码仍然比较大,但是这个目标可以达到。在NICTA有两个项目的目标达到了这个要求(在Dresden大学也有相似的科研活动)。其中一个项目称为sel4,旨在生产一个新的l4版本,以更好的接近微核,并使API更好地与安全系统相匹配。sel4的期望是仅仅只有5000-7000行代码。

当然建立一个正规的正确性证明需要一段时间,但是现存的微型内核已经为建立一个值得信赖的TCB提供了一个好的基础。虽然测试和代码检验不能完全保证内核的正确性,但小型化无疑将减少它不少的缺陷。调试借助于事实,内核只提供了非常少的基础装置,漏洞几乎无处可藏。

3.2.3 最小TCB

L4内核支持一个小的TCB结构。如今已经研发出了最小操作系统,称为Iguana,专门用在嵌入式系统中。Iguana提供了基本的服务,例如存储管理、命名和支持设备驱动等,可以满足很多嵌入式应用。一个完全的resident1 TCB系统由L4、Iguana和一些驱动构成,这个系统可以小至2万行代码。我们期待一个最小的基于sel4的TCB系统只有1万或1万5千行代码。一个TCB以及它的规模主要依赖于一个系统提供的功能。具体的说,一个具有非平凡用户界面的系统往往具有较大的TCB,因为需要包括一个可以信赖的窗口系统以保证用户的输入可以被正确地编译。

3.2.4 细粒度访问控制

为什么传统的Linux和Windows操作系统不能达到嵌入式系统的要求?除了TCB的规模外还有其它的原因。它们都有一个访问控制模型是根据时间共享主机,不同的系统用户受到各自的保护,但无法完全地限制特定的用户访问自己的数据。而嵌入式系统是个典型的单用户系统,它的保护不同于一般,运行不同程序的同一个用户应该具有不同的访问权限。访问权限取决于程序功能而不是用户身份。这是一个最小特权的安全准则实例。而传统的系统违背了最小特权,给一个用户全部的访问权力(对文件和其它的目标)。这就是病毒和蠕虫会经常发生的原因。在一个基于微核的系统中,软件封装在具有硬件强制接口的部件中,所有的通信都必须用到内核提供的跨进程通信装置。这意味着部件间透明地介入安全监控成为可能,可以用来执行全系统的安全政策。这个政策使得输入到系统中的程序仅仅被允许访问被用户明确定义任务的文件,从而防止了敏感信息的窃取。

微核技术的构思已有较长时间的历史,最初大多是建立在Mach内核之上的设想,系统性能相对较差。如今,ARM架构在嵌入式领域越来越凸显出优势并广泛地应用,为微核技术提供了新的平台和研究的空间。工业界已经看见了微核解决嵌入式系统安全问题的潜力,并打算大力开发并应用它。

4 结语

综本文所述不难看出,嵌入式系统安全问题解决方案的主要挑战在于以下3点:第一是系统的资源有限,第二则是单纯的软件安全或硬件安全都无法为嵌入式系统提供完整的保护,最后便是在实现安全特性的同时,还必须考虑系统的处理能力、存储能力、功耗及实现成本等。

事实上,随着网络通信技术及嵌入式系统本身的不断发展强大,各种安全攻击技术和入侵方法也在不断发展,各种安全协议、安全机制及安全标准也在随之不断变化。这些都会不断地为安全性研究和设计提出更高要求。嵌入式系统安全问题解决方案的研究可以说只是刚刚起步,未来还有很长的路要走。

[1]Sigrid Gürgens,Carsten Rudolph,etc.Security engineering for embedded systems—the SecFutur vision [J],ACM,2010.

[2]Markose,S.A Systematic Framework for Structured Object-Oriented Security Requirements Analysis in Embedded Systems[J],Embedded and Ubiquitous Computing,2008.EUC '08.

[3]Sen,S.Cryptosystem designed for embedded system security [J],VLSI Design,2003.

[4]裴华艳.嵌入式系统安全性的分析与研究,[J]电子科技,2009

[5]赵国冬.安全嵌入式系统体系结构研究与设计[D],哈尔滨工业大学,2006

[6]朱飞.可配置的嵌入式系统安全模型研究与实现[D],合肥工业大学,2009

猜你喜欢
内核嵌入式代码
多内核操作系统综述①
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
TS系列红外传感器在嵌入式控制系统中的应用
Linux内核mmap保护机制研究
创世代码
创世代码
创世代码
创世代码