1、- 0 -嵌入式处理器安全运行机制的研究- 1 -嵌入式处理器安全运行机制的研究一、嵌入式系统所面临的安全问题一套完整的嵌入式系统由相关的硬件及其配套的软件构成;硬件部分又可以划分为电路系统和芯片两个层次。在应用环境中,恶意攻击者可能从一个或多个设计层次对嵌入式系统展开攻击,从而达到窃取密码、篡改信息、破坏系统等非法目的。若嵌入式系统应用在诸如金融支付、付费娱乐、军事通讯等高安全敏感领域,这些攻击可能会为嵌入式系统的安全带来巨大威胁,给用户造成重大的损失。根据攻击层次的不同,这些针对嵌入式系统的恶意攻击可以划分为软件攻击、电路系统级的硬件攻击以及基于芯片的物理攻击三种类型,如图1 所示。软件系
2、 统芯 片图 1 嵌入式系统所面临的安全威胁在各个攻击层次上均存在一批非常典型的攻击手段。这些攻击手段针对嵌入式系统不同的设计层次展开攻击,威胁嵌入式系统的安全。下面本文将对嵌入式系统不同层次上的攻击分别予以介绍。1、软件层次的安全性分析在软件层次,嵌入式系统运行着各种应用程序和驱动程序。在这个层次上,嵌入式系统所面临的恶意攻击主要有木马、蠕虫和病毒等。从表现特征上看,这些不同的恶意软件攻击都具有各自不同的攻击方式。病毒是通过自我传播以破坏系统的正常工作为目的;蠕虫是以网络传播、消耗系统资源为特征;木马则需要通过窃取系统权限从而控制处理器。从传播方式上看,这些恶意软件都是利用通讯网络予以扩散。
3、在嵌入式系统中最为普遍的恶意软件就是针对智能手- 2 -机所开发的病毒、木马。这些恶意软件体积小巧,可以通过 SMS(ShortMessagingservice)短信、软件下载等隐秘方式侵入智能手机系统,然后等待合适的时机发动攻击。尽管在嵌入式系统中恶意软件的代码规模都很小,但是其破坏力却是巨大的。2005 年在芬兰赫尔辛基世界田径锦标赛上大规模爆发的手机病毒 Cabir 便是恶意软件攻击的代表。截至到 2006 年 4 月,全球仅针对智能手机的病毒就出现了近两百种,并且数量还在迅猛增加。恶意程序经常会利用程序或操作系统中漏洞获取权限,展开攻击。最常见的例子就是由缓冲区溢出所引起的恶意软件攻击
4、。攻击者利用系统中正常程序所存在的漏洞,对系统进行攻击。图 2.就描述了一段具有安全隐患的程序代码。在主程序 f()中调用了 g()子程序,其中参数 x、y 以指针的形式进行传递,字符串 x 的内容将被复制到本地变量 b 中,然而在这一过程中程序并没有进行检查字符串 x 的大小。因此,恶意攻击者可以在程序在运行的过程中利用该漏洞展开缓冲区溢出攻击。攻击者所采取的具体攻击方法如图 3 所示。在系统运行过程中,当子程序调用系统函数 strcpy()时,若攻击者输入的字符串 x 大于 b 的大小,则会在内存片段中发生溢出,程序会跳转到攻击者所设计的危险代码中,从而导致程序的控制权为恶意攻击者所获取。
5、在这一过程中,攻击者必须要了解处理器的体系结构与执行方式,掌握正常程序中所存在的漏洞,同时还要能够将危险的程序代码注入到系统中,才能够完成软件攻击。- 3 -图 2 具有安全隐患的代码图 3 缓冲溢出攻击因而,随着嵌入式系统日益推广应用,其己经不像过去那么安全。恶意软件攻击可以根据恶意攻击者的需求对嵌入式系统实施干扰、监视甚至远程控制,己经对嵌入式系统的安全应用构成了实质性的威胁。2、系统层次的安全性分析在嵌入式设备的系统层次中,设计者需要将各种电容、电阻以及芯片等不同的器件焊接在印刷电路板上组成嵌入式系统的基本硬件,而后将相应的程序代码写入电路板上的非易失性存储器中,使嵌入式系统具备运行能力
6、,从而构成整个系统。为了能够破解嵌入式系统,攻击者在电路系统层次上设计了多种攻击方式。这些攻击都是通过在嵌入式系统的电路板上施加少量的硬件改动,并配合适当的底层汇编代码,来达到欺骗处理器、窃取机密信息的目的。在这类攻击中,具有代表性的攻击方式主要有:总线监听、总线篡改以及存储器非法复制等攻击方式。攻击者为了实现系统级攻击,首先需要在硬件层次上对嵌入式系统进行修改,增加必要的攻击电路,从而构成硬件攻击平台。图 4 描述了一套用于总线监听的攻击平台。恶意攻击者将一块 FPGA 电路板挂载在嵌入式系统的数据总线与地址总线上。通过配置 FPGA 器件,攻击者可以构建攻击所需要的各种监控逻- 4 -辑,
7、从而捕捉系统总线中的通信信息,为攻击者提供分析所需的数据素材。此外,FPGA 电路板还对嵌入式处理器的通用接口进行监听。当程序指令运行到操作通用接口时,FPGA 电路板可以在截获程序指令的同时捕获接口上的电平变化,从而为分析嵌入式系统的程序提供数据支持。FPGA 搜集到的所有信息都将上传到攻击者的 PC(PersonalComPuter)中,帮助攻击者对嵌入式系统的运行方式进行解析。攻击者在侦测总线、监听通讯的基础上,还可以对处理器与外部设备之间的通讯进行修改,从而破坏系统的正常运行,这种攻击被称为总线篡改攻击。图 4 基于总线监听的攻击平台在总线监听的攻击平台上,攻击者只需要进行少量的硬件改
8、动即可实施总线篡改攻击。攻击者在硬件上的工作是要在系统总线上插入多路选择器,使得攻击平台可以旁路嵌入式处理器在与外部设备之间的正常通讯。除此以外,攻击者还需要对 FPGA 器件进行重新配置,使其能够在系统运行时伪装成嵌入式系统中的正常外设,欺骗嵌入式处理器。当嵌入式处理器对外部设备进行通讯时,由 FPGA 电路板对外部设备的应答予以篡改,或者直接伪造应答,从而诱导嵌入式处理器完成各种攻击者所需要的相关操作。总线监听攻击可以帮助恶意攻击者盗取保存在片外存储器中的有价值信息;总线篡改攻击可以帮助恶意攻击者控制嵌入式系统的运行;在适当的软件配合下,- 5 -总线篡改攻击还可以完成对加密系统的暴力攻击
9、。在实际攻击中,这两种攻击方式经常结合起来,共同对嵌入式系统展开攻击。3、芯片层次的安全性分析嵌入式系统的芯片是硬件实现中最低的层次,然而在这个层次上依然存在着面向芯片的硬件攻击。这些攻击主要期望能从芯片器件的角度寻找嵌入式系统安全漏洞,实现破解。根据实现方式的不同,芯片级的攻击方式可以分为侵入式和非侵入式两种方法。其中,侵入式攻击方式需要将芯片的封装予以去除,然后利用探针等工具直接对芯片的电路进行攻击。侵入式的攻击方式中,以硬件木马攻击最具代表性。而非侵入式的攻击方式主要是指在保留芯片封装的前提下,利用芯片在运行过程中泄露出来的物理信息进行攻击的方式,这种攻击方式也被称为边频攻击。硬件木马攻
10、击是一种新型的芯片级硬件攻击。这种攻击方式通过逆向工程分析芯片的裸片电路结构,然后在集成电路的制造过程中,向芯片硬件电路中注入的带有特定恶意目的的硬件电路,即“硬件木马” ,从而达到在芯片运行的过程中对系统的运行予以控制的目的。硬件木马攻击包括木马注入、监听触发以及木马发作三个步骤。首先,攻击者需要分析芯片的内部电路结构,在芯片还在芯片代工厂制造时将硬件木马电路注入到正常的功能电路中;待芯片投入使用后硬件木马电路监听功能电路中的特定信号;当特定信号达到某些条件后,硬件木马电路被触发,木马电路完成攻击者所期望的恶意功能。经过这些攻击步骤,硬件木马甚至可以轻易地注入到加密模块中,干扰其计算过程,从
11、而降低加密的安全强度。在整个攻击过程中,硬件木马电路的设计与注入是攻击能否成功的关键。攻击者需要根据实际电路设计,将硬件木马电路寄生在某一正常的功能电路之中,使其成为该功能电路的旁路分支。硬件木马攻击只需要植入很小规模的电路就可以对芯片的功能造成显著影响。基于侵入式的芯片级硬件攻击对整体系统的功能破坏非常奏效。另一方面,以不破坏芯片的物理封装为特点的边频攻击,利用芯片在工作时的功耗、时间、电磁辐射等物理特性推断芯片的工作方式,猜测系统中的密文信息。边频攻击中,以差分功耗分析最具代表性。差分功耗分析根据嵌入式处理器芯片使用固定密钥对输入的多组不同明文数据进行加密操作时 CMOS(compleme
12、ntary Metal Oxide Semieonduetor)电路- 6 -的功耗变化情况,猜测局部密钥位与可量测输出之间的区分函数,并将区分函数的输出与实际功耗曲线进行对比验证,从而分析出嵌入式处理器在加密操作中所使用的密钥。尽管攻击者无需在硬件平台上进行大量的改动,但是在攻击过程中,攻击者需要有处理器准确的功耗模型,并且在实施攻击的过程中,电路板的环境噪声、示波器的采样频率、数据深度等因素都对攻击的结果造成直接的影响。因而,在实际环境中的边频攻击存在着局限性。这些攻击方式都各具特点。软件攻击的攻击范围广泛、实施容易,且不易发觉,但是其对攻击对象的平台依赖度高,传播需要借助网络等通讯手段。
13、嵌入式系统多种多样,并且不是所有的系统都采用相同的开放操作系统,还有大量的嵌入式设备处于离线工作状态中。此外为满足不同的应用环境的需求,不少设备都是使用封闭的或者特别定制的软件系统,有的设备甚至没有操作系统。这样的软件环境大大降低了恶意软件的威胁。而芯片级的物理攻击在实际攻击中会受到各种约束条件的限制。首先,对于侵入式的芯片级硬件攻击来说,其攻击成本非常高昂,并且每次攻击都只能针对一块芯片。对攻击者来说,实现起来也困难,必须要借助专门的实验环境才能完成有效攻击。然而最重要的一点是侵入式的芯片级硬件攻击无法了解系统在运行过程中的情况。另一方面,对于非侵入式的芯片级硬件攻击需要有精确的芯片模型作为
14、参考,并且对嵌入式系统的工作环境要求严格,环境误差对攻击结果的影响明显,因而也无法广泛地针对嵌入式系统展开攻击。相反在实际攻击中,采用系统级的硬件攻击最为现实。首先,系统级的硬件攻击可以针对任何能够运行的嵌入式系统;其次攻击者可以通过系统级的硬件攻击确切地掌握嵌入式设备在运行时的数据信息;最后,系统级的硬件攻击成本低廉的特点使得攻击者可以很容易地实现。因此,就实际意义而言,系统级攻击,特别是总线监听以及篡改攻击,才是嵌入式系统在运行过程中所需要面临的最主要安全威胁。各种攻击方式的特性比较如表 1 所示。表 1 各类攻击方式的特性比较软件攻击 系统级硬件攻击侵入式芯片级硬件攻击非侵入式芯片级硬件
15、攻击- 7 -技术难度 容易 容易 低 单个系统平台依赖性 局 一般 廉价 困难攻击范围 多个系统 低 单个系统 一般攻击破坏性 严重 昂贵 困难 低攻击成本 廉价 单个系统 一般 廉价过去的研究说明,嵌入式系统所面临的安全性威胁主要源于嵌入式系统运行过程中程序以及数据的安全性。4、嵌入式处理器的安全设计准则面对以总线监听以及总线篡改攻击为代表的系统级硬件攻击,本文假设嵌入式处理器本身是安全可信的,攻击者无法获取来自嵌入式处理器内部的机密信息,并且本文还假设除处理器以外的其他外部设备都是不可信任的,设计者无法确保来自这些设备的数据是否被攻击者监听或篡改。在这种安全前提下,嵌入式系统的攻击对象主
16、要来自两个地方:数据总线和片外存储器。图 5 描述了针对嵌入式设备的系统级硬件攻击模型。在现实条件下,程序被保存在处理器外部的不可信的存储器中。攻击者可能将存储器芯片从电路板中取下,并通过物理的方法读取每一位的状态。图 5 系统级硬件攻击模型如果程序是以明文的形式保存,那么攻击者将会得到其有用的信息。此外,- 8 -处理器与存储器之间的数据总线也是不可信的。被访问的指令会受到监控的威胁。因此,为了避免这类攻击,在设计一个新的嵌入式处理器时必须对这些安全威胁予以细致考虑。在已知系统级硬件攻击模型的基础上,若嵌入式处理器在设计规划之初就有相关的安全性指导,则可以有效地帮助嵌入式处理器提高整体系统的
17、安全性。因此,有必要为嵌入式处理器制定合理的安全设计准则。我们根据已有的系统级攻击,为嵌入式处理器归纳出了以下安全设计准则:(l)、限制总线上的数据传输。处理器如果对总线上的数据传输进行有效的控制,则意味着更少的信息暴露在电路板的金属导线上,从而减小总线监听所带来的风险;此外限制数据传输可以避免攻击者随意地操作总线,增加攻击者通过总线监听分析嵌入式系统的难度。(2)、保护数据信息的机密性。安全的嵌入式处理器应当能确保片外存储器中保存的数据信息的机密性。经过加密操作使数据信息的真实内容隐藏在密文中。即使攻击者能够完全读取存储器中的内容或者捕获总线中的所有信息,在没有密钥的情况下攻击者也无法获取其
18、中的信息。这样才能保证攻击者不能通过系统级的攻击手段破解系统。(3)、确保程序加密空间的独立性。不同的程序在嵌入式系统中应当具有相互独立的加密空间。在由单一密钥保存的系统中,存在着安全脆弱性。攻击者能够通过窃取某一个程序的密钥,从而获取到其他程序空间的指令数据。因而,安全的嵌入式处理器应当在处理器中采取相应的保护机制,提高安全保护的健壮性。处理器应当使用相互独立的密钥对存储器中的各个程序予以加密,从而保证每一程序被隔离在了自己的空间中。(4)、保护数据信息的完整性。面对总线篡改攻击,仅仅保护数据的加密性是不够的。攻击者可以通过篡改通信数据,修改嵌入式处理器的指令,并通过分析嵌入式处理器的行为,
19、了解嵌入式处理器的内部运行机制。因此,为了能够辨别这些由攻击者伪造的数据,安全的嵌入式处理器应当确保运行过程中数据信息的完整性,从而保证在处理器中运行的数据指令的合法性。(5)、确保安全敏感信息的时效性。在安全的嵌入式处理器中运行的安全敏感信息应当具备时效性。嵌入式处理器中,诸如密钥等机密信息保存的时间越长,被捕获的可能性就越高。如果嵌入式处理器将根据程序指令行为以及系统- 9 -的运行周期,定期地对密钥进行更换,那么可以有效地防止攻击者对系统的暴力攻击,提供整体系统的安全性。(6)、隔离安全信息与正常的数据信息。在处理器内部安全信息与正常的数据信息应当予以合理地隔离。否则将安全信息与正常的数
20、据信息保存在相同的存储器空间内既降低了处理器运行时的性能又可能给处理器带来潜在的安全隐患。因此处理器在结构应当将安全信息与正常的数据信息予以隔离。通过以上的安全准则,安全的嵌入式处理器可以对系统中数据信息的机密性、完整性提供完善的保护,从而有效地避免攻击者通过总线监听、篡改等系统级攻击方式,分析系统,寻找系统的漏洞。二、国内外的研究现状对数据的加密以及认证概念最初来自于存储安全,其主要目的是用来解决存储器中数据安全保护的问题。然而,针对不断发展的系统级硬件攻击,从2003 年开始,出现了在处理器架构层次上提高嵌入式系统整体安全性的研究方法,并且在过去的 8 年中得到了迅速的发展。从处理器层次上
21、解决系统安全性问题的探索最初始于 2000 年斯坦福大学计算机系统实验室 DavidLie 等人提出的 XOM 模型。这种模型旨在保护计算机系统中应用程序的安全性。数据或指令均以密文的形式保存在片外存储器,当处理器读取外部数据或指令时,这些数据或指令将被解密成明文供处理器执行;各个程序之间都被分配了用户标示并采用不同的密钥进行加密,以保证各个程序之间相互隐蔽性。由于 XOM 模型中所提出的加解密操作直接影响处理器的性能,因而需要有专门的设计予以实现。XOM 模型为防护系统外部的硬件攻击提供了良好的防御模型,但是 XOM 模型本身缺乏具体可行的硬件实现。麻省理工学院(MIT)人工智能实验室的 B
22、laiseGassend 等人在 XOM 模型的基础上进一步予以改进。他们首次提出在处理器安全运行中需要对外部存储器数据完整性予以保护以解决篡改攻击可能带来的威胁。新的方法被称为 CHTree方式,它利用了 Merckte 树的方法对一种程序以及数据进行完整性验证。Merkle 树已被证明是一种抵御系统级篡改攻击的有效方法。这种方法对外部存储器中保存的数据做散列(Hash)运算,从而将得到的内容摘要作为树结构中的叶节点,然后通过递归的散列运算将底层的叶节点递归收敛到唯一的根节点中,- 10 -最后将得到的根节点与节点中的数据与处理器中可信存储器内所保存的安全信息予以比较,得到外部的数据是否完整
23、。这种方法的最大优点在于可以从数学上证明其安全性,并且利用 Cache 结构的局域化原理,可以通过设计一块高速缓存来加速存储器完整性校验的工作,从而提高整体性能。正是基于这些优点,Merekle 树作为一种有效的安全解决方案在以后的研究中得到了广泛使用。但是,由于 CHTree 方式采用了 SHA-1(Secure Hash Algorithm 1)方式作为其散列算法,使得处理器需要在访存结束以后才能对数据进行散列运算,从而对其整体性能造成了较大影响,其次,Merckle 树本身存在着较大的性能开销。在一次存储器操作中,需要进行 次的散列运算,mn这增加了处理器的计算量。此外,这种基于 Mer
24、ckle 树方式在检测程序之前,需要进行初始化对 Merckle 树进行构建,所以在每次处理器需要载入新程序时需要进行初始化操作。然而,Merckle 树的初始时间并没有得到充分地优化。因而,在运行过程中过于频繁的程序切换会直接影响朴理器整体的运行性能。2006 年,chenghuaiLu 等人提出了 M-tree 的存储器完整性校验方式。区别于以往利用 SHA-1 的方式直接进行散列函数的计算,新的方法采用了 SHA-256的方式计算 MAC(MessageAutheniieCode),并用异或操作将 MAC 值折叠为32bits 的节点,从而构建树结构。由于 M-tree 方式中每个节点的
25、大小仅为32bits,并且,每 7 个低级节点产生 1 个高级节点,而 CHTree 方式则是采用的 128bits 的节点大小,同时由 2 个低级节点产生 1 个高级节点,因此采用 M-tree 方式的处理器运行时不仅可以保存更少的节点,而且能使用很少的节点覆盖同样的存储器空间,取得了更好的运行性能。采用了更粗的散列粒度。同CHTree 方式相比,在测试相同的程序时 M-tree 方式可以这种方法的性能优势实际上是得益于 M-tree 方式并没有对完整树的运行机制进行改进。2007 年,Weiding Shi 等人继续改进了存储器加解密方式,提出基于使用频率的密文预测机制来提高解密的性能。这
26、种方式在处理器内设计了一组频率值表,用来记录相应的数据值所使用到的频率并对高频使用的密文进行快速缓存,从而提高性能。通过实验,新的加密方式获得了超过 10%,甚至 20%的性能加速比。但是这种性能上的优势是以硬件开销为代价的。这种基于频率值表的方法除了有必要的加解密部件以外,还需要有额外硬件开销对密文使用的频- 11 -率进行记录,从而不适用于嵌入式处理器。2007 年,Reouven Elbaz 等人在 PE-ICE 方式的基础上进一步改进了完整性运算机制,提出了 TEC-Tree 方法。TEC-Tree 方法将节点认证过程与完整树的更新过程并行处理,提高了在计算性能。但是 TEC-Tree
27、 方法仅仅只停留在理论模型上,缺乏在处理器环境下相应的实现评估。2009 年,Juan A. Garay 等人提出了一种 SHMAC (Shallow MAC)的方法来提高 MAc 值的计算性能。作者在 SHMAC 方法中设计一种差分统一函数(Differentially UniformFunctions)对 MAC 值进行预计算。尽管采用这种预计算的完整性认证方式可以较好的提高处理器安全运行时的性能,但是 SHMAC 仍然需要占用片外存储器的空间,并且缺乏在实际的处理器环境中的实现评估。除了存储器加密的方法以外,安全处理器的另外一种广泛应用的技术是是存储器完整性保护。在实际应用中,诸如 SH
28、A-1、MD5 以及 AES-CBC 等多种散列函数被用来为每个数据块生成唯一的数据摘要。但是,硬件必须等到数据块完全传输结束后才能开始完整性检验。由检验带来的潜伏时间无法隐藏在数据传输中。基于这一点,人们提出了众多创新技术以加速完整性的检验。尽管这些技术能够有效地改善完整性检验的性能,但是却需要高昂的硬件资源以维护数据的完整性。这对于以讲求实时性、低成本为特征的嵌入式系统来说是难以接受的。另外一方面,目前的存储器完整性验证工作都是基于完整树的方式。这种保护方式将可信任的安全信息保存在处理器内部的一块非易失的存储器中,通过构建树型结构将信任链从处理器片内逐步传递到片外存储器中。目前的研究方法主
29、要通过在处理器内部完成加解密以及完整性校样的方式来提高处理器抵御外部硬件攻击的能力。但是这些研究大多还处于模型仿真阶段,没有针对应用设计展开合适的硬件优化研究。对于一块安全的嵌入式处理器来说,如何在提高加解密以及完整性校验的性能同时降低相应的成本、功耗开销是设计者在设计的过程中所面临的重要问题,也是阻碍安全设计在嵌入式处理器中应用的瓶颈。除了在学术界的研究以外,在工业界中,主要存在可信计算工作组 (TCG)以及 ARM 公司分别提出的两大标准。TCG 的工作主要在于规划了一种由启动开始的、包括处理器以及外部设备的安全工作模式。TCG 标准需要为远程的校验- 12 -提供一组平台配置寄存器 (P
30、CR,PlatformconfigurationRegisters)来保存对外设校验的结果。一般情况下,PCR 被设计在处理器内部。在 TCG 中使用 BIOS(BasieInPutoutPutSystem)的启动块作为信任根。然而,BIOS 模块很容易受到攻击。攻击者能够很轻易的从电路板上将 BIOS 芯片取下,替换掉其中的安全内容。因此,TCG 标准在硬件上存在安全隐患。另外,TCG 标准还利用了软、硬件协同方式进行安全保护,其计算开销较大,对软件的依赖性高,因而无法适于无操作系统环境下的嵌入式系统。ARM 公司提出的 TrusteZone 将安全解决方案延伸至 ARM(AdvaneedR
31、ISCMieroprocessor)处理器架构中。TrustZone 将整个 Blos 模块移植到了 ARM 处理器内部,使得处理器可以直接从片内的启动模块进行启动,从而彻底消除了从芯片外部进行物理攻击的可能。此外,TrustZone 还要求所有需要执行的程序都被保存在片外的安全存储器中,并对其进行加密保护,从而进一步的提高了整体系统的安全。然而,TrustZone 自身也存在着问题。首先,TrustZ0ne 的保护范围只限于使用了 ARM 处理器的嵌入式系统,缺乏普遍性的应用能力。其次,TrustZ0ne 尽管提高了嵌入式系统的安全性,但却增加了系统的开销。在芯片内部所集成的 BIOS 模块
32、会占用片内昂贵的存储空间。这样的面积开销阻碍了 TrustZone 在低成本、轻量级的嵌入式系统中的应用。因而,目前工业界中己有的安全标准都还存在着自身的局限性。国内在硬件安全方面的学术研究主要集中于安全协议以及 AES、RSA 等安全加密算法的实现上。国防科技大学侯方勇博士等人在存储系统的数据机密性以及完整性保护方面进行了有益的探索性研究。这些研究主要针对存储系统,并不适用于嵌入式处理器环境。解放军信息工程大学在 GRUB 引导程序的基础上设计了一种带有安全验证功能的新引导程序 sGRUB。新的引导程序在系统控制权进行转移时对将要转移的下一层信息进行完整性验证,从而保证整个引导过程的安全可信
33、。但是这种方法主要是从软件上针对于桌面计算机的启动过程作的保护,其安全信息保存在外部的一块可信存储区中。若攻击者对系统中的该存储区进行攻击,会导致安全引导过程中的信任链遭到破坏。其次,这种方法完全依赖于软件的实现,在执行过程的性能开销会影响嵌入式系统的启动响应速度。- 13 -目前为止,国内在关于嵌入式处理器安全架构方面的研究,特别是在嵌入式处理器的硬件层次上,探索抵御系统级硬件攻击的研究还鲜见于已有的公开文献中。国内工业界所广泛采用的安全产品缺乏自主知识产权,且较为陈旧,无法提供足够的安全保障。例如,在金融系统中使用的 Dallas-Maxim 公司的安全微控制器 DS5002,早在 199
34、8 年就己有人提出了相应的破解方法。若继续使用此类带有安全隐患的嵌入式设备将对我国的金融系统造成潜在威胁。而另一方面,国外的一些先进安全产品价格昂贵,受市场因素的影响在我国的使用受到了限制。另外出于技术保护的目的,国外产品的设计细节及其可能存在的安全隐患不可能得到有效的披露,因此在高安全性领域中采用国外产品的风险无法得到定量的评估。这些状况严重威胁了我国在相关领域的公共安全,不利于嵌入式设备在我国的进一步推广发展。未来随着恶意硬件攻击方式的发展,采用单一加密方式进行安全防御的策略已无法胜任安全性的要求。在新的安全形势下,不同方法之间的交叉融合已经成为趋势。三、本文提出的新方法本文以提高嵌入式系
35、统的运行安全性为研究目标,从程序数据的机密性、完整性等角度出发,在嵌入式处理器的体系结构上构建轻量级的安全机制,探索嵌入式处理器所面临的运行安全性问题的解决方法,并对其底层硬件的实现策略展开相应的可行性评估。目前,对保存于外部存储器的数据信息进行加密是保护数据安全最有效的措施。然而,尽管安全运行机制在硬件上的实现方法很多,但可以真正使用于嵌入式应用环境的方法却非常有限。遵循嵌入式处理器的安全设计准则,国内部分研究者提出了在嵌入式处理器中设计一种存储器加密缓冲结构(MEC,Memory Encryption Cache)。这种加密结构不仅为保存在外部存储器程序与数据信息进行了加密保护,而且还为程
36、序密钥提供了一个寿命周期。在寿命周期以内,密钥不会发生变化。MEC 采用了一组计数器来监控处理器的复位行为以及改写行为。当密钥达到其寿命时,MEC 将产生一个新的密钥并重新加密程序。通过这种方法,可以使其硬件实现在成本与安全性之间取得良好的平衡。新的加密机制不仅开销减少,而且为程序、数据提供了安全的保护措施。在嵌入式处理器本身是安全可信的前提下,采用一种新的具有良好运行效- 14 -能存储器的完整性校验方法。由于这种新方法利用了多种散列粒度来构建完整树,因而被称为多粒度存储器散列机制(MMH,Multi-GrainedMemoryHash)。这种新的散列机制的关键是利用不同的散列粒度来计算 M
37、erkle 树中不同层次中的散列节点:对 Merkie 树中高层次的散列节点使用粗粒度的散列计算方式,对低层次的散列节点使用细粒度的散列计算方式,从而构建出多粒度的 Merkle 树(MGT)。细粒度的散列计算可以减小处理器在计算散列节点时的计算与访存开销,而粗粒度的散列计算可以有效缩小完整树的规模。这样通过多粒度的方式,MGT树在性能与计算开销上取得了良好的平衡。此外,为了便于 MGT 的硬件实现,还设计了一组散列 Cache 结构用来缓存 Merkle 树中的散列节点,提高存储器完整性校验的性能。将多粒度存储器散列运算机制(MMH)应用到了嵌入式处理器的安全启动的过程中。利用 MMH 初始
38、化时延低的特点,对不同的外部设备和程序进行初始化操作构建完整树,从而提高了嵌入式系统的整体启动速度。根据监控对象的不同将完整树划分为“热区”与“冷区”的方法,用来对存储器中的信息以及嵌入式系统的外部设计进行区别保护。通过对“冷区”信息的访问前认证的方式,快速安全启动机制(FSBM)可以检测恶意攻击者在嵌入式系统中篡改的非法外设,从而提高 FSBM 的安全性。同时,还为在处理器中为嵌入式系统的各个外部设备定义了“热度”寄存器,使得 FSBM 通过对“热度”寄存器的检测,判断外部设备的安全时效是否过期,从而提高嵌入式处理器对外部设备频繁访问时的性能。新的安全启动机制采用了我们所提出的 MMH 机制对片外的设备以及存储器中的数据信息进行认证,从而提高数据认证的性能。另外,新的安全启动机制还将不同的认证对象予以区分,根据认证对象的工作量的大小,采用对应不同粒度的完整树结构予以安全检测,从而保证嵌入式处理器能快速地将安全可信根传递到外部的各个外设中。这种通过加密机制、数据完整性保护机制、安全启动机制的设计,可以有效地保证嵌入式处理器的运行。