Basic: Firmware Encryption¶
1 功能概述¶
本例程演示芯片通过固件加密、硬件解密的机制保护 Flash 关键代码的方法。
警告
本功能需要通过 PanLink 工具烧录芯片 eFuse 的特定地址,eFuse 的物理特性是同一地址只可烧录一次,无法还原,因此当某颗芯片使能加密功能后,其将只能正常运行加密后的固件,无法再正常运行普通的明文固件!
2 环境要求¶
Board: pan108xxa1_evb / pan108xxa3_evb / pan108xxb1_evb / pan108xxb5_evb
3 编译和烧录¶
例程位置:zephyr\samples_panchip\basic\fw_encryption
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
4 演示说明¶
将例程编译后烧录至未开启加密功能的 EVB 核心板芯片中,成功后可看到如下的串口打印 Log:
Try to load HW calibration data.. DONE. - Chip Type : 0x83 - Chip MP Version : 0x0 - Chip CP Version : None - Chip FT Version : 8 - Chip MAC Address : D0000C091094 - Chip Flash UID : 6617030C038F91036617030C038F9103 - Chip Flash Size : 512 KB *** Booting Zephyr OS build zephyr-v2.7.0 *** Hello World! pan108xxb5_evb is_fw_encryption_enabled = 0
从上述 Log 可以看出程序初始化成功,且 App 获取到当前芯片加密功能是未开启(
is_fw_encryption_enabled = 0
)状态,但并未打印例程后续相关 Log,原因是程序在执行到加密区域内容的时候,由于当前芯片没有使能加解密功能,但当前烧录的例程固件已经加密,因此程序执行到加密函数的时候会出错(Hardfault),导致后续程序执行异常。使用量产烧录工具 PANLINK,向芯片 eFuse 写入加密 AES Key、加密 Flash Offset,并开启芯片加密功能(具体方法请参考 Firmware Encryption 开发指南 文档中的 使用 PANLINK 制作加密芯片 小节中的介绍)。
开启芯片加密功能后,重新执行当前例程程序,可以看到串口打印 Log 发生了变化:
Try to load HW calibration data.. DONE. - Chip Type : 0x83 - Chip MP Version : 0x0 - Chip CP Version : None - Chip FT Version : 8 - Chip MAC Address : D0000C091094 - Chip Flash UID : 6617030C038F91036617030C038F9103 - Chip Flash Size : 512 KB *** Booting Zephyr OS build zephyr-v2.7.0 *** Hello World! pan108xxb5_evb is_fw_encryption_enabled = 1 Hello from encrypted_test_function! Secret calcucation result: 0x4b052201
从上述 Log 可以看出,App 获取到当前芯片加密功能是已开启(
is_fw_encryption_enabled = 1
)状态,且成功执行了后续 Flash 加密区域中的代码。
5 开发说明¶
Firmware Encryption 是一个需要软硬件配合的机制,在编译固件的时候对固件中的特定区域进行加密,然后在程序执行的时候由硬件自动对加密的固件区域进行解密,因此:
在编译固件的时候,需要在 SDK 中开启加密相关的 Config,并配置 AES 加密秘钥和固件加密的位置
在烧录程序的时候,需要通过 PANLINK 烧录芯片 eFuse 中的相关区域以使能固件解密功能并配置秘钥和加密区域位置
关于 Firmware Enccryption 更详细的说明请参考 Firmware Encryption 开发指南 文档。
6 RAM/Flash资源使用情况¶
Memory region Used Size Region Size %age Used
FLASH: 15372 B 384 KB 3.91%
SRAM: 4128 B 64 KB 6.30%