加密烧录
加密烧录流程为:
Flash 下载工具将明文固件烧录进芯片
芯片使用 eFuse 中的密钥对该明文固件进行加密,然后将加密后的固件写入 flash。
若 eFuse 中无 flash 加密密钥,下载工具会自动在 PC 端随机生成密钥并烧录进 eFuse,客户也可以自行准备加密密钥;若 eFuse 中已有 flash 加密密钥,则跳过密钥的生成及密钥烧录过程。
以下为配置加密功能的步骤:
打开配置文件 ./configure/[chip_name]/security.conf,若首次打开时无此文件,可关闭软件后再次打开即可
修改相关配置项
以下为配置项的说明,其中等号后面的内容为配置项的默认值,True 表示使能,False 表示不使能。
[SECURE BOOT] 此配置项为开启 secure boot 时需要配置
secure_boot_en = False (配置是否使能 secure boot)
public_key_digest_path = .securepublic_key_digest.bin (公钥摘要文件路径,生成方式: espsecure digest_sbv2_public_key -k pem.pem -o public_key_digest.bin; .pem 文件是编译时指定的私钥文件)
public_key_digest_block_index = 0 (eFuse 中存储公钥摘要文件的 block 索引,默认 0)
[FLASH ENCRYPTION] 此配置项为开启 flash 加密时需要配置
flash_encryption_en = False (配置是否开启 flash 加密功能)
reserved_burn_times = 3 (配置预留烧录次数)
[SECURE OTHER CONFIG] 其他安全配置项:
flash_encryption_use_customer_key_enable = False (配置是否使能客户指定的加密密钥)
flash_encryption_use_customer_key_path = .secureflash_encrypt_key.bin (若使用客户指定的密钥,这里需要指定密钥路径)
flash_force_write_enable = False (配置烧录时是否跳过加密和安全启动检查。此时若对已经开启 flash 加密或安全启动的产品烧录时会弹窗报错)
[FLASH ENCRYPTION KEYS LOCAL SAVE] 此配置为是否将加密用的密钥文件保存在本地,默认为 False
keys_save_enable = False (配置是否保存密钥)
encrypt_keys_enable = False (配置是否对保存在本地的密钥加密)
encrypt_keys_aeskey_path = (若对本地保存的密钥加密,请在此处填入密钥文件,比如 ./my_aeskey.bin)
[ESP32* EFUSE BIT CONFIG] 此配置为开启 flash 加密时,是否配置加密项,默认为 False。
运行工具时会提示如下内容,需核对是否正确。下图为同时开启 flash 加密和安全启动的提示信息:
以 ESP32 示例开启 flash 加密和安全启动提示信息
固件烧录过程中,会向芯片的 eFuse 中烧录密钥等信息。待固件及 eFuse 烧录完成后,显示 FINISH/完成。
备注
为防止已加密的模组重烧,工具烧录前会默认校验 eFuse flash 加密及安全启动信息,防止报废。