新闻中心

EEPW首页 > 专题 > 让系统无懈可击

让系统无懈可击

作者:Eustace Asanghanwa时间:2017-03-07来源:电子产品世界收藏

作者/Eustace Asanghanwa Microchip策略营销经理

本文引用地址:http://www.eepw.com.cn/article/201703/344892.htm

  引言

  对于任何一个嵌入式系统而言,安全启动都是至关重要的一个组成部分。这一过程可保证系统固件,即所有嵌入式系统的大脑与系统制造商的设计初衷保持一致。安全启动确保了嵌入式系统的操作是安全并且可预测的。它的价值在那些因出现故障而可能导致灾难性后果的系统中是显而易见的。类似重要的系统包括家用炉灶和一体式烤箱灶的热控制器、汽车的发动机控制模块、交通灯控制器、植入式医疗设备中的治疗传输系统,以及无人驾驶列车的控制器等。这些系统可能会因为运行它们的固件发生故障而出现失灵或不可预测的操作。而导致此类故障的原因多种多样,可能是由电源浪涌造成内存故障这样的环境因素,也可能是黑客注入恶意代码的执行等。无论在何种情况下,我们都可以在尝试运行系统之前先通过安全启动过程来检测固件的完整性。

  安全启动一直都是在有需要的情况下才会被执行。虽然安全启动作为一个话题而言可能一贯很少被提及,但在很多关键系统中,一直有相应的法规和标准来强制执行安全启动,以保障这些系统的安全运行。因此,大部分的电脑鼠标或手持计算器等一些重要性被认为较低的系统都直接跳过了严格的安全启动过程,因为它们出现故障所导致的后果一般都很轻;然而,什么样的构成可以称之为一个关键的嵌入式系统呢?这个定义正因为物联网(IoT)的出现和普及而悄然发生着变化。

  1 IoT将安全启动推向最前沿

  关键系统和非关键系统之间的差异正日渐缩小。随着IoT的出现,可以说现在每个嵌入式系统都是一个关键系统。嵌入式系统不再像是一座孤岛,所有的性能和故障都只限于其中。虽然IoT将嵌入式系统连接在一起提供了很大的好处,但是这种联网的直接后果就是消除了遏制边界。现在,任何一个连入网络的嵌入式系统都可能是潜在的风险,而世界上任何一个人都可能成为潜在的受害者。

  因注入故障到嵌入式系统的固件中而引发的潜在损害从来没有像现在这样大。像电源浪涌和通信错误等自然系统故障的发生大致上还是和以前一样,所以传统的安全启动过程还仍然有效。但是,人为注入故障尤其是恶意类型故障的发生,无论是在种类上还是复杂程度上都在迅速增长。在过去,攻击者需要获取物理访问权限以便在每一个单独的系统中插入恶意故障。而现在,由于各个系统都是联网的,攻击者只需攻击其中的一个系统即可轻松获得访问其它许多远程系统的权限。这会导致大量设备被恶意控制,关键系统和存储在云端的数据遭到恶意访问,或是因为黑客炫技而发生臭名昭著的数据泄露事件。这也就是为什么我们有必要确保安全启动解决方案必须能够抵御攻击和故障注入的原因。

  2保障启动过程

  安全启动包含两个基本的要素:检测固件完整性的能力和对检测过程完整性的保障。这些由来已久的要素很好理解,它们使用加密技术来实现各个目标,只在加密算法的复杂程度和保障检测过程完整性的安全硬件方法这两方面有所演变。

  检测固件的完整性涉及使用加密技术来创建指纹,即一小段压缩的数字编码,可用来表示固件并且轻松地检测出变化。这种加密技术属于一类可生成指纹摘要、被称为散列函数的加密算法。常用的256位安全散列算法,或简称为SHA256,可生成长度为256位的摘要。SHA256是最新的散列算法,虽然它既不是最紧凑的也算不上最精细的,但是它却在安全性与嵌入式系统资源的有效使用二者之间取得了较好的平衡,这些嵌入式系统资源包括电源、代码空间和计算资源等。

  为了设置和实现安全启动,嵌入式系统制造商在工厂制造过程中即对最终的操作固件进行了散列,并在嵌入式系统中同时安装了固件和摘要。在实际操作过程中,嵌入式系统中的一段检测代码会对操作固件进行散列,并将所得的摘要与工厂安装的摘要进行比较。如果摘要完全匹配,即说明操作代码的完整性没有受损。

  为了确保检测过程的完整性,最理想的做法是将检测代码放在诸如ROM(只读存储器)等类型的非可变存储器中,使其不易受到电源浪涌等环境故障矢量以及内存修改疏忽等其它存储损坏情况的影响。为了响应快速变化的市场需求,我们通常会使用锁定版的非易失性存储器技术,比如闪存和EEPROM,或是类似代替ROM的TrustZone®技术等专用执行环境。

  3保护启动过程免遭攻击

  上述的安全启动过程在没有恶意故障注入的情况下是充分够用的,然而,这种情况在我们生活的真实世界中并不典型。攻击者只需要创建自己的固件以及相应的散列摘要并将二者都安装到系统中即可击败安全启动过程。这破坏了检测的完整性,因此我们需要有一个验证检测过程。

  该验证检测过程需要使用诸如密钥这样的秘密信息,并生成固件的认证摘要或是简单的一个证书(图1)。之所以这样设计,是因为对手如果想要阻挠检测系统正常工作就需要知道相同的秘密信息以生成一对一致的固件 - 签名。考虑到操作代码的验证过程也需要访问同样的秘密信息,嵌入式系统很可能会被攻击者拆解,试图找出秘密信息。而构建高级嵌入式系统所需分析工具与技术复杂性的大幅提升也为攻击者提供了意想不到的帮助,使他们能够直接或通过相关服务访问这些工具以达到其利用系统的目的。

  图1 最佳的通用启动过程,包括签名操作固件的工厂准备和现场验证

  Factory Preparation -- 工厂准备

  Operational Firmware -- 操作固件

  Firmware Digest -- 固件摘要

  EDCSA Sign -- EDCSA签名

  Boot KPRIV -- 启动私钥

  Boot KPUB -- 启动公钥

  Crypto Element -- 加密元件

  Firmware Signature -- 固件签名

  Application Secure Boot -- 应用安全启动

  Flash Memory -- 闪存

  Boot Code -- 启动代码

  Boot Process -- 启动过程

  EDCSA Verify -- EDCSA验证

  ROM or TrustZone – ROM或TrustZone

  不出现特殊情况的话,我们很容易想象出嵌入式系统开发人员和攻击者之间这个犹如猫和老鼠的游戏接下来会如何发展。要不是出现了一种特殊类型的叫做加密元件(CE)的集成电路,那么这个游戏还将继续下去。

  4加密元件适时阻止攻击

  加密元件(CE)是专门设计用于抵御诸如尝试检索机密内容或篡改等攻击行为的集成电路。执行带有CE的安全启动操作提供了验证固件检测和验证过程中所需的完整性。CE可以集成到控制器或独立的元器件中,为系统架构师提供所需的灵活性以迎合其部署需求。

  5对称与非对称密钥加密技术

  虽然安全启动的基本要素即检测和过程保持不变,但是我们却可以选择对称密钥加密或非对称密钥加密技术来实现这两大要素,以控制整个启动验证过程。

  对称密钥加密技术在安全启动过程的出厂设置和现场验证两个阶段均使用相同的密钥或相同密钥的导数。如图2和图3所示,基于SHA256算法的验证启动过程就是一个对称密钥启动过程的示例。基于对称密钥的启动过程具备速度方面的优势,但是在保证供应链中启动密钥的机密性方面却可能会遭遇困难。因此,封闭的生态系统是最受大家欢迎的,因为只有唯一的一个实体掌握其中的密钥。

  图2 采用对称密钥保障安全启动的出厂设置

  OEM prepares final operational code and signs it with a private key. -- OEM厂商准备最终操作代码并使用私钥进行签名。

  Firmware Binary -- 固件二进制

  Signing Secret Key -- 签署密钥

  OEM delivers signed firmware to CM. -- OEM厂商向CM交付签名固件。

  Signed Firmware -- 签名固件

  OEM assembles both firmware and CE into the embedded system. -- OEM厂商将固件和CE一起组装到嵌入式系统中。

  OEM securely delivers signing secret key to CE manufacturing systems via a Hardware Secure Module. -- OEM厂商通过硬件安全模块将签名密钥安全地交付给CE制造系统。

  CE Partner -- CE合作厂商

  CE partner provisions and ships CE to OEM. -- CE合作厂商供应和交付CE给OEM厂商。

  图3 对称密钥流验证过程

  System Processor -- 系统处理器

  Firmware Binary -- 固件二进制

  Signature -- 签名

  Secure Element -- 安全元件

  Signing Secret Key -- 签署密钥

  Validate -- 验证

  OR -- 或

  非对称密钥加密技术(图4)在安全启动过程的出厂设置和现场验证阶段则使用单独的密钥,这两个密钥之间的关系由诸如椭圆曲线加密技术(ECC)等加密算法来控制。ECC被用在一种叫做椭圆曲线数字签名算法(ECDSA)的特殊协议中,该协议常应用于固件签名和验证。通常情况下,原始设备制造商(OEM)都拥有多家合作厂商来为其供应构成嵌入式系统的子系统或某个系统的替代资源。

  图4 开放式合作伙伴生态系统中的安全启动设置

  OEM signs firmware partners to authorizing them to create legitimate operational firmware. -- OEM厂商签署固件合作厂商,授权其创建合法的操作固件。

  Firmware Partner -- 固件合作厂商

  Respective firmware partner independently signs their operational firmware. -- 各个固件合作厂商独立对其操作固件进行签名。

  Respective firmware partner delivers signed firmware to OEM. -- 各个固件合作厂商向OEM厂商交付签名固件。

  Signed Firmware -- 签名固件

  OEM assembles both firmware and CE into the embedded system. -- OEM厂商将固件和CE一起组装到嵌入式系统中。

  OEM signs manufacturing partners to provision CE with identities and secrets. -- OEM厂商签署制造伙伴以为其供应带有身份和秘密信息的CE。

  CE Partner -- CE合作厂商

  CE partner provisions and ships CE to OEM. -- CE合作厂商供应和交付CE给OEM厂商。

  使用非对称密钥过程,例如ECDSA,也适用于安全散列算法SHA。在实践中,SHA256会检测操作固件以创建一个摘要,然后使用ECDSA协议对摘要进行签名以完成整个验证固件过程。这样生成的签名就是一个附有操作固件并可安装到嵌入式系统中的证书(图5)。

  图5 非对称密钥流的现场验证过程

  Firmware Binary -- 固件二进制

  ECDSA Verify -- EDCSA验证

  Firmware Certificate -- 固件证书

  Software Partner Certificate -- 软件合作伙伴证书

  OEM Root Certificate -- OEM根证书

  Device Unique Certificate -- 设备唯一证书

  CE Partner Certificate -- CE合作伙伴证书

  System Processor -- 系统处理器

  Random Challenge -- 随机挑战

  Crypto Element -- 加密元件

  Device Unique Private Key -- 设备唯一私钥

  ECDSA Sign -- ECDSA签名

  1. Verifies firmware is legitimate and came from an approved partner. -- 验证固件是否合法且由许可合作伙伴提供。

  2. Verifies CE device is legitimately provisioned by a sanctioned partner. -- 验证CE器件是否由许可合作伙伴合法供应。

  3. Proves the embedded system is a legitimate one by virtue of possessing knowledge of the private key. This is very important for remote systems that rely on the CE as a trust anchor. -- 借助掌握的私钥相关知识来验证嵌入式系统是否合法。这对于依靠CE作为信任基石的远程系统而言至关重要。

  非对称的密钥结构需要一个私钥和一个公钥,前者必须保密且只被用于出厂设置,而与其在数学上相对应的后者则只用于现场验证阶段。公钥可以被任何人查看而不影响启动过程的安全。因此,基于非对称密钥的安全启动过程更适用于由多个实体共同构成的开放式生态系统。

  6适合制造业的安全启动

  如果一个安全启动过程需要很高的生产物流成本,那么它很快就会被市场抛弃。因此,一个有效的安全启动过程应该是可以确定操作代码和检测过程的完整性且同时不会大幅增加生产流程的时间或成本。

  虽然对于开放式和封闭式生态系统而言最佳的选择分别是不对称和对称密钥启动过程,但是使用加密元件却可以打破这个限制,使得任意一种启动过程都可以应用于任意一个生态系统并且同时还能保持密钥的机密性。但是,非对称密钥方法可以提供更多的自由度,令设计人员能够在开放式合作伙伴生态系统中轻松打造一个从数学角度看非常严谨的信任链维护过程。

  7问责制助力安全启动落实

  嵌入式系统的安全启动过程一直以来都是由管理产品安全的相关法规和标准所推动。当嵌入式系统是一个在物理上独立的系统、一个孤岛式的存在时,这种模式是非常有效的。然而随着IoT的出现,各个系统开始连入物联网,故障遏制边界的消除不仅大大鼓励了攻击者,也大幅提高了各界对安全启动的关注度。事物的远程可访问性意味着我们能更容易地访问嵌入式系统,而这样就令世界上任何一个地方的任何一个人都可能成为系统攻击的潜在受害者。虽然通过事后调查分析可能会揭示出哪个设备是罪魁祸首、哪家制造商应该被追责,但是损害已然造成。为了限制相关责任,产品制造商正开始采取积极的措施在他们的产品中集成防篡改安全启动过程,并添加加密元件来成功保障安全启动。



关键词:

评论


相关推荐

技术专区

关闭