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

Arm® TrustZone®特性面向 STM32L5 和 STM32U5 系列

[复制链接]
STMCU小助手 发布时间:2022-11-12 15:59
引言- s! P! A1 v% e4 C$ u
在 IoT(物联网)应用中,设备很容易受到通过互联网实施的恶意入侵。因此,保护设备和信息并使可信区域和不可信区域彼此隔离,这些安全主题就非常的重要。
6 e! S+ Y' H/ Q! S( MSTM32L5 和 STM32U5 系列器件(本文档的后面部分称其为 STM32L5、STM32U5 或 STM32L5/U5)基于高性能 Arm®Cortex®-M33 32 位 RISC 内核。该处理器使用 Armv8‑M 架构,主要应用于非常注重安全性的环境。
2 p+ b& O7 R" X" y' s6 m9 D& |面向 Armv8-M 的 Arm® TrustZone®技术是一种安全扩展,旨在将硬件划分为安全区域和非安全区域。通过 Arm® TrustZone®技术和软件方法,STM32L5/U5 微控制器(MCU)为安全应用程序提供良好的设计灵活性。3 d  v' s9 I! m/ c7 s7 S( P9 U
本文档介绍 Arm® TrustZone®技术和 STM32L5/U5 器件的各项特性,这些特性允许将 MCU 内存/资源划分为安全区域和非安全区域。
* q7 W. c9 V' d- \! I5 V+ l) i
% [- t) P4 p: [+ I8 J1 概述
8 h4 z% R0 f# R- _) H$ O% C3 @, K' \2 Z本应用笔记适用于基于 Arm® Cortex®内核设备的 STM32L5 和 STM32U5 系列微控制器。: d* r: }( o7 C, c. R$ Q6 f
提示 Arm 是 Arm Limited(或其子公司)在美国和/或其他地区的注册商标。, C1 s% V% J. [5 \! q4 @

. F; n; ?+ D( f1 X2 Arm TrustZone 技术1 J9 V" P' v; K( E- u3 H
2.1 概述
+ ]% c. H% |( L. M+ \# Q
面向 Armv8-M 的 Arm TrustZone 技术将系统分为两个区域:一个是安全区域,另一个是非安全区域。安全与非安全区域的划分是基于内存映射的。* l$ ]# }; w6 f& e( i0 @
所有可用的微控制器资源(包括 Flash 存储器、SRAM、外部存储器、外设和中断)被分配给安全区域或非安全区域。规划了这些资源的安全属性之后,非安全区域只能访问非安全内存和资源,而安全区域可以访问这两个区域中的所有内存和资源,包括安全和非安全资源。
& @9 G( y, u# N; @4 N* z需要保护的重要数据(如加密密钥)必须在安全区域中以安全的方式进行存储和处理。
; b1 X0 W9 \- ?6 L5 i' O代码的执行位置定义了其类型:" U5 m% U8 P- @# w
• 如果代码在安全内存中执行,则称其为安全代码。& q# W4 z+ S/ ]( b4 W" L+ r  T: k
• 如果代码在非安全内存中执行,则称其为非安全代码。- x! v% N2 }8 J5 e
安全代码和非安全代码在相同的 STM32L5/U5 器件上运行,如下图所示。' I) z0 J. z& x  j

# d" v/ Q. e, ~& x# i" P 9~HX_@LWYY6AOPWZNLVUEHQ.png 1 a/ O9 M9 b6 A
: D# ?& t6 v, p% ~8 l
2.2 安全状态
7 L8 v7 ~+ K" j2 ?6 ]- S& A在简化视图中,执行的代码地址决定了 CPU 的安全状态,即安全或非安全:
# d3 g3 v* s$ T* [3 m" O  f6 A• 如果 CPU 在非安全内存中运行代码,则 CPU 处于非安全状态。
2 k1 t0 y' J, d/ o# t/ S* U• 如果 CPU 在安全内存中运行代码,则 CPU 处于安全状态。; N" r( C7 \' T) X2 b* U  j+ V
Armv8-M 技术定义了以下地址安全属性:
' R- ^/ V! M" {  S5 {; _0 a; M5 ^• 安全1 p; w. r6 E9 G, B2 w" Y! Z# Y
安全地址用于只能由安全代码或安全 master 访问的内存和外设。安全事务是那些由 master 发起并在安全状态下运行的事务。
' ]; t7 u7 Y4 M6 E. s  B• 非安全可调用(NSC)8 Z3 T7 Q2 _$ N% U! K: L
NSC 是一种特殊类型的安全位置。这种类型的内存是 Armv8-M 处理器允许为其保留 SG(安全门)指令的唯一类型,该指令允许软件从非安全状态转为安全状态。该 SG 指令可用于防止非安全应用程序从分支进入无效入口点。
, V! X& y& {, f% I当非安全代码调用安全端函数时:
- |: I+ E7 A* ^( O# E8 q# A) x7 i– API 中的第一条指令必须是 SG 指令。
; T7 i6 F( J3 d4 ]1 P– SG 指令必须在 NSC 区域内。$ D3 Q" b" C! Q. i) O
安全代码还提供非安全可调用函数,为非安全代码提供安全服务访问。
5 K3 G. m+ I) M/ j. L• 非安全
% s9 t; I& ], j5 }" q9 Z非安全地址用于设备上运行的所有软件均可访问的内存和外设。非‑安全事务源自以非安全方式运行的 master或访问非安全地址的安全 master(仅数据事务,非获取指令)。仅允许非安全事务访问非‑安全地址。非安全事务不能访问安全地址。; A, F# u5 s6 X" C9 Q

6 Q3 I$ }8 g: B! c1 S: s  r
3 在 STM32L5 和 STM32U5 系列器件上实现 TrustZone
9 a8 ]+ s6 u' ^. B" \2 o% ~3.1 激活 STM32L5 和 STM32U5 TrustZone
7 G; z* P( S' a( x: P! k
在 STM32L5/U5 中,TrustZone 是默认禁用的,可以通过在相应的选项字节中设置 TZEN 选项位进行启用。/ A# Y5 F+ [4 W& V8 ]# u. J
本文档中描述的所有特性适用于启用了 TrustZone 的 STM32L5/U5 器件。
2 I, s; K! ~1 N8 p0 ]  q/ Z- {, ?. f+ U: n% V) }; p% X( Q
3.2 TrustZone 框图( i; Y9 R/ E6 k6 J# Q  _: i3 L
在 STM32L5/U5 中,TrustZone 的实现得益于 SAU(安全属性单元)、IDAU(实现定义的属性单元)、Flash 存储器和 GTZC(全局 TrustZone 安全控制器 )。# u" b7 a3 r# u/ d' I' q+ {
下面的框图详细说明了 TrustZone 的实现过程。
, ?& {4 a+ y! Q, S) R$ |! g
0 S8 |& `$ G% W# J4 Z/ R& R8 R+ s2 s SVHNG~X{YP)YTG)J7~IM50N.png
  Z. h. D( T2 Y  l, h: N) I% p- _% D8 N) r3 }' f" p; Y( [3 E2 `2 d1 R) q
3.3 安全属性单元(SAU)和实现定义的属性单元(IDAU)
' a& H0 h/ u2 m7 j1 G" q7 kCPU 看到的内存地址安全状态由内部 SAU(安全属性单元)和 IDAU(实现定义的属性单元)组合控制。
+ Q, D+ ~' j0 Z! q安全属性的最终结果取决于 IDAU 和 SAU 其中较高的安全设置。安全属性的优先级如下:3 ]0 _6 |  Y0 h! u/ n0 K( o5 ^+ `
• 安全具有最高的安全优先级。
! T& y5 |9 \& q% M• 非安全可调用的安全优先级次之。
' r! _$ t+ e! Y. n7 u  n7 [• 非安全的安全优先级最低。
  c( ^! \: P( Y下表显示了如何将特定的安全属性(安全、非安全、激活非安全可调用)分配给特定地址。& v, s) N! m! v, d$ }9 \( E
% h" D$ z" ^; J5 |* h
`~8]D%NEAFVWXQ}}51)[MPI.png ; H. m: ]$ X7 X
& B  I( B9 y, B# q, e: C
' l$ q3 Z+ {! N4 g3 |. V
3.3.1 STM32L5 和 STM32U5 的 IDAU 和存储器别名使用

" K& l- p5 O- n! w& USTM32L5/U5 内存映射遵循 Arm 的建议实现一个重复的内存映射,一个用于安全视图,另一个用于非安全视图。
# A. l9 [; I& j' T6 K: Q7 S3 ]这意味着内存映射的每个区域(代码、SRAM、外设)被分成两个子区域,其中内部存储和外设被解码在两个单独的地址位置 - 非安全视图中和安全视图中。IDAU 的实现定义了这些区域的安全属性。
& V( f% }  k$ \, G. ~& }IDAU 内存映射分区不可配置。它由硬件确定。下表显示了 STM32L5/U5 IDAU 定义的内存映射安全属性分区。
1 n/ P5 J8 N2 K: g- G7 z6 }6 z3 Z6 }2 ]1 R- F  M
}T`E2EWFE_0LUA3[(}FU`D8.png ) e0 a' j& d6 T7 w
( ]" F/ j6 t0 x3 J( r2 A
3.3.2 STM32L5 和 STM32U5 SAU
# V8 L7 p5 ^' a( s6 SSTM32L5/U5 中有 8 个 SAU 区域。用户通过 SAU 修改所需的安全配置分区,如下表所示。启用 TrustZone 后,SAU 将所有地址默认为安全:所有内存区域均认为安全。! L5 Z: p$ x5 E- p& I
0 `% u! e% {" ^$ q2 x
PHM]Y$)4YEDB%I2S~D4MCOT.png
5 E# Z& i% @9 j$ [8 p, ]  E$ b' O; v* ~* b6 v5 f: i+ b
示例
0 ~. S) e4 |0 T0 b: l( z外设在两个地址范围被解码:非安全视图中的 0x4000 0000 和安全视图中的 0x5000 0000。
* Q' u$ }% ^% r( T% ^  Q8 ]根据 SAU 和 IDAU 的编程,安全代码通过生成安全事务来访问安全视图中的外设,而非安全代码在非安全视图中的另一个地址访问相同的外设。根据 GTZC/TZSC 如何定义外设安全属性,授权或拒绝访问。详情请参见第 4 节 和第 5 节 。
$ M6 }9 e2 T/ Y3 k* w
" c6 W1 J& G5 z) }+ B0 T- Y: u$ x2 Z完整版请查看:附件1 F- J: u+ \( Y1 ^4 B, e" B

  ]. x/ T4 Z+ f- S

zh.DM00068118.pdf

下载

377.72 KB, 下载次数: 3

收藏 评论0 发布时间:2022-11-12 15:59

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版