HPMicro Manufacturing Tool 镜像加密流程

1. 在线解密简介

在烧写镜像到设备后,为了数据的安全性,防止镜像内容被直接读取,一般都会对镜像进行加密操作。当镜像被加密后,执行时设备需要先使用对应的密钥进行解密,然后再执行镜像程序。

BootROM 内置的在线解密引擎 EXIP 便可以完成解密执行操作。EXIP 与 XPI 控制器紧密耦合,支持外部串行 NOR FLASH 在线执行的同时,对数据实时解密。

BootROM 解密流程大致如下:

  • 当 OTP 中的 ENCRYPT_XIP 字段被置 1 后,BootROM 在 XPI NOR 启动中会强制打开 EXIP;
  • BootROM 会使用 EXIP0_KEK(XPI_INSTANCE 为0)或 EXIP1_KEK (XPI_INSTNAC 为1) 来解密 EXIP Blob;
    注:EXIP 用于密钥封装/解封的密钥称为 KEK(Key-Encryption Key 密钥加密密钥)
  • 当 EXIP Blob 解密无误后,ROM 会根据 EXIP BLOB 中的信息配置对应的解密信息;
  • 当 EXIP 配置完成后,ROM 通过 AES-128 CTR 算法即可执行原地解密执行操作。

根据 BootROM 的解密流程,根据启动镜像的格式要求,对镜像加密大概需要做如下操作:

  • 选择加密区域并采用 AES-128 CTR 算法进行加密;
  • 将 AES-128 CTR 算法参数采用 KEK 密钥进行加密并放置到镜像头部 EXIP Blob;
  • 将 KEK 值写入 OTP 以供后续 BootROM 获取解密区域配置;
  • 使能 ENCRYPT_XIP 字确保启用 EXIP 功能;

让我们一起来看看在工具中是如何完成上述配置的。

2. 镜像加密配置

在镜像编辑工具中勾选镜像加密部分复选框后,便能启用镜像加密功能,如下图所示:

EXIP配置

启用镜像加密功能后,我们便能看到各类配置,下面分别进行说明:

  • KEK 字符串:16字节十六进制数,用来打包解密区域配置,该值需要写入 OTP 供 BootROM 使用;
  • FLASH 基地址:选择加密区域是在 XPI0 还是 XPI1;
  • 加密区域:具体的加密位置配置,包括:
    • 区域起始地址(必填)
    • 区域加密长度(必填)
    • AES Key(可选,不填会随机生成)
    • Noce (可选,不填会随机生成)
  • 同步 EXIP KEK 到 OTP 配置:勾选此项后,会自动将 KEK 拷贝到 OTP 写视图中,方便使用。同时,我们还提供了另外两个 OTP 字的快捷输入:
    • 启用加密原地执行命令:即使能 ENCRYPT_XIP,使能后 BootROM 才会开启 EXIP 功能;
    • 隐藏 EXIP KEK: 使能 EXIP KEK 的硬件锁定位,这样 EXIP KEK 在 OTP 中便无法读取,确保了 KEK 的安全性。

以上配置完成后,点击生成按钮,便可以生成一份加密镜像,同时会将对应的 OTP 所需信息拷贝过去;

1
0
发表回复 0

Your email address will not be published. Required fields are marked *