1. 引言
通常芯片在其整个生命周期中跟随产品的开发生产可能经历如下几个不同阶段 :
在不同的生命周期阶段需要对芯片资源有不同的访问权限,例如芯片出厂时要开放所有资
源供 OEM 进行开发,工厂生产烧录代码和数据后需要关闭某些资源的访问,确保代码与数据的
安全性,设备回厂返修时需要再次允许某些资源的访问等等。
STM32MCU 的硬件中能够用来进行芯片生命周期管理的最常见的特性就是 RDP(Read
Out Protection)读保护功能。通常 RDP 具有三个级别:
• Level0:完全开放,这是芯片出厂的缺省状态
• Level1:调试端口可以连接,但无法通过调试端口访问内部 Flash,部分 SRAM 以及
其它一些资源, OptionByte 可以修改。 Level1 可以降级回 Level0,但会伴随全片擦
除。
• Level2:调试端口永久关闭,进入这种状态后调试端口完全无法访问,且这种状态无
法逆转。
在 RDP Level1 调试端口依旧可以连接,虽然不能直接读取内部 Flash 的代码和数据,但
是可以看到大部分 SRAM 的内容,并且 RDP Level1 允许随意回退到 Level0,并伴随全片擦
除。因而从安全角度讲 Level1 这个级别的安全性不够高,因而通常对于调试端口保护我们会推
荐使用 RDP Level2,但是 OEM 可能往往不会选择使用这个级别,原因有多方面,其中一部分的
顾虑可能来自两方面,一个是 Level2 级别下 OptionByte 无法进行修改,另一个是设置到 Level2
级别会影响芯片失效分析。
STM32L5 在 RDP 功能上带来一些改变,首先针对 TrustZone 架构,增加了 Level0.5,
• Level0.5:调试端口可以连接,但是安全测的所有调试功能都被禁止,非安全测的调
试功能依旧可以使用,因此在 RDP Level0.5 可以访问被定义为 NonSecure 的部分资
源,包括片上 Flash, SRAM,部分 CPU 寄存器以及系统外设等
另外, STM32L5 的 RDP Level2 不影响 FA,但 OEM 依旧无法在这种状态下进行
RDP 降级或者 OptionByte 修改,依旧有一些局限性。
|
|