要保持高级别的安全性,请严格限制有权访问私钥以对设备构件签名的人员数量。在许多情况下,这意味着只有特定的人(签名者)才能访问它们,这些人可能是开发团队的一部分,也可能不是。

TrustFence独立签名和加密工具允许您将签名/加密过程与固件映像生成隔离开来。这样,就不需要保护整个开发环境,只需要保护一个对固件映像进行签名和加密的安全位置。

要求:

  1. 启用Trustfence在您的Digi Embedded Yocto项目通过添加以下行到您的local.conf文件:

    继承+“trustfence”
  2. 使用该项目生成SDK。

    美元Bitbake -c populate_sdk dey-image-qt
  3. 安装生成的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配置中未启用签名引导工件的身份验证。必须启用配置选项CONFIG_AUTH_ARTIFACTS如果您在外部构建U-Boot,则可以将配置添加到您的板的defconfig中,或者将以下行添加到您的Digi Embedded Yocto项目中conf / local.conf

conf / local.conf
UBOOT_EXTRA_CONF +“CONFIG_AUTH_ARTIFACTS = y”

工具链安装完成后,您可以按照以下步骤签名U-Boot映像:

  1. 使用以下环境变量配置签名过程:

    • 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位于当前路径的:

      config
      CONFIG_SIGN_KEYS_PATH“/道路/ /键”CONFIG_KEY_INDEX“3”#为了加密图像,还需要添加以下内容:#出口ENABLE_ENCRYPTION = " y "#出口CONFIG_DEK_PATH = " /道路/ /键/ dek.bin”
  2. 执行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

要使用该脚本,请遵循以下步骤:

  1. 使用以下环境变量配置签名过程:

    • CONFIG_SIGN_KEYS_PATH:(必选)PKI树路径。如果指定空路径,表示生成新的PKI树

    • CONFIG_KEY_INDEX:(可选)默认值为0。用于签名的密钥的索引。

    • CONFIG_DEK_PATH:(可选)数据加密密钥的路径。如果未定义,则不加密图像。如果该文件不存在,则生成一个随机的256位文件。

      以类似的方式,也可以在类中定义这些变量config位于当前路径的文件:

      config
      CONFIG_SIGN_KEYS_PATH“/道路/ /键”CONFIG_DEK_PATH“/道路/ /卡片”
  2. 执行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