Microchip策略营销经理 Eustace Asanghanwa
对于任何一个嵌入式系统而言,安全启动都是至关重要的一个组成部分。这一过程可保证系统固件即所有嵌入式系统的大脑与系统制造商的设计初衷保持一致。安全启动确保了嵌入式系统的操作是安全并且可预测的。它的价值在那些因出现故障而可能导致灾难性后果的系统中是显而易见的。
类似重要的系统包括家用炉灶和一体式烤箱灶的热控制器、汽车的发动机控制模块、交通灯控制器、植入式医疗设备中的治疗传输系统以及无人驾驶列车的控制器等等。这些系统可能会因为运行它们的固件发生故障而出现失灵或不可预测的操作。而导致此类故障的原因多种多样,可能是由电源浪涌造成内存故障这样的环境因素,也可能是黑客注入恶意代码的执行等等。无论在何种情况下,我们都可以在尝试运行系统之前先通过安全启动过程来检测固件的完整性。
安全启动一直都是在有需要的情况下才会被执行。虽然安全启动作为一个话题而言可能一贯很少被提及,但在很多关键系统中,一直有相应的法规和标准来强制执行安全启动以保障这些系统的安全运行。因此,大部分的电脑鼠标或手持计算器等一些重要性被认为较低的系统都直接跳过了严格的安全启动过程,因为它们出现故障所导致的后果一般都很轻;然而,什么样的构成可以称之为一个关键的嵌入式系统呢?这个定义正因为物联网(IoT)的出现和普及而悄然发生着变化。
IoT 将安全启动推向最前沿
关键系统和非关键系统之间的差异正日渐缩小。随着IoT的出现,可以说现在每个嵌入式系统都是一个关键系统。嵌入式系统不再像是一座孤岛,所有的性能和故障都只限于其中。虽然IoT将嵌入式系统连接在一起提供了很大的好处,但是这种联网的直接后果就是消除了遏制边界。现在,任何一个连入网络的嵌入式系统都可能是潜在的风险,而世界上任何一个人都可能成为潜在的受害者。
因注入故障到嵌入式系统的固件中而引发的潜在损害从来没有像现在这样大。像电源浪涌和通信错误等自然系统故障的发生大致上还是和以前一样,所以传统的安全启动过程还仍然有效。但是,人为注入故障尤其是恶意类型故障的发生,无论是在种类上还是复杂程度上都在迅速增长。在过去,攻击者需要获取物理访问权限以便在每一个单独的系统中插入恶意故障。而现在,由于各个系统都是联网的,攻击者只需攻击其中的一个系统即可轻松获得访问其它许多远程系统的权限。这会导致大量设备被恶意控制,关键系统和存储在云端的数据遭到恶意访问,或是因为黑客炫技而发生臭名昭著的数据泄露事件。这也就是为什么我们有必要确保安全启动解决方案必须能够抵御攻击和故障注入的原因。
保障启动过程
安全启动包含两个基本的要素:检测固件完整性的能力和对检测过程完整性的保障。这些由来已久的要素很好理解,它们使用加密技术来实现各个目标,只在加密算法的复杂程度和保障检测过程完整性的安全硬件方法这两方面有所演变。
检测固件的完整性涉及使用加密技术来创建指纹,即一小段压缩的数字编码,可用来表示固件并且轻松地检测出变化。这种加密技术属于一类可生成指纹摘要、被称为散列函数的加密算法。常用的256 位安全散列算法,或简称为SHA256,可生成长度为256 位的摘要。SHA256 是最新的散列算法,虽然它既不是最紧凑的也算不上最精细的,但是它却在安全性与嵌入式系统资源的有效使用二者之间取得了较好的平衡,这些嵌入式系统资源包括电源、代码空间和计算资源等等。
为了设置和实现安全启动,嵌入式系统制造商在工厂制造过程中即对最终的操作固件进行了散列,并在嵌入式系统中同时安装了固件和摘要。在实际操作过程中,嵌入式系统中的一段检测代码会对操作固件进行散列,并将所得的摘要与工厂安装的摘要进行比较。如果摘要完全匹配,即说明操作代码的完整性没有受损。
为了确保检测过程的完整性,最理想的做法是将检测代码放在诸如ROM(只读存储器)等类型的非可变存储器中,使其不易受到电源浪涌等环境故障矢量以及内存修改疏忽等其它存储损坏情况的影响。为了响应快速变化的市场需求,我们通常会使用锁定版的非易失性存储器技术,比如闪存和EEPROM,或是类似代替ROM 的TrustZone®技术等专用执行环境。
保护启动过程免遭攻击
(编辑:mao35 来源:网络整理)
票
共有0位网友发表了评论 查看完整内容