一、信任架构概述
QoriQ平台的信任架构可以使开发者仅仅靠运行”授权软件程序“来保护您设计的产品,并提供工具在运行环境的生命周期内不间断的检测硬件的安全状态,在运行时环境中检测到的异常会触发硬件状态更改,从而导致系统锁定对先前加密数据的访问或重启硬件。
所有具有信任架构的QorlQ Layerscape 设备都支持以下两种启动模式:
- 正常启动(不信任环境)
- 安全启动
在1046LSDK18.06中信任架构是由pbl-ISBC-ESBC-blob(可选)的链式结构来组成的,接下来介绍下从pbl阶段到内核启动处理器的处理流程
二、处理流程
PBL阶段
当处理器上电时,复位控制逻辑阻塞所有设备活动(包括扫描和调试活动),直到保险丝的值可以被准确地感知。在这个操作阶段,最重要的保险丝值是“安全意图”(ITS),而ITS的作用主要是确认系统要在什么方式下运行。当OEM设置ITS时,他们希望系统以安全和可信的方式运行。在此过程中涉及的两个主要组件是:
SFP和PBL。
首先是sfp( Security Fuse Processor)安全保险丝处理器:他有两个功能,第一个是将预设的值烧进保险丝,第二个是将这些特定值传递给每个硬件块。也就是说如果我们将OEM设置ITS时sfp会强制系统状态为安全启动模式
然后是PBL:Pre-Boot Loader (PBL)是一种微序列器,它通过将DDR内存控制器配置为更优的设置并将代码和数据从低速内存复制到DDR中来简化系统启动。
这允许引导的后续阶段以更高的速度运行。ITS的设置决定了PBL被允许读写的位置。在执行安全引导时,必须使用PBL。至少,PBL必须从复位配置字(RCW)确定的位置读取命令文件,并将值存储到SoC中的ESBC指针寄存器中。如果PBL不执行此操作(或将ESBC指针设置为错误值),则ISBC将无法验证ESBC,并开始空转,在这时没有打印也无法切换启动方式,只能重启重新校验。一旦PBL完成了由其命令文件定义的任何操作,PBL将被禁用,直到下一次Power on Reset和Boot阶段开始。
ISBC阶段
从上文可以得出,ISBC主要的作用就是验证ESBC的完整性和是否与该板子匹配,接下来详细描述ISBC具体做了什么:
①Who am I check?:CPU0会检查程序ID寄存器,确保是否只有自己在执行ISBC,如果不只有自己,则进入到loop,也就是空转
②Sec_Mon check:检测板子上的SEC_MON寄存器的状态是否为check,如果否,则将状态转换到非安全模式也就是正常启动模式
③读取ESBC指针:在上一章PBL阶段我们知道,PBL阶段会读取并解析RCW来确定ESBC头部文件的位置并将位置放在ESBC指针上,ISBC会读取ESBC指针来读取ESBC头部来验证,如果不匹配还是切换到正常启动模式。下面是官方文档中的说明:
ESBC pointer read - CPU O reads the ESBC (External Secure Boot Code) Pointer Register, and then reads the word at the indicated address, which is the first word of the Command Sequence File Header which precedes the ESBC itself.
ESBC指针读取——CPU O读取ESBC(外部安全引导码)指针寄存器,然后读取指定地址处的字,这是命令序列文件头的第一个字,位于ESBC本身之前。
If the contents of the word do not match a hard coded preamble value, the ISBC takes this to mean it has not found a valid CSF and cannot proceed.
如果单词的内容与硬编码的前导值不匹配,则ISBC认为这意味着它没有找到有效的CSF,无法继续。
This leads to a fail, as described in #2 above.
这将导致失败,
版权归原作者 豌豆射手1 所有, 如有侵权,请联系我们删除。