在我们的现代世界中,越来越多的设备伴随着各种各样的嵌入式系统。这一趋势的一个明显例子就是今天的汽车,它们拥有几十个电子控制单元(ecu),控制从空调、电动车窗到发动机和刹车系统的一切。几个ecu允许通过引导加载程序下载更新的程序和数据代码。这类软件可能是控制单元固件更新,用于修复bug、改进特性或下载数据(如附加的多媒体文件)。第一种情况也被称为软件下载或简单的闪光(因为闪光存储器是更新的)。下载可以直接通过诊断通道或其他可用的通信通道(如蓝牙和GSM)进行。

图1所示。数字签名的产生在嵌入式系统制造商。

一旦这样的车辆通信通道被打开到外部世界以下载软件,必须确保它们的完整性。恶意软件下载的示例是未经授权的一方更换固件,例如,在汽车上下文中的芯片调整所完成的。主要安全目标如下:

  1. 嵌入式系统只接受原始软件。没有操纵或恶意软件可以下载到嵌入式系统。特别是,软件不能成功地下载到改变其定义行为的嵌入式系统中。
  2. 只有经过身份验证的一方才能更改存储在嵌入式系统中的数据,例如参数。

此外,对于一个实际的安全设计来说,一个嵌入式系统的危害不会影响同一产品线中其他嵌入式系统的安全也是可取的(即,成功的攻击不会扩展)。

嵌入式系统侧所需的计算性能应最小。

数字签名

我们所呈现的安全软件闪烁方案是基于数字签名。数字签名提供完整性和真实性的安全目标;数字签名的数据不能被恶意第三方更改,而不会被接收器检测到。此外,接收器可以验证数据是否由所要求保护的签名者签名。此外,签名者无法否认他是签名的合法创造者(非拒绝)。使用非对称加密算法生成和验证数字签名,例如RIVEST Shamir Adleman(RSA)算法或椭圆密钥加密(ECC)。

如图1所示计算的数字签名。有一个密钥对包括私钥,SK和公钥PK。只有签名者可以访问SK,而PK可以公开分发。在我们的环境中,SK仅仅是嵌入式系统的制造商,而PK是内置于每个嵌入式系统中。程序代码x首先散列到短固定长度值y。通常,通过应用SHA系列的哈希函数来计算Y,从而导致20到32字节的输出。最后,使用私钥SK计算数字签名。然后可以通过使用公钥PK来验证签名。请注意,私钥SK,绝不会留下制造商的安全环境。因此,签名通常在高安全模块(HSMS)中计算,例如智能卡安全控制器,其用于银行应用,其根据公共标准(CC)安全标准提供抗篡改特征。

证书

图2。安全软件下载。

在每个嵌入式系统中使用公钥和固件程序使用相应的私钥签名。可以为每个嵌入式系统,车辆模型年,每个ECU类型等使用单个公共/私钥对等,这增加了整个系统的物流工作。在个人公共/私钥对的情况下,使用证书是合理的。证书与护照相当;它证明了公钥,如果需要,则是一个身份。在汽车案例中,证书只是由OEM私钥签名的公钥,以及公钥和一些其他信息:Sigsk(PKA)|PKA |数据。然后通过PKA验证Flash程序并使用相应的私钥签名。当闪烁的过程开始时,证书首先需要使用OEM的根公钥PK下载并验证,然后使用PKA下载并验证Flash程序。

安全软件闪烁

这一般的解决方案非常简单。基于数字签名,软件的发行者签署程序代码和嵌入式系统(例如,车辆中的控制单元)验证它。因此,发行者保存一个私钥,用于签名程序代码,控制单元保留相应的公钥以验证它。这更详细地显示在图2中。首先,开发了软件。完成后(步骤1),程序对象代码将传递给信任中心(步骤2),该信任中心使用其私钥符号对象代码。然后将签名传递并附加到程序对象代码(步骤3)。代码和签名包现在存储在数据库中(步骤4),该数据库可能包含不同嵌入式系统的版本。最后,将适当的程序代码下载到嵌入式系统(步骤5)并通过其公钥验证(步骤6)。

人们可以看到安全目标#1显然是明确的;只有合法的权限可以发出适当的签名,该计划代码将被车辆接受,即嵌入式系统只接受真实的软件。今天的大多数汽车已经提供了一种下载软件的机制。因此,在车辆中另外只需要用于验证签名的机制。RSA是适合签名验证的适合,因为它允许非常快速的签名验证,并且可以在无侵权专利的情况下以软件实现。

图3。Challenge-and-Response识别。

在服务器端,必须彻底组织密钥管理和组织安全性。组织安全包括访问签名程序代码的组织以及签名过程是如何执行和记录的。但是,不需要完整的公钥基础设施(PKI)。基本上,发出单个私钥/公钥对就足够了,这样私钥存储在信任中心中,公钥存储在嵌入式系统中。信任中心可能只是一台从任何计算机网络断开的PC机和一张持有密钥的安全智能卡。

如果需要更精细的方法,则每个生产年份为每个嵌入式系统类型或每个生产位置都可以应用每个嵌入式系统类型的关键对。不过,不需要诱导开销的证书。嵌入式系统仅需要存储公钥,以便在此处没有存储秘密信息。但是,必须保护此公钥免受操作,即它必须存储在可以读取但未覆盖的安全内存中。例如,许多现代微控制器提供内部闪存ROM内存和安全功能,防止修改此内存。否则,对手可以替换此键,然后激活任何操作软件。

通过简单的挑战和响应机制可以满足安全目标#2,如图3所示。嵌入式系统和外部方(例如,标准PC)共享一个密钥。然后,各方运行挑战 - 响应方案,以证明外部方知道秘密密钥。运行成功后,外部方可以访问嵌入式系统以调整参数。但是,这是指定明确定义的接口至关重要。例如,可以合理地记录日志文件中的所有更改,并仅提供对非安全关键数据的访问。使用对称密钥管理是合理的 - 每个嵌入式系统都知道与第三方共享的单个对称密钥。本第三方可能是系统制造商存储受保护数据库中的所有键。通过使用保存秘密密钥来访问嵌入式系统的安全令牌,可以进一步提高安全性。这种方法甚至允许实现若干授权级别。例如,在汽车上下文中可能存在用于调整ECU的典型参数的研讨会的基本级别,以及允许更改所有参数的另一个级别进行测试。

保护内置于嵌入式系统中的密钥至关重要。如果对手能够读出对称密钥或替换公钥,他可能能够操纵程序或数据代码。因此,只能通过使用安全存储器或应用如参考文献4中所述的安全锚点的应用硬件辅助方法来实现虚拟软件保护。

图4。Flash的过程。

尽管如此,还有可能尝试复杂使用的机制,或者至少尝试帮助识别攻击者成功读出软件中的原点。In order to make decompiling and re-engineering of program binaries more difficult, programs known as “obfuscators’’ convert source code, object code, or both, into obfuscated code, making the result excessively complicated and, thus, far less readable and almost impossible to understand by a human being. However, obfuscation3 only increases the difficulty for reverse engineering, limits portability and is regarded as “security through obscurity’’. Digital watermarking1 and fingerprinting are techniques that embed visible or invisible information into a digital content (software or data) that cannot be removed or modified, or can only be removed or modified with difficulty. Original owners then can use tools to extract the embedded information to detect, e.g., the origin of an illegitimate copy or tampering. However, there are already technologies for both mechanisms to abolish respective restrictions. Thus, such mechanisms cannot replace proper hardware-based software protection.

安全闪存过程

Flash程序文件有几个部分。每个块可选地加密,事先计算文件的签名。在第一步中,触发闪烁过程的外部设备可选地可选地验证引导加载程序(例如,通过如上所述的挑战 - 重呼吸机制)。在下一步中,可以将证书传递给引导加载程序,验证它的存储公钥。然后,外部设备通过块通过块到嵌入式系统的引导加载程序。引导加载程序首先解密块,然后将其存储在闪存中。同时,引导加载程序逐步计算每个块上的哈希值。一旦所有块通过,引导加载程序会在新的闪存程序文件上最终确定散列值的计算,并使用所确定的散列值执行数字签名验证。如果签名验证成功,则接受并激活下载的文件。否则,激活安全过程,并向引导加载程序等待下载适当的闪存文件。 This is shown in Figure 4.

结论

几乎所有的现代嵌入式系统都配备了内部闪存ROM存储器。通常,引导加载程序内置在固件中以更新程序。然而,在大多数情况下,没有实现机制来避免下载一个操纵程序,以一种未经制造商授权的方式改变设备的行为。在本文中,我们介绍了保护软件更新过程的机制。这些机制是操纵攻击的有效对策,特别是,如果内部闪存ROM中的引导加载程序可以用安全(所谓的“锁定”)位加以保护的话。这种机制已经成功地应用于各种应用,从汽车领域到赌博和移动电话行业。德国汽车整车厂甚至对安全bootloader的机制进行了标准化。虽然该标准只允许通过所谓的消息认证码(MAC)使用对称加密,但我们强烈建议实现基于数字签名的非对称加密方法;否则,要么我们原有的安全需求无法满足,要么组织的努力是巨大的。

虽然加密机制通常很容易实现,但需要在所有级别提供安全性,从组织安全性到适当的固件签名机制,再到包括供应商。特别是,需要小心地将安全机制整合到现有的开发过程中。

本文是由AndréWeimerskirch,CEO和Kai Schramm,CTO,Escrypt Inc.(Ann Arbor,MI)编写的。有关更多信息,请联系Weimerskirch先生此电子邮件地址受到垃圾邮件程序的保护。您需要启用Javascript来查看它。,Schramm先生此电子邮件地址受到垃圾邮件程序的保护。您需要启用Javascript来查看它。,或访问http://info.hotims.com/22920-402。

参考

  1. Christian S. Collberg和Clark D. Thommorson,“软件保护的水印,防篡改和混淆工具”,IEEE在软件工程中的交易,Vol。28,NR。8,2002年。
  2. Hersteller主动性软件(他),“他的安全模块规范,版本1.1”可用在这里, 2006年7月。
  3. Cullen Linn和Saumya Debray,“可执行代码的混淆,以改善静态DIS组件的抵抗”,ACM计算机和通信安全(CCS),2003年。
  4. Marko Wolf,AndréWeimerskirch,以及Thomas Wollinger,“最先进的:嵌入车辆中的安全性”,EuraSip在嵌入式系统中的欧洲兴奋剂,2007年智能车辆嵌入式系统的特刊。

嵌入式技术杂志

这篇文章首次出现在2009年7月的嵌入式技术杂志。

阅读更多本期文章在这里

阅读档案中的更多文章在这里