应用贴士 | HPM6000系列 Security Flash介绍

本期介绍的是HPM6000系列中security flash方面内容。希望可以帮助用户了解先楫为了用户信息安全方面所做的设计。

Security Flash 模块概述 

首先进行一些名词解释: 在线执行 (Execution In Place):可以直接访问外部存储器,不需要把外部 存储器数据先复制到内存再执行的访问的方式,称为在线执行 (Execution In Place); 

DEK(Data Encryption Key):数据加密秘钥,用户加密存储器上数据/代 码的秘钥;

KEK(Key-Encryption Key):密钥加密密钥,加密 DEK 的秘钥。

EXIP 在线解密引擎介绍 

先楫半导体 HPM6000 系列 MCU 设计的 EXIP 在线解密引擎支持在线执 行功能,并且可以对加密的外部 NOR Flash 进行实时解密,实现在线实时解密 执行,EXIP 主要特性有: 

(1)支持 AES-128 CTR 模式解密

EXIP 支持 AES-128 CTR 模式解密,密钥长度为 128 位。密钥存放在寄存 器 RGNx_KEY0、RGNx_KEY1、 RGNx_KEY2、RGNx_KEY3 中。

AES-128 CTR 模式要求使用相同密钥加密的数据,每一个数据块对应的计数器 Counter 值不能重复,Counter 长度与 AES 数据块长度相同,也为 128 位。EXIP 对每个 128 位的数据块,其 Counter 由数据块的 32 位系统地址和 64 位的 NONCE 组成,其中 NONCE 存放在 RGNx_CTR0 和 RGNx_CTR1 中。

(2)支持 4 个区段,每个区段可以使用不同的密钥加密 

(3)支持通过 Key Blob 封装数据加密密钥等敏感信息(符合 RFC3394 标准) 

(4)支持硬件解封 Key Blob(符合 RFC3394 标准) 

(5)支持从 OTP 读取用于解封 Key Blob 的 KEK

XPI NOR 启动镜像布局介

1.png

XPI NOR 启动镜像布局 

如上图所示,完整的 XPI NOR 启动镜像有 EXIP BLOB、XPI 配置选项、 FW BLOB、固件头和固件组成,其中虚线框为可选内容,实线框为必须包含内 容。 

要实现加密镜像,则镜像头部必须包含 EXIP BLOB 内容,该部分内容使用 RFC3394 定义的密钥封装和密钥解封算法,通过 KEK 加密后以密文形式存放 在 Flash 中,以保护 EXIP 解密用的 DEK 和相关敏感数据。

Security Flash 系统流程介绍

2.png

Security Flash 原理示意框图

如上图所示,Security Flash 流程包含三个方面:
(1)用户生成加密镜像, 使能在线加密执行功能;

(2)EXIP 解密 EXIP BLOB 得到 DEK 等解密信息;

(3) EXIP 使用 AES-128 CTR 模式在线解密 Flash 密文固件。 当 OTP 中 ENCRYPT_XIP 字段置为 1,BootROM 启动加密原地执行功能, BootROM 会 在 XPI NOR 启 动 中 强 制 打 开 EXIP , 并 尝 试 用 EXIP0_KEK (XPI_INSTANCE 值为 0)或者 EXPI1_KEK(XPI_INSTANCE 值 为 1)解密 EXIP Blob。

当 EXIP BLOB 解密无误后,ROM 会根据 EXIP BLOB 中的信息配置对应 的解密信息,将恢复的 DEK、NONCE、加密区域的开始和结束地址信息载入 RGNx 对应的寄存器。当 EXIP BLOB 解密无误后,EXIP 即可根据 AES-128 CTR 模式执行原地解密执行操作。

性能对比测试

对于加密对执行环节的影响,先楫做了简单的测试对比,在明文和密文的单核测试中测试程序条件:(1)关闭所有 Cache,包括 D-Cache 和 I-Cache 

(2)循环运行 600 次特定数学计算,得出运行消耗时间 测试结果如下表:

3.png

可见,相同软硬件平台下,加密镜像执行对处理器性能并没有实质影响

注意:由于加密环节涉及到对OTP的烧写,可能一个疏失造成芯片无法正常启动。因此先楫建议开发者在有实际需要时联系先楫,这样可以得到更好的支持。

来源:先楫芯上人

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。