本文档旨在介绍如何在MCXN947微控制器上配置安全启动和生命周期,以确保产品在量产阶段的安全性,防止代码被窃取和篡改,并且能够安全地升级更新固件。通过本应用笔记,开发者可以更好地理解和实施安全启动和固件更新的最佳实践。
实施简介
1.1安全固件 (Secure Binary) 简介
安全启动(Secure Binary, SB) 提供了一种安全且便捷的方法,用于在制造过程或最终用户设备生命周期中烧录或更新嵌入式设备的固件。SB文件是一种基于命令的固件更新镜像。SB文件可以被视为一种脚本(命令和数据),ROM是其解释器。ROM支持 3.1版的SB镜像格式。
SB3.1使用最新的加密算法来确保所携带固件的真实性和机密性。启动时间和安全级别根据所需用例的最佳匹配来控制多种可用的安全配置。基于椭圆曲线密码学 (ECC) 的数字签名确保了SB3.1容器的真实性。使用高级加密标准 (AES) 的密码块链接 (CBC) 模式确保了SB3.1容器的机密性。
1.2 生命周期 (Lifecycle) 简介
芯片生命周期状态用于反映芯片的实际状态,进一步用于指导芯片在特定时间如何保护其所托管的资产。例如,当客户开发完项目、进入量产阶段,或在终端客户使用时,芯片的访问权限比在开发阶段要少得多。
MCXN947微控制器支持多种安全生命周期状态,详细信息请参阅《MCX Nx4x安全参考手册》中的“生命周期状态”章节。注意,生命周期状态是单调递增的,这意味着它只能不断增加,访问权限只能更加严格。本文是针对现场模式(Infield)配置,确保设备在部署后的安全性。
1.3 MCUXpresso SEC工具简介
MCUXpresso安全配置(SEC)工具是一款基于GUI的应用程序,用于简化在恩智浦MCU上生成和配置可启动的可执行文件。该工具可用于生成SB3.1文件和部署MCU安全配置。
实施步骤
2.1 准备

2.2 步骤
2.2.1恢复MCU到默认配置
1). ISP模式链接MCU
按住 ISP键,POR上电启动。本文使用ISP-USB接口,因此使用USB线连接J11(HS-USB)端口。
2). 配置CMPA和CFPA为默认状态
打开SEC工具,新建一个工作空间,选择对应的芯片。配置如下:

SEC工具配置方法:



3). 烧写CMPA和CFPA
OK -> Build image, Write image,将配置好的默认的CMPA和CFPA烧写到MCU内。
4). 全片擦除Flash
USB连接板子的调试接口MCU-link。SEC工具选择debug probe。连接成功后,利用Erase全片擦除。

芯片恢复为默认状态,没有任何使能的安全配置。
2.2.2配置安全启动和生命周期为现场模式 (In-field)
1).生成配置安全启动的秘钥
选择PKI management界面 ->Generate Keys... ->Generate

2). 配置镜像文件
打开“Build image”界面,配置如下:
Boot: 选择 Encrypted (PRINCE/IPED) and signed
Source executable image: 选择应用镜像文件frdmmcxn947_led_blinky_green.s19
Start address: 0x00000000
Firmware version: 1
Authentication key: 4 选 1,任何一个都可以
CUST_MK_SK:点击 Random 随机数
OEM seed: 点击 Random 随机数

3). 配置CMPA和CFPA
打开CMPA和CFPA,配置使能安全


4). 生成配置文件和镜像文件
配置完成后,Build image生CMPA, CFPA配置文件及SB3格式的镜像文件。
2.2.3 烧录应用程序
1). 烧写配置文件和镜像文件
打开“Write image”窗口,点击“Write image”烧写配置文件及镜像SB文件。

2). 验证应用程
重新上电板子,可以看到绿灯闪烁,应用程序正常运行。
然后按住ISP按键同时PIN软件重启板子(注意此处必须是软件重启,CFPA生命周期配置才生效,如果是上电POR重启CFPA不生效。如果开发完毕生产阶段,用OTP管理生命周期,则可以忽略此处,任何重启都会检测OTP的配置。)。
此时,使能了安全启动和配置生命周期为现场模式。所以此时芯片不再支持SWD接口调试,也不支持通过ISP读取Flash内容。如果想更新Flash程序,只能通过烧写一个合格的SB3文件更新。
2.2.4 更新应用程序
1). 制作新的SB3文件
编译SDK例程 frdmmcxn947_led_blinky 生成.bin文件或 s19文件,具体SEC工具支持的所有格式可以查看SEC手册。
此处,使用S19文件格式 frdmmcxn947_led_blinky_red.s19。
打开 SEC工具,最好使用生成第一个应用镜像文件时的工作空间。因为这样会直接导入所需的秘钥。然后导入frdmmcxn947_led_blinky_red.s19。
Image firmware 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-file frdmmcxn947_led_blinky_red.sb
烧写完毕,重启MCU,开发板红灯闪烁说明更新固件成功。
2.2.5 验证安全特性
使能了安全启动和生命周期配置为现场模式后,MCU不能通过SWD和ISP读取 Flash,保证了客户代码的安全,不被盗取和更改。如果想测试是否配置成功,可以通过SWD和ISP接口测试。发现SWD接口无法连接,ISP可以连接,但不能读写。注意,测试前需要按住ISP同时软件PIN reset,并非重新上电。


注意事项
通过本文档,开发者可以了解如何在MCX N947微控制器上配置和管理安全生命周期,确保设备在不同阶段的安全性和可靠性。遵循本文档中的步骤,可以有效地实现安全启动和运行,以及升级固件。
作者:Alice Yang
全部0条评论
快来发表一下你的评论吧 !