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

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

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

! g' `0 a4 l4 f& c% p$ ]1 N& Y
首先了解一下TF-A的结构体制,TF-A被分为好几个部分,如下图所示

3 z" h; p( B! W9 K5 P
2.png

1 }( e/ s, z0 s) [7 k3 @- Q
这个是不是很熟悉,和第一张图几乎一摸一样,只是文字内容不一样。这张图是一个通用的东西,其中的BLXX就是一些通用的名称,他们的解释如下:
- I+ \+ ~# x& J$ A
BL1:Boot loader stage 1,应用程序信任的ROM
. f& C0 M/ r' D
BL2:Boot loader stage 2,可信的引导固件
3 P* i. ^& ^& z: y/ Q0 V
BL32:Boot loader stage 3-2,runtime software(我不知道这个应该翻译成什么比较合适)
3 C# I& b, g- y8 h
BL33:Boot loader stage 3-3
" `" W# ]* r# y4 f% ~3 H4 Y) E( H

& n8 w/ q' P" L: _
在MP1上,是没有BL1的,BL1被我们的ROM Code,也就是BootRom所代替
! J6 X; B9 L/ e
BL2在MP1上对应TF-A BL2

& D+ F+ O: @* L! G) ^8 l
BL32在MP1上对应OP-TEE

+ w* E! K3 Y8 P% ?4 H1 |0 K- Z. }. |
BL33在MP1上对应U-Boot

9 k! E; ^2 F8 F% j: I% [
3 ^: i5 d: A9 r* y* A2 }
二.TF-A加载后续软件的方式

2 G' R( ~$ k+ Z& N, w! q
/ K  U, ?1 K9 A
TF-A加载后续软件的方式使用的是叫FIP的方法(FIP = Firmware Image Packge),顾名思义就是很多的固件打包在一起,如下图所示
5 G* J9 v( P0 p$ H: j- v. K
3.png
; q9 \! c' Z* ^- G  }" u& @: J, h
可以看到里面有很多东西,总的来说就是一个cgf文件、多个U-Boot相关的文件、多个OP-TEE相关的文件
/ H4 Y, s1 o% G. A
! V6 S  {3 F% ?3 [8 n
其中cfg文件是比较重要的,他的名字叫FCNF(Firmware Configuration Framework),他其实就是一张表,通过它就可以知道FIP中各个部分的内容是什么,相互之间怎么校验,各部分关系怎么样等等

, t) |6 E( y  M
3 [) r3 d2 q1 y( C; Q/ u5 g8 H
三.TF-A BL2证书信任链的结构

# ^6 k. o# Z9 L( G: ]
在各个image校验之前,需要学习一下各个证书的校验链,我个人理解一下就是,固件可以通过证书校验,但是谁能知道证书是否被伪造呢?所以就有这个证书链,通过一个最基础的信息,一环套一环的对每个证书进行校验,确保所有的证书都是没有被篡改的

" O5 t: W" Y+ a0 u6 s5 }1 T# P  B
整体流程如下
* @. r5 o5 ~- E: j0 D" {2 A/ o
4.png
0 Q5 K% `/ c( J, A, {/ X

; `3 l, \3 a8 ]; b3 w. @
他这个就是一环套一环,设计的非常巧妙。

: t2 e/ g; ~9 w# |: n. b$ S' U' j8 y' P: G; W0 s+ T  X
简单来说就是通过上一级所携带的key(是PB Key)来校验他下一级的证书所用到的PB Key

: N& X$ l1 N( n9 Z2 U5 A" g: e( J/ L- ]/ o  H0 B
这边记录一下一些名字所实际代表的东西

9 w5 ^$ o$ G+ q& \* G: ~$ X
HW Config:U-Boot的设备树
9 m* b5 t' J2 [$ r% H8 T

. p& {) l; e& k8 @" Z  r3 a" R$ U; F& d2 c
四.MP1 TF-A BL2启动U-Boot与OP-TEE的证书与校验

- l0 [7 z, Z* Z3 w4 k2 x' q
完整的流程如下

/ N* m: c+ i9 Z# f$ K
5.png
0 z$ I0 ~9 t# M& U7 _( s
& Q" i# P: Y& \- u$ o; p- u4 r* R2 q/ Z
首先我们先看第一个根证书,content证书

+ ^9 E+ Y; |/ U$ k+ P
6.png

8 R+ @8 Q- [' B2 I6 R
# T! u2 S. |, S
他是没有副证书来校验自己的PB Key是否真实有效的,那么这边是使用的是OPT中保存的PB Key的HASH来做校验的。当PB Key的hash与OTP中的一致,那就认为是OK的,那他就可以自己校验这个证书自己,从而得到证书中HW和FW Config HASH的内容是OK的,就可以用于校验HW/FW config
1 H+ U# c) x- i3 e! e0 h$ k

0 y2 h0 l- ]6 J( p  ~
第二个根证书是秘钥证书,同理,他也是用了OTP中的hash,从而得到这个证书里面2个秘钥的真实性
' ?0 W" r1 L' Y& E, B
7.png
: O* i$ J( M6 t

8 t( i* h6 s; d
这两个秘钥证书又会向后一步一步最终得到各个image的hash,用于校验image,这儿我就不再多说了,大致意思和上面的类似
$ W" |, Q9 h* T- ~
8.png

7 M- F8 h% F4 p( B* E( `
7 H, M5 J( `1 L
五.总结
3 U. E! J- \1 R/ x4 Y
其实TF-A BL2启动U-Boot与OP-TEE的核心思想还是通过证书验证image是否正确,只是他还多了证明证书是正确的步骤,并且它的iamge很多,所以显得流程特别复杂,步骤很多,但是核心思想和上一篇的BootRom启动FSBL(TF-A BL2)是一样的,只是需要耐心的去理解它的详细流程
; v& s9 P% I+ W2 o% P! u: }' E

0 l( r$ N, z1 y; b; ], E& E& k
$ {* c; D- G' {" Z  X5 ?) M8 m
! M1 b; D5 v7 l9 z* i9 ]- c
5 b0 W/ V; P' O; @1 e+ }% @( F1 f! |6 G4 b1 D) L

: @% u. b; M, i5 I6 r/ }2 h& B8 ?& Y
1 H0 g4 H' l  V- u2 a8 D+ u/ {/ `9 i" h: q. f
收藏 评论0 发布时间:2024-11-30 23:13

举报

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