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

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

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

' u. _8 W% Q2 c
一.TF-A结构体系

# Z+ S2 b8 S1 s3 v# R8 g
首先了解一下TF-A的结构体制,TF-A被分为好几个部分,如下图所示
( y& t9 ^( Z5 k" ?
2.png

/ P7 z! z: a' q- M! @$ ^& w
这个是不是很熟悉,和第一张图几乎一摸一样,只是文字内容不一样。这张图是一个通用的东西,其中的BLXX就是一些通用的名称,他们的解释如下:
7 a* T& X5 f8 @( l3 k
BL1:Boot loader stage 1,应用程序信任的ROM

2 y  g: z* A2 k" L
BL2:Boot loader stage 2,可信的引导固件
# i% P0 x* h, F& S5 {& g
BL32:Boot loader stage 3-2,runtime software(我不知道这个应该翻译成什么比较合适)

7 ^3 W6 }7 M, n2 g  ~
BL33:Boot loader stage 3-3

9 M) b; y7 ~( r) ~) @
7 p3 m/ w) X& D
在MP1上,是没有BL1的,BL1被我们的ROM Code,也就是BootRom所代替

" @; ^" p& w4 g! o
BL2在MP1上对应TF-A BL2

5 o: F2 S4 ?- ]( U7 S7 F( q  _
BL32在MP1上对应OP-TEE

* M0 |; K. \) D1 K( ?" u
BL33在MP1上对应U-Boot
- v$ e2 n* X* g9 Q* v' f7 }
% `/ a& `0 E+ v9 L: h. e. g8 t
二.TF-A加载后续软件的方式

; G' X5 c1 b% T  O5 {0 S( _# c. X( G5 u. u2 t; ]% H) c
TF-A加载后续软件的方式使用的是叫FIP的方法(FIP = Firmware Image Packge),顾名思义就是很多的固件打包在一起,如下图所示

9 c' Z5 c; x* G* Q5 G. g
3.png
( Z6 U. [' R: B& P
可以看到里面有很多东西,总的来说就是一个cgf文件、多个U-Boot相关的文件、多个OP-TEE相关的文件

/ z7 x, N+ [6 s- f0 W& o( U: j/ y, O. a0 V) d
其中cfg文件是比较重要的,他的名字叫FCNF(Firmware Configuration Framework),他其实就是一张表,通过它就可以知道FIP中各个部分的内容是什么,相互之间怎么校验,各部分关系怎么样等等

- Y. p! a$ G/ ?; s2 v
9 d' {% W, y5 m
三.TF-A BL2证书信任链的结构

% J4 q' D# P4 U! [1 Y$ H# c/ o
在各个image校验之前,需要学习一下各个证书的校验链,我个人理解一下就是,固件可以通过证书校验,但是谁能知道证书是否被伪造呢?所以就有这个证书链,通过一个最基础的信息,一环套一环的对每个证书进行校验,确保所有的证书都是没有被篡改的

2 X% U3 Z9 g+ m9 N6 v; m1 S
整体流程如下
7 u% v  Y  U) ^( ]1 Z+ S$ I) y! f: ~
4.png
$ H2 j* G8 e) ~/ l: X

$ _' V# y8 V: n& `. W
他这个就是一环套一环,设计的非常巧妙。

! Z  q/ ]7 B* y6 v) w8 `0 p, }  A' D: T2 p9 [( Q
简单来说就是通过上一级所携带的key(是PB Key)来校验他下一级的证书所用到的PB Key
# {  G  L. u% j( `, B

1 h+ W! j# j3 x
这边记录一下一些名字所实际代表的东西

6 N0 j3 }  C, s7 Y/ I' `% Z
HW Config:U-Boot的设备树

7 Q+ M7 q1 j7 B8 }. I  G7 e, N
0 q. f/ |8 M; g. ]9 j" B. T# D' s
% ~/ |2 P. x- X9 e8 S: n9 @
四.MP1 TF-A BL2启动U-Boot与OP-TEE的证书与校验

& d; U" n4 Q5 A4 U7 k9 x; s& }- j* k& R
完整的流程如下

8 h: s5 l( W# G  H+ x6 _
5.png

/ f0 \) p3 v' @+ P# `9 I. h' Y  I- m- R! o
首先我们先看第一个根证书,content证书

% J3 Q3 i& |5 p5 C7 M
6.png

+ r! ?1 g* {3 ?& q* y7 B$ {7 ^: O  P+ n4 ~7 n
他是没有副证书来校验自己的PB Key是否真实有效的,那么这边是使用的是OPT中保存的PB Key的HASH来做校验的。当PB Key的hash与OTP中的一致,那就认为是OK的,那他就可以自己校验这个证书自己,从而得到证书中HW和FW Config HASH的内容是OK的,就可以用于校验HW/FW config

. b* Z. U" a/ S, P; }, d
  k3 v# P$ A; m8 Q2 R2 a! k" F
第二个根证书是秘钥证书,同理,他也是用了OTP中的hash,从而得到这个证书里面2个秘钥的真实性
; w9 F& G2 c, C- ^& ?
7.png

0 N* d' E8 u1 u9 p. V0 Z
6 t3 D" J% a9 z
这两个秘钥证书又会向后一步一步最终得到各个image的hash,用于校验image,这儿我就不再多说了,大致意思和上面的类似

! e* T4 n% Z0 S1 ~) B6 Z5 W" @" l3 t
8.png
' V# ?  x0 S; u& y. `

! c3 ]7 N3 S% ^6 e/ n( D
五.总结
- E1 g$ l8 g2 {1 o  J. _0 ?
其实TF-A BL2启动U-Boot与OP-TEE的核心思想还是通过证书验证image是否正确,只是他还多了证明证书是正确的步骤,并且它的iamge很多,所以显得流程特别复杂,步骤很多,但是核心思想和上一篇的BootRom启动FSBL(TF-A BL2)是一样的,只是需要耐心的去理解它的详细流程
5 ~7 J# ~: i8 i7 l% \' N2 O

& ?  P- @( o1 f/ }" K% V( o7 |2 N3 C- I
7 X  v3 L: S5 N! o; x

, r, f5 q4 e: g- C
' g3 `# l/ R$ p, N) _, m
1 e0 D1 n1 n6 g+ h1 A. T- \! D( D4 n
9 g& X* {+ t0 k
; ?' a, i4 }9 U
收藏 评论0 发布时间:2024-11-30 23:13

举报

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