还可以对签名的映像进行加密,以获得更高的安全性。加密过程模糊了图像数据,因此未经授权的用户无法看到或使用它。

出于安全考虑,只有经过签名的映像才能加密。

在这个过程中使用了两个不同的键:

  • 数据加密密钥(DEK):固件镜像加密的密钥。

  • 一次性可编程主密钥(OTPMK):安全的内部不可读密钥,每个设备都是唯一的。它是不可配置的,并且已经在每个设备中进行了编程。它用于保护DEK。

为了安全起见,OTPMK只能在封闭的设备上使用。在开放的设备上,使用不安全的测试密钥。

加密图像只能在封闭的设备上使用。加密的U-Boot映像将在开放设备上启动,但这不会使安全启动设置。加密的内核映像不会在打开的设备上启动。

卡片管理

DEK使用OTPMK进行加密,并在闪存此分区时存储在U-Boot分区中。当您想要使用一个新的DEK时,U-Boot映像和DEK必须一起闪现。这通常发生在以下情况之一:

  • 第一次使用加密图像时

  • 当您想要更改DEK并使用新DEK时

下图说明了这个过程的简化:

测试textst

您也可以只更新加密的U-Boot映像,而不更改DEK。这在更新已经部署到生产环境的模块的固件时非常有用。

Flash加密工件

一旦DEK被安全地存储在目标中(在uboot分区),其余的加密工件(Linux内核,dtb, bootscript和initramfs,如果使用的话)可以像往常一样闪现,并且它们将在引导期间使用存储在U-Boot分区中的DEK自动解密。

内核映像的处理过程如下图所示。(其余引导工件的工作方式与此类似。)

测试textst

有关安全引导机制的详细信息,请参见恩智浦安全引导应用笔记