【学习有礼】 |《STM32MPU安全启动》课程全新上线 ]0 p" U9 ` m" C; u 安全启动(Secure Boot)在现代嵌入式系统中扮演着至关重要的角色,尤其是在多处理器单元(MPU)中,安全启动不仅是保护设备和数据的关键机制,也是维护系统整体安全性的基础。通过MPU安全启动,我们希望确保设备上执行的软件是经过验证的、可信的;通过验证每个软件组件的完整性,防止任何未授权的修改;建立整个系统的安全基础 — 根信任(Root of Trust);支持多级安全验证,确保从引导加载程序到操作系统内核及应用程序的每一层都经过验证,建立信任链(Chain of Trust),使整个系统的安全性得以保障并应对复杂的安全威胁,为各种应用场景提供一个安全的运行环境。 5 S4 M( r9 w6 K4 w# V; \ 1、课程介绍 安全启动的目标是确保设备上执行的软件是可信且未经修改的,其基础是根信任(Root of Trust),即从一个固定的地址开始执行一段不可变的代码。每次上电时,系统会验证安全配置,并校验下一级代码的合法性。系统中的每一级代码在加载和执行下一级代码之前都会进行校验,执行认证过程(Authentication)。, S( W/ K6 a% Q1 z( Y 因此,我们在这门专栏课程中将从以下内容着手,带大家了解STM32MPU的安全启动机制:% B4 S- i# E8 n8 o! T
需要注意的是,并非所有的STM32MP1和STM32MP2型号都默认支持安全启动。支持安全启动的STM32MPU产品型号上通常会带有“C”或“F”字符。如果您希望使用安全启动功能,在选择产品是需要特别关注一下型号,如STM32MP15xC或STM32MP15xF型号,或STM32MP25xC或STM32MP25xF型号,以便在实践中体验STM32MPU安全启动机制。 2、课程大纲及目录 本课程分为五大章节:: A2 h7 I D" f; F 一、安全启动基本概念及STM32MP1/MP2启动流程简介( n2 T0 V$ l8 ~1 i o 探讨安全启动的意义及其在嵌入式系统中的重要性 o 介绍STM32MP1和STM32MP2的主要启动流程* D. N( e! p0 y0 z/ p 二、根信任(Root of Trust)0 F0 u9 r; \6 B6 Z" V' i/ _ o 深入分析从Boot Room到TFA的校验过程,讲解不同系列(MP15、MP13、MP25)的具体差异9 @7 P! b+ U5 y; h# G& a' q 三、信任链(Chain of Trust)介绍 o 讲解信任链的工作机制,包括从TFA到OBT和UBoot的校验过程 四、固件校验与MP15/MP25的信任链2 ^" Q$ U% q* K. a o 详细介绍如何通过OPT对Cortex-M核固件进行校验 五、从UBoot到Kernel的校验过程) u Q* Y y$ }; D. u# `& G o 讨论UBoot是如何校验和加载Kernel,确保系统的可信性 / Y5 I1 Y4 b9 Q2 w+ Y, X4 { 课程内容:5 c0 E9 ~ ?( ~% d D 【STM32MPU 安全启动线上课程】1.0 简介 【STM32MPU 安全启动线上课程】2.1.1 MP15x SecureBootROM 原理 【STM32MPU 安全启动线上课程】2.1.2 MP15x SecureBootROM 如何使能 学习有礼: 学习时间:10月23日-11月30日( g3 Y* A) E' [+ u 通过学习《STM32MPU安全启动》视频课程,在ST中文论坛-STM32团队中发布你的学习心得/笔记。 分享要求:图文并茂形式,分享内容建议从学习中遇到的问题、原理的理解、课程中重点内容整理、实践经验、课程建议等方向; 分享标题:《STM32MPU安全启动》学习笔记+自定义, z4 K8 Y9 {0 E" ^. _ 分享奖励:我们将从分享学习笔记的蝶粉中,抽3名优质者送出STM32MP157D-DK1开发板一块。, w% z. N0 L1 ]! V' @8 w2 F, v 打卡奖励:每日学习评论区截图打卡,抽10位送礼品!. E5 L3 ]4 p* B: B5 f % @% ~$ R: {- f0 v* Y1 t8 j 3 D7 ~- v+ J1 @+ h! w$ [ 1 u1 A" L6 F3 d; u- _ + S& k$ X/ ?1 N8 b1 M * H/ w: b2 m/ x |
《STM32MPU安全启动》学习笔记总结
安全启动的基本原理
目的 :防止代码被非法改写或篡改。
信任根(Root of Trust) :这是系统启动时的第一个可信代码,它是不可变且不可跳过的。当系统上电时,必须首先运行信任根代码。
信任链(Chain of Trust) :由于代码通常很庞大,不可能只有一个启动程序(bootloader),因此存在一个启动流程。在这个流程中,每一级都会校验下一级的代码,确保其完整性和真实性。每一级都会有一段数据用于校验。
校验过程 :通常使用哈希算法生成校验和,然后使用签名进行验证。如果签名比对成功,则可以跳转到下一级。
Boot Chain(启动链)
STM32MP15的上电流程:
STM32MP13的上电流程与STM32MP15类似,但少了M4核。
STM32MP25X的启动流程:
安全启动的三个阶段
可信软件的重要性
安全启动的基本原理& Boot Chain
安全启动的目的是为了防止代码被改写
信任根:不可变也不可以跳过,上电必须会运行的内容
信任链路:由于代码分庞大,不止有一个boot,这就有了一个启动流程,每一级都会检验,所以每一级都会有一段数据用来进行校验
哈希,签名,然后签名比对,校验成功即可跳转到下一级
stm32MP15上电流程:
stm32MP13:
stmMP25X启动流程:
大致分三个阶段
安全启动
基础知识:
Product Lift Cycle
Device Life Cycle
OPEN state
CLOSED state
RMA state
STM32MP15
BootRoom -> TF-A BL2 讲解如何签名校验
出厂设置是没配置OPT功能的,所以一开始如果校验不成功也会通过运行
校验:
ECDSA签名校验的机制 同时带有防止版本回退的机制
OTP 存有 Key 和一个版本值,启动的时候就是将bootRoom内容进行校验查看是否PASS
这个头文件有两种 P 256 NIST 、Brainpool 256 T1
头的信息就包含了ECDSA 数据、 Image 数据、版本信息、头版本信息(MP15是1.0)
EDCSA流程
校验public key 进行 哈希然后和OTP里面进行比较
image 签名有效性验证
防回滚的检查 (可以重新生成image这样也可以回到旧版本)
2024-10-23 打卡
打卡学习第一天 2023.10.23
学习,进阶到linux
打卡学习
[md]希望大佬能举例应用场景,对于我这种没接触过的就很迷
2024-10-24 打卡
打卡:20241024
打卡学习