查看: 600|回复: 0

[原创] LPC55sxx:验证调试-借助MCUXpresso安全工具

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
19947
最后登录
2024-4-19
发表于 2023-4-19 13:44:47 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2023-4-19 14:24 编辑

关于验证调试(Debug Authentication),在之前文章LPC55sxx验证调试(Debug Authentication)经验分享中,使用的是命令行的方式,本文借助MCUXpresso Secure Provisioning Tool 完成。

准备工作:
硬件:lpc55s66

具体步骤如下:
1,新建工作空间
打开SEC, 新建一个工作空间,选择处理器,选择芯片连接接口,开发周期选择Development,启动模式Boot选择“Signed”(因为需要配置CMPA,CFPA,所以此处需要选择Signed启动方式。然而选择此方式就意味着使能了secure boot功能,如果不需要使能secure boot功能, 后续配置CMPA,CFPA时,关闭即可。)。
1.png 2.png

2,生成密钥
选择“PKImanagement”界面。
点击“Generatekeys…”按钮生成4对密钥,配置密钥类型和长度。(实际开发中,这个密钥就是OEM生成并使用的。)
3.png

3,生成配置文件CMPA和CFPA
打开“Build image”界面,添加应用工程的二进制文件,填写启动地址,选择密钥,生成SBKEK,最后编译。
4.png

确定成功编译后,在工作空间文件夹gen_sb下可以找到cfpa.bin 和cmpa_non_sealed.bin。注意:此处不建议使用cmpa_sealed.bin,因为这个将锁死芯片的配置,不可逆的,开发阶段使用non_sealed.令,因为步骤1周开发周期选择的Development, 所以SEC默认也会使用。cmpa_non_sealed.bin

4,使能验证调试。
配置芯片的CMPA和CFPA,使能调试验证,并将四对密钥中公钥的哈希值写入CMPA中。
此处,我们需要手动修改CMPA和CFPA。

4.1,配置cmpa.bin
打开cmpa_non_sealed,参考lpc55s66用户手册以及附件中的excel表格,配置cmpa。
主要配置CC_SOCU_PIN和CC_SOCU_DFLT,详细介绍可以参考芯片用户手册,或者AN13037
PIN/DFLT bit field settings:
• 1/1 - debug access always enabled(pinned)
• 1/0 - debug access always disabled(pinned)
•0/0 - debug access enabled using debugauthentication

所以,使能debug authentication,需要配置CC_SOCU_PIN和CC_SOCU_DFLT每位(bits0:15)为0, bit 16:31取反。所以,配置0x9e410 -0x9e413 为 00 00 FF FF
,配置0x9e414 -0x9e417 为 00 00 FF FF

更改如下:
5.png

此文章不使能安全启动(secure boot),所以SEC_BOOT_EN选择plain image (00), SKIP_DICE配置为00. (具体位置可以参考用户手册中附件Projected Flash Region 表格)。

更改如下:
6.png

4.2 配置cfpa.bin
打开cfpa.bin,增加版本号,可以提前进入ISP模式,读取版本号,如果时02,那么设置为大于等于03即可。本文设置为03:
7.png

根据芯片用户手册,VENDOR_USAGE,DCFG_CC_SOCU_NS_PIN,DCFG_CC_SOCU_NS_DFLT, 这三部分的高16位根据低16的取反,所以配置如下:
8.png

修改完成后,保存。

4.3烧写CMPA/CFPA
使芯片进入ISP 模式,SEC 支持USB, UART,SPI已经I2C,此文章使用UART。
建立连接:Target->Connections…->configureUART port and Baud rate, then click “Test connection” button:
9.png

Result 显示0K,说明连接成功,点击OK。

打开“Write image”界面,点击“Write image”,烧写cmpa和cfpa.
10.png
至此,(OEM)使能了验证调试。

5.调试申请
返回“PKI management”界面,点击“Generate debug key…”生成调试密钥,长度和类型需要和OEM生成的密钥一致。
11.png

生成调试申请证书:
点击“Create debugcertificate request…”, “Debugpublic key”选择上一步生成的调试密钥的公钥,UUID 全零代表可以调试所有此型号的芯片,根据客户实际需求也可以配置位某一块芯片的UUID。
12.png

选择证书存放路径,此文选择默认路径。

6. 生成调试证书
此步骤实际中由OEM完成。
点击“Generate debugcertificate…”, 证书申请选项选择上一步生成的申请,”Sign with ROT key” 选择四对密钥中某一个私钥,选择生成证书的路径:
13.png
点击OK,证书生成。

7. 调试
点击“Open debugport…”, “Debug certificate”选择步骤6中生成的证书,”Debug private key”选择调试密钥的私钥,“Probe”选择调试接口,点击OK。
14.png
成功后,就可以用调试器正常调试。

小结:
本文介绍了借助MCUXpressoSecure Provisioning 工具实现验证调试,配置使能了验证调试功能后,强烈不建议恢复默认(关闭验证调试),很有可能芯片锁死,无法进入ISP模式。


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-20 11:46 , Processed in 0.121359 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表