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

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

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

3 b8 ]4 I9 t! W, n' \# l
一.TF-A结构体系
% F& t* _+ C& x' @3 b9 M0 \
首先了解一下TF-A的结构体制,TF-A被分为好几个部分,如下图所示
6 E: M# G% T9 Y4 Q! q, O! \! _
2.png
0 v, R$ B) w" u1 ]1 k- N
这个是不是很熟悉,和第一张图几乎一摸一样,只是文字内容不一样。这张图是一个通用的东西,其中的BLXX就是一些通用的名称,他们的解释如下:

2 l/ j' Z1 c' Y9 e1 @% ]  l
BL1:Boot loader stage 1,应用程序信任的ROM

9 Z" s  N/ |6 g
BL2:Boot loader stage 2,可信的引导固件
; m- @2 \, y- L3 U, O
BL32:Boot loader stage 3-2,runtime software(我不知道这个应该翻译成什么比较合适)

+ O7 O) B4 `  e! u. e% e! m
BL33:Boot loader stage 3-3

: r; z: Q: X" a. E$ i
6 G7 O' ]1 E  q( w, `. v( R; C
在MP1上,是没有BL1的,BL1被我们的ROM Code,也就是BootRom所代替
! e$ E5 Q, d4 n9 b
BL2在MP1上对应TF-A BL2

" Q2 @0 n* z4 }& N% H
BL32在MP1上对应OP-TEE
" w% N1 k4 U2 V6 y7 a- i
BL33在MP1上对应U-Boot
' x: a2 x2 }# {' Y9 n- x! w
& b* B8 `! Q$ m1 Y0 Z% \8 p
二.TF-A加载后续软件的方式

, R2 B6 O6 c; B' u' Z) w6 c- M: H/ n) I# w# Y
TF-A加载后续软件的方式使用的是叫FIP的方法(FIP = Firmware Image Packge),顾名思义就是很多的固件打包在一起,如下图所示

7 ?* V/ ?2 q) l8 n
3.png
# @% R4 k0 g1 Z9 C& }
可以看到里面有很多东西,总的来说就是一个cgf文件、多个U-Boot相关的文件、多个OP-TEE相关的文件
  W8 I7 Z; K5 w9 ]& H1 W2 o  u" o

4 t: b. I0 f# g3 A) I
其中cfg文件是比较重要的,他的名字叫FCNF(Firmware Configuration Framework),他其实就是一张表,通过它就可以知道FIP中各个部分的内容是什么,相互之间怎么校验,各部分关系怎么样等等

5 u7 d2 X$ @7 D  k/ S/ @
: f1 d# [9 z: {3 u
三.TF-A BL2证书信任链的结构

% q  Z3 Z( m; Z3 F
在各个image校验之前,需要学习一下各个证书的校验链,我个人理解一下就是,固件可以通过证书校验,但是谁能知道证书是否被伪造呢?所以就有这个证书链,通过一个最基础的信息,一环套一环的对每个证书进行校验,确保所有的证书都是没有被篡改的
: ^3 }+ B+ P# P5 _8 Z. i# n
整体流程如下

/ D3 k- U0 `$ D& v! L1 a  y
4.png
9 b, @3 {7 [- I, U' Y% U

& D8 r  @( K' I  k8 K
他这个就是一环套一环,设计的非常巧妙。
: Q0 |( H- d# B: x5 K; K

3 }  G7 I8 e  Y5 v7 S7 \
简单来说就是通过上一级所携带的key(是PB Key)来校验他下一级的证书所用到的PB Key
/ i0 j3 K( x8 E3 |' T
0 E8 @" [2 c$ h. [. X2 r; C: y3 ~. @
这边记录一下一些名字所实际代表的东西
, }! A$ k$ W* s* }; `( t4 Q3 h
HW Config:U-Boot的设备树
; p+ s1 S7 y8 U& I( h
6 S" ]0 N( S; n0 [4 z6 m1 j
; d) x" x2 X7 b/ Q; l# o2 a# [: ]
四.MP1 TF-A BL2启动U-Boot与OP-TEE的证书与校验
. B  p+ ~7 T9 X! [* D0 I
完整的流程如下

' L4 E& _" F* |* i
5.png

$ P) i5 S4 `8 q' z9 ]. ]
" A+ U  y' o; j& }) L) _
首先我们先看第一个根证书,content证书

8 a# s4 H' E* Z5 ^' K. b5 ]
6.png

+ F/ F2 M' L" ?5 O6 u( ~& K0 P( w7 H* o( W5 m3 L- f( S
他是没有副证书来校验自己的PB Key是否真实有效的,那么这边是使用的是OPT中保存的PB Key的HASH来做校验的。当PB Key的hash与OTP中的一致,那就认为是OK的,那他就可以自己校验这个证书自己,从而得到证书中HW和FW Config HASH的内容是OK的,就可以用于校验HW/FW config

/ @9 t0 C9 X9 j- f  F
4 F2 ~8 ^( o; d- ~7 q5 M
第二个根证书是秘钥证书,同理,他也是用了OTP中的hash,从而得到这个证书里面2个秘钥的真实性
8 F1 l+ g4 L0 v% Q/ y6 H
7.png

5 G0 J, H2 w: S0 X7 P
% ?+ ?6 W8 K7 t5 G. T2 t
这两个秘钥证书又会向后一步一步最终得到各个image的hash,用于校验image,这儿我就不再多说了,大致意思和上面的类似

4 L) F' _' h1 D! h8 K4 z: F
8.png
4 ?  k! |5 T$ k+ U6 |& G0 P

( ?# b$ @/ G$ a' m6 q  q" s
五.总结
' M  y- e. J9 z( c- R6 `- Z* J
其实TF-A BL2启动U-Boot与OP-TEE的核心思想还是通过证书验证image是否正确,只是他还多了证明证书是正确的步骤,并且它的iamge很多,所以显得流程特别复杂,步骤很多,但是核心思想和上一篇的BootRom启动FSBL(TF-A BL2)是一样的,只是需要耐心的去理解它的详细流程

0 a  z6 C; X0 V- J  h. d; z
, w" v8 O- j0 B0 w! J4 T- v* n* X9 m; n1 o# J6 A' d3 V5 X
, }; K% W+ a" w" ~! q

2 i& S2 ?) ]8 u) I+ Q( |; |* D1 O
+ c% x( S! a' {' w0 Q+ T% i  l
9 J1 J+ g) l" ]8 C

" y+ [$ X# n' ~, e0 \5 L7 F1 W
收藏 评论0 发布时间:2024-11-30 23:13

举报

0个回答

所属标签

相似技术帖

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