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

相关推荐
AI精钢18 分钟前
H20芯片与中国的科技自立:一场隐形的博弈
人工智能·科技·stm32·单片机·物联网
etcix3 小时前
implement copy file content to clipboard on Windows
windows·stm32·单片机
谱写秋天3 小时前
在STM32F103上进行FreeRTOS移植和配置(STM32CubeIDE)
c语言·stm32·单片机·freertos
数据智能老司机6 小时前
实现逆向工程——理解 x86 机器架构
安全·逆向
数据智能老司机6 小时前
实现逆向工程——逆向工程的影响
安全·逆向
globbo7 小时前
【嵌入式STM32】I2C总结
单片机·嵌入式硬件
玖別ԅ(¯﹃¯ԅ)8 小时前
SysTick寄存器(嘀嗒定时器实现延时)
stm32·单片机·嵌入式硬件
limitless_peter8 小时前
集成运算放大器(反向比例,同相比例)
嵌入式硬件·硬件工程
Blossom.1189 小时前
把 AI 推理塞进「 8 位 MCU 」——0.5 KB RAM 跑通关键词唤醒的魔幻之旅
人工智能·笔记·单片机·嵌入式硬件·深度学习·机器学习·搜索引擎
2301_7807896610 小时前
边缘节点 DDoS 防护:CDN 节点的流量清洗与就近拦截方案
安全·web安全·ddos