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

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

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

( v& \5 F0 B  X3 g/ C( m, {
首先了解一下TF-A的结构体制,TF-A被分为好几个部分,如下图所示

) P1 [5 Z1 \( i9 l
2.png

& `% R. B! e$ ?% ^3 `
这个是不是很熟悉,和第一张图几乎一摸一样,只是文字内容不一样。这张图是一个通用的东西,其中的BLXX就是一些通用的名称,他们的解释如下:
2 {* H) _* [2 ^% e3 X1 n
BL1:Boot loader stage 1,应用程序信任的ROM
, F; e% ?3 I6 }( F- Y& z* @, R
BL2:Boot loader stage 2,可信的引导固件

6 M/ ]% C! ]1 C
BL32:Boot loader stage 3-2,runtime software(我不知道这个应该翻译成什么比较合适)
* u8 n$ m( G' f3 k; E& i* t
BL33:Boot loader stage 3-3

  H, w( k/ g1 z4 T# H% |9 T( [' Y% q
在MP1上,是没有BL1的,BL1被我们的ROM Code,也就是BootRom所代替
' @! ~: ^# I" L* y. Z- k" ?
BL2在MP1上对应TF-A BL2

5 G, E' P4 M! X) H; r
BL32在MP1上对应OP-TEE

: |9 s8 h2 w; v* ~3 z/ I8 X
BL33在MP1上对应U-Boot

2 `, E" u* k3 ?+ k/ g8 p* R( Y" |! ]/ r' I/ b
二.TF-A加载后续软件的方式

1 |; ?. i) _: N5 d
, k. ^4 G' i7 G
TF-A加载后续软件的方式使用的是叫FIP的方法(FIP = Firmware Image Packge),顾名思义就是很多的固件打包在一起,如下图所示
5 A& b9 i0 X$ M* o' P$ V$ v7 R- K) h
3.png
5 `  [( N# n9 p8 o
可以看到里面有很多东西,总的来说就是一个cgf文件、多个U-Boot相关的文件、多个OP-TEE相关的文件
: x6 t6 A/ I' P" Y1 ~' a" b3 Q) B. J

4 E, {, B' n0 I$ W
其中cfg文件是比较重要的,他的名字叫FCNF(Firmware Configuration Framework),他其实就是一张表,通过它就可以知道FIP中各个部分的内容是什么,相互之间怎么校验,各部分关系怎么样等等

; C6 M: n0 {# R1 W. ^7 d0 q
7 ]3 m7 @. F/ c
三.TF-A BL2证书信任链的结构

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

' i8 v5 x/ u' l8 b3 ^
整体流程如下

" _# e6 B1 r7 x! |) {
4.png
" a; S, _; d6 D

5 r' m) U" M2 s4 n- F5 ^
他这个就是一环套一环,设计的非常巧妙。
* I0 H1 c1 r8 c4 @: r% W9 d2 O3 d! \) F0 f

6 V. h( s1 z' [7 A
简单来说就是通过上一级所携带的key(是PB Key)来校验他下一级的证书所用到的PB Key

! S! `# g% j1 u
4 v7 x! d$ P) J" _0 h- j* _
这边记录一下一些名字所实际代表的东西
) l4 m% a) m. N: \% l
HW Config:U-Boot的设备树

7 V' a5 S& w5 J3 G2 J( Z; e/ W
% N1 n9 i: ?, ?/ w* y
2 F* d/ n1 M+ S8 N
四.MP1 TF-A BL2启动U-Boot与OP-TEE的证书与校验
+ G) U  j% E: _
完整的流程如下
5 D, w, M/ @0 S; j: ~
5.png
, D- Q" W/ A& O# {' J; ]" V
, N% U: t1 U3 d& I$ h4 ~! [
首先我们先看第一个根证书,content证书
% x* X# H+ L2 {: ~
6.png

0 M* S5 h" `: |1 ?' W
1 N: B; n  l1 e6 u. S( D% q5 m
他是没有副证书来校验自己的PB Key是否真实有效的,那么这边是使用的是OPT中保存的PB Key的HASH来做校验的。当PB Key的hash与OTP中的一致,那就认为是OK的,那他就可以自己校验这个证书自己,从而得到证书中HW和FW Config HASH的内容是OK的,就可以用于校验HW/FW config

7 p3 z/ _) _  g' `8 M
5 [# N4 K3 J& U0 k. K7 r
第二个根证书是秘钥证书,同理,他也是用了OTP中的hash,从而得到这个证书里面2个秘钥的真实性

$ p+ a8 r7 x2 @
7.png
- x( c/ V/ E% ^/ {% K. x

+ u' F3 m# k. G6 l3 F1 r
这两个秘钥证书又会向后一步一步最终得到各个image的hash,用于校验image,这儿我就不再多说了,大致意思和上面的类似
3 E* a$ G" A& k2 g0 S8 ?
8.png
6 j: H" }8 K4 ]2 D0 w( [
+ w4 i. ^3 A+ r8 ]6 T) R9 b
五.总结
/ T4 W4 M" Q9 U, j9 D1 o3 U
其实TF-A BL2启动U-Boot与OP-TEE的核心思想还是通过证书验证image是否正确,只是他还多了证明证书是正确的步骤,并且它的iamge很多,所以显得流程特别复杂,步骤很多,但是核心思想和上一篇的BootRom启动FSBL(TF-A BL2)是一样的,只是需要耐心的去理解它的详细流程
$ z+ W5 Q+ s  m4 D
. g& c5 W& y$ u, {" a

& ]1 h+ L7 H- j% [4 i
' Z. p* K9 }6 k. S; A2 b1 h
$ ]% r  m3 D& W6 t8 V6 b0 i. Y. R5 K5 ~; b
  `/ h2 Q5 T! V
/ ^) v; I& e1 r) m; x; t

) X) o" l. s2 K$ z
收藏 评论0 发布时间:2024-11-30 23:13

举报

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