Secure Boot主要是确保芯片上运行的是可信代码,而不是被人篡改过的代码。如果验签通过,说明该程序可信,可以执行该程序。如果验签失败,说明该程序不可信,不允许执行该程序。
Secure Boot的目的:
数字签名技术基于非对称算法。非对称算法将密钥分为公钥(publickey)和私钥(privatekey)两种。发送方使用私钥把信息(image)的数字摘要(hash值)加密,此密文被称为签名,附着在信息后面。接收方使用公钥解密,得到解密后的hash值,并且重新计算信息(image)的hash值,然后将重新计算出的hash值与解密出的hash值进行比较,若两者一致,表明验签通过,否则验签失败。
打开luatools,点击项目管理测试。

勾选关键签名,输入用户名和密码,点击创建签名密钥文件,若已有key.db文件创建签名密钥文件不用操作。


注:用户名不可超过49个ASCII码,密码需要8位ASCII码。生成的公私钥对以加密的方式保存到key.db文件,这个文件包含有敏感信息,因此不能泄露,不能丢失。即使输入参数相同,每次产生的公私钥对都是不一样的,产生的key.db是不同的。没有办法产生公钥相同的公私钥对。在实际的产品中,生成的公钥(public key)会烧写到终端的EFUSE中。
点击选择签名密钥文件,选择刚刚创建的密钥文件。

点击下载底层和脚本将已签名的pac烧录进模块中。
使用串口工具发送AT指令ATSECUREBOOT使能secure boot,此过程不可逆,使能前模块中必须已烧录签名后的pac否则模块会变砖,发送ATSECUREBOOT?可查询使能状态。
使能后模块只能烧录相同公钥的pac,其他pac会烧录失败,线刷与fota升级同样适用。
luatools工具:Luatools_v2_x86.exe
操作视频:meeting_02.mp4