小猫爪:i.MX RT1050学习笔记21-安全启动5-实现BEE单引擎OTPMK加密

1 前言

已经介绍了RT的HAB加密,下面我们来实现RT的BEE加密,之前已经介绍过,BEE加密是支持XIP的,还分别单引擎加密和双引擎加密。而且BEE加密可以单独使用,也可以与HAB签名一起使用。BEE加密的秘钥可以使用FUSE中的SW_GP2,也可以使用OTPMK来加密,如果使用OTPMK进行加密,则必须配合HAB签名,因为只有当HAB签名开启的时候,DCP和BEE才能取到OTPMK。

2 准备工作

2.1 下载Flashloader

下载网址:<<Flashloader_i.MX RT1050>>

下载下来解压后,如下图:
在这里插入图片描述
并在Tools文件夹下新建一个文件夹cst备用,如下图:
在这里插入图片描述

2.2 下载CST

下载网址:<<i.MX High Assurance Boot Reference Code Signing Tool>>

下载后,将其解压后,然后将解压的文件全部放入之前的新建文件夹cst中,如下图:
在这里插入图片描述

2.3 安装OpenSSL

在网站https://slproweb.com/products/Win32OpenSSL.html下载openssl的windows安装包,这里我选择是Win64 OpenSSL v1.1.1h Light,如下图:
在这里插入图片描述
下载后,点击安装,然后记住安装路径,接下来将OpenSSL的路径添加至windows环境变量路径,首先右击我的电脑,选择属性,选择改变设置,选择高级,选择环境变量,选择Path,选择编辑,选择新建,添加OpenSSL的安装路径下的bin,比如我添加的路径就是:C:\Program Files\OpenSSL-Win64\bin;最后点击确定。具体示范如下图:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201118163047183.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L091c2h1d2Vu,size_16,color_FFFFFF,t_70#pic_center

3 实战操作1-OTPMK BEE加密+HAB签名

因为我的板子已经启用了HAB加密,所以现在只能使用加密+签名的方式,所以接下来将介绍采用OTPMK进行XIP加密+HAB签名的方式进行安全启动。

3.1 生成公钥和公钥摘要

具体操作见文章《小猫爪:i.MX RT1050学习笔记19-安全启动3-HAB签名》同名章节。

3.2 生成公钥sb文件

具体操作见文章《小猫爪:i.MX RT1050学习笔记19-安全启动3-HAB签名》同名章节。

3.3 生成具有HAB签名的Flashloader镜像

具体操作见文章《小猫爪:i.MX RT1050学习笔记19-安全启动3-HAB签名》同名章节。

3.4 生成具有HAB签名的镜像sb文件

这一步则是给APP镜像增加CSF部分,也就是增加签名。

在\Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\elftosb\win下新建文件夹app。并将待签名的APP镜像拷贝至app文件夹中(该镜像未加头信息),如下图:
在这里插入图片描述找到Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.2\Tools\bd_file\imx10xx\imx-flexspinor-normal-signed.bd文件,将其复制至之前创建的bd_file文件夹,并修改其中entryPointAddress的参数(因为我的APP链接地址在nor中,所以我使用的是imx-flexspinor-normal-signed.bd文件,大家因根据实际情况修改bd文件,具体操作可参考文章:《小猫爪:i.MX RT1050学习笔记18-安全启动2-elftosb和MfgTool的使用》);

elftosb -f imx -V -c bd_file/imx-flexspinor-normal-signed.bd -o app/ivt_signed_boot_app.bin app/iled_blinky.s19

这样就会在app文件夹下生成带有签名的且还有头信息的镜像文件。如下图:
在这里插入图片描述拷贝Flashloader_RT1050_1.1\Tools\bd_file\imx10xx\program_flexspinor_image_hyperflash.bd文件至\Flashloader_RT1050_1.1\Tools\elftosb\win\bd_file文件夹中(因为我使用的板子上的flash是hyperflash,所以我选择的bd文件是program_flexspinor_image_hyperflash.bd,大家需根据实际情况自己选择),打开编辑最后一句:

load fuse 0x00002000 > 0x06;
/*因为我们采取的是单引擎BEE加密,所以我们只需要修改FUSE中
的BEE_KEY0_SEL就行,修改其的加密私钥为OTPMK*/

输入以下命令生成sb文件(这一步主要是给镜像添加EKB和PRDB信息,还有为Flashloader下达脚本运行,使Flashloader完成对镜像的加密工作,并下载镜像至FLASH中,默认使用BEE引擎0作为加密引擎):

elftosb -f kinetis -V -c bd_file/program_flexspinor_image_hyperflash_encrypt.bd -o app/boot_image.sb app/ivt_signed_boot_app_nopadding.bin

操作结果如下图:
在这里插入图片描述
在app文件夹下生成的boot_image.sb就是我们需要烧写的启动文件,里面包含了启动配置以及镜像,留着备用。

3.5 烧写文件

注意:FUSE一旦烧写,将无法改变,烧写一定要慎重,烧写完私钥文件一定要保存好。)

①将之前生成的具有签名的flashloader镜像,公钥摘要的sb文件以及具有签名的镜像sb文件拷贝至文件夹***\Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\mfgtools-rel\Profiles\MXRT105X\OS Firmware中,如下图:
在这里插入图片描述
②编辑文件Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\mfgtools-rel\cfg.ini,修改其中的name值,如下:

.........
.........

[LIST]

name = MXRT105X-SecureBoot

③使BOOT_CFG=0x01,进入Serial Download模式,然后连接PC与芯片。

④进入文件夹***\Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\mfgtools-rel下,双击打开MfgTool2.exe。
在这里插入图片描述
点击Start下载。
在这里插入图片描述
点击Stop按钮,这样程序就下载完成了,切换RT1050使其从FLASH启动,并且还需要使BOOT_CFG[1] = 1激活XIP加密启动。

使用NXP MCUBootUtility工具读取FLASH中的内容,如下:
在这里插入图片描述
可以看到在偏移0x400处出现了EKIB0,在偏移0x400出现了PRDB0。

因为FUSE的某一位只能被烧写一次,对于用户自定义key加密的方式在这里我就不一一赘述了,后面有机会再和大家分享,谢谢。

推荐大家使用NXP MCUBootUtility这个软件,可以一键实现上面所有的步骤,不要太爽哦。下载链接为https://github.com/JayHeng/NXP-MCUBootUtility

END

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
对于S32K3系列的I2C配置,可以参考S32K3的官方示例和使用文档。在S32K3系列中,I2C是一种常用的串行通信协议,常用于连接微控制器和外部设备,如传感器和存储器等。通过I2C总线,可以实现多个设备之间的通信。 你可以先了解S32K3系列的特点和资源,然后深入学习各个外设模块的使用,包括I2C。可以查阅S32K3系列的官方文档和示例,这些资料可以帮助你了解I2C在S32K3系列中的配置和使用方法。可以参考S32 Design Studio开发环境的使用文档,了解如何在该开发环境中进行I2C的配置和编程。 此外,还可以参考S32K3系列的MCAL配置示例,特别是与I2C相关的示例,以便更好地理解I2C的配置和使用。通过努力学习I2C的相关知识和S32K3系列的MCAL配置示例,你可以掌握S32K3系列的I2C配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【S32K 学习笔记】S32K3介绍](https://blog.csdn.net/weixin_44712171/article/details/124190407)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [小猫爪:S32K3学习笔记02-S32K3之FlexCAN](https://blog.csdn.net/Oushuwen/article/details/120311785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猫爪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值