本帖最后由 小恩GG 于 2024-11-19 17:19 编辑
MCUXN947 安全配置 (Secure Boot + Lifecycle) 1. 引言
本文档旨在介绍如何在 MCXN947 微控制器上配置安全启动和生命周期,以确保产品在量产阶段的安全性,防止代码被窃取和篡改,并且能够安全地升级更新固件。通过本应用笔记,开发者可以更好地理解和实施安全启动和固件更新的最佳实践。 本文包含主要包含实施简介、实施步骤和注意事项三部分。
2. 实施简介
2.1安全启动 (Secure Boot) 简介
安全启动(Secure Boot, SB) 提供了一种安全且便捷的方法,用于在制造过程或最终用户设备生命周期中上传或更新嵌入式设备的固件。SB 文件是一种基于命令的固件更新镜像。SB 文件可以被视为一种脚本(命令和数据),ROM 是其解释器。ROM 支持 3.1版的 SB 镜像格式。 SB3.1使用最新的加密算法来确保所携带固件的真实性和机密性。启动时间和安全级别根据所需用例的最佳匹配来控制多种可用的安全配置。基于椭圆曲线密码学 (ECC) 的数字签名确保了 SB3.1 容器的真实性。使用高级加密标准 (AES) 的密码块链接 (CBC) 模式确保了 SB3.1 容器的机密性。
2.2生命周期 (Lifecycle) 简介
芯片生命周期状态用于反映芯片的实际状态,进一步用于指导芯片在特定时间如何保护其所托管的资产。例如,当客户开发完项目、进入量产阶段,或在终端客户使用时,芯片的访问权限比在开发阶段要少得多。 MCXN947微控制器支持多种安全生命周期状态,详细信息请参阅《MCX Nx4x 安全参考手册》中的“生命周期状态”章节。注意,生命周期状态是单调递增的,这意味着它只能不断增加,访问权限只能更加严格。本文是针对现场模式(Infield)配置,确保设备在部署后的安全性。
2.3MCUXpresso 工具简介
MCUXpresso安全配置工具是一款基于 GUI 的应用程序,用于简化在恩智浦MCU 上生成和配置可启动的可执行文件。该工具可用于生成 SB3.1 文件和部署MCU 安全配置。
3. 实施步骤
3.1准备 软件 | MCUXpresso Secure Provisioning Tool v9.0 (SPT 工具) 两个镜像文件: frdmmcxn947_led_blinky_red.s19 frdmmcxn947_led_blinky_green.s19 blhost | 硬件 | FRDM-MCXN947 开发板 2根USB Type-C 数据线 电脑 |
3.2步骤
3.2.1恢复 MCU 到默认配置 1. ISP模式链接 MCU - 按住 ISP键,POR 上电启动。本文使用 ISP-USB 接口,因此使用 USB 线连接 J11(HS-USB)端口。
2. 配置 CMPA 和 CFPA 为默认状态 - 打开 SPT工具,新建一个工作空间,选择对应的芯片。配置如下:
3. 烧写 CMPA 和 CFPA - OK-> Build image, Write image,将配置好的默认的 CMPA 和 CFPA 烧写到 MCU 内。
4.全片擦除 Flash - USB 连接板子的调试接口 MCU-link。SPT 工具选择debug probe。连接成功后,利用 Erase 全片擦除。
3.2.2配置安全启动和生命周期为现场模式 (In-field) 1.生成配置安全启动的秘钥 - 选择 PKImanagement 界面 -> Generate Keys... -> Generate
2. 配置镜像文件 - Boot: 选择Encypted(PRINCE/IPED) and signed.
- “Sourceexcutable image”:选择应用镜像文件frdmmcxn947_led_blinky_green.s19.
- Start address:0x00000000
- Firmwareversion: 1
- Authentication key: 4选1, 任何一个都可以。
- CUST_MK_SK: 点击Random随机数,
- OEM seed: 点击Ramdom随机数
3. 配置 CMPA 和 CFPA
4.生成配置文件和镜像文件 - 配置完成后,Buildimage 生 CMPA, CFPA 配置文件及 SB3 格式的镜像文件。
3.2.3烧录应用程序 1.烧写配置文件和镜像文件 - 打开“Writeimage”窗口,点击“Write image”烧写配置文件及镜像 SB 文件。
2.验证应用程序 - 重新上电板子,可以看到绿灯闪烁,应用程序正常运行。
- 然后按住ISP 按键同时 PIN 软件重启板子(注意此处必须是软件重启,CFPA 生命周期配置才生效,如果是上电 POR 重启 CFPA 不生效。如果开发完毕生产阶段,用 OTP 管理生命周期,则可以忽略此处,任何重启都会检测 OTP 的配置。)。
- 此时,使能了安全启动和配置生命周期为现场模式。所以此时芯片不再支持 SWD 接口调试,也不支持通过 ISP 读取 Flash 内容。如果想更新 Flash 程序,只能通过烧写一个合格的 SB3 文件更新。
3.2.4更新应用程序 1.制作新的 SB3 文件 - 编译 SDK例程 frdmmcxn947_led_blinky 生成.bin 文件或 s19 文件,具体 SPT 工具支持的所有格式可以查看 SPT 手册。此处,使用 S19 文件格式 frdmmcxn947_led_blinky_red.s19。
- 打开 SPT工具,最好使用生成第一个应用镜像文件时的工作空间。因为这样会直接导入所需的秘钥。然后导入frdmmcxn947_led_blinky_red.s19。
- Imagefirmware version 大于 0 即可。因为我们没有配置 Set minimal firmware version,限定的最小版本号就是 0。此处涉及更新防回滚功能,将在以后具体详解介绍。
- 配置完成后,板子按住 ISP 同时上电重启。然后 Build image。则生成 frdmmcxn947_led_blinky_red.sb。
2. 烧写新的 SB3 文件 - 使用blhost receive-sb-file 命令烧写:
- blhost.exe -u 0x1fc9 0x014f receive-sb-filefrdmmcxn947_led_blinky_red.sb
复制代码
- 烧写完毕,重启 MCU,开发板红灯闪烁说明更新固件成功。
3.2.5验证安全特性
使能了安全启动和生命周期配置为现场模式后,MCU 不能通过 SWD 和 ISP 读取 Flash,保证了客户代码的安全,不被盗取和更改。如果想测试是否配置成功,可以通过SWD 和 ISP 接口测试。发现 SWD 接口无法连接,ISP 可以连接,但不能读写。注意,测试前需要按住 ISP 同时软件 PIN reset,并非重新上电。
4. 注意事项 通过本文档,开发者可以了解如何在 MCXN947 微控制器上配置和管理安全生命周期,确保设备在不同阶段的安全性和可靠性。遵循本文档中的步骤,可以有效地实现安全启动和运行,以及升级固件。
|