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

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

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

* q6 |& \6 N' W# `$ N% q+ H
一.TF-A结构体系
% |8 c* M. ~# M8 n
首先了解一下TF-A的结构体制,TF-A被分为好几个部分,如下图所示
* x3 ~! ]/ v" V  p2 t
2.png

# k2 B/ r( m, ^8 A* Q3 j. T
这个是不是很熟悉,和第一张图几乎一摸一样,只是文字内容不一样。这张图是一个通用的东西,其中的BLXX就是一些通用的名称,他们的解释如下:

) L  ]) N. e# h2 y! X$ M
BL1:Boot loader stage 1,应用程序信任的ROM
# [. @8 K: E. t/ T9 C& B8 @
BL2:Boot loader stage 2,可信的引导固件
& W. Z/ J8 [1 f$ C
BL32:Boot loader stage 3-2,runtime software(我不知道这个应该翻译成什么比较合适)

+ I$ l7 ?( k/ d, p. }$ H
BL33:Boot loader stage 3-3
' a: h2 I, n1 a' k" G
6 l, X! w% _$ s; K6 K
在MP1上,是没有BL1的,BL1被我们的ROM Code,也就是BootRom所代替

* \/ Q& E5 q1 K! X
BL2在MP1上对应TF-A BL2

& t; Y# h& n% p9 S8 a) M4 f: k
BL32在MP1上对应OP-TEE

& f6 q  k9 `; c# K+ F
BL33在MP1上对应U-Boot

7 U: X2 U  O- W6 H
' |+ W3 c$ g$ K. S' L  A7 N: [0 l
二.TF-A加载后续软件的方式
4 S) R. y' B' W% u  R+ @0 Z
) [$ j. W( ?) W, J- `# K
TF-A加载后续软件的方式使用的是叫FIP的方法(FIP = Firmware Image Packge),顾名思义就是很多的固件打包在一起,如下图所示

2 c! p4 l9 o2 ~% [5 \% i; N( g1 E
3.png

. a3 z* o- m9 N, W
可以看到里面有很多东西,总的来说就是一个cgf文件、多个U-Boot相关的文件、多个OP-TEE相关的文件
8 ^. \( m( c) d5 m2 X+ h  _( ]% S4 T
( }" N6 {. o7 t: w* T  _1 v+ @
其中cfg文件是比较重要的,他的名字叫FCNF(Firmware Configuration Framework),他其实就是一张表,通过它就可以知道FIP中各个部分的内容是什么,相互之间怎么校验,各部分关系怎么样等等
) a# ~# t  e3 T1 b( _% v
% K8 P! Q, V, t% x5 @* A5 @0 o7 Q
三.TF-A BL2证书信任链的结构

: D  v4 O* F7 J
在各个image校验之前,需要学习一下各个证书的校验链,我个人理解一下就是,固件可以通过证书校验,但是谁能知道证书是否被伪造呢?所以就有这个证书链,通过一个最基础的信息,一环套一环的对每个证书进行校验,确保所有的证书都是没有被篡改的

/ H/ U- n9 \( b+ @$ T
整体流程如下

- ?- s" X0 G6 C2 M
4.png

6 ^! X3 u0 Y9 o6 v; W6 b7 V7 F0 f0 u; k& K5 Z( E$ H9 ~& {
他这个就是一环套一环,设计的非常巧妙。

& Z& y& C3 t: v- x6 i
# I( Z2 D" P3 L4 e) p( Z( e! i7 O' I
简单来说就是通过上一级所携带的key(是PB Key)来校验他下一级的证书所用到的PB Key

4 y) k5 M  f# \- Y3 N7 f8 R% z* e) `9 D$ p4 T, u
这边记录一下一些名字所实际代表的东西
$ x( h4 J) v) J' ?. J8 a7 i, J
HW Config:U-Boot的设备树
: Q2 }$ x6 L, b9 }3 a0 i

' N0 k2 b: V: e0 N0 G  N& p0 l
3 a- X: k6 C$ `/ e% \+ W# M9 w
四.MP1 TF-A BL2启动U-Boot与OP-TEE的证书与校验
! N  X: z0 @. i6 J0 m% a* ~  a' T
完整的流程如下

; B+ c, i4 `2 ]& a+ Y7 x' K1 x
5.png

+ E, B6 D% A- ?- I% `) ]* D- h7 x  j/ I! @5 \( \& g( J1 ^) D
首先我们先看第一个根证书,content证书
. {& s& G* \6 T) k9 @* L1 u
6.png
0 P1 S  d2 u2 o: P8 E5 l; [9 i

1 j: y4 S! b$ _0 i
他是没有副证书来校验自己的PB Key是否真实有效的,那么这边是使用的是OPT中保存的PB Key的HASH来做校验的。当PB Key的hash与OTP中的一致,那就认为是OK的,那他就可以自己校验这个证书自己,从而得到证书中HW和FW Config HASH的内容是OK的,就可以用于校验HW/FW config

# J: g. `8 C4 V# x! N1 t( \+ s
# Y. o& c6 ?8 j! Z, y- ~2 s5 c
第二个根证书是秘钥证书,同理,他也是用了OTP中的hash,从而得到这个证书里面2个秘钥的真实性
, l( l0 ]2 R* E6 g9 Y/ ]) e! Z
7.png

$ A! n: C) s) C  d
  o( _! b/ l9 [- `/ M9 }
这两个秘钥证书又会向后一步一步最终得到各个image的hash,用于校验image,这儿我就不再多说了,大致意思和上面的类似
3 Q7 b! D8 p( y2 W0 _. S
8.png

0 k7 p; R9 J8 Z* I  `. ?2 V5 E8 I+ S+ h
五.总结
1 l2 d0 D$ Q# y" j
其实TF-A BL2启动U-Boot与OP-TEE的核心思想还是通过证书验证image是否正确,只是他还多了证明证书是正确的步骤,并且它的iamge很多,所以显得流程特别复杂,步骤很多,但是核心思想和上一篇的BootRom启动FSBL(TF-A BL2)是一样的,只是需要耐心的去理解它的详细流程

: b4 v) _+ n$ m) N- t; Q( N! h8 T- s3 h+ L' M' B+ K" c

1 o. ^8 k- Q: F+ N6 P* ^" r, r2 r* K
# `1 F7 w( f; x
" |. y8 |+ K8 c% i) D2 D; X- I

. J! W2 ~3 f/ P; A$ S( |6 ]; w+ h/ w: x3 E# T; U
4 S7 t) }  v8 {3 y
赞 收藏 评论0 发布时间:2024-11-30 23:13

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版