TrustZone之安全启动与引导失败处理

一、引导和信任链

        引导是任何TrustZone系统的关键部分。只有在引导流程中之前运行的所有软件组件都是可信的情况下,才能信任某个软件组件。这通常被称为信任链。下图显示了一个简化的信任链:

TrustZone之安全启动与引导失败处理_第1张图片

        在我们的示例中,首先运行的代码是boot ROM。我们必须隐式信任boot ROM,因为没有更早的引导阶段来验证其内容。由于它位于ROM中,可以防止对初始引导代码的重写。将初始引导代码保留在芯片上可以防止其被替换,因此我们可以隐式信任它。boot ROM代码通常很小且简单。其主要功能是从闪存加载和验证第二阶段的引导代码。

        第二阶段的引导代码执行平台的系统初始化,例如设置用于片外DRAM的内存控制器。此代码还负责加载和验证将在安全和非安全状态下运行的映像。示例包括在安全状态加载TEE和在非安全状态加载像UEFI这样的更高级别固件。

        之前我们介绍了System Control Processor (SCP)。SCP是许多现代SoC中执行低级系统控制的微控制器。在存在SCP或类似物的情况下,它也构成了信任链的一部分。下图显示了这一点:

TrustZone之安全启动与引导失败处理_第2张图片

二、启动失败

        在可信引导系统中,每个组件在加载之前都会验证下一个组件,形成一个信任链。现在让我

你可能感兴趣的:(ARM安全,ARM安全架构,ARM,TrustZone,安全启动,启动失败处理,TBBR)