请选择 进入手机版 | 继续访问电脑版

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

《STM32MPU安全启动》学习笔记之optee 如何加载CORTEX-M核和使能校验

[复制链接]
星海灿烂 发布时间:2024-11-29 16:28

正常情况下,CORTEX-M可以由linux、Uboot加载。但是使能authentication,只能由optee加载,因为内存是受保护。对于用户来讲,固件的加载是没有什么不同。唯一的不同就是需要验证签名。 1、CM核加载原理 如图

image.png

详细描述如下: 1)签名 使用OPTEE的签名脚本对M核固件进行签名生成如上图中结构; 2)下位机校验流程 ① STM32MPU的linux系统会将M核镜像加载到DDR中 ② 调用OPTEE来加载和校验M核;在这个过程中,对HEADER、TLV、签名做校验,通过后就会加载M核的ELF段到对应的RAM中。

2、M核如何签名

image.png

详细描述如下: 1)使用STM32CubeIDE编译M核固件 2)使用密钥产生工具产生密钥对 3)利用上面产生的私钥,使用签名脚本将M核固件进行签名,并生成HASH表 4)将产生的公钥编译进OPTEE SDK中。便于后续校验 3、OPTEE TA如何校验M核 如图

image.png

image.png

详细描述: 1、linux复制文件系统中的M核到DDR中;接着调用optee完成M核的加载、校验、启动M核; 2、在TA这部分中,会复制M核HEADER中的信息复制到安全DDR中; 3、在OPTEE TA中会计算M核HEADER的HASH,并验证签名(之前私钥给的签名),校验通过,将会进入下一步加载ELF的阶段; 4、加载ELF段之前就校验ELF的每个段,使用TLV的HASH与每个段计算的HASH比对,比对通过就会进行加载和执行; 5、将NS DDR中ELF复制到目标RAM地址上;访问只支持安全访问; 6、所有的段被复制和被校验后,FW就会被执行。

4、optee如何加载M核

image.png

第一步,在A核运行linux之后,linux会通过reomteproc机制把M核固件从文件系统加载到non-secure DDR中; 第二步,linux通过optee 的驱动把OPTEE 的TA调起来,然后去加载M核 第三步,加载过程中,先通过内核空间的remoteproc的PTA调用driver来完成加载M核前的memory保护、加解密、RIF、etc等保护配置, 然后去做相关的后续校验和加载 第四步,加载完成后,把M核调起来;

注意: APP的TA校验,数据复制和加载的整个过程,memory(M核执行代码的RAM区)是受保护的,不能直接被non-secured A核代码访问。 如,linux的内核不能把数据写入M核的RAM中,因为此时是受到OPTEE的proc TA的保护的。默认是只有A核的secure方式才可以访问。 在15上,这个管理机制主要是通过ETZPC隔离机制。和25也是保护配置不太一样。

5、如何使能校验M核

1)产生M核密钥对;

2)设置OPTEE TA的系统remoteproc机制,比如如下配置

Op-tee config, kernel config, u-boot config (optional), device tree config;

3)调整和产生M核固件

4)签名

5)启动带校验的M核

收藏 评论0 发布时间:2024-11-29 16:28

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版