6. FIT 镜像安全启动¶
本章说明 boot.spinor 中 FIT 镜像的验签与可选加密:由 U-Boot 在加载内核与设备树前完成校验或解密。FIT 与 FIP 在 ROM/BL1 侧的职责相互独立;产线常见顺序是先完成 FIT 侧配置与打包,再对 fip.bin 做签名与加密,详见 FIP 签名与加密及 eFuse。
除进入 ramdisk/keys 目录后的命令外,其余命令均在 mars 根目录 执行;须先依次执行 source build/envsetup_soc.sh 与 defconfig ,将后者参数换为实际板型名。
6.1. 生成 FIT 验签与加密用的密钥与材料¶
只做一次,与 FIP 密钥分开保存。FIT 的 RSA 验签使用 私钥 与 公钥证书;若开启 FIT 加密,还需要 AES-256 密钥 与 IV。
在 mars 根目录下进入 ramdisk/keys 后执行(与 ramdisk 侧打包脚本约定的路径一致):
cd ramdisk/keys
openssl genpkey -algorithm RSA -out test_reeos.key
openssl req -new -x509 -key test_reeos.key -out test_reeos.crt
openssl rand -out test_reeos_aes256.bin 32
openssl rand -out test_reeos_iv.bin 16
得到:test_reeos.key、test_reeos.crt;若启用 FIT 加密,还有 test_reeos_aes256.bin、test_reeos_iv.bin。ITS、打包脚本、U-Boot 环境变量中的路径须与上述文件名及目录一致。
6.2. 打开配置(内核与 U-Boot)¶
执行
source build/envsetup_soc.sh、defconfig``(实际板型名)后运行 ``menuconfig,在 Kernel options 下勾选 Enable kernel secure boot,保存退出。(可选)在
menuconfig中勾选菜单项Support FIT image encryption/decryption。勾选后对 FIT 做加密与验签;不勾选则仅验签、不加密。执行
menuconfig_uboot,进入 Security support,勾选 Add secure boot support to kernel,并确保子项已启用:Enable RSA support、Enable hash command、Enable libcrypto support 等,保存退出。
6.3. 编译与产物¶
执行 build_all 完成编译。完成后在 install/ 下对应板型的 soc_* 子目录中可得到 boot.spinor 等产物(具体以板级配置为准)。烧录时按现有流程将带签名或加密的 boot.spinor 写入 BOOT 分区。
6.4. FIT 相关密钥一览(ramdisk/keys/)¶
文件 |
用途 |
|---|---|
test_reeos.key |
FIT RSA 私钥(签名) |
test_reeos.crt |
FIT 公钥证书 |
test_reeos_aes256.bin |
FIT AES-256 密钥(32 字节,仅当启用 FIT 加密) |
test_reeos_iv.bin |
FIT 加密 IV(16 字节,仅当启用 FIT 加密) |
6.5. 流程简表(FIT 侧)¶
步骤 |
内容 |
|---|---|
1 |
在 |
2 |
|
3 |
|
4 |
执行 build_all,取 install 下 boot.spinor 等产物并按原流程烧录 BOOT 分区 |
6.6. 与 FIP 的配合¶
FIT:保护 boot.spinor 中的 kernel、FDT 等,由 U-Boot 执行。
FIP:保护 fip.bin 镜像,含 U-Boot 与 BL2 等,由 ROM/BL1 验签与解密,见 FIP 签名与加密及 eFuse。
完整安全启动链路中,通常在完成本章配置并得到 boot.spinor 后,再按 FIP 签名与加密及 eFuse 生成 fip_enc.bin、烧 eFuse 并烧录 FIP 分区。