一直都很关注ST的MP系列mpu处理器,可以像学习mcu一样学习mpu处理器了,对学习linux更方便了。今年 ST又发布STM32MP2系列了。但是对于MPU系列软件如何保护一直很疑惑。这次论坛组织学习STM32MP系列安全启动课程正好可以好好了解下。 首先看到这个课程主要学习内容如下: 整个课程一步步在讲解如何实现STM32MPU的安全启动远离,实现过程及方法。 通过MPU安全启动,我们可以确保设备上执行的软件是经过验证的、可信任的;这是通过验证每个软件组件的完整性,防止任何未授权的修改;以及建立整个系统的安全基础 — 根信任(Root of Trust);支持多级安全验证,确保从引导加载程序到操作系统内核及应用程序的每一层都经过验证,建立信任链(Chain of Trust),使整个系统的安全性得以保障并应对复杂的安全威胁,为各种应用场景提供一个安全的运行环境。从这个可以看出安全启动可以保护我们开发的产品软件。 课程中讲述了安全启动的一个流程:MPU系统复位后首先从信任根启动,信任根代码不可变也不能被跳过。它会验证安全配置和校验下一级启动代码,只有下一级代码是我们信任的密钥才会跳到下一级启动。如此从根源上杜绝非信任代码运行。 本次就谈谈最后一步uboot校验kernel内核启动过程的流程。在STM32MPU安全启动课程的第五部分,即是U-Boot校验kernel的。U-Boot在加载Kernel时通过使用Fit Image镜像进行校验。Fit Image是一种描述镜像内内容的树状结构,包含多个节点,如Kernel镜像、Device Tree等。每个节点可以包含哈希值,并且可以添加签名进行校验。通过这种方式U-Boot在加载过程中可以对Kernel进行完整的校验,确保其完整性和安全性。在上位机生成Fit Image时,可以使用make image工具,通过指定配置信息和密钥来生成带签名的Fit Image。 课程重点讲解了uboot校验kernel的使能过程。首先需要对uboot的CONFIG进行修改,确保校验功能已启用。接着生成签名校验所需的密钥,并在上位机上使用工具生成RSA密钥对。随后编辑.its文件,指定生成fitimage所需的kernel、device tree等组件。最后使用make image工具生成带签名的fit image。整个过程都强调了安全性。建议禁用其他可能的kernel启动方式,确保uboot只能启动带签名的fit image. 上位机上使用openssl工具生成RSA密钥对方法。 下面就是.its文件配置内容: 接着是生成fit image命令。 STM32MPU安全启动课程总结:课程分为六个部分,分别介绍了安全启动的概念、boot chain、安全启动bootrom的校验原理、chain of trust中的TF-A-BL2如何校验加载启动OPT和u-boot、双核或多核产品的固件加载方式以及从u-boot到kernel的启动过程。课程还详细讲解了不同系列芯片在安全启动中的功能差异和密钥管理。最后,课程总结了在不同启动阶段密钥的存放位置和校验方式,强调了OTP中密钥的不可更改性和密钥的可更新性。 不同阶段校验方式不同,部分密钥存于OTP,部分加在device tree或image中,理清各个部分关系就可以知道如何修改或升级各个部分的校验。特别是OTP部分,OTP只能写一次,写后不可更改,锁定后0变1就不可回0。烧写密钥后会锁定,避免OTP内容变化。写到OTP的根密钥等重要数据,务必妥善保管,后续image签名加密都需要。 |
点个赞,总结的不错 |
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【STM32MPU 安全启动】 TF-A BL2 TrustedBoot原理学习
《STM32MPU安全启动》学**结
《STM32MPU安全启动》学习笔记之optee 如何加载CORTEX-M核和使能校验
《STM32MPU安全启动》学习笔记之TF-A BL2校验optee和uboot的流程以及如何使能
《STM32MPU 安全启动》课程学习心得+开启一扇通往嵌入式系统安全领域深处的大门。
《STM32MPU安全启动》学习笔记
《STM32MPU安全启动》学习笔记+STM32MP系列mpu安全启动解析
《STM32MPU安全启动》学习笔记 - STM32MPU安全启动学**结
《STM32MPU安全启动》学习笔记总结