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

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

[复制链接]
STMCU小助手 发布时间:2022-11-12 15:59
引言
; J& t" m* }- J9 G' f在 IoT(物联网)应用中,设备很容易受到通过互联网实施的恶意入侵。因此,保护设备和信息并使可信区域和不可信区域彼此隔离,这些安全主题就非常的重要。5 F# ]& i8 T1 a: E! @( |+ W( M
STM32L5 和 STM32U5 系列器件(本文档的后面部分称其为 STM32L5、STM32U5 或 STM32L5/U5)基于高性能 Arm®Cortex®-M33 32 位 RISC 内核。该处理器使用 Armv8‑M 架构,主要应用于非常注重安全性的环境。+ ^) h, A& h1 y6 w- @; }* _& A" H8 z
面向 Armv8-M 的 Arm® TrustZone®技术是一种安全扩展,旨在将硬件划分为安全区域和非安全区域。通过 Arm® TrustZone®技术和软件方法,STM32L5/U5 微控制器(MCU)为安全应用程序提供良好的设计灵活性。# U% v5 S" G5 i5 S4 \4 k4 x
本文档介绍 Arm® TrustZone®技术和 STM32L5/U5 器件的各项特性,这些特性允许将 MCU 内存/资源划分为安全区域和非安全区域。
+ @: t: Z4 M6 V0 G, P, ]  |
8 n, n9 y, A5 e2 L  \$ ?5 J1 概述
2 q( F; y4 `4 U6 d  q* ]1 w本应用笔记适用于基于 Arm® Cortex®内核设备的 STM32L5 和 STM32U5 系列微控制器。8 J6 }2 y5 j+ w0 J. e0 \( r
提示 Arm 是 Arm Limited(或其子公司)在美国和/或其他地区的注册商标。
% o: h6 K, }& o6 I* G
2 I. X1 U( G9 d: N3 R2 Arm TrustZone 技术0 k( V( ^7 ?# t7 t' @) [
2.1 概述
6 l3 a. b4 ~4 ^! T- P
面向 Armv8-M 的 Arm TrustZone 技术将系统分为两个区域:一个是安全区域,另一个是非安全区域。安全与非安全区域的划分是基于内存映射的。
9 \1 ]1 j1 M% V4 S, z  R所有可用的微控制器资源(包括 Flash 存储器、SRAM、外部存储器、外设和中断)被分配给安全区域或非安全区域。规划了这些资源的安全属性之后,非安全区域只能访问非安全内存和资源,而安全区域可以访问这两个区域中的所有内存和资源,包括安全和非安全资源。9 E+ X- ?( w& w1 j
需要保护的重要数据(如加密密钥)必须在安全区域中以安全的方式进行存储和处理。; Q+ o7 f8 I  ?+ j, n, `( ]
代码的执行位置定义了其类型:6 @  t, M+ g, [$ }/ X+ ?0 I
• 如果代码在安全内存中执行,则称其为安全代码。
1 h" |2 k6 t# O$ Y' ]• 如果代码在非安全内存中执行,则称其为非安全代码。
! E% c) V5 g# C: _4 R0 _安全代码和非安全代码在相同的 STM32L5/U5 器件上运行,如下图所示。. i; Q: h0 i5 v4 W8 `* `5 Z! k
7 H- `) H; W# Y+ i( `/ y
9~HX_@LWYY6AOPWZNLVUEHQ.png : ~8 r6 e% Q2 g. A! [/ p

- S& G5 R* A& E$ {2.2 安全状态8 T/ t) H9 M3 E1 f0 z
在简化视图中,执行的代码地址决定了 CPU 的安全状态,即安全或非安全:
% ^: |2 X5 e& N9 t# I# T• 如果 CPU 在非安全内存中运行代码,则 CPU 处于非安全状态。
2 k5 O9 }$ `2 l- L( v& ~• 如果 CPU 在安全内存中运行代码,则 CPU 处于安全状态。
/ k' A: t) F8 ~9 C$ X: g) H- I' |Armv8-M 技术定义了以下地址安全属性:6 E0 x* k7 ^3 G8 U3 T
• 安全+ q5 S* ]6 @- M7 t  g
安全地址用于只能由安全代码或安全 master 访问的内存和外设。安全事务是那些由 master 发起并在安全状态下运行的事务。
) F$ |/ E& ]$ \- `+ @• 非安全可调用(NSC)" D# O0 A. U$ u" ]
NSC 是一种特殊类型的安全位置。这种类型的内存是 Armv8-M 处理器允许为其保留 SG(安全门)指令的唯一类型,该指令允许软件从非安全状态转为安全状态。该 SG 指令可用于防止非安全应用程序从分支进入无效入口点。2 b* Q' L7 E7 d( Q8 }4 ^5 ~
当非安全代码调用安全端函数时:
# X, h2 t' ^2 y2 _% L" L– API 中的第一条指令必须是 SG 指令。# p5 {" O0 X5 @
– SG 指令必须在 NSC 区域内。/ v# |* [9 @2 k& y8 b2 L8 R
安全代码还提供非安全可调用函数,为非安全代码提供安全服务访问。# P# d% r$ g4 S
• 非安全" z6 C: q; q4 X) P; c
非安全地址用于设备上运行的所有软件均可访问的内存和外设。非‑安全事务源自以非安全方式运行的 master或访问非安全地址的安全 master(仅数据事务,非获取指令)。仅允许非安全事务访问非‑安全地址。非安全事务不能访问安全地址。
" f) B+ i+ T) R* Z9 d3 }/ [, B. q* h% Q
3 在 STM32L5 和 STM32U5 系列器件上实现 TrustZone. V) S# y! ]) a# u0 w
3.1 激活 STM32L5 和 STM32U5 TrustZone

. v1 t. Z" P, |" r. z; K6 M在 STM32L5/U5 中,TrustZone 是默认禁用的,可以通过在相应的选项字节中设置 TZEN 选项位进行启用。8 l4 |& i5 N4 @
本文档中描述的所有特性适用于启用了 TrustZone 的 STM32L5/U5 器件。- U$ ^( O! f$ U" V
( v9 m1 m# e' n1 }' p( g
3.2 TrustZone 框图
) C* [4 M8 N  Y1 ~) w9 ~- j在 STM32L5/U5 中,TrustZone 的实现得益于 SAU(安全属性单元)、IDAU(实现定义的属性单元)、Flash 存储器和 GTZC(全局 TrustZone 安全控制器 )。- P8 s7 Q& P$ d0 O5 R. m
下面的框图详细说明了 TrustZone 的实现过程。0 O+ b+ N7 [. S2 S6 I' x
4 F4 d( p7 |. \# s  L
SVHNG~X{YP)YTG)J7~IM50N.png ; q' w9 y0 y. n3 V4 J2 {. f& d5 V
9 u  ^' d6 k* R; G! @2 a' _
3.3 安全属性单元(SAU)和实现定义的属性单元(IDAU)
( g8 i9 |" p: r% r+ r: q( MCPU 看到的内存地址安全状态由内部 SAU(安全属性单元)和 IDAU(实现定义的属性单元)组合控制。
4 Z$ Z, @+ R. R& H4 z- C安全属性的最终结果取决于 IDAU 和 SAU 其中较高的安全设置。安全属性的优先级如下:
) U% a* r3 c+ x) q5 ?• 安全具有最高的安全优先级。
: x. X6 W. H1 G5 H& X% \• 非安全可调用的安全优先级次之。
8 @) {2 A2 Q8 M  Q• 非安全的安全优先级最低。
0 X- ?+ ]0 X. o# K  r9 T) e  U下表显示了如何将特定的安全属性(安全、非安全、激活非安全可调用)分配给特定地址。- D' s: @0 ~. M# T
6 q. r  O: j( V3 e5 ?6 W; H$ U
`~8]D%NEAFVWXQ}}51)[MPI.png , }3 [( Z4 |' i( ]: S4 ~0 F" ]

; x* s$ e) k0 M# w% D! r5 |& e" C  i' v3 f1 r5 n
3.3.1 STM32L5 和 STM32U5 的 IDAU 和存储器别名使用

# D) y6 A) y# J: XSTM32L5/U5 内存映射遵循 Arm 的建议实现一个重复的内存映射,一个用于安全视图,另一个用于非安全视图。
& J0 b" L# ^- T5 f这意味着内存映射的每个区域(代码、SRAM、外设)被分成两个子区域,其中内部存储和外设被解码在两个单独的地址位置 - 非安全视图中和安全视图中。IDAU 的实现定义了这些区域的安全属性。+ y+ k3 s/ p4 |! E  r- R5 e/ J  j
IDAU 内存映射分区不可配置。它由硬件确定。下表显示了 STM32L5/U5 IDAU 定义的内存映射安全属性分区。
; w" S) _1 I) M7 d! |$ h' J( o% j+ j. |1 `9 M: [' x' Y  Q
}T`E2EWFE_0LUA3[(}FU`D8.png 0 p- k+ D( C  U9 P& Z3 o, |

/ a2 s  j6 ]% K$ [+ i3.3.2 STM32L5 和 STM32U5 SAU0 S3 E: x$ i  J
STM32L5/U5 中有 8 个 SAU 区域。用户通过 SAU 修改所需的安全配置分区,如下表所示。启用 TrustZone 后,SAU 将所有地址默认为安全:所有内存区域均认为安全。
6 W& H# R% O0 p% y# Z5 L
* t6 ~9 v, r. g, M- I, s PHM]Y$)4YEDB%I2S~D4MCOT.png
% |! a+ W: I) y1 g4 k' x" o* ?! v# d" o. K
示例$ j1 F3 |4 f5 ^0 O: M& t2 a
外设在两个地址范围被解码:非安全视图中的 0x4000 0000 和安全视图中的 0x5000 0000。
' |! N+ _0 p7 G0 J9 g根据 SAU 和 IDAU 的编程,安全代码通过生成安全事务来访问安全视图中的外设,而非安全代码在非安全视图中的另一个地址访问相同的外设。根据 GTZC/TZSC 如何定义外设安全属性,授权或拒绝访问。详情请参见第 4 节 和第 5 节 。
" I) v6 Z4 k# y7 i7 i3 i" \. z. u
0 _  Y6 U/ d' v* f! N完整版请查看:附件/ W7 U: ^4 G! h9 E

, M% Y/ Q8 v" [  c! V- w

zh.DM00068118.pdf

下载

377.72 KB, 下载次数: 3

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

举报

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