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

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

②秘钥不是在任何时刻都可以设置/修改的,具体如下图所示
3.png
③秘钥设置后无法撤销,但是可以修改(这一条我不太理解,我看ST的意思是秘钥一旦设置好以后就无法清除,只能在允许修改的情况下修改。但是我试验时发现是有清除按钮的,是文档写的太早,而现在已经有清除功能了?)

因此,强烈建议在等级0时设置秘钥、修改秘钥

二.实操
首先我们先检查一下保护等级。我们需要使用STM32CubeProgrammerv2.8.0及以上的版本,且Stlink固件需要V3J8M3及以上。我这边使用的是目前最新版2.12.0和V3J10M3
2.1检查秘钥设置情况

板卡连接电脑,打开STM32CubeProgrammer,选择ST-Link,连接
4.png
连接好后,正确识别到芯片了
5.png
点击左侧的REG图标,Device选择STM32U5XX,Search内输入FLASH,回车
在NSSR中有两个参数“OEM1LOCK”、“OEM2LOCK”。当值为0时表示未设置秘钥,1为设置了秘钥

我手上的芯片是全新的,所以这两个参数都是0,未设置。
6.png

2.2设置OEM秘钥

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

先看一下RDP等级
9.png
是0级,可以设置OEM秘钥1和2
设置秘钥,需要注意的是,秘钥不能全为0或1。

在Password框内输入想设置的秘钥,我这边设置的是0x11223344,0x55667788。设置的时候注意0x和密码长度,我输入了一下发现这个框没有做限制,可以随意输入,不知道点击设置后会不会有错误提示,因为我手上只有一块板子,不敢乱设,就不尝试了
10.png
点击set password后会有一个提示框
11.png
我们点击第一个Apply Lock RDP1

设置完成
12.png
检查一下标志位,变成1了,OEM1秘钥就设置完成了。OEM2秘钥设置类似,就不展示了
13.png

2.3从等级1降级至等级0

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

2.4移除秘钥

如果想要移除秘钥可以在保护0时点击Disablepassword
21.png
点击apply
22.png
移除成功
23.png
检查一下标志位,变成0了
24.png

2.5从等级2降至等级1
我们在等级0时先设置好OEM1、OEM2秘钥,这里就不再赘述步骤了

秘钥设置如图所示
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,步骤我就不赘述了,和之前的一样

已经降至0了
35.png

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



收藏 评论1 发布时间:2023-2-13 20:48

举报

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