要保持高级别的安全性,请严格限制有权访问私钥以对设备构件签名的人员数量。在许多情况下,这意味着只有特定的人(签名者)才能访问它们,这些人可能是开发团队的一部分,也可能不是。
TrustFence独立签名和加密工具允许您将签名/加密过程与固件映像生成隔离开来。这样,就不需要保护整个开发环境,只需要保护一个对固件映像进行签名和加密的安全位置。
要求:
启用Trustfence在您的Digi Embedded Yocto项目通过添加以下行到您的
local.conf
文件:继承+=“trustfence”
使用该项目生成SDK。
美元Bitbake -c populate_sdk dey-image-qt
安装生成的SDK并获取源代码。
美元< YOCTO_PROJECT_FOLDER > / tmp /部署/ sdk /戴伊glibc - x86_64戴伊-图像- qt - xwayland - aarch64 ccimx8mn dvk r3.sh——工具链- 3.2美元源< SDK_INSTALLATION_PATH > / environment-setup-aarch64-dey-linux
签名和加密U-Boot映像
默认U-Boot配置中未启用签名引导工件的身份验证。必须启用配置选项
conf / local.conf
|
工具链安装完成后,您可以按照以下步骤签名U-Boot映像:
使用以下环境变量配置签名过程:
CONFIG_SIGN_KEYS_PATH
:(必选)PKI树路径。如果指定空文件夹,则生成新的PKI树。CONFIG_KEY_INDEX
:(可选)默认值为0。用于签名的密钥的索引。CONFIG_MKIMAGE_LOG_PATH
:(可选)mkimage-flash_spl_uboot.log
文件。签名脚本需要该日志获取U-Boot签名所需的布局信息。在你构建了Digi Embedded Yocto固件之后,你可以在项目目录中找到这个日志文件:
< project_folder > / tmp /部署/图片/ ccimx8mn-dvk / imx-boot-tools
。如果没有定义这个值,脚本将查找mkimage.log
被调用的目录中的文件。CONFIG_FIT_HAB_LOG_PATH
:(可选)mkimage-print_fit_hab.log
文件。签名脚本需要该日志获取U-Boot签名所需的布局信息。在你构建了Digi Embedded Yocto固件之后,你可以在项目目录中找到这个日志文件:
< project_folder > / tmp /部署/图片/ ccimx8mn-dvk / imx-boot-tools
。如果未定义此值,签名脚本将查找mkimage-print_fit_hab.log
被调用的目录中的文件。CONFIG_UNLOCK_SRK_REVOKE
:(可选)如果定义了签名U-Boot,则可以在关闭的设备上撤销密钥。ENABLE_ENCRYPTION
:(可选)如果定义,签名的图像将被加密。CONFIG_DEK_PATH
:(强制性的ENABLE_ENCRYPTION
定义,否则忽略)数据加密密钥的路径。如果该文件不存在,则生成一个随机的256位文件。您也可以在文件中定义这些变量
config
位于当前路径的:configCONFIG_SIGN_KEYS_PATH=“/道路/ /键”CONFIG_KEY_INDEX=“3”#为了加密图像,还需要添加以下内容:#出口ENABLE_ENCRYPTION = " y "#出口CONFIG_DEK_PATH = " /道路/ /键/ dek.bin”
执行
trustfence-sign-uboot.sh
以输入文件(待签名的U-Boot映像)为第一个参数,输出文件(签名并加密的U-Boot映像)为第二个参数的脚本:美元信任-sign-uboot.sh imx-boot.bin imx-boot-signed.bin使用已有的PKI树签名镜像准备好了
该工具还将生成SRK_efuses.bin
使用的PKI树文件。
签名和加密其他图像
的trustfence-sign-artifact.sh
脚本允许生成以下签名和加密的工件:
Linux映像
设备树斑点和覆盖
U-Boot bootscripts
Initramfs
要使用该脚本,请遵循以下步骤:
使用以下环境变量配置签名过程:
CONFIG_SIGN_KEYS_PATH
:(必选)PKI树路径。如果指定空路径,表示生成新的PKI树CONFIG_KEY_INDEX
:(可选)默认值为0。用于签名的密钥的索引。CONFIG_DEK_PATH
:(可选)数据加密密钥的路径。如果未定义,则不加密图像。如果该文件不存在,则生成一个随机的256位文件。以类似的方式,也可以在类中定义这些变量
config
位于当前路径的文件:configCONFIG_SIGN_KEYS_PATH=“/道路/ /键”CONFIG_DEK_PATH=“/道路/ /卡片”
执行
trustfence-sign-artifact.sh
脚本。脚本语法如下:使用方法:trustfence-sign-artifact.sh [OPTIONS] input-unsigned-image output-signed-image -p
为项目选择平台-b sign/encrypt bootscript -d sign/encrypt DTB -o sign/encrypt DTB overlay -i sign/encrypt initramfs -l sign/encrypt Linux image -r sign read-only rootfs image支持的平台:ccimx6、ccimx6ul、ccimx8x、ccimx8mn、ccimx8mm 下面的示例生成一个经过签名和加密的Image.gz:
美元信任-sign-artifact.sh -p ccimx8mn -l Image.gz Image.gz-signed