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

STM32U5 RDP回退功能测评

[复制链接]
小萝卜啦啦啦 发布时间:2023-2-13 20:48
STM32芯片的保护等级有3级,0、1、2。
等级0:无保护
等级1:无法访问Flash和部分sram及其他一些资源。但是可以设置回0,退回0需要擦除整个Flash
等级2:完全锁死芯片,无法调试、烧录等操作。且该等级无法逆转。
而STM32U5系列具有保护等级回退功能,可以从2退回1,1退回0。
一.理论知识
官方有一份文档关于保护等级降级的描述和操作,文档编号为《LAT1086》,有兴趣的可以主动去阅读。
因为我没有使用TrustZone的经验,为了今天试验的顺利进行,本文只讨论TrustZone不使用的情况,不过大部分的操作都是通用的,额外缺漏的可以从ST的文档中自主学习。
当TrustZone不使用时,保护等级变化如图所示
2.png
从0->1、0->2、1->2都只需要设置RDP参数即可,和普通STM32一样。但是多了从2->1、1->0这两个。
从2退回1时,需要使用OEM2秘钥。从1退回0时需要OEM1秘钥。
所以在使用该功能时,需要设置两个OEM秘钥。关于秘钥有以下几个注意点:
①需要注意的是秘钥不能为全0或1
0 Q1 i0 x& g, s8 z; k; J( N% ]
②秘钥不是在任何时刻都可以设置/修改的,具体如下图所示
3.png
③秘钥设置后无法撤销,但是可以修改(这一条我不太理解,我看ST的意思是秘钥一旦设置好以后就无法清除,只能在允许修改的情况下修改。但是我试验时发现是有清除按钮的,是文档写的太早,而现在已经有清除功能了?)

( x  f$ d' |+ y" a5 e2 m3 `
因此,强烈建议在等级0时设置秘钥、修改秘钥
7 l" \- `* S  [. g5 G
二.实操
首先我们先检查一下保护等级。我们需要使用STM32CubeProgrammerv2.8.0及以上的版本,且Stlink固件需要V3J8M3及以上。我这边使用的是目前最新版2.12.0和V3J10M3
2.1检查秘钥设置情况
" P- T) @1 a1 {: Z- l/ L1 z; M# D2 a
板卡连接电脑,打开STM32CubeProgrammer,选择ST-Link,连接
4.png
连接好后,正确识别到芯片了
5.png
点击左侧的REG图标,Device选择STM32U5XX,Search内输入FLASH,回车
在NSSR中有两个参数“OEM1LOCK”、“OEM2LOCK”。当值为0时表示未设置秘钥,1为设置了秘钥

$ V7 r6 ]% C( p
我手上的芯片是全新的,所以这两个参数都是0,未设置。
6.png

5 p. l$ j( \) ?; q0 r
2.2设置OEM秘钥

; c; f1 N3 B& c) Y2 ?" G# }
我们设置OEM秘钥,我使用的2.12.0版本的软件已经有图形化操作界面了,不需要再和ST文档中那样使用命令行了,可以直接在下图界面设置秘钥、解锁
7.png
这个全新的界面我也是第一次使用,保险起见我先阅读一下官方文档《UM2237 Rev20》中的“2.9.2 RDP regression with password (STM32U5Series only)”,这一章节专门是描述该页面是如何使用的
8.png

/ h3 Q/ j- T  z: n7 V
先看一下RDP等级
9.png
是0级,可以设置OEM秘钥1和2
设置秘钥,需要注意的是,秘钥不能全为0或1。

3 m/ F( T) m; z( c
在Password框内输入想设置的秘钥,我这边设置的是0x11223344,0x55667788。设置的时候注意0x和密码长度,我输入了一下发现这个框没有做限制,可以随意输入,不知道点击设置后会不会有错误提示,因为我手上只有一块板子,不敢乱设,就不尝试了
10.png
点击set password后会有一个提示框
11.png
我们点击第一个Apply Lock RDP1
" D7 W6 |7 \" @) R+ k8 W
设置完成
12.png
检查一下标志位,变成1了,OEM1秘钥就设置完成了。OEM2秘钥设置类似,就不展示了
13.png

5 _' S1 m9 B0 R) A$ S" [7 Q, ]3 p
2.3从等级1降级至等级0

  {. Q+ y) p3 f
我先把等级设置为1,试一下用OEM1秘钥解锁、降级
14.png
设置完成
15.png
接下来解锁
16.png
点击ApplyUnlock RDP1
17.png
解锁完成,就可以去降级了
18.png
尝试降级
19.png
降级成功
20.png

( j* j; n* ]6 }5 k/ s0 b, T
2.4移除秘钥

' z5 Z: @- [% {, H
如果想要移除秘钥可以在保护0时点击Disablepassword
21.png
点击apply
22.png
移除成功
23.png
检查一下标志位,变成0了
24.png

- n# @7 l% y2 N. o) ]
2.5从等级2降至等级1
我们在等级0时先设置好OEM1、OEM2秘钥,这里就不再赘述步骤了
' W2 W5 S7 ]6 j' W; a% x
秘钥设置如图所示
25.png
两个秘钥设置成功
26.png
直接将保护等级设置为2(心里还是蛮紧张的,很害怕操作失误,这块板子变砖)
27.png
这里还很贴心的弹出了一个提示框,告诉我可以设置一个OEM2秘钥来去除等级2保护
28.png
点击确定后,还会再次确认是否要继续,并提示该操作的风险
29.png
设置完成,芯片断连,保护2生效
30.png
随后点击Unlock RDP2(密码框内要有秘钥),Apply Unlock RDP2
31.png
再点击右侧的连接
途中虽然有弹出错误/失败的提示框,我们不必理会,正常的,最终会成功连接上芯片!此时RDP保护等级为FF,代表我们成功了
32.png
下面是ST文档中的一些描述
33.png
34.png
虽然官方的描述在内部逻辑上不是非常详细,我个人的理解是,当芯片处于等级2时,其他系列的芯片在调试口收到任何数据都是拒绝处理的,U5会处理一种数据,那就是携带OEM2秘钥的解锁指令。一旦秘钥正确,就会触发硬件解锁+降级至1的操作。然后就可以正常通过调试口连接芯片了,此时RDP保护等级会显示FF,虽然不是DC,但是芯片已经处于等级1了。
我们可以重复之前的操作,把等级1降至等级0,步骤我就不赘述了,和之前的一样
2 s( _$ r8 [! ~- [/ t0 }
已经降至0了
35.png

7 X4 H3 p; u1 C8 q4 j8 I! E) C5 u3 J
3.反思
今天的分享结束了,但是我还有一个疑问,如果有人用暴力的方式一直尝试解锁,芯片会不会有保护措施呢?虽然0x00000000 00000000~0xFFFFFFFF FFFFFFFF很多,挨个尝试要很久,但是终将会被破解。是否有和手机一样的输入多少次错误秘钥就禁止一定时间输入秘钥?

1 U+ y. i9 \! f& R5 M

8 r" a6 k, p7 m9 b; g% i4 t- J  s+ T; R& I+ |1 Y( S' U* ~$ f
赞 收藏 评论1 发布时间:2023-2-13 20:48

举报

1个回答
STMCU-管管 回答时间:2023-2-14 13:36:48
支持,很详细了
3 Z4 x$ O: a. q& K$ D3 e

所属标签

相似技术帖

官网相关资源

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