嵌入式系统安全的研究与设计郭春霞1,裘雪红 2(西安电子科技大学计算机学院,陕西西安 710071)摘 要 随着嵌入式系统的广泛应用,对系统安全的需求日益迫切。
本文讨论了嵌入式系统安全设计面临的挑战以及受到的攻击方式,探讨了如何弥合安全处理的资源缺陷和抵抗攻击的方法。
从系统的角度阐述高安全性嵌入式系统的开发过程。
安全的嵌入式系统并不简单的等于嵌入式系统功能加上安全模块,系统的安全强度依赖于这个系统中安全性最弱的子模块的安全级别,嵌入式系统的安全设计应该从整个系统的角度来考虑。
关键词 嵌入式系统;安全处理;加密;体系结构中图分类号 TP3091 嵌入式系统安全需求嵌入式系统产品中安全问题所引起的巨大损失(例如,据估计,“I Love You”病毒引起全世界范围内十亿美元的财政损失[1]),使设计者增加了对嵌入式系统安全需求的关注。
在开始设计嵌入式系统时,就明确安全需求(如防止何种攻击等)是十分重要的。
在一个典型的嵌入式系统中,由于可能包括许多不同的实体(如厂商,终端用户等),所以对嵌入式系统的安全需求也不同。
例如,蜂窝电话,制造商关注的是电话中所有固件的保密性,而用户则关注私人信息的安全存储和交流。
一般来说,用户对嵌入式系统基本的安全需求包括:机密性,完整性,可用性等。
机密性防止未授权用户获得存储在系统中的敏感信息;数据的完整性保证在未经允许的情况下,系统中的数据不能被任意地删除和修改,完整性保证病毒、恶意用户等不能随意的修改系统中的程序;可用性保证在需要的时候,嵌入式系统可用,没有不必要的延时。
针对嵌入式系统的安全需求,密钥算法为其实现提供了理论基础,许多已有的安全机制和技术是依赖密码算法(公钥,私钥和Hash函数)设计实现的。
然而,由于各种各样的限制,嵌入式系统的安全实现与桌面计算机系统有很大的不同,更具挑战性。
2 嵌入式系统安全设计面临的挑战由于许多嵌入式系统受限于它所操作的环境和所拥有的资源,使其面临下面的一些挑战,桌面系统的安全实现方式不能直接照搬到嵌入式系统中。
2.1安全处理能力的差距与桌面计算机的处理能力相比,嵌入式系统可用的计算能力是有限的,例如,采用2.6GHzPentium 4 处理器的桌面计算机和采用Intel StrongARM 1100 处理器的PDA(个人数位助理)相比,前者处理2890MI/S条指令(注:MI/S是每秒百万条指令数)而后者以最快的频率206MHz仅仅处理235MI/S条指令。
对于现在已有的一些利用密钥算法(公钥、私钥、Hash函数)实现的安全机制,它们要求的处理能力比较高,例如,以3DES(三重数据加密标准)加密/解密的安全协议,它的安全处理要求为651.3MI/S。
于是,在嵌入式系统中,就产生了安全处理的要求与可用的处理器处理能力之间的不匹配的现象,而且随着数据率的提高和更复杂密钥算法的使用,这种不匹配将更加明显。
2.2 能量的差距由于密钥算法固有的复杂性,利用它实现的安全机制不仅需要很高的计算要求,而且伴随而来的能量消耗也是很高的。
对于许多以电池提供能量的嵌入式系统来说,这直接影响着电池的寿命。
例如,使用Motorola 龙MC68328处理器的传感器节点,以10Kb/s的数据率传送和接收数据,能量消耗分别为21.5mJ/kB和14.3mJ/kB。
然而,当传感器节点操作在安全的模式下,以RSA(公开密钥算法)加密技术作为安全协议的一部分,它需要额外消耗电子科技 2005年第8期(总第191期)49嵌入式系统安全的研究与设计IT Age/ Aug. 15, 200550 42mJ/kB 的能量。
目前每年仅5%-8%速度增长的电池容量很难跟上不断增长的安全处理的能量要求。
2.3 成本影响嵌入式系统安全体系的基本因素之一是成本。
为了节约成本,许多制造商限制了嵌入式系统的资源。
例如许多8位的微控制器,不能存储很长的密码,而这种方法在桌面和企业计算机中是比较适用的。
但是,在嵌入式应用中,因太昂贵是不可行的。
2.4 在不可靠的环境下使用许多嵌入式系统要求即使在不可靠的用户手中,也要保证安全操作。
由于许多嵌入式设备是便携式的,容易引起遗失和丢失,恶意攻击者可能窃取系统本身存储的信息或利用系统的网络功能侵入网络获取信息,安全的嵌入式系统确保恶意实体不能随意的修改安全设备内部。
2.5 复杂的设计过程嵌入式系统的集成性不断提高,实现系统的部件可能来源于不同公司或组织,即使系统的每一个部件本身是安全的,部件间的集成也可能暴露新的问题[2],因此实现系统的安全应该包括不同的实体,嵌入式系统的部件开发者和系统的集成者等。
由于嵌入式系统可能存在的很多弱点,对嵌入式系统的攻击表明,入侵者很少利用设计良好的密钥算法进行攻击,而是利用实现嵌入式系统的硬件和软件的弱点进行攻击。
作个比方,密钥算法就像房子前门上的一把大锁,但窗户却没有安全措施,入侵者只需要破窗而入就能使这把大锁变得毫无意义。
嵌入式系统应用于特定的领域,设计一个超越安全需求的系统将会耗费大量的资源,导致不必要的成本增加。
因此,对开发系统可能受到的攻击方式,必须进行深入研究。
3 对嵌入式系统的攻击方式3.1 逻辑攻击逻辑攻击对嵌入式系统来说是一个主要的威胁,它利用软件、加密算法或安全协议的弱点和漏洞进行攻击[3]。
例如,在操作系统和应用软件中,缓冲区溢出攻击等。
而且由于下面的几个因素,使逻辑攻击更难处理。
(1) 复杂性 软件是复杂的,随着嵌入式系统功能的不断增强,需要增加更多的代码,从而使系统软件变得更复杂。
代码越多,软件的弱点和漏洞暴露的就越多。
另一方面,由于开发嵌入式系统广泛的使用不安全的编程语言(例如 C 或者C ++)它不能防止简单的攻击更加剧软件的复杂性。
(2)扩展性 良好的嵌入式系统是可扩展的,然而,利用软件的弱点,在系统中,可能产生意想不到的扩展。
(3)连通性 现在,越来越多的嵌入式系统连接到Internet ,使更多的软件系统受到威胁。
对付逻辑攻击的方法可以从下面的方面考虑:(1)在系统执行的每个阶段确保敏感指令和数据的机密性和完整性。
(2)确信从一个安全点执行给定程序,在系统启动或代码执行前进行检查,对不可靠的代码提供受限制的执行环境。
(3)去除软件中的安全漏洞。
3.2 入侵攻击通过去除芯片或电路的封装,观察、操纵和干预系统内部的芯片及其芯片和电路之间的通讯来获得信息。
由于需要昂贵的设备,实现入侵攻击相对于其他攻击比较困难。
然而,利用它可以实现非入侵攻击。
对付入侵攻击的方法一般采用一些可行的物理封装和保护电路。
例如,在元器件的封装成分中加入铝粉,在入侵者去除芯片或电路的封装的同时,电路就会被破坏掉。
FIPS [4] 安全等级1-4提供了一些方法来对付这种攻击。
3.3 非入侵攻击它不需要打开设备,是一种廉价的并且可升级的攻击方式包括:(1)能量分析攻击 硬件电路的能量消耗是由于电路中的转换活动引起的。
状态转换越多能量消耗就会越多。
由于转换与数据是紧密相关的,所以通过统计输入数据的能量消耗情况,可推测出密钥。
(2)时间分析攻击 通过观察密码计算的执行时间推断密钥。
(3)错误注入攻击 利用系统外部参数和环境条件,例如,电压、温度、时钟等的不同,使构成系统的部件产生错误。
(4)电磁分析攻击 通过测量一个设备放射的电磁辐射来获得敏感信息。
对付非入侵攻击通常使用加入随机信息,使攻击者难以通过观测和分析系统的能量、电磁等特征获得信息。
嵌入式系统安全的研究与设计电子科技/2005年8月15日51对于上面的挑战和攻击,良好的体系结构、严密的电路设计是必须的。
4 嵌入式系统体系结构的设计4.1 密码算法密码算法在安全功能实现中,具有极其重要的地位。
很多安全机制如机密性、完整性等都以它为基础。
然而,由于密码算法的固有特性,它耗费大量的计算时间和系统资源,因此,嵌入式系统中密码算法应具有以下几个特性: 代码小;可接受的安全性;可接受的执行效率;另外,由于很多嵌入式系统需要连接到其他系统,所以算法的标准性和通用性有时也是需要考虑的。
4.2 安全处理体系结构由于密码算法消耗大量的资源, 使系统产生了安全处理的要求与可用的处理器处理能力之间的不匹配的现象,即安全处理的缺陷。
嵌入式系统设计中弥合安全处理的缺陷可以通过以下两种方式。
4.2.1 降低安全协议和密码算法的复杂性(减轻需求)一方面,优化已有的加密算法,例如文[5]中,对公钥的优化,以及选择优化的软件来实现加密算法,从而来减少安全协议的工作量。
另一方面,利用需要很少计算和存储资源的新密钥算法来实现安全功能。
例如,建立在CA(单元自动控制)基础上的密码算法[6],据对它的研究测试,在代码所占空间上,它只消耗不足3.8kB 的内存空间而AES(高级加密标准)却占64.633kB 的内存空间,并且在执行时间上CA 密码算法优于DES(数据加密标准),部分的优于AES 。
4.2.2 提高嵌入式处理器的安全处理能力(提高供给)虽然新的密钥算法能够减轻处理器的负担,但是新算法的可靠性和是否会带来较多的负面效应需要经过较长时间检验。
因此,提高处理能力也是解决安全处理缺陷的重要的途径。
同样功能的部件选择用软件和硬件实现的主要区别在于软件实现安全功能有较好的灵活性和较快的设计时间、容易升级系统、成本低等优点。
然而,软件容易受到恶意代码的攻击,并且面临着安全处理缺陷和电池缺陷的问题。
与此相反,硬件实现有很好的性能、较少的能量消耗,在一定程度上它弥补了安全处理的不足,然而它的灵活性受限并且有成本问题。
因此,在系统设计时需要根据系统的实际情况在性能、成本、计算时间等方面进行均衡。
由于安全处理的计算要求是嵌入式处理器的主要负担,为了实现有效的安全处理,已经开发了许多技术。
包括(1)密码算法硬件加速器(2)具有密码加速功能的处理器,通过在处理器中加入扩展指令,加快密码算法的处理(3)可编程安全协议引擎, 通过加载不同的安全算法和网络安全协议到DSP 加速各种不同密码算法(RSA, AES 等)和网络安全协议(如SSL,IPSec 等)。
安全处理的体系结构虽然实现了机密性、完整性等基本的安全功能,但不能防止逻辑攻击、入侵攻击、DoS(拒绝服务) 等攻击。
4.3 抵抗攻击的设计安全的嵌入式系统应当具有适当的抵抗攻击的特性。
图1所示为嵌入式系统抵抗攻击的设计技术。
图1 抵抗攻击的设计方法攻击预防使入侵者很难开始对嵌入式系统的攻击。
预防技术包括硬件设计(电路实现为数据相互独立的)和软件设计(在软件执行之前进行认证)的技术等。
攻击检测表明尽管有一些攻击预防的技术,但是还可能有攻击发生,这就要求在发生攻击以后尽可能快地检测出攻击。
攻击恢复保证一旦检测出攻击,做出适当的处理之后,系统重新恢复到安全操作状态。