请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

《STM32MPU安全启动》学习笔记之TF-A BL2校验optee和uboot的流程以及如何使能

[复制链接]
星海灿烂 发布时间:2024-11-29 08:52

一、TF-A BL2校验optee或者uboot流程

STM32MPU13X/15X/25X 的FSBL在运行下一级代码时,会校验OP-TEE和U-boot;

MPU25X和13X/15X不同的地方在于MP25X从TF-A BL31启动UBOOT、OP-TEE。

1、TF-A架构图

1)STM32MP1

TF-A分为多个二进制文件,并且每个文件都有其专门的角色,如下:

BL1 应用处理器可信ROM、BL2 可信启动固件、BL32 运行时软件;

对于STM32MPU1BL1是没有使用的。bootrom是上电首先运行的代码。

2)STM32MPU25X

可信启动分为5个阶段:

STM32MPU ROM code;

BL2 可信启动固件;

BL31 EL3运行时软件

BL32 可信运行时固件;

BL33 非可信运行时固件;STM32MPU ROM code;

2、可信固件二进制文件如何打包

1)对TF-A要加载的镜像、证书、PKI打包成一个称为固件映像包(FIP)的二进制文件;

2)FCONF,是一种用于说明TF-A BL2怎么识别FIP中的结构,包含证书之间的关系,校验顺序的设备树。

FPI里面的内容和安全启动有以下差异:

没有开启安全启动时,包含payload、devices tree;

image.png

开启安全启动时,不仅包含payload、devices tree,还保存各类证书(u-boot、OP-TEE、CONFIG、NT FW KEY、Trusted FW Key、Trusted Key)。

image.png

3、TFA-BL2 具体做什么?

1)初始化外设

对于系统组件有:初始化时钟、DDR、启动外设;

对于安全组件有:BSEC、ETZPC、TZC;

2)加载与校验BL32(OP-TEE)、BL33(u-boot)、BL31(EL3运行时软件,只有mp2才有);

3)跳转到BL32

4、TF-A BL2校验的前提

1)遵循X509.v3证书标准;

  • 信任链遵循X509.v3证书标准,增加了特定的扩展,并依赖于PKI生成自签名证书;
  • 信任链的信任根是基于信任根的的公钥;

2)证书分为两类

  • 密钥证书
用于校验公钥;由ID、公钥、签名组成;
  • 内容证书
用于校验要加载的镜像;由固件哈希、密钥证书的公钥相关的私钥签名组成;

3)所有产生的证书都包含在FIP里面

4)根证书是由信任根的公钥校验。

① STM32MP15X系列使用的是保存在OTP中公钥的哈希值(PKH);

② STM32MP13X和MP25X系列使用的是HEADER中的公钥的HASH值,这个HASH是通过保存在OTP中公钥的哈希表的哈希值(PKHTH)校验的;

5、TF-A BL2信任链的证书链的结构

证书链结构主义描述的是证书链的关系,校验顺序

1)默认证书链结构定义在fdts/cot_descriptors.dtsi;被用于注册TF-A BL2信任链

2)STM32MP1的具体证书链结构在fdts/stm32mp1-cot-descriptors.dtsi,STM32MP2的具体证书链结构定义在fdts/stm32mp2-cot-descriptors.dtsi;

证书链结构图如图:

004b7fe3d12965541ac5bf942a9af66.png

信任链的DTSI描述如图:

9c462e70058ee348d600b509e66bd0f.png

850e8365b731ea1deba1a8b8d680d22.png

6、STM32MP1校验流程

如图

66595d61d8740f34f50005156c159cf.png

STM32MP2的校验流程和MP1类似,区别在于,STM32MP2有BL31的固件,因此多了一个密钥证书和一个内容证书。

校验流程框架如下说明

1)使用OTP中的信息校验根证书的密钥有效性;

2)使用根证书中的密钥校验证书本身,从而验证该证书携带信息的有效性(密钥或者HASH);

3)使用密钥证书密钥校验证书本身,从而验证证书携带内容证书密钥的有效性;将密钥证书携带的密钥与下一级内容证书的密钥进行比对,比对通过说明,内容证书携带密钥的有效性;

4)使用内容证书的密钥校验证书本身,校验通过,说明本身携带的HASH值有效,就可以校验各个payload的有效性。

7、如何使能TF-A BL2信任链功能

前提条件:

PKH或者PKHTH已经烧录到OTP中,并且已经使能secure boot功能

使能步骤:

1)构建TF-A BL2时,使能TRUSTED_BOARD_BOOT flag

2)签名镜像和使用证书工具产生证书

3)产生FIP镜像(带有镜像和证书)

4)烧录相关二进制文件

对于MP13X/25X系列,如果使能带加密功能的话,还需要在上述2)3)步骤之间,增加一个步骤:产生和烧录产生的加密密钥和对镜像加密;那么步骤4)烧录的镜像则是带加密的镜像

66595d61d8740f34f50005156c159cf.png
收藏 评论0 发布时间:2024-11-29 08:52

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版