二、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安全启动线上课程详细学习。

相关推荐
羽获飞7 小时前
从零开始学嵌入式之STM32——5.GPIO外设
stm32·单片机·嵌入式硬件
望眼欲穿的程序猿7 小时前
串口通信---串口2定时器2
stm32·单片机·嵌入式硬件
拍客圈7 小时前
Discuz CC 防护规则
服务器·网络·安全
望眼欲穿的程序猿7 小时前
STC/Ai8051U 中断列表
单片机·嵌入式硬件·stc
九河云8 小时前
数字韧性时代,华为云CBR为业务连续性注入“免疫基因”
大数据·人工智能·安全·机器学习·华为云
国科安芯8 小时前
航空级PMSM驱动系统中MCU的故障诊断与容错控制策略研究
单片机·嵌入式硬件·安全·架构·制造·安全性测试
帅次8 小时前
系统分析师-信息物理系统分析与设计
stm32·单片机·嵌入式硬件·mcu·物联网·iot·rtdbs
澜莲Alice8 小时前
STM32 MPLAB X IDE 软件安装-玩转单片机-英文版沉浸式安装
stm32·单片机·嵌入式硬件
C澒9 小时前
系统初始化成功率下降排查实践
前端·安全·运维开发
只是懒得想了9 小时前
C++实现密码破解工具:从MD5暴力破解到现代哈希安全实践
c++·算法·安全·哈希算法