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

STM32L1xx 微控制器上的专有代码读保护

[复制链接]
STMCU小助手 发布时间:2022-7-13 10:33
前言  ?: P; Z7 D8 ?+ O" p, z" p5 q' o
在微控制器领域,对嵌入式代码的知识产权保护已经成为被高度重视的问题。为了提供这方面的保护,STM32 微控制器采用多种不同方法来保护 Flash 代码,避免复制和逆向工程。
! Z, ~, x. P/ l本应用笔记描述了通用 STM32 系列的 Flash 保护功能。重点关注 Proprietary Code Read OutProtectionPCROP),它内嵌于中等容量的 STM32L151xCSTM32L152xCSTM32L162xC STM32L100xC微控制器中。
8 }4 B) i& P6 O6 w7 a& k% @1 列出了本应用笔记涉及的微控制器
+ ?, ^' w1 T- T3 Y
1 e6 X. K5 F8 b1 z
~ZY@89{%T$MP}H9S~TRT~91.png
) u' ~. @. I5 G$ R& K; r3 i. P6 e
/ b# G, m3 i* _' q
1 Flash 代码保护
. Q; h. S% U& _7 r7 ISTM32 微控制器系列产品具有下列代码保护功能:
6 L( q3 P" R/ y1. 全局读保护 (Read-out Protection, RDP)
  c! t6 r- B& }2. 写保护
) H! v* H  c2 j3 Z* e3. 专有代码读保护 (Proprietary Code Read Out Protection, PCROP)2 y! L3 G( l6 p( y8 m
这些功能用来保护嵌入式固件代码的知识产权,这表示对复杂嵌入式系统的关注正在日益增加。
; K2 q$ q1 u0 }& f
& [0 A6 r- m# J$ r. [+ ~0 w4 m
1.1 全局读保护 (RDP) u5 J+ b! ~6 R! s# p$ q( F; U/ l
全局读保护可保护嵌入式固件代码 (预加载到闪存中),避免逆向工程、使用调试工具读出或其他方式的入侵攻击。
) K1 z9 C$ {  j. d. w/ N该保护在二进制代码载入嵌入式闪存后,由用户进行设置。$ C% T6 _. c  `! o
2 描述了 3 个用户定义的保护级别。
; @* m) e, \: Z0 D0 `
& ^8 q5 u4 z2 u  W/ L7 r8 o
UD4[Y]W17FKSLZHE@~QWVS1.png
- `4 V) O, ~/ Q+ P9 v" c* c* y% w) i
( [3 {7 d9 }+ N5 J一旦用户代码被载入闪存中,即可避免代码倾出。可通过激活级别 1 或级别 2 保护来实现,或者通过 RDP 选项字节按照1. 中所示的准则进行编程。

' S( C: a4 ~+ h
. m$ T* l$ N* n: @. a4 l
7 V: r" t+ w5 a. M& n0 p

, O! T0 q* N6 f5 ^/ y4 w6 D- m! r9 K! B' w9 s' g4 o! M
. \! S3 C; }7 Y9 ~4 ]3 @3 W
两个保护级别 (1 和 2)都可以保护闪存。其内容不可被 Serial Wire 或 JTAG Debug 访问、自举程序系统软件或通过向易失性 RAM 存储器载入其他软件来读取。
( B6 B4 H) O1 A# I3 Z2 z8 l两个保护级别的主要区别在于易失性数据 (RAM 内容)保护,此保护仅存在于级别 2 中。RDP 保护被设为级别 1 时,调试工具仍然能够连接和访问 MCU (RAM 和寄存器)的所有易失性资源。这些工具通过向 RAM 载入一些测试代码来检查部件和 / 或系统。  _9 P9 G1 ?# m1 C
并且,级别 1 保护允许通过擦除全部 Flash 内容来恢复已编程部分。可通过将 RDP 选项字节从级别 1 重新编程为级别 0 来实现 (参见1)。
: x4 r6 H7 ~- \; `+ `' E# E4 p) ?另一方面,级别 2 保护是不可逆的 (熔断)。一旦 RDP 设为级别 2, RDP 选项字节和所有其他选项字节都会被冻结,不能再修改。* q' w+ S  H/ m2 {. P; O3 q* v
但是,用户 Flash 内容 (除了所有写保护扇区,参见1.2 节:写保护)在用户代码本身的控制下仍然可被更新。通过执行 IAP (In Application Programming,在应用编程)自举程序代码来允许一些扇区的固件更新。2 R7 j( T8 v! O4 h% [
为了确保能够保护预先编程的用户代码,自举程序协议可以由用户指定 (执行相关保护来避免攻击、倾出和 / 或恶意代码更新)。
, J, c9 }* Y: r注: 利用 STM32 上提供的嵌入式 AES 加速器实现了一些 Secure Bootloader 示例,应用笔记AN4023 - STM32 安全固件升级中对此有描述。* a: g' i% r) I9 J0 _" J( C. w
关于读保护的更多详细信息,请参考微控制器参考手册。
2 N. }3 ^+ Y- R- g7 W6 h: D; G$ M& P% q% x+ [
1.2 写保护
9 I4 [2 I# V8 Y& y$ N写保护通过 Flash 区 (扇区)实现,可保护指定扇区,避免代码更新或擦除。
& z( D% N* h/ G8 d" E/ T利用一个选项位来激活对每个 Flash 扇区的写保护。当设置扇区 i (选项位 nWRPi = 0)为写保护时,该扇区不能被擦除或编程。( F6 D) z+ ~  T8 t
3 显示了对于不同 RDP 级别的扇区写保护。

7 b0 v0 P6 J9 f! N; j" X* S) N' N9 \: m* K, L

) j$ d' c% ?: T3 j: f7 J' N5 s 8%)TT)EJRSOQCD`OY5_M.png ; ]( n1 k4 s6 N! J
5 @/ z5 @, O& O( D% y0 |; `

1 B! c0 P) ~$ y- k9 R# N

- ~4 l) D" a: v/ M4 h' ^, g# {1.3 专有代码读保护+ l8 }$ B8 R: j
专有代码读保护 (PCROP)是一种替代保护,也是通过扇区实现,可保护特定代码 (知识产权)不受攻击。2 `7 B( p& |  G+ x
PCROP 在微控制器代码保护和代码管理上实现了 2 种主要功能。5 r( W. t3 _! c' V
4 中将两种 PCROP 功能分别与 RDP 保护方法进行了对比。9 t" U) Y' G+ l- X
7 q9 J4 [# M4 {: w; S
9`PMF1`[V~[WVXS[I}81VOP.png
0 X/ q7 p3 p  b: J1 Z/ J8 H7 ~1 b# J* y: d: L/ q. {
这种保护基于一种只执行机制。 Flash 代码区域仅能被 STM32 CPU (作为指令代码)获取,而所有其他访问 (DMA,调试和 CPU 数据读取)是严格禁止的。
! ]% k- m- ~: V; i0 l6 z9 S在保护可执行代码不被读取时,这种只执行机制会产生一种副作用,导致被保护代码本身(从该区域执行)不能访问存储在相同区域的相关数据值 (如文字库)。为了避免该区域中数据访问的需要 (特别是文字库访问),必须在 ARM/Keil 编译器中选择一个特殊的命令行选项:
+ y) H# Y1 Q9 Z8 S! X6 }(armcc --no_literal_pools --max_string_in_code = 0).
: p: ?  i% v' d, |5 X* h0 |  b" O2 @
6 P$ _& s/ y% r, A: G
此命令行选项使用其他指令转换文字库操作。这些指令可创建寄存器值,而无需任何数据读取访问。它主要用于载入地址可变寄存器。由于替代方法效率较低,此选项将这些操作转换为效率略低的代码。但性能损失是有限的 (低于 5%),这对于受保护的代码部分来说是可接受的。
4 z" A2 \+ p+ v利用与写保护同样的选项字节来选择 PCROP 扇区。因此这 2 个选项是互斥的。但是,受保护不被读取的扇区 (PCROP)也不会被写入 / 擦除。因此, PCROP 可认为是扇区写保护的超集。
* @* a9 F5 z% v  q# m为了激活 PCROP (改变 nWRP 选项位的功能),必须激活 SPRMOD 选项位。该操作是不可逆的。
1 h/ Z' P0 m! F同样在 PCROP 模式下,设置为读保护的扇区也不能被复位成无保护状态。因此,新扇区可成为读保护区 (当 RDP 设为级别 0 或 1 时),但是被保护的扇区不能通过擦除或修改成为无保护区。' H7 @' ?. N3 e; X
根据 RDP 级别,存在可能的变通方案来恢复受保护芯片。若 STM32 处于 RDP 级别 1 且RDP 选项字节设为级别 0,则用户 Flash 区域将被完全擦除。这是 SPRMOD 和 nWRP 位可被复位、所有受保护扇区成为无保护的唯一一种情形。

  F7 j: E# f7 D. K但是,由于此操作总是与用户 Flash 区域的全局擦除相关联,因此代码保护不受影响。
( a" `4 L) f0 b% j! g当 RDP 设为级别 2,所有选项字节都会被冻结,不能再修改。因此,受保护扇区不能再被擦除或修改,这样就成为永久性保护。: Y4 i# E" Q# s- W- j
; f, a# _4 X+ z& b% T# N' G/ }& x
完整版请查看:附件
2 k5 w$ v9 W! D6 r

DM00075930_ZHV1.pdf

下载

265.09 KB, 下载次数: 0

收藏 评论0 发布时间:2022-7-13 10:33

举报

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