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

《STM32MPU安全启动》③TF-A BL2启动U-Boot与OP-TEE

[复制链接]
小萝卜啦啦啦 发布时间:2024-11-30 23:13
本文是安全启动的第二次跳转,由TF-A BL2启动U-Boot与OP-TEE,对应第一篇文章中的这个部分。这次会加载并运行2个部分的代码,并且复杂程度较高,我只能按我理解到的程度来写
6.png
# v" W; E1 U% f- j7 q) N! P
一.TF-A结构体系

% a: \( A) @4 H  ?6 y) i0 C
首先了解一下TF-A的结构体制,TF-A被分为好几个部分,如下图所示
( A+ C) L3 `! i- e' Z
2.png

2 ?+ b! r% b: Q& K$ c; V. j4 V& }
这个是不是很熟悉,和第一张图几乎一摸一样,只是文字内容不一样。这张图是一个通用的东西,其中的BLXX就是一些通用的名称,他们的解释如下:

- o. ~' @( K# |. A) [4 M
BL1:Boot loader stage 1,应用程序信任的ROM

; c  o, g1 {' p4 @0 s4 ~
BL2:Boot loader stage 2,可信的引导固件
3 }# N- i( h! p) Z8 V3 s- ?' f9 O
BL32:Boot loader stage 3-2,runtime software(我不知道这个应该翻译成什么比较合适)
) Q1 {1 T0 v9 w7 `
BL33:Boot loader stage 3-3

. e) [' r( u0 b3 @% G7 l
- Y1 {8 n* m5 O1 s$ ]/ D4 @0 b
在MP1上,是没有BL1的,BL1被我们的ROM Code,也就是BootRom所代替
  T, f% P8 i1 [7 o, i" `. }5 W9 a
BL2在MP1上对应TF-A BL2

' W( A# ]: z" n4 L5 v2 {0 N) I
BL32在MP1上对应OP-TEE
7 P, D+ u$ ~4 a8 y) @' m
BL33在MP1上对应U-Boot
; c/ {! h( [" j) i+ _; T

; _, l/ ~' k; t! Q, I5 R5 I
二.TF-A加载后续软件的方式

/ d( F. r0 k+ c$ ?% R. A; `( p, i- a7 z% ^7 V& F  b8 r3 i
TF-A加载后续软件的方式使用的是叫FIP的方法(FIP = Firmware Image Packge),顾名思义就是很多的固件打包在一起,如下图所示
: u% ^% v' v7 T% E( y
3.png

1 x4 x' C6 _7 U/ C) v
可以看到里面有很多东西,总的来说就是一个cgf文件、多个U-Boot相关的文件、多个OP-TEE相关的文件

$ c; M: V/ c9 S2 f$ v! y0 A) W7 O/ Z) t: T
其中cfg文件是比较重要的,他的名字叫FCNF(Firmware Configuration Framework),他其实就是一张表,通过它就可以知道FIP中各个部分的内容是什么,相互之间怎么校验,各部分关系怎么样等等
9 f; J1 ]: N2 A1 i/ N

5 c  V" }3 l; i. H+ [
三.TF-A BL2证书信任链的结构

3 I, F; V' R7 }* N  ~) M
在各个image校验之前,需要学习一下各个证书的校验链,我个人理解一下就是,固件可以通过证书校验,但是谁能知道证书是否被伪造呢?所以就有这个证书链,通过一个最基础的信息,一环套一环的对每个证书进行校验,确保所有的证书都是没有被篡改的
7 u3 R4 `7 d& C0 |( ~9 l' i5 V
整体流程如下

! r" T1 g# L; u& |# D
4.png
! n+ p5 X% w$ F

& o4 g$ D8 ?( \6 \& m# [  Y8 D
他这个就是一环套一环,设计的非常巧妙。

9 F1 Z" j- F5 t- `! J. K( p
: Q! P3 \: D* R) q8 i
简单来说就是通过上一级所携带的key(是PB Key)来校验他下一级的证书所用到的PB Key
- q. W6 p: n" M3 a, @

0 `6 M' d/ t8 S! T  ?+ ]. L
这边记录一下一些名字所实际代表的东西

' c0 g1 j% m5 L+ w. S, L
HW Config:U-Boot的设备树

' y  N* S- X& r
1 F/ P% P0 L$ a' j
/ e- e) k( w$ Z4 u! `
四.MP1 TF-A BL2启动U-Boot与OP-TEE的证书与校验

1 z1 R) g: x- v$ t' U9 B+ j% S
完整的流程如下
4 f( O, p- G: X# Q6 a
5.png

7 o0 v/ W8 l, E0 R. B+ H- T" Z5 y" m2 A7 W+ `4 @
首先我们先看第一个根证书,content证书

# t9 N' P/ z' M* _( N
6.png

3 W4 H7 @6 m. H6 C: E& x% x8 j: r! I
他是没有副证书来校验自己的PB Key是否真实有效的,那么这边是使用的是OPT中保存的PB Key的HASH来做校验的。当PB Key的hash与OTP中的一致,那就认为是OK的,那他就可以自己校验这个证书自己,从而得到证书中HW和FW Config HASH的内容是OK的,就可以用于校验HW/FW config
! i  k  F% [9 E" c" a

& X- x, P8 h/ [
第二个根证书是秘钥证书,同理,他也是用了OTP中的hash,从而得到这个证书里面2个秘钥的真实性
) \9 l% |8 ~) ^8 N4 C- A
7.png
8 h& R3 ^5 g1 t* Q
3 X* H4 _" k; \1 R" H: J' A
这两个秘钥证书又会向后一步一步最终得到各个image的hash,用于校验image,这儿我就不再多说了,大致意思和上面的类似
3 A. C! y0 g  g& q- k  u3 M% B2 `5 B3 n
8.png

2 c% C. L. J" p2 ]8 O
% t# R, g% P0 E4 Q+ A
五.总结
# w" F% X% q4 }& q
其实TF-A BL2启动U-Boot与OP-TEE的核心思想还是通过证书验证image是否正确,只是他还多了证明证书是正确的步骤,并且它的iamge很多,所以显得流程特别复杂,步骤很多,但是核心思想和上一篇的BootRom启动FSBL(TF-A BL2)是一样的,只是需要耐心的去理解它的详细流程

4 C3 p- V/ p& q7 {, L+ f
3 j: s1 q9 U% w; C' t7 c2 k
/ g7 O, ^. C+ r( h
9 U+ x+ p! r3 P  g" @# `3 h+ \: _0 {) a5 [: E  J
2 p, ^" J1 a$ d6 P
2 Z7 ~/ L  Z, A" O7 U* `6 ]  r
* X+ O- Y( ]& P! Z6 K' o

( E  ~5 C  A" p9 c- {
收藏 评论0 发布时间:2024-11-30 23:13

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版