二、STM32MP257安全启动流程简介

文章目录

  • 二、STM32MP257启动流程简介
    • [1. STM32MP系列启动流程](#1. STM32MP系列启动流程)
    • [2. STM32MP257 Secure BootRom原理](#2. STM32MP257 Secure BootRom原理)

二、STM32MP257启动流程简介

本章节将简要介绍STM32MP257的启动流程

1. STM32MP系列启动流程

安全启动就是保证在嵌入式设备上运行的软件是值得信任的,在嵌入式linux中完整的启动流程通常包含多个启动阶段,比如BootROM、TFA、Uboot、Kernel、应用程序等,值得信任不能靠口头保证,必须有一种完善的校验机制来保证全流程的可信,所有安全启动的起点必须是值得信赖的,无法被外部篡改的,我们叫信任根 (RoT:Root of Trust),这个角色通常是芯片厂商设计的Bootrom代码,芯片上电以后会从固定的位置开始运行代码,这段代码由芯片厂商固化,外部开发者不可见也不可改。

因为嵌入式linux启动流程分为多个阶段,有了信任根以后我们还需要保证每个阶段加载的image是值得信任的,这就是我们常说的信任链(CoT:Chain of Trust),由信任链来保证每一个阶段加载的下一阶段image的完整性。

下面首先看一下STM32MP257官方支持的启动流程:

stm32mp257支持从A53核启动,也支持从CM33核启动,上图以A53启动为例:

  1. 上电以后从内部BootRom冷启动,BootRom会加载TFA的BL2来作为FSBL的image
  2. TFA的BL2会加载TFA的BL31,主要是security级别的EL3代码相关(A53和A7核心差异)
  3. 然后由TFA的BL31来加载Uboot和Optee
  4. 在安全启动中由Optee来加载CM33核心,这样可以做签名的校验
  5. uboot加载内核并启动
  6. 由内核来加载应用程序

    不过在stm32mp系列中并不是所有产品都支持安全启动流程的,只有stm32mp257c和stm32mp257f两个系列是支持硬件加密安全启动的。

2. STM32MP257 Secure BootRom原理

Secure BootRom 即从BootRom -> TFA BL2 的校验流程

A/D的系列因为硬件不支持安全启动,所以只有UNSECURED一个状态,C/F系列出场默认是UNLOCKED状态,如果通过PROVEISION以后设备就会变成LOCKED状态,此时如果校验失败则无法启动。

STM32MP2 BootRom校验使用的是ECDSA算法,同时支持防回滚机制,同时支持给SSBL做加密。

如果使能安全启动,BootRom会检查TFA分区镜像的头(Header),如果带有加密信息会对Public Key做校验,对image的hash值做签名校验,同时还有防回滚检查,都通过以后TFA BL2 才会跑起来。

这部分包含比较多的密码学知识和加解密流程,因为我使用的开发板使用的是不带加密安全启动的STM32MP257D 系列芯片,所以如果对这部分比较感兴趣可以在B站搜索STM32MP安全启动线上课程详细学习。

相关推荐
某林2121 小时前
ROS2与STM32通信详解
stm32·单片机·嵌入式硬件
网安小白的进阶之路2 小时前
A模块 系统与网络安全 第四门课 弹性交换网络-5
网络·安全·web安全
EVERSPIN4 小时前
MCU微控制器,N32H47x高性能MCU机器人关节控制方案
单片机·嵌入式硬件·机器人·mcu微控制器
0南城逆流04 小时前
【STM32】知识点介绍三:哈希算法详解
stm32·嵌入式硬件·哈希算法
云山工作室4 小时前
基于STM32单片机的正激式开关电源设计(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·课程设计·毕设
芯希望5 小时前
芯伯乐700mA线性稳压器XBLW L78M05H/L78M12H:稳定可靠,简化电源设计
单片机·嵌入式硬件
lingzhilab5 小时前
零知IDE——STM32F407VET6驱动SHT40温湿度传感器与ST7789实现智能环境监测系统
stm32·单片机·嵌入式硬件
民乐团扒谱机6 小时前
实验室安全教育与管理平台学习记录(七)网络安全
学习·安全·web安全
贝塔实验室7 小时前
Altium Designer 6.3 PCB LAYOUT教程(四)
驱动开发·嵌入式硬件·硬件架构·硬件工程·信息与通信·基带工程·pcb工艺
星辰pid8 小时前
stm32的gpio模式到底该怎么选择?(及iic,spi,定时器原理介绍)
stm32·单片机·嵌入式硬件