中文 英语
18lickc新利
的意见

使用信任根实现安全引导

对引导加载序列的所有阶段进行数字签名和验证。

受欢迎程度

启动序列描述了设备在启动过程开始时执行的初始操作集。在此阶段,可用资源驻留在某种形式的本地非易失性存储中,设备可以很容易地访问这些存储。启动启动序列的实体称为引导加载程序(或引导加载程序)。

引导加载程序允许在整个启动序列中向前推进,直到完成,此时设备进入正常运行状态。引导加载程序流由多个阶段组成,每个阶段逐步执行启动序列中更复杂的部分,例如包含特定于平台的驱动程序代码。如果引导过程不安全,攻击者可以在引导过程中隐射伪造代码,从而控制系统和/或执行恶意代码。

使用信任根,可以通过数字签名和验证引导加载序列的所有阶段,以安全的方式实现引导流。这是通过以下步骤完成的多阶段安全引导序列:

  1. 从本地只读非易失性存储(ROM)执行初始引导加载程序阶段,为安全引导流程中使用的引导设备执行上电自检(POST),并验证引导加载程序下一阶段的数字签名(在本地写一次的非易失性存储中)。
  2. 从本地写一次的非易失性存储执行后续的引导加载程序阶段。
  3. 将下一个引导加载程序阶段从远程大容量存储加载到本地易失性存储—并在本地易失性存储中验证下一个阶段引导加载程序的数字签名。
  4. 在本地易失性存储器中执行后续引导加载程序阶段。
  5. 后续引导加载程序阶段重复步骤3和步骤4,直到整个安全引导流程完成。

在信任的Rambus根目录中实现安全引导序列的情况下,安全引导加载程序的第一阶段存储在ROM中,称为“fBoot”(第一次引导)。此代码验证并执行安全引导流的下一阶段,并为制造和测试提供支持。安全引导加载程序的后续阶段是“sBoot”(第二次引导),通常在注册阶段加载到本地一次写入的非易失性存储中。这段代码通常处理验证和启用安全引导流下一阶段执行所需的任何特定于设备的操作。接下来是“tBoot”,它指的是安全引导加载程序的下一个阶段,通常存储在远程大容量存储中,支持后续安全引导加载程序阶段的加载、验证和执行。

毫无疑问,任何安全引导过程都需要依赖于快速但可靠的加密概念和“信任锚”之上的健壮实现。至少,需要一套所谓的基于P-256或p -521的椭圆曲线数字签名验证,对芯片上的私钥进行验证。在加载和验证之前,健壮的图像解密可以提供额外的保护。请注意,最好是信任根处理安全引导自身以及安全引导SoC中的主机系统。

在Rambus Root of Trust中启用的多阶段安全引导流非常灵活,可以适应复杂程度不同的引导加载程序序列。例如,如果不需要设备或平台初始化(或配置),则不需要boot。或者可以将boot和tBoot组合为一个阶段。类似地,如果整个安全引导加载程序可以驻留在本地ROM存储器中,则不需要boot和tBoot。此外,安全引导流机制将需要扩展安全固件更新功能,这是另一个故事。

为了在实践中说明这些概念,以下是信任根如何按健壮性降序保护系统引导序列的四种方法:

  • 信任安全引导的根,然后是主机系统引导:当主机系统处于重置状态时,信任根启动。完成后,主机系统从重置中释放,信任根验证每个签名引导阶段以执行系统。这个引导序列提供了最健壮的安全性,因为每个阶段在执行前都由信任根或系统进行数字签名和验证。
  • 部分主机系统引导,然后是信任安全引导的根引导(以及系统引导的其余部分):系统执行系统引导流程的一部分,通常包括POST和相关系统资源的配置。此时,当信任根执行自己的安全引导时,系统引导流将保持。在此步骤之后,系统引导流程将恢复,信任根将验证其余的系统引导加载程序阶段,直到系统引导完成。为了确保健壮的安全级别,在Trust的Root安全引导和随后的安全系统引导之前执行的系统引导加载程序阶段的数量保持在最小。
  • 部分系统引导和部分信任根安全引导(以及安全引导和系统引导的其余部分并行):由于系统元素和Root of Trust引导流并行执行,这将导致整体系统引导流稍微快一些。此配置的安全性取决于在激活信任根之前执行的系统引导阶段的数量,以及在安全引导流完成之前执行的检查类型。
  • 系统引导,然后是信任安全引导的根:当信任根节点处于重置状态时,系统启动。在系统启动后,信任根从重置中释放,并执行其安全引导流程。这种配置的安全性是最不可靠的,因为信任根只能验证设备的当前状态和设备中存在的任何映像。

随着威胁的数量和严重性的增长,系统设计人员应该仔细评估系统的威胁模型。在此基础上,可以选择使用信任根的安全引导方法。Rambus拥有超过30年的安全经验和业界最广泛的信任根解决方案。无论您的应用程序是什么,我们都可以帮助您选择正确的信任根,以及最适合您的安全需求的安全引导方法。

额外的资源



留下回复


(注:此名称将公开显示)

Baidu