本文主要是介绍TrustZone之安全启动与引导失败处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、引导和信任链
引导是任何TrustZone系统的关键部分。只有在引导流程中之前运行的所有软件组件都是可信的情况下,才能信任某个软件组件。这通常被称为信任链。下图显示了一个简化的信任链:
在我们的示例中,首先运行的代码是boot ROM。我们必须隐式信任boot ROM,因为没有更早的引导阶段来验证其内容。由于它位于ROM中,可以防止对初始引导代码的重写。将初始引导代码保留在芯片上可以防止其被替换,因此我们可以隐式信任它。boot ROM代码通常很小且简单。其主要功能是从闪存加载和验证第二阶段的引导代码。
第二阶段的引导代码执行平台的系统初始化,例如设置用于片外DRAM的内存控制器。此代码还负责加载和验证将在安全和非安全状态下运行的映像。示例包括在安全状态加载TEE和在非安全状态加载像UEFI这样的更高级别固件。
之前我们介绍了System Control Processor (SCP)。SCP是许多现代SoC中执行低级系统控制的微控制器。在存在SCP或类似物的情况下,它也构成了信任链的一部分。下图显示了这一点:
二、启动失败
在可信引导系统中,每个组件在加载之前都会验证下一个组件,形成一个信任链。现在让我
这篇关于TrustZone之安全启动与引导失败处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!