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

【学习有礼】 |《STM32MPU安全启动》课程全新上线  

[复制链接]
STMCU-管管 发布时间:2024-10-23 08:31
【学习有礼】 |《STM32MPU安全启动》课程全新上线
1 s* `% t" c) j& E+ N4 d4 j
- ~7 @! v4 a' Z+ Y- [$ c
安全启动(Secure Boot)在现代嵌入式系统中扮演着至关重要的角色,尤其是在多处理器单元(MPU)中,安全启动不仅是保护设备和数据的关键机制,也是维护系统整体安全性的基础。通过MPU安全启动,我们希望确保设备上执行的软件是经过验证的、可信的;通过验证每个软件组件的完整性,防止任何未授权的修改;建立整个系统的安全基础 — 根信任(Root of Trust);支持多级安全验证,确保从引导加载程序到操作系统内核及应用程序的每一层都经过验证,建立信任链(Chain of Trust),使整个系统的安全性得以保障并应对复杂的安全威胁,为各种应用场景提供一个安全的运行环境。
7 U) `6 _! ~6 O$ {0 O4 r5 [- k
7 t; D! J6 O& |

7 R! f4 h$ Y0 ?) U1、课程介绍# ~- `& `  z& }' x0 b
安全启动的目标是确保设备上执行的软件是可信且未经修改的,其基础是根信任(Root of Trust),即从一个固定的地址开始执行一段不可变的代码。每次上电时,系统会验证安全配置,并校验下一级代码的合法性。系统中的每一级代码在加载和执行下一级代码之前都会进行校验,执行认证过程(Authentication)。  m6 T, M9 ]+ b$ @
因此,我们在这门专栏课程中将从以下内容着手,带大家了解STM32MPU的安全启动机制:

6 g$ c7 X  ?+ z% v2 X& u( M
  • 理解安全启动的基本概念及其在STM32MPU产品中的应用;
  • 学习STM32MP15、STM32MP13和STM32MP25的启动流程;
  • 掌握根信任(Root of Trust)及其验证过程,包括从Boot Room到TFA的校验;
  • 探索信任链(Chain of Trust)的工作原理,以及如何进行多级固件的校验;
  • 深入了解如何在安全启动过程中确保各级软件的合法性和完整性。9 V9 }& \( R: T! k3 b2 w, p
- r8 p$ ^  k1 ?! C' s# E' r6 ^# F
需要注意的是,并非所有的STM32MP1和STM32MP2型号都默认支持安全启动。支持安全启动的STM32MPU产品型号上通常会带有“C”或“F”字符。如果您希望使用安全启动功能,在选择产品是需要特别关注一下型号,如STM32MP15xC或STM32MP15xF型号,或STM32MP25xC或STM32MP25xF型号,以便在实践中体验STM32MPU安全启动机制。

+ F& x# |% D* \8 i: x
! \% ?; m- c' d) T
+ m7 n/ c' a# {, m/ a5 r$ @7 h2 c2、课程大纲及目录
# y8 d1 `) H  {; V9 \本课程分为五大章节:9 ]/ t) h8 Y1 Y2 M5 ]# K( o0 w
一、安全启动基本概念及STM32MP1/MP2启动流程简介
) \# Z1 T: p; @: |o        探讨安全启动的意义及其在嵌入式系统中的重要性# A0 J: v  Z: U- I2 ?8 N
o        介绍STM32MP1和STM32MP2的主要启动流程
% T# G' C% K6 h) |0 C二、根信任(Root of Trust)
% _  e! e& i* q6 J, Uo        深入分析从Boot Room到TFA的校验过程,讲解不同系列(MP15、MP13、MP25)的具体差异* N4 p  [' g- G
三、信任链(Chain of Trust)介绍" P' C4 T! G, ]' B
o        讲解信任链的工作机制,包括从TFA到OBT和UBoot的校验过程
# h# |+ k+ V$ ]+ F1 S3 W1 A/ Y+ b四、固件校验与MP15/MP25的信任链
9 K; r! w3 v9 w* I  M* ?6 h0 d4 to        详细介绍如何通过OPT对Cortex-M核固件进行校验
/ [4 L3 `& n& u+ T  S! I3 G1 Q$ y五、从UBoot到Kernel的校验过程! Z: A, m4 a3 O/ I; y* d* b
o        讨论UBoot是如何校验和加载Kernel,确保系统的可信性

) J! t3 Z! k; F; p  h' l
12.png

, x& q1 y; }, R$ G
) t3 Y% c$ J- j1 F& n! D课程内容:
7 o, P# ~, t7 s) h0 a0 {+ S
【STM32MPU 安全启动线上课程】1.0 简介
3 I+ d, [  B7 O8 P8 v0 f. B
【STM32MPU 安全启动线上课程】2.1.1 MP15x SecureBootROM 原理

, w- b3 x9 w. s6 u1 m& n; y1 O
【STM32MPU 安全启动线上课程】2.1.2 MP15x SecureBootROM 如何使能
' s) N, f6 o2 \
*持续更新中......
/ V5 {5 G3 Z  ^4 s9 n/ H+ M
+ F6 n2 o: f3 T, {: k
学习有礼:5 L5 y6 c$ Y, }5 P# U! a
学习时间:10月23日-11月30日
# U" {* l# p1 Z2 D' q  v0 Q9 x/ _7 D
通过学习《STM32MPU安全启动》视频课程,在ST中文论坛-STM32团队中发布你的学习心得/笔记。
( g/ H" }. `6 ^& S" V分享要求:图文并茂形式,分享内容建议从学习中遇到的问题、原理的理解、课程中重点内容整理、实践经验、课程建议等方向;
1 b6 @3 W# U1 G* l4 i7 f分享标题:《STM32MPU安全启动》学习笔记+自定义: H4 ?4 [% z1 y3 v: B
分享奖励:我们将从分享学习笔记的蝶粉中,抽3名优质者送出STM32MP157D-DK1开发板一块。( X6 S( A' S% N  k7 I( w1 ?  w2 ^. Q
打卡奖励:每日学习评论区截图打卡,抽10位送礼品!/ l9 k# e' ~& b) W
10.png
' M6 v$ d' T$ {6 r0 ?& a3 d& d8 @
+ b2 V7 b: z( N$ Q  Y
/ e. B8 ~+ M" ]& y/ b5 R- ^- ]* g
. |# c2 P# q# v" M6 N
# F! h8 M8 _9 r0 X% p3 L/ s
/ Z8 Z, {4 A/ Q6 `
. v; }% i. l6 G; O  [/ c* [. J5 |" ~
* J6 |) y  ^% _: M0 w
+ A3 q5 @/ V( y! L5 R& L

; @0 J' |; _4 ^% V1 x" X
收藏 评论44 发布时间:2024-10-23 08:31

举报

44个回答
vincent2012 回答时间:4 天前

《STM32MPU安全启动》学习笔记总结

安全启动的基本原理

目的 :防止代码被非法改写或篡改。

信任根(Root of Trust) :这是系统启动时的第一个可信代码,它是不可变且不可跳过的。当系统上电时,必须首先运行信任根代码。

信任链(Chain of Trust) :由于代码通常很庞大,不可能只有一个启动程序(bootloader),因此存在一个启动流程。在这个流程中,每一级都会校验下一级的代码,确保其完整性和真实性。每一级都会有一段数据用于校验。

校验过程 :通常使用哈希算法生成校验和,然后使用签名进行验证。如果签名比对成功,则可以跳转到下一级。

Boot Chain(启动链)

STM32MP15的上电流程:

  1. Boot Room :系统上电后首先运行Boot Room。
  2. 加载FSBL :从Boot Room加载第一级引导程序(FSBL,First Stage BootLoader)。
  3. 加载OP TEE 和 Uboot :FSBL加载OP TEE(Optee Trusted Execution Environment)和Uboot。
  4. 加载Linux内核和应用 :随后Uboot加载Linux内核,再加载应用程序。
  5. M4核的加载 :M4核可以由Uboot/Linux内核/应用程序加载,也可以在OP TEE加载。

STM32MP13的上电流程与STM32MP15类似,但少了M4核。

STM32MP25X的启动流程:

  1. Boot Room :系统上电后首先运行Boot Room。
  2. TF-A BL2 和 TF-A BL31 :Boot Room加载TF-A(Trusted Firmware-A)的BL2(Boot Loader 2)和BL31(Boot Loader 31)。
  3. 加载OP TEE 和 Uboot :随后加载OP TEE和Uboot。
  4. 加载Linux内核和应用 :Uboot加载Linux内核,再加载应用程序。
  5. M33核的加载 :M33核分为安全和非安全部分,其加载都在OP-TEE之后进行。

安全启动的三个阶段

  1. Boot Room的FSBL启动 :Boot Room首先启动FSBL。
  2. Uboot的校验 :Uboot进行校验,通过后才能进入下一个阶段。
  3. Contex M FW从Optee加载 :从Optee加载Contex M固件。

可信软件的重要性

  • 校验方式 :确保软件的完整性和真实性。
  • 调试配置 :在开发和调试过程中,需要正确配置安全启动。
  • MPU系列 :不是所有的MPU都支持安全启动,通常后面带有C/F系列的MPU支持安全启动。
LTLT 回答时间:5 天前

安全启动的基本原理& Boot Chain

  • 安全启动的目的是为了防止代码被改写

  • 信任根:不可变也不可以跳过,上电必须会运行的内容

  • 信任链路:由于代码分庞大,不止有一个boot,这就有了一个启动流程,每一级都会检验,所以每一级都会有一段数据用来进行校验

  • 哈希,签名,然后签名比对,校验成功即可跳转到下一级

  • stm32MP15上电流程:

    • boot room
    • 加载FSBL
    • 随后加载OP TEE 和 Uboot
    • 随后 UBoot即可 加载Linux内核 再加载应用
    • 而M4核可以由 Uboot/linux内核/应用 进行加载也可以在 OP TEE加载
  • stm32MP13:

    • 和MP15有点区别:少了M4核
  • stmMP25X启动流程:

    • boot room
    • TF-A BL2
    • TF-A BL31
    • 随后加载OP TEE 和 Uboot
    • 随后 UBoot即可 加载Linux内核 再加载应用
    • 而M33核 分安全和非安全部分
    • M33的加载都在OP-TEE 后加载
  • 大致分三个阶段

    • Boot room 的FSBL启动
    • Uboot的校验随后才能进入下个阶段
    • Contex M FW 从 Optee加载
    • UBoot 加载 Kernel的方式
  • 安全启动

    • 可信软件的重要性
    • 校验的方式,调试的配置
    • 不是所有的MPU都带安全启动(后面带C / F系列)
LTLT 回答时间:3 天前

基础知识:

Product Lift Cycle

  • A/D 系列中 只有 UNSECURED 状态
  • C/F 系列中
    • SECURED_UNLOCKED
    • UNDER_PROVISIONING OTP的烧录 SSP 功能相关
    • SECURED_LOCKED 安全状态是强制的
    • RMA 做失效分析的 需要UNLOCKED 流程

Device Life Cycle

  • OPEN state

    • 可以选择性使用校验
  • CLOSED state

    • boot 加载就是强制签名校验
  • RMA state

STM32MP15

BootRoom -> TF-A BL2 讲解如何签名校验

出厂设置是没配置OPT功能的,所以一开始如果校验不成功也会通过运行

校验:

  • ECDSA签名校验的机制 同时带有防止版本回退的机制

  • OTP 存有 Key 和一个版本值,启动的时候就是将bootRoom内容进行校验查看是否PASS

    • OTP 看视频介绍说是在上位机进行配置的
    • 首先生成密钥对、哈希(PKH 应该写入在 OTP WORD 24-31字段中)
    • 上位机需要生成 Image 签名 ,加入需要的信息生成一个头文件
  • 这个头文件有两种 P 256 NIST 、Brainpool 256 T1

  • 头的信息就包含了ECDSA 数据、 Image 数据、版本信息、头版本信息(MP15是1.0)

  • EDCSA流程

  • 校验public key 进行 哈希然后和OTP里面进行比较

  • image 签名有效性验证

  • 防回滚的检查 (可以重新生成image这样也可以回到旧版本)

戈壁滩上的辉煌 回答时间:5 天前
(1).png 打卡学习第一天
1 U, p& N  V) q; {5 z* F
zwjiang 回答时间:5 天前

2024-10-23 打卡

image.png

qintian0303 回答时间:5 天前
0912.png 打卡第一天
6 K; \: R# W6 a  L# I; H
孤独的单行者 回答时间:5 天前
20240705.png
" f& t6 z$ _' Q2 Q
了哈 回答时间:5 天前

stm.JPG

打卡学习第一天 2023.10.23

落花又见流水 回答时间:5 天前

学习,进阶到linux

image.png

STMWoodData 回答时间:5 天前

打卡学习

image.png

藏玉其中 回答时间:5 天前
1.png
9 a& W0 r# d: y
lospring 回答时间:5 天前

image.png

LTLT 回答时间:5 天前

LTLT 发表于 2024-10-23 23:46</p>
<h2><strong>安全启动的基本原理&amp; Boot Chain</strong></h2>
<ul>
<li><strong>安全启动的目的是为了防止代码被改写</strong>

[md]希望大佬能举例应用场景,对于我这种没接触过的就很迷

zwjiang 回答时间:4 天前

2024-10-24 打卡

image.png

shenxiaolin_mai 回答时间:4 天前

打卡:20241024

打卡.png

STMWoodData 回答时间:4 天前

打卡学习

image.png

123下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版