LAT1273
LAT1273 - Rev 1.0 page 2/15
MPU 配合实现密钥的安全存储,同时在安全升级过程中涉及到一些密钥的加解密操作,借助于
Secure User Memory 和 MPU 的功能, 将 App 与 SBSFU 本身实现完美隔离。
Figure 2 STM32G0 内存安全映射(运行 SBSFU 时)
回到当前问题,一旦 BOOT_LOCK,PCROP,以及 Secure User Memory 缺少的情况下,
这些功能还能实现吗?
我们再来看下对于安全启动而言, 它需要实现哪些基本功能?
1> 不可更改不可绕过的一段启动代码
2> 每次复位必先执行安全启动代码
3> 验证系统配置的完整性
• 时钟配置
• 寄存器配置
• 存储器保护设置, ….
4> 启动信任根服务
• 通过密码学算法与密钥,校验 App 的完整性与合法性(来源可信,未经篡改)
这里需要注意地是,上面提到的某一项安全属性也只是参与实现某一项功能,比如
BOOT_LOCK,它只是”参与”实现了唯一启动入口这个功能。从图 1 可知, 除了
BOOT_LOCK,还有 RDP,那么在缺少 BOOT_LOCK 的情况下,RDP 是否也可以实现唯一入
口启动的功能。很明显,在 RDP2 时,MCU 的入口是唯一的。也就是说,没有 BOOT_LOCK
的参与下,RDP2 一样可以实现安全启动对唯一入口启动的需求。RDP2+WRP 就可以实现安
全启动的前两条基本要求。而第三条基本要求,完全是 SBSFU 内的纯软件实现。第四条要
求,通过 RDP2+WRP+MPU 也可以实现。其实, 在缺少了 PCROP,BOOT_LOCK 和
Secure User Memory 后,STM32G070 的安全特性其实跟 STM32F4 差不多,我们不妨来看下
STM32F4 是如何来实现 SBSFU 功能的。