Z-Wave 700#固件Secure Boot+数字签名方案

Z-Wave 700#固件Secure Boot+数字签名方案

参考芯科的相关文档:
UG162: Simplicity Commander Reference Guide

第一步: 生成支持secure boot的bootloader。

第二步:生成数字签名和密钥。

生成签名:

commander.exe gbl keygen –type ecc-p256 -0 vendor_sign.key

生成3个文件

vendor_sign.key //私钥

vendor_sign.key.pub //公钥

vendor_sign.key-tokens.txt //公钥的token形式

 

生成加密密钥:

commander.exe gbl keygen --type aes-ccm -o vendor_encrypt.key

生成1个文件

vendor_encrypt.key //加密密钥

第三步:签名Bootloader文件。

commander convert bootloader.s37 --secureboot --keyfile vendor_sign.key --outfile bootloader-signed.s37

 

第四步:签名应用程序文件。

commander convert app.s37 --secureboot --keyfile vendor_sign.key --outfile app-signed.s37

 

第五步:生成签名加密OTA文件。

commander gbl create app_signed.gbl --app app.hex --sign vendor_sign.key --encrypt  vendor_encrypt.key  --compress lz4

第六步:生成烧录文件。

合并bootloader和应用程序:

commander.exe convert --d ZGM130S037HGN1 bootloader-signed.s37 app-signed.s37 -o app_bootloader_signed.s37

 

合并KEY和签名:

commander.exe convert app_bootloader_signed.s37 --tokengroup znet --tokenfile vendor_encrypt.key --tokenfile vendor_sign.key-tokens.txt --device ZGM130S037HGN1 --outfile app_bootloader_signed_key.s37

第七步:烧录验证。

1. 烧录s37,运行正常,可以烧录不带签名的app.s37验证secureboot里否正常,如果不能正常启动,表示secureboot功能已经有作用。

2. OTA带签名的ota文件app_signed.gbl,和一个错误签名的ota文件验证ota的校验功能是否正常。