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

基于 Arm 上的安全启动和安全固件更新概述® TrustZone® STM32L5 系列微控制器

[复制链接]
STMCU小助手 发布时间:2022-7-10 13:29
引言
- ~% Y: g8 i- l+ m本应用笔记描述如何在基于 Arm® Cortex®‑M33 处理器的 Arm® TrustZone® STM32 微控制器上获得安全启动和安全固件更新解决方案。该应用笔记还提供此解决方案与 X-CUBE-SBSFU 解决方案的顶层比较结果,后者适用于基于 Arm® Cortex®‑M0、Cortex®‑M3、Cortex®‑M4、或 Cortex®‑M7 处理器的非 TrustZone®STM32 微控制器。它还为安全启动和安全固件更新解决方案提供顶层集成指南。6 G/ R) Q! {3 \# J2 p* I
对于 Arm® TrustZone® STM32 微控制器,安全启动和安全固件更新解决方案在相应的 STM32Cube MCU 包中提供。与X￾CUBE-SBSFU STM32Cube 扩展包中提出的解决方案不同,该解决方案基于开源 TF‑M(面向 Arm® Cortex®‑M 的可信固件)参考实现。6 z3 T" S' E, l; q
本应用笔记适用于所有 TrustZone® STM32 微控制器。然而,本文档中仅将 STM32L5 系列作为示例。
9 e3 J7 ]! c0 j如需关于开源 TF‑M 参考实现的详细信息,请参见[TF-M]。
6 c: Z8 _" \9 P9 H- x0 R8 |; `5 k! A2 y6 c9 X6 V
1 概述
) T5 b9 O- \4 \5 ?. B" ~
在本应用笔记中,术语 X-CUBE-SBSFU 指的是 X-CUBE-SBSFU STM32Cube 扩展包中可用的安全启动和安全固件更新解决方案,而术语 SBSFU 指的是 STM32Cube MCU 包中可用的安全启动和安全固件更新解决方案(STM32CubeL5 用作示例)。8 C' [$ J) l6 h6 H7 _5 R9 Y/ t
5~8]%FGJQW1[(OHAV3_BN8U.png
9 ?: r! s4 r; M6 o% J' H' m7 B) ~

: B/ ~- l3 i+ ]3 a5 K2 参考

& f8 T6 i; D, a下面的表 2 和表 3 中提供的资源是公开的,可以从意法半导体的网站 www.st.com 或第三方网站上获得。
: ~$ P7 K  w; ~+ j
! |  l2 u5 o1 J' i; H IO6T2J~923$Z7~5[VQ[1]VB.png " \3 l9 U4 L, U. ^

  v" Q3 U1 I6 v6 Z% k6 x( { ]0HE2_JCDQ3{UG}UMU5~Q3Y.png 6 v4 U, d7 c( W, k/ w: G  g

2 ^; l9 }# [/ j9 N6 j5 \6 @: |提示 Mbed 是 Arm Limited(或其子公司)在美国和或其他地区的商标。
9 j; R( T% K, f) o) A2 n6 x/ a- c6 c4 M+ l
3 Arm® 可信固件‑M (TF‑M)简介
5 T) I" K: ^( H; [& v7 DTF‑M (参照[TF-M])是 Arm Limited 驱动的开源软件框架,在 Arm® Cortex®-M33 (TrustZone®)处理器上提供了PSA 标准的参考实现:" e) q) P* ^$ a
• PSA 不可变 RoT(信任根):在任何复位后执行的不可变“安全启动和安全固件更新”应用程序。该应用程序基于 MCUboot 开源软件(参照[MCUboot])。
0 q+ R; [( {( Q8 Z( C, |1 p# l• PSA 可更新 RoT:“安全”应用程序实现了一组隔离在安全/特权环境中的安全服务,非安全应用程序可以通过PSA API 在非安全应用程序运行时期中调用这些服务(参照[PSA_API]):, O5 S3 g1 I+ K1 ^; S
– 安全存储服务:TF‑M 安全存储(SST)服务实现 PSA 保护的存储 API,允许数据加密并将结果写入可能不可信的存储中。SST 服务采用基于 AEAD 加密策略的 AES-GCM 作为参考,保护数据的完整性和真
' K7 p( ~" z7 j/ q* ?实性。
" b- q9 U6 ^; O0 ]6 \– 内部可信存储服务:TF‑M 内部可信存储(ITS)服务实现 PSA 内部可信存储 API,允许在微控制器内置的闪存区域中写入数据,该区域将通过硬件安全保护机制与非安全或非特权应用程序隔离。8 C, m% X6 a  k% _- z; D1 l
– 加密服务:TF‑M 加密服务实现了 PSA 加密 API,允许应用程序使用加密原语,如对称和非对称密码、散列、信息验证码(MAC)和带关联数据的认证加密(AEAD)。它基于 MbedCrypto 开源软件(参照
1 O- O4 ]8 h. t) ^+ D4 F( [+ O[MbedCrypto])。
: _( C1 q9 h3 A# b4 Q– 初始认证服务:TF‑M 初始认证服务允许应用程序在验证过程中向验证实体证明设备身份。初始认证服务可以根据请求创建一个令牌,其中包含特定于设备的固定数据集。# g8 `& @; }6 p! J
• 应用程序可更新 RoT:隔离在安全/非特权环境中的第三方安全服务,可以由非安全应用程序在非安全应用程序运行时期中调用。- q7 j' J, t% c4 r) o4 U8 g0 l9 R0 A
7 z  c0 W: D4 I7 z) ]/ ^: w
_3UUNV%(T%Q~LRWJIS5IBSD.png
( h! Q7 T5 S& A: Y  ^
# }0 {6 P3 t- R: [5 F4 X-CUBE-SBSFU vs. TF‑M 对比
" R/ i/ {  N; y$ e; Y4.1 概述

: d5 ^* u/ |- U' F) e: C6 HX-CUBE-SBSFU 提供意法半导体的安全启动和安全固件更新实现,以及(仅有选择地面向部分 STM32 系列)应用程序在运行时期可用的安全 KMS(密钥管理服务)服务。5 e# g* \5 o8 w7 u$ k) U
TF‑M 参考实现提供基于开源 MCU 启动的安全启动和安全固件更新服务,以及应用程序在运行时期可用的一组安全服务。
( C! t" z2 V  a; [/ V& IX-CUBE-SBSFU 和 TF‑M 之间的高层比较请参见图 2. V$ d7 A5 m% M+ \' W: G1 ?, {; e! J
3 ~5 E9 t( w8 ?4 n* ]4 U8 u
J9(39X%VDKG(J17JIW91[@X.png
0 Z4 I) G) Y+ D5 N. ]7 ^
) l8 W7 T( q8 X# y7 F) J" O9 d8 T; L1 X1 g* ^0 s6 t+ G
TF‑M 的 MCU 启动部分好比 X-CUBE-SBSFU(无 KMS):提供类似的服务。
* E8 R) T$ p3 C7 ~: ?X-CUBE-SBSFU KMS 支持的服务类似于 TF‑M 安全加密服务,但是加密算法或特性不一样;即使两者都基于不透明密钥 API 概念,API 也是不同的。请参考相关用户手册([UM2262]和[UM2671])中引用的 X-CUBE-SBSFU 和TF‑M API 文档,获取与所支持的特性有关的详细信息。
) L! J% c& j9 Y1 }
1 ], H- z7 s5 n4.2 顶层特性6 _: L  X+ n4 i
即使 X-CUBE-SBSFU 和 TF‑M 提出类似的服务,两种解决方案的特性也不完全相同。 表 4 总结了 X-CUBE￾SBSFUV2.3.0 中的 X-CUBE-SBSFU 和 STM32CubeL5 V1.2.0 中基于 TF‑M 的应用程序之间的不同。
* ?4 o" i1 R! p1 y9 R5 I1 E
/ W% @- O8 M! Q3 d  S# X. V }AF$VRQG{MZZ}}U[8IY}X%C.png # ~% T1 T6 D0 a  v1 g

0 Y. z. G, n' ?; ~( P+ K! O
4 D0 N9 r- o9 E3 a, S; E4 b& f1 F7 x; U要了解最新的特性差异,请参照最新版本的 X-CUBE-SBSFU 扩展包和 STM32CubeL5 MCU 软件包( 可从www.st.com 上的各自产品页面获得)。6 a! O1 x# \) R
有关 TF‑M 特性的更多信息,请参见[UM2671]。
: Z+ c% W* g& j; }! l0 j# R
' b; K# ]. g7 T8 g4.3 硬件安全0 U1 _" c3 m  P3 l
STM32CubeL5 中基于 TF‑M 的应用程序的安全策略依赖 TrustZone®和 STM32L5 系列硬件安全特性。
$ J6 x# A) v* D
$ f3 u4 R# t- {2 [( W4 S/ W5 o7 _ T0@ZLC%0YCI2}9K51O@PKTW.png # A3 h5 @2 ~* i

# z) `  _! E: b% X0 F, t6 l# z, U! `
1 a' g; q) A) T+ E$ U5 STM32CubeL5 基于 TF‑M 的应用
4 `% P3 z7 A! _# i5 QSTM32CubeL5 MCU 软件包基于 TF‑M 参考实现提出两种不同应用,可移植到 STM32L5 系列以利用硬件安全特性的好处。
# j9 g3 V% h3 a! L5 Q0 r• SBSFU:它包括“安全启动和安全固件更新”应用程序(名为 SBSFU_Boot)简单用户应用程序示例(名为SBSFU_Appli)。
& H  z+ X' L% I! }! k• TFM:它包括“安全启动和安全固件更新”应用程序(TFM_SBSFU_Boot)和在运行时期提供 TFM 安全服务的用户应用程序(名为 TFM_Appli)。
# z* q, j( h1 q' H建议使用不带 KMS 的 X-CUBE-SBSFU 的用户考虑迁移到 STM32L5 系列并使用 STM32CubeL5 SBSFU 应用程序。建议使用带 KMS 的 X-CUBE-SBSFU 的用户考虑迁移到 STM32L5 系列 并使用 STM32CubeL5 TFM 应用程序(可能会删除一些安全服务或加密算法以满足应用程序需要)。
# u7 \* h0 c8 O6 d8 i) W- U. ^. W0 ?9 [, B5 G- D" `, y5 o! K
}`U(]V6JA(P(`}L0BB5R$~4.png
( T5 q+ Y5 n' d' u9 ^/ D/ L# @. j9 Y! x! k. i: [8 J8 s; _
通过移除运行时期的 TF‑M 安全服务,STM32CubeL5 SBSFU 应用程序为可用于用户应用程序的闪存容量最大化,如图 5 中所示。
" A0 y. m9 R$ I' Z2 b( L5 Y6 I" l; g7 }+ G. ]6 C5 }
ESWR35FJ25%RJZS58ZSB(G4.png 2 L& Q& }+ y+ k

+ K/ S5 Z+ h- a+ P如需关于内存映射的详细信息,请参阅[UM2671]中的内存布局一节。
+ U) A$ V8 N" W1 f  p: m7 B6 h& {: @6 J6 D  Q
' p( K$ L3 i* s0 s  j7 c
6 STM32CubeL5 SBSFU 应用

+ s4 [) x) n1 R- }6.1 用户应用程序集成

# D0 R; I; s* t+ O) [当将 X-CUBE-SBSFU 应用程序移植到 STM32CubeL5 SBSFU 时, 用户应用程序必须集成到 SBSFU/SBSFU_Appli/NonSecure 文件夹中,如图 6 中所示。1 i0 S7 F8 B& \* @2 F
此文件夹包含一个简单的用户应用程序示例。
7 B" `5 V/ A' ^9 V8 F, X: Z' G( p5 H5 N+ A6 o. W3 W
G[$STXJ1I}]KK`BU]KT0EMO.png
- q+ ?! k. }; n' _5 y; l. A  J3 ~6 Z
6.2 OEM 安全服务集成' h% d4 o7 _3 I+ q, ~7 k
如果 OEM 自己的安全服务也在 X-CUBE-SBSFU 中实现,这些 OEM 安全服务必须集成到 SBSFU/SBSFU_Appli/Secure 和 SBSFU/SBSFU_Appli/Secure_ncslib 文件夹中, 参照图 7 中所示的 STM32CubeL5 TrustZone®HAL 示例。
1 s; I4 v" I, I+ }! }2 q这些文件夹包含一个简单的 OEM 安全服务示例:“安全 GPIO 翻转”。
* A) T( j% E- ?7 _! F3 O+ W- h! _' F
~5OKSYA1~DR5W(RXI@4{TXC.png 8 _& l) F- |* C5 [

# Z; m3 w6 ^5 S* b& D6.3 密钥个性化
4 R3 m; h) v4 G( p在 X-CUBE-SBSFU 中,个性化数据是加密密钥:
2 F  m' b7 M7 \, E( e( v, l( O• AES 对称密钥(CBC 或 GCM):用于固件镜像加密
1 ?4 ^% ?  f0 b4 t+ u• ECDSA 非对称密钥:用于固件镜像签名
# b# w! r" G$ VSBSFU STM32CubeL5 V1.2.0 中不支持固件加密。没有可个性化的 AES 对称密钥。
/ Q* I; \) F: y' k8 a9 r) y. s关于固件镜像签名,SBSFU 示例中有两个 RSA 非对称密钥(一个用于安全镜像,一个用于非安全镜像)可进行个性化,而 X-CUBE-SBSFU 中只有一个 ECDSA 非对称密钥。必须注意的是,与 X-CUBE-SBSFU 相反,公共非对称密钥不是在 STM32CubeL5 SBSFU 编译过程中自动生成的,而是需要由用户将其与私有非对称密钥一起提供(参见图 8)。' [; |2 f4 o, V4 U$ P

0 u7 |- n& O3 G H4SKYDF765%ASRX{$[I6_M8.png 6 t7 R3 R. |5 U; L, Q2 |0 e$ W
" f: Q9 w% m+ u, o. t
这两个私有 RSA 非对称密钥用于对安全和非安全固件镜像进行签名;它们没有内嵌在闪存中,而两个公共 RSA 非对称密钥存在于 SBSFU_Boot 项目的编译输出中。它们内嵌在专用的不可变 Flash 区域(个性化数据区域)中,如图 9 中所示。4 G, L8 b6 K* }) H9 t

5 Y7 n: U5 L+ m; ~) T. s5 N, \5 `, p1 u$ i, \) l0 d
* N( H. C! j7 P) a
5N6PRZ36GVHFB]X{BF2[ST2.png " Q7 V, S7 i  A6 n; t
$ m4 ]6 p/ M! f
7 STM32CubeL5 TFM 应用
9 M2 v& P) F  `- S( ^第 6 节 STM32CubeL5 SBSFU 应用中提供的顶层集成指南适用于 STM32CubeL5 TFM 应用。本节中提供特定于STM32CubeL5 TFM 应用的额外顶层集成指南。" }; ~8 r" h/ j% G% L
如需关于 STM32CubeL5 TFM 应用的更多信息,请参见[UM2671]。
# y- p; M; m9 i4 n" T5 E
" o( c2 D4 ]8 }5 z% N( U  X7.1 运行时期的加密安全服务
# t+ D5 L  h/ ]+ \在 X-CUBE-SBSFU 中,通过 PKCS#11 API 为用户应用程序提供 KMS 服务。在 STM32CubeL5 TFM 应用中,通过 PSA 加密 API 为用户应用程序提供安全加密服务。两者都基于不透明密钥 API 概念。3 A: q& o5 h% a  s& g

1 I+ _- o; B2 M$ J/ W; o YGF5[89741NA}QV69_W%L.png
) l3 c& X& E, _5 G( _9 C
' H6 D1 w9 ^. Z& j3 r3 l关于 PSA API 的更多信息,请参阅 TFM 用户应用程序示例和[PSA_API]。
; k8 y, ?+ }  O( H) C" @0 M  N5 D, y6 U6 u: i9 G- i7 `
7.2 OEM 安全服务集成  d3 s; u; h" n; Z+ Q2 c
如图 11 中所示,OEM 安全服务必须集成为安全应用程序的安全/非特权部分中的第三方安全服务(称为“来自 TFM框架的应用程序 RoT”)。关于“来自 TFM 框架的应用程序 RoT”,请参照[UM2671]。# b& ~3 }6 T( U2 B, \) z$ b

6 J7 I3 D0 Z2 V
9 ^- p( c- J$ x) a- b# V% @1 g0 s, j! U4 @; e: W

: j, ]  W: Q% o+ [1 j7 i如图 12 中所示,这些服务必须集成在 Middlewares/trustedfirmware 文件夹中。关于更多信息,请参见[TFM 用户指南]。 : I/ S" @) f7 u8 B, ~% T

9 ?* H- M1 u1 y# u AH0%)8PGJO58AM`VXK21I.png ' t# X" H3 P" K; ?% U8 P

! z  J4 ~) W1 n, c6 I
- L* v0 F/ E* r* E, p7.3 数据个性化
4 n1 l4 n, T8 t  k# c. Q除了固件镜像身份验证密钥,TFM 应用程序的个性化还需要额外数据:EAT 密钥、HUK 和实例 ID。TF‑M 初始认证服务需要这些数据。它们是特定于产品的(每个器件所独有的)。这些数据与公共 RSA 非对称密钥一起被分组在专用的不可变 Flash 区域(个性化数据区域)中,在激活最终安全配置之前,必须针对生产中的每个器件对该区域进行个性化设置。
9 U& d8 j& ~: `* Y2 U; c) Z" O& L$ \# d
H(F@[S)`0@FJ)A0P}XJ7[56.png
& i4 @( ~4 t- f) |( X9 r  w/ X7 s4 i1 A) I9 x" ]

7 s% y( {  ]* k- l; J, x. w" Y如需关于个性化数据的更多细节,请参阅[UM2671]中的集成者角色描述一节。
0 T! b. `: p( t2 f$ V6 U9 g0 [( j$ [7 H) c  }/ C0 k

3 J/ |5 m6 @0 d1 F% Y4 R8 l
, z* T, v( I: F5 `5 L- [7 W) C' w4 q8 P$ w* P- G
收藏 评论0 发布时间:2022-7-10 13:29

举报

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