.. _secure_boot_user_guide: 上位机操作流程 ======================== 上位机界面 --------------- 上位机通过UART串口连接设备,可以将编译应用程序生成的固件配置密钥、验签和Secure Boot等配置后进行一键打包并生成eFuse Program配置文件,同时支持自动生成打包配置文件,在DFU界面将打包后的可执行二进制文件和eFuse Program配置文件烧写到设备。上位机还支持自动打包与下载、保存默认配置参数、恢复打包参数、配置Secure Boot、配置Flash打包头等功能。 |upper_main| 界面各区域功能介绍: 1. 标记1:菜单栏,可选择生成打包配置文件、Download配置文件以及查看上位机版本信息等功能。 2. 标记2:连接 Uart 串口,配置串口的各个参数。 3. 标记3:DFU 以及 eFuse Program。 4. 标记4:模式选择、固件加密模式选择、签名算法选择配置区域。 5. 标记5:加载固件、设置打包固件存放路径以及配置固件版本、安全版本、启动地址。 6. 标记6:frtdec xip 模式参数配置。 7. 标记7:加载或随机生成对称加密Key、IV、DEK以及配置密钥存放。 8. 标记8:加载非对称公钥或私钥或直接生成随机密钥对。 9. 标记9:输出上位机操作日志、DFU交互信息等。 固件打包流程 ------------------------------------ 打包固件并生成eFuse Program配置文件或生成自动打包及下载的配置文件 其流程包括: 1. 编译应用程序获取原始可执行二进制文件(固件/镜像); 2. 加载固件及设置打包固件存放路径; 3. 加载或随机生成对称加密key、iv、DEK,以及配置密钥key存放的eFuse group; 4. 勾选和设置签名算法,并加载或随机生成签名所需的密钥对; 5. 设置固件加密模式:可选模式包括 AES_128_CBC、AES_256_CBC、SM4_CBC,以及 FRTDEC_XIP 的 AES_128_CTR 和 SM4_CTR; 6. 配置固件版本、安全版本、固件启动运行地址(支持64位); 7. 打包固件下载存储介质选择; 8. 若为frtdec xip模式,还需勾选该模式,并配置frtdec头信息; 9. 勾选eFuse Write File Configuration页面的 Secure Boot 使能安全启动,单击“package”按钮一键打包,生成打包后的固件及eFuse program配置文件; 通过串口DFU的eFuse write模式,加载该eFuse program配置文件可完成对称密钥及不对称公钥的eFuse写入,并使能安全启动。 10. 生成自动打包、下载的配置文件,单击菜单栏File->Generate Package Configuration File并选择文件存放路径。 **注意:** a. 加载或随机生成对称加密DEK前需提前选好加密模式,否则可能模式与DEK长度不匹配; b. 以上操作流程除流程步骤(1)和(9或10)分别为第一步后最后一步外,其他无先后顺序。 编译程序生成可执行二进制文件 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 非frtdec xip模式,选择ilm模式编译应用程序并生成可执行二进制文件,frtdec xip模式则用flashxip模式编译生成可执行二进制文件。 .. raw:: latex \newpage 加载固件文件 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 加载固件等待打包、设置打包固件存放路径 1. 标记1的“Load”,单击该按键加载固件; 2. 标记2的“Assign”,单击该按键选择打包后固件的存放路径,可设置文件名; 3. 标记3为操作的提示信息 |load_firmware| .. raw:: latex \newpage 生成eFuse配置文件 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 加载或随机生成对称加密key、iv、DEK,以及配置密钥存放的eFuse group 1. 标记1的“Load”和“Generate”按键,单击可加载或生成对称加密key; 2. 标记2的“Load”和“Generate”按键,单击可加载或生成对称加密iv; 3. 标记3的“Load”和“Generate”按键,单击可加载或生成对称加密DEK; 4. 标记4的下拉框可选择eFuse group,当标记5处下拉选择“SM”(表示系统厂商host端)时,可选择group3~5,选择“CM”(表示芯片厂商hsm端)时,可选择group0 存放key、iv和DEK的文本是以hex字符串格式来存放的: |hex_string| 同时也可以直接将hex字符串格式的key、iv和DEK直接填入到对应的文本框。 |load_symm_key| 签名算法和密钥对配置 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 勾选和设置签名算法,并加载或随机生成签名所需的密钥对 1. 标记1勾选“FirmwareSign”(勾选后,安全启动时会进行验签),以及下拉选择签名验签算法,包括 ED25519、SM2、RSA_2048bits 和 RSA_4096bits; 2. 标记2单击对应的“Load”按键加载公钥和私钥,对于 SM2 算法,需先加载公钥,再加载私钥,ED25519 算法无先后顺序,公钥和私钥文件格式可以是 txt,也可以是 pem 格式或 der 格式。而 RSA_2048bits 和 RSA_4096bits 选择 pem 格式或 der 模式(需选择*.pem 或*.der)只需加载私钥,而 txt 格式需先加载公钥(模数n)、再加载私钥(私钥指数d); 3. 标记3的“Generate”按键,单击可随机生成公私钥对,而标记4可下拉选择生成的格式,txt、pem、der 格式。 签名算法所需公私钥加载,2 和 3 选其一即可。 |asymm_key_pem| |load_asymm_key| 配置固件加密模式 ~~~~~~~~~~~~~~~~~~~ 不勾选“Frtdec XIP Mode”,支持的加密模式包括:AES_128_CBC、AES_256_CBC和SM4_CBC;勾选“Frtdec XIP Mode”,支持的加密模式包括:AES_128_CTR和SM4_CTR。 |cryp_mode| 配置固件版本、安全版本和启动地址 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Firmware Version设置固件版本;Secure Version设置安全版本,用于防回滚;Enter Address设置启动地址(支持64位),需与编译模式链接脚本的起始地址保持一致。 |version_addr| 配置打包固件下载存储介质 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 可忽略此处配置,已默认配置为Flashxip,无需选择存储介质 |package_downto| frtdec xip模式参数配置 ~~~~~~~~~~~~~~~~~~~~~~~~~ 1. 标记1勾选“Frtdec XIP Mode”,必须勾选,Download to 默认为Flashxip(此处无需选择); 2. 标记2下拉选择Frtdec支持的在线解密模式,支持SM4_CTR和AES_128_CTR; 3. 标记3下拉选择Ftrdec在线解密用到的region(0~3); 4. 标记4单击“Load”加载或”Generate”生成Frtdec密钥; 5. 标记5配置Frtdec 参数,包括Nonce0、Nonce1、Start Address和End Address; 6. 标记6下拉选择Region(0~3),并单击“Configure”完成所选Region的参数配置(标记4加载的密钥以及标记5配置的参数)。 |frtdec_config| 配置Secure Boot并打包 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 勾选Secure Boot使能安全启动并一键打包 1. Second Image勾选使能备份镜像,Address Offset 设置备份镜像的编译地址(此处配置的值是偏移地址) 2. Lock Bootloader 勾选用于锁定 bootloader 3. Life Cycle 批量生产模式勾选 4. Plaint Check 勾选后,安全启动会校验解密的固件明文 |secure_bootenabled| 单击”Package”按钮完成打包,除了生成打包好的镜像文件,还会生成一份eFuse program 配置文件,用于DFU eFuse program 烧写对称密钥、不对称公钥和使能安全启动等启动配置(对称密钥位置由eFuse group 指定,不对称公钥默认使用 public key0)。单击“Clear”可以清除配置数据。 |one_key_package| 自动生成打包配置文件 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 生成自动打包及下载的配置文件 |cfg_gen| 以上1-7步配置好后,单击菜单栏File->Generate Package Configuration File 生成配置文件。 |cfg_gen_info0| |cfg_gen_info1| |cfg_gen_info2| .. raw:: latex \newpage .. |asymm_key_pem| image:: /assets/images/sdk/asymm_key_pem.png .. |cfg_gen| image:: /assets/images/sdk/cfg_gen.png .. |cfg_gen_info0| image:: /assets/images/sdk/cfg_gen_info0.png .. |cfg_gen_info1| image:: /assets/images/sdk/cfg_gen_info1.png .. |cfg_gen_info2| image:: /assets/images/sdk/cfg_gen_info2.png .. |usart_to_connect| image:: /assets/images/sdk/usart_to_connect.png .. |usart_connect_done| image:: /assets/images/sdk/usart_connect_done.png .. |cryp_mode| image:: /assets/images/sdk/cryp_mode.png .. |upper_main| image:: /assets/images/sdk/upper_main.png .. |load_firmware| image:: /assets/images/sdk/load_firmware.png .. |load_symm_key| image:: /assets/images/sdk/load_symm_key.png .. |hex_string| image:: /assets/images/sdk/hex_string.png .. |load_asymm_key| image:: /assets/images/sdk/load_asymm_key.png .. |version_addr| image:: /assets/images/sdk/version_addr.png .. |package_downto| image:: /assets/images/sdk/package_downto.png .. |frtdec_config| image:: /assets/images/sdk/frtdec_config.png .. |secure_bootenabled| image:: /assets/images/sdk/secure_bootenabled.png .. |one_key_package| image:: /assets/images/sdk/one_key_package.png .. |board_dfu| image:: /assets/images/sdk/board_dfu.png .. |fpga_soft_reset| image:: /assets/images/sdk/fpga_soft_reset.png .. |usart_download| image:: /assets/images/sdk/usart_download.png .. |dfu_efuse_program| image:: /assets/images/sdk/dfu_efuse_program.png .. |auto_package_download| image:: /assets/images/sdk/auto_package_download.png .. |set_download_address| image:: /assets/images/sdk/set_download_address.png .. |board_brom| image:: /assets/images/sdk/board_brom.png .. |default_gui_parameters| image:: /assets/images/sdk/default_gui_parameters.png .. |recover_package| image:: /assets/images/sdk/recover_package.png .. |secure_boot| image:: /assets/images/sdk/secure_boot.png .. |click_toconfiguration| image:: /assets/images/sdk/click_toconfiguration.png .. |flash_configuration| image:: /assets/images/sdk/flash_configuration.png .. |efuse_map_configuration| image:: /assets/images/sdk/efuse_map_configuration.png .. |Bin_efuse_program| image:: /assets/images/sdk/Bin_efuse_program.png .. |Package_Multiple| image:: /assets/images/sdk/Package_Multiple.png .. |configure_multiple| image:: /assets/images/sdk/configure_multiple.png