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

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

[复制链接]
小萝卜啦啦啦 发布时间:2024-11-30 23:13
本文是安全启动的第二次跳转,由TF-A BL2启动U-Boot与OP-TEE,对应第一篇文章中的这个部分。这次会加载并运行2个部分的代码,并且复杂程度较高,我只能按我理解到的程度来写
6.png
6 h% u& i* Y1 U$ }; u
一.TF-A结构体系
" l( ~+ ~7 y( \
首先了解一下TF-A的结构体制,TF-A被分为好几个部分,如下图所示
, Y7 R' V: f- t9 G; A
2.png
0 P) D& v5 m+ z
这个是不是很熟悉,和第一张图几乎一摸一样,只是文字内容不一样。这张图是一个通用的东西,其中的BLXX就是一些通用的名称,他们的解释如下:

% p5 u" Y! @" M0 {
BL1:Boot loader stage 1,应用程序信任的ROM
! E- X+ W+ r2 o, T; M
BL2:Boot loader stage 2,可信的引导固件
( ?5 E* J$ o$ f2 A/ g+ B
BL32:Boot loader stage 3-2,runtime software(我不知道这个应该翻译成什么比较合适)

- `1 v# H4 m5 v0 A4 I6 A' v
BL33:Boot loader stage 3-3

6 A& C$ s5 r7 M2 e
; y% X5 h' K$ M' g) q7 }
在MP1上,是没有BL1的,BL1被我们的ROM Code,也就是BootRom所代替
! ?8 @5 z7 J8 V& f4 l
BL2在MP1上对应TF-A BL2

  k7 b6 d' O; A! Q
BL32在MP1上对应OP-TEE
- \: }! Z6 c2 c, o0 d8 g, k
BL33在MP1上对应U-Boot
* j2 Q/ b5 f9 S4 [8 S: V: V6 B& E; l- }
6 @) n0 B: ]( f! d( c$ Q
二.TF-A加载后续软件的方式
. n5 m0 d3 W; e

' s# S( c+ T2 V8 G. k  T- S1 {
TF-A加载后续软件的方式使用的是叫FIP的方法(FIP = Firmware Image Packge),顾名思义就是很多的固件打包在一起,如下图所示
9 G- n4 h2 n5 Q
3.png
( U( v! D# @  F/ m( X: r3 r
可以看到里面有很多东西,总的来说就是一个cgf文件、多个U-Boot相关的文件、多个OP-TEE相关的文件

7 Q6 R  Q# `( Q/ x- z! ^: n) b: X: A* Q6 d! q; g( ~2 G+ s
其中cfg文件是比较重要的,他的名字叫FCNF(Firmware Configuration Framework),他其实就是一张表,通过它就可以知道FIP中各个部分的内容是什么,相互之间怎么校验,各部分关系怎么样等等
- l+ Z- `% v  c

" M! `' A' x  j- q) r% i9 D& N
三.TF-A BL2证书信任链的结构
( F8 n( F* u3 m3 ]% U3 K
在各个image校验之前,需要学习一下各个证书的校验链,我个人理解一下就是,固件可以通过证书校验,但是谁能知道证书是否被伪造呢?所以就有这个证书链,通过一个最基础的信息,一环套一环的对每个证书进行校验,确保所有的证书都是没有被篡改的
( X& V( t6 R. c) S
整体流程如下
0 @* U  n, w  P3 {7 `* P" n  p
4.png
, V$ X/ k- N: G8 h  n. n! v

) \+ f* _# N$ t! Z4 {; v
他这个就是一环套一环,设计的非常巧妙。

& |$ E& H$ ~, n- I; x- q* N. n* H* o8 C7 b( `, S( q
简单来说就是通过上一级所携带的key(是PB Key)来校验他下一级的证书所用到的PB Key
. }; P* b5 W: S- p4 l! x, w2 `
4 _$ Y; B, t+ ~9 W
这边记录一下一些名字所实际代表的东西
, u' z5 V7 M' \! z" O
HW Config:U-Boot的设备树
) E1 l1 s2 [9 T; S# X0 u$ H2 k4 _
. H( U" _1 U: L, m' N
9 ~+ K) x6 ~& z2 i( D7 L
四.MP1 TF-A BL2启动U-Boot与OP-TEE的证书与校验

+ l9 B# [  k. _: a  L$ b; ^; J3 b
完整的流程如下
/ G/ R  c4 _. p9 H) v8 S( ]
5.png
7 _0 y% K# c+ L0 Z0 Y/ H
8 J8 y0 f6 ?" M
首先我们先看第一个根证书,content证书
; l  c4 \' n5 ^' R/ E  N) p
6.png
8 v: H) I. }! X- f! J& B9 E5 X

! [8 l$ P+ n. }( A
他是没有副证书来校验自己的PB Key是否真实有效的,那么这边是使用的是OPT中保存的PB Key的HASH来做校验的。当PB Key的hash与OTP中的一致,那就认为是OK的,那他就可以自己校验这个证书自己,从而得到证书中HW和FW Config HASH的内容是OK的,就可以用于校验HW/FW config

" c4 m# p$ U  J" C
6 ^, ?  t1 Q1 K9 ?
第二个根证书是秘钥证书,同理,他也是用了OTP中的hash,从而得到这个证书里面2个秘钥的真实性
6 r0 d: e# R8 G* {
7.png
' q3 f  R+ r$ a0 s* T1 O7 ^. r
& W4 D* p% q4 u1 R
这两个秘钥证书又会向后一步一步最终得到各个image的hash,用于校验image,这儿我就不再多说了,大致意思和上面的类似

# w; Q. q5 s% G5 r' [1 b: j  t2 r
8.png

2 ^: s* ^% a) ?2 N( B
+ k/ J9 B7 k6 u" e- R8 g4 n
五.总结

) U( t4 v( G8 u1 X
其实TF-A BL2启动U-Boot与OP-TEE的核心思想还是通过证书验证image是否正确,只是他还多了证明证书是正确的步骤,并且它的iamge很多,所以显得流程特别复杂,步骤很多,但是核心思想和上一篇的BootRom启动FSBL(TF-A BL2)是一样的,只是需要耐心的去理解它的详细流程
4 ?4 z% U7 q9 Z: |' ~- r
+ H2 X2 Q3 m$ H2 K9 j

2 @( o- Y4 n" r8 Q7 q! q& k. ?" d5 m+ ~* Q( P4 b6 _7 q

4 I4 b5 U3 S2 g6 T+ p8 W
9 X3 L' J; W) H- h% w/ I& Z. k: c2 K) U: X
& }8 e( X" j, y0 r

+ F2 z( `7 p, V. l0 k* S6 @
赞 收藏 评论0 发布时间:2024-11-30 23:13

举报

0个回答

所属标签

相似技术帖

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