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

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

[复制链接]
STMCU-管管 发布时间:2024-10-23 08:31
【学习有礼】 |《STM32MPU安全启动》课程全新上线

  M4 f# @7 Q% u! k) l. j  R" y! O  d4 H/ F+ ~
安全启动(Secure Boot)在现代嵌入式系统中扮演着至关重要的角色,尤其是在多处理器单元(MPU)中,安全启动不仅是保护设备和数据的关键机制,也是维护系统整体安全性的基础。通过MPU安全启动,我们希望确保设备上执行的软件是经过验证的、可信的;通过验证每个软件组件的完整性,防止任何未授权的修改;建立整个系统的安全基础 — 根信任(Root of Trust);支持多级安全验证,确保从引导加载程序到操作系统内核及应用程序的每一层都经过验证,建立信任链(Chain of Trust),使整个系统的安全性得以保障并应对复杂的安全威胁,为各种应用场景提供一个安全的运行环境。

2 W' a. @% D7 o$ K  I
1 c" ~6 e8 T. X$ k4 K- P3 k9 z) F
: @9 k* |# a% _+ E. ?5 O% a1、课程介绍
1 Q& U1 K# A2 I1 S' K8 P安全启动的目标是确保设备上执行的软件是可信且未经修改的,其基础是根信任(Root of Trust),即从一个固定的地址开始执行一段不可变的代码。每次上电时,系统会验证安全配置,并校验下一级代码的合法性。系统中的每一级代码在加载和执行下一级代码之前都会进行校验,执行认证过程(Authentication)。% y8 n' }. r, _
因此,我们在这门专栏课程中将从以下内容着手,带大家了解STM32MPU的安全启动机制:
. v* x% {& f8 {7 O
  • 理解安全启动的基本概念及其在STM32MPU产品中的应用;
  • 学习STM32MP15、STM32MP13和STM32MP25的启动流程;
  • 掌握根信任(Root of Trust)及其验证过程,包括从Boot Room到TFA的校验;
  • 探索信任链(Chain of Trust)的工作原理,以及如何进行多级固件的校验;
  • 深入了解如何在安全启动过程中确保各级软件的合法性和完整性。
    1 W( V$ M% {7 H2 v; x2 g+ S, F
6 u' B1 i/ j, ]( S
需要注意的是,并非所有的STM32MP1和STM32MP2型号都默认支持安全启动。支持安全启动的STM32MPU产品型号上通常会带有“C”或“F”字符。如果您希望使用安全启动功能,在选择产品是需要特别关注一下型号,如STM32MP15xC或STM32MP15xF型号,或STM32MP25xC或STM32MP25xF型号,以便在实践中体验STM32MPU安全启动机制。

1 }% G# F6 M. k+ \; J, a9 g
4 @. K1 H# B# b* c; i3 K
. o# j3 C- H/ v2、课程大纲及目录2 y% K  b4 \. G# x# y/ a+ e0 ]" ]
本课程分为五大章节:5 R$ u$ }0 h! H+ S* d
一、安全启动基本概念及STM32MP1/MP2启动流程简介( n6 a: s" W9 g+ |3 r" N# Q
o        探讨安全启动的意义及其在嵌入式系统中的重要性
2 }* o- O4 L7 {3 z8 @% S& |  }2 q" ~$ So        介绍STM32MP1和STM32MP2的主要启动流程* q! G( F3 r" A) \' v8 k9 ], P- ]  `
二、根信任(Root of Trust)
, W# O$ ~8 q1 D1 G% do        深入分析从Boot Room到TFA的校验过程,讲解不同系列(MP15、MP13、MP25)的具体差异
$ w& Z5 @: N% q. {% t三、信任链(Chain of Trust)介绍
$ J6 k" m4 ]& ~$ p$ X, b" j; _o        讲解信任链的工作机制,包括从TFA到OBT和UBoot的校验过程! N: a8 x2 ^  I6 c/ U
四、固件校验与MP15/MP25的信任链) c, _& k& r, N6 L- b
o        详细介绍如何通过OPT对Cortex-M核固件进行校验+ U% S/ L/ c: O! r  t
五、从UBoot到Kernel的校验过程* K# L4 M) u1 T9 V; S
o        讨论UBoot是如何校验和加载Kernel,确保系统的可信性

( k; m4 v/ F# \8 a$ F* p! v
12.png

* L: [* U5 c. |' v' f
+ v/ ~  J( j+ I, w+ Z+ z' v课程内容:
; ?+ c7 e# b( C# f4 N$ {
9 V5 U- R, ~6 ]" m4 U6 E) b; V* e
【STM32MPU 安全启动线上课程】1.0 简介

/ y8 Q# i$ D0 k$ w+ b  @
【STM32MPU 安全启动线上课程】2.1.1 MP15x SecureBootROM 原理

- c; n) L% ~, x$ A% e; g/ U2 R
【STM32MPU 安全启动线上课程】2.1.2 MP15x SecureBootROM 如何使能

3 p7 ]( m* i4 `' u* J$ C
" _& q2 n6 S1 A0 L" @) O
【STM32MPU 安全启动线上课程】2.2.1 MP13x SecureBootROM 原理
  ?3 v1 |0 T9 h- ^
【STM32MPU 安全启动线上课程】2.2.2 MP13x SecureBootROM 如何使能
1 y, u$ M6 V" ]( e) h: ?' ~0 R( l
【STM32MPU 安全启动线上课程】2.3.1 MP25x SecureBootROM 原理

: ~1 X7 p: a- ?/ ]4 {- R
【STM32MPU 安全启动线上课程】2.3.2 MP25x SecureBootROM 如何使能

5 O* E! N3 z( l5 z0 R% A9 R" e
【STM32MPU 安全启动线上课程】2.4 OTP安全烧录介绍

' z8 J' F  H1 u% Y  Z: q
2 R2 k$ `; V6 z4 F0 S
【STM32MPU 安全启动线上课程】3.1 TF-A BL2 TrustedBoot原理
( I0 A' O) U' W" J( _! a
【STM32MPU 安全启动线上课程】3.2 TF-A BL2带校验的启动 如何使能

+ M: y- K$ M' |% F
【STM32MPU 安全启动线上课程】3.3 TF-A BL2带加密和校验的启动 如何使能
, W) I+ k& U2 b" g2 @4 i
【STM32MPU 安全启动线上课程】4.1 optee校验M核固件 原理

1 b4 n  n( l% U0 u! U
【STM32MPU 安全启动线上课程】4.2 optee校验M核固件 如何使能

! b& L6 T$ Y  c3 n4 ~1 W8 Q& O* ]*持续更新中......
  {- W& T: {) p8 A6 ~

* o3 t; u% Q, k- Y学习有礼:
: y& Z" i8 X- v  T/ l学习时间:10月23日-11月30日8 ^1 G: o; g" |/ a" b
通过学习《STM32MPU安全启动》视频课程,在ST中文论坛-STM32团队中发布你的学习心得/笔记。1 \% s9 U: w' y9 e* C1 G. J" r
分享要求:图文并茂形式,分享内容建议从学习中遇到的问题、原理的理解、课程中重点内容整理、实践经验、课程建议等方向;
( `1 }& h  P# g% i0 O分享标题:《STM32MPU安全启动》学习笔记+自定义
9 j' d: `% L* K6 f' @! M0 {分享奖励:我们将从分享学习笔记的蝶粉中,抽3名优质者送出STM32MP157D-DK1开发板一块。
( I6 U% Q. G3 F# x打卡奖励:每日学习评论区截图打卡,抽10位送礼品!, {) N" Z5 Q  M
10.png

; Y7 q9 W) F4 m6 ?* @5 A' Y# C: l7 ~$ i! X% Y8 M+ l
/ N4 i$ ^: }/ `) O+ @

+ i1 f( p4 f3 o* m) K- ^/ p/ R/ @* r7 H2 ?
( W! E. m- |2 z* r- m7 l
+ o& w( l. Z" y) p$ S, _
/ l% e, H- w6 h8 W, u2 w. V
. t( O# a3 {$ t2 d' r
0 T' a7 S: b/ Y) _' z, C# D8 a% h
收藏 评论191 发布时间:2024-10-23 08:31

举报

191个回答
vincent2012 回答时间:2024-10-24 19:27:37

《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支持安全启动。
AndyQ 回答时间:2024-11-13 15:55:45

学习笔记总结:

包括STM32MPU安全启动的基本概念、启动链、以及不同型号(STM32MP15、STM32MP13、STM32MP25X)的上电流程,如何保证代码的完整性与真实性。

1. 安全启动的基本原理

  • 目的 :保护代码不被篡改或非法修改。
  • 信任根(Root of Trust) :系统上电后首先运行的可信代码,不可修改和跳过。
  • 信任链(Chain of Trust) :每一级代码校验下一级的代码,保证整个启动流程的安全性。
  • 校验过程 :通过哈希算法生成校验和,并使用签名验证,签名正确才能跳转到下一步。

2. 启动链(Boot Chain)

  • STM32MP15上电流程
    • Boot Room :系统上电后运行。
    • 加载FSBL :引导程序的第一阶段(FSBL)。
    • 加载OP TEE和Uboot :FSBL加载OP TEE(可信执行环境)和Uboot。
    • 加载Linux内核和应用程序 :由Uboot加载。
    • M4核加载 :M4核可由Uboot、Linux内核或应用加载,也可以由OP TEE加载。
  • STM32MP13 :流程类似,但无M4核。
  • STM32MP25X上电流程
    • Boot Room :系统上电后首先运行。
    • 加载TF-A BL2 和 BL31 :Boot Room加载TF-A(可信固件)的BL2和BL31。
    • 加载OP TEE和Uboot :随后加载OP TEE和Uboot。
    • 加载Linux内核和应用 :由Uboot加载。
    • M33核加载 :M33核分为安全和非安全部分,均在OP TEE后加载。

3. 安全启动的三个阶段

  • Boot Room的FSBL启动 :Boot Room首先启动FSBL。
  • Uboot校验 :Uboot进行校验,通过后进入下一阶段。
  • 从Optee加载Contex M固件 :Contex M固件由Optee加载。

4. 可信软件的重要性

  • 校验 :确保软件的完整性与真实性。
  • 调试配置 :开发和调试中正确配置安全启动十分关键。
  • MPU型号支持 :不是所有MPU都支持安全启动,一般带有C/F后缀的MPU支持此功能。
vincent2012 回答时间:2024-10-29 18:46:28

基础知识

产品生命周期(Product Life Cycle)

  • A/D系列 :只有UNSECURED状态,即不安全状态。
  • C/F系列
    • SECURED_UNLOCKED :安全但未锁定状态,可以进行配置。
    • UNDER_PROVISIONING :OTP(一次性可编程存储器)烧录过程中,与SSP(安全存储保护)功能相关。
    • SECURED_LOCKED :安全状态,且是强制的,无法更改。

设备生命周期(Device Life Cycle)

  • OPEN state :可以选择性使用校验。
  • CLOSED state :启动加载时必须进行签名校验。
  • RMA state :用于失效分析,需要UNLOCKED流程。

STM32MP15启动流程

  1. BootRoom :系统上电后首先运行BootRoom。
  2. TF-A BL2 :BootRoom加载Trusted Firmware-A的BL2(Boot Loader 2)。

出厂设置

  • 出厂时没有配置OPT功能,因此即使校验不成功,系统也会运行。

校验机制

  • ECDSA签名校验 :使用椭圆曲线数字签名算法(ECDSA)进行签名校验,同时带有防止版本回退的机制。

OTP配置

  • OTP中存储有密钥和版本值,启动时对BootRoom内容进行校验查看是否通过。
  • OTP配置是在上位机进行的,首先生成密钥对和哈希值(PKH应写入在OTP的WORD 24-31字段中)。

签名和头文件

  • 上位机需要生成Image签名,并加入需要的信息生成一个头文件。
  • 头文件有两种类型:P-256 NIST和Brainpool 256 T1。
  • 头文件信息包含ECDSA数据、Image数据、版本信息、头版本信息(MP15是1.0)。

ECDSA流程

  1. 校验public key :进行哈希计算后与OTP中的值进行比较。
  2. image签名有效性验证 :确保Image的签名是有效的。
  3. 防回滚检查 :检查版本信息以防止版本回退,但也可以通过重新生成Image回到旧版本。
戈壁滩上的辉煌 回答时间:2024-10-23 08:46:04
(1).png 打卡学习第一天* s* w- F0 y6 ^6 a+ q0 z1 K
zwjiang 回答时间:2024-10-23 09:13:06

2024-10-23 打卡

image.png

qintian0303 回答时间:2024-10-23 12:03:46
0912.png 打卡第一天! d$ I% z, G# X
孤独的单行者 回答时间:2024-10-23 12:15:59
20240705.png
& H+ m9 H' l- I: I
了哈 回答时间:2024-10-23 14:18:52

stm.JPG

打卡学习第一天 2023.10.23

落花又见流水 回答时间:2024-10-23 16:47:01

学习,进阶到linux

image.png

STMWoodData 回答时间:2024-10-23 17:10:53

打卡学习

image.png

藏玉其中 回答时间:2024-10-23 17:40:34
1.png * o3 t+ P! U* a. g/ e
lospring 回答时间:2024-10-23 23:15:45

image.png

LTLT 回答时间:2024-10-23 23:46:42

安全启动的基本原理& 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 回答时间:2024-10-23 23:47:53

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

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

zwjiang 回答时间:2024-10-24 08:49:43

2024-10-24 打卡

image.png

shenxiaolin_mai 回答时间:2024-10-24 09:15:39

打卡:20241024

打卡.png

STMWoodData 回答时间:2024-10-24 09:48:07

打卡学习

image.png

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版