3. 安全镜像生成¶
3.1. 秘钥列表¶
rsa_hash0.pem |
用于签署FSBL的RSA私钥 |
|
loader_ek.key |
用于加密FSBL的AES秘钥 |
|
bl_priv.pem |
用于签署Monitor/u-boot的RSA私钥 |
|
bl_ek.key |
用于加密Monitor/u-boot的AES秘钥 |
3.2. 生成密钥¶
生成签名私钥 rsa_hash0.pem和bl_priv.pem.
* RSA密钥使用2048 bits和第4费马数.
host$ openssl genrsa -out rsa_hash0.pem -F4 2048
host$ openssl genrsa -out bl_priv.pem -F4 2048
生成加/解密秘钥loader_ek.key和bl_ek.key.
* 如果只签署不加密可以不用生成该秘钥
* 以下使用随机数生成秘钥
host$ head -c 16 /dev/random > loader_ek.key
host$ head -c 16 /dev/random > bl_ek.key
3.3. 签署加密镜像¶
3.3.1. 生成镜像¶
参考 <U-boot 移植应用开发指南> 产生FIP.bin镜像
3.3.2. 签署FIP.bin镜像¶
注解
注意事项
为避免量产秘钥被窃,建议量产密钥应单独保管,并使用签名工具单独于安全的环境下进行签名和加密
执行下列命令签名FIP镜像, fip.bin为原始镜像, fip_sign.bin为签名后镜像.
cv_crypt$ ./fipsign.py sign \
--root-priv= rsa_hash0.pem \
--bl-priv=bl_priv.pem \
fip.bin fip_sign.bin
工具参数:
cv_crypt$ ./fipsign.py sign
usage: fipsign.py sign [-h] [--root-priv ROOT_PRIV] [--bl-priv BL_PRIV] SRC_FIP DEST_FIP
3.3.3. 签署并加密FIP.bin镜像¶
执行下列命令签名并加密FIP镜像, fip.bin为原始镜像, fip_enc.bin为签名并加密后镜像.
cv_crypt$ ./fipsign.py sign-enc \
--root-priv= rsa_hash0.pem \
--bl-priv=bl_priv.pem \
--ldr-ek=loader_ek.key \
--bl-ek=bl_ek.key \
fip.bin fip_enc.bin
工具参数:
cv_crypt$ ./fipsign.py sign-enc
usage: fipsign.py sign-enc [-h] [--ldr-ek LDR_EK] [--bl-ek BL_EK] [--root-priv ROOT_PRIV] [--bl-priv BL_PRIV] SRC_FIP DEST_FIP
* 注意:加密是可选的,如果需要加密,编译FIP.bin时需要配置 CONFIG_FSBL_SECURE_BOOT_SUPPORT = y, 配置方法:
host$ source build/envsetup_soc.sh
host$ defconfig xxxxxx
host$ menuconfig --> FIP setting --> 选择 [ ] Add secure boot support to FSBL