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

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

[复制链接]
小萝卜啦啦啦 发布时间:2024-11-30 23:13
本文是安全启动的第二次跳转,由TF-A BL2启动U-Boot与OP-TEE,对应第一篇文章中的这个部分。这次会加载并运行2个部分的代码,并且复杂程度较高,我只能按我理解到的程度来写
6.png
5 X1 [* [$ J" L
一.TF-A结构体系
0 B9 T/ P4 Q& D  P' K8 i% R
首先了解一下TF-A的结构体制,TF-A被分为好几个部分,如下图所示
& |( A1 h, H' e! L; _: u! i% p
2.png
- L& p; L6 j$ M8 E# L4 l- H3 j0 e0 x
这个是不是很熟悉,和第一张图几乎一摸一样,只是文字内容不一样。这张图是一个通用的东西,其中的BLXX就是一些通用的名称,他们的解释如下:
8 t/ z0 t! w1 Q# U3 [7 [, N) A. M* y
BL1:Boot loader stage 1,应用程序信任的ROM

4 {8 L4 O; D  K9 X% r! M: p+ P" g- V/ n
BL2:Boot loader stage 2,可信的引导固件

& x% h/ f9 i/ `+ B& Q
BL32:Boot loader stage 3-2,runtime software(我不知道这个应该翻译成什么比较合适)

- B: z- z! T  ?7 J4 B2 P' b
BL33:Boot loader stage 3-3
% e( @$ ]4 @8 P3 b* B  u4 {  ^
  e$ Q/ ?3 @( @% f& ]5 ?3 f
在MP1上,是没有BL1的,BL1被我们的ROM Code,也就是BootRom所代替

& Q# Y* T# l+ j( v, o3 m
BL2在MP1上对应TF-A BL2
. L: h% ^9 O3 W
BL32在MP1上对应OP-TEE
3 q4 e: K6 C$ [" w7 d; h
BL33在MP1上对应U-Boot
+ l5 M7 D" T$ P: z9 I

- c/ ]! D7 n0 e; K1 x
二.TF-A加载后续软件的方式
% B3 ~$ {! x) g0 A3 z

* V7 H1 m5 ~+ n) A: B/ j' c
TF-A加载后续软件的方式使用的是叫FIP的方法(FIP = Firmware Image Packge),顾名思义就是很多的固件打包在一起,如下图所示
  V5 T& i  l8 E- _* ]
3.png
1 v- C2 D* Z2 q$ f4 R- ~* Y6 J3 B
可以看到里面有很多东西,总的来说就是一个cgf文件、多个U-Boot相关的文件、多个OP-TEE相关的文件
' k0 {4 E5 _+ x. I4 K# W8 `

! H- v9 Y& K" A9 h! [1 z# M
其中cfg文件是比较重要的,他的名字叫FCNF(Firmware Configuration Framework),他其实就是一张表,通过它就可以知道FIP中各个部分的内容是什么,相互之间怎么校验,各部分关系怎么样等等
6 T6 m6 [6 q8 E3 y( i1 R: L

$ p8 r0 r+ ?2 G: `& `8 r9 b
三.TF-A BL2证书信任链的结构

) i$ j9 J- l- E5 g" m
在各个image校验之前,需要学习一下各个证书的校验链,我个人理解一下就是,固件可以通过证书校验,但是谁能知道证书是否被伪造呢?所以就有这个证书链,通过一个最基础的信息,一环套一环的对每个证书进行校验,确保所有的证书都是没有被篡改的

% u7 M1 y' p2 y; A. W! g7 r
整体流程如下

  i  Y; x5 n* ~
4.png

, |& j; G$ T2 S- C: R4 @
! [: |' K* t9 O8 D& `, t8 \$ A# D
他这个就是一环套一环,设计的非常巧妙。

6 H, o7 T' ~6 @0 s" G7 ?8 o4 p& z% R8 C2 d% v
简单来说就是通过上一级所携带的key(是PB Key)来校验他下一级的证书所用到的PB Key

8 Z" n- ~! O! _/ ]: M% @/ e8 ]2 Q4 {" [0 k' f5 E/ k# p
这边记录一下一些名字所实际代表的东西

0 d, e8 c  L, G& L; L. O  S
HW Config:U-Boot的设备树
; ]4 g% |- G* l- ]8 T6 |$ @6 o# R

3 |& i  V2 M" U; p2 ]
; G8 g0 X% K( z! Y$ ~* Q
四.MP1 TF-A BL2启动U-Boot与OP-TEE的证书与校验
- U# E" J" a( S1 g' r8 {
完整的流程如下

( h1 V7 Y' K0 N+ \# P
5.png
0 l! N1 B4 S. k7 h, T" |
. {% y( L6 S( t4 n
首先我们先看第一个根证书,content证书

4 g3 J9 R- Q+ l1 G0 q$ t3 K
6.png

" `  C& Y& ~5 R. e
' q4 V: Y3 w# M% I
他是没有副证书来校验自己的PB Key是否真实有效的,那么这边是使用的是OPT中保存的PB Key的HASH来做校验的。当PB Key的hash与OTP中的一致,那就认为是OK的,那他就可以自己校验这个证书自己,从而得到证书中HW和FW Config HASH的内容是OK的,就可以用于校验HW/FW config
, ?8 K+ A! X8 p& X; ]* O' J
* {0 g( s# D" H/ I- @* Q. Y
第二个根证书是秘钥证书,同理,他也是用了OTP中的hash,从而得到这个证书里面2个秘钥的真实性

" t. ^3 K0 q( l  u7 i, {  F" P
7.png

7 Y- Z* V& z3 [3 {: }
$ Y* c" V/ ?# ^$ }2 i2 j% c3 N
这两个秘钥证书又会向后一步一步最终得到各个image的hash,用于校验image,这儿我就不再多说了,大致意思和上面的类似

3 r- q' ]4 ?- e# y* N
8.png
: n* s/ I" ?3 r  P# v

: x& t9 m9 ~7 Z% h5 Y3 h7 o2 P
五.总结

& m6 u# P- D$ H" A+ ~! z
其实TF-A BL2启动U-Boot与OP-TEE的核心思想还是通过证书验证image是否正确,只是他还多了证明证书是正确的步骤,并且它的iamge很多,所以显得流程特别复杂,步骤很多,但是核心思想和上一篇的BootRom启动FSBL(TF-A BL2)是一样的,只是需要耐心的去理解它的详细流程
2 r# R! k$ v: }; Z. h7 v" x1 W' t- j7 u

) M5 M2 T, ], w3 f' w4 |0 c. z: z: B

& _& }( M+ t/ e# n# T5 a* ~' J' {+ w4 h/ j

: t2 E! S9 k% U
) g! |7 _1 _3 |; h) F3 e/ ^' k
! s# l2 j9 h3 {. U8 y- w4 z0 g* T
; `: Z" Z4 O2 V! t( f
收藏 评论0 发布时间:2024-11-30 23:13

举报

0个回答

所属标签

相似技术帖

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