先楫官方工程师干货:HPM6000系列 Security Flash介绍
[复制链接]
本期介绍的是HPM6000系列中security flash方面内容。希望可以帮助用户了解先楫为了用户信息安全方面所做的设计。
Security Flash 模块概述
首先进行一些名词解释:
在线执行 (Execution In Place):可以直接访问外部存储器,不需要把外部 存储器数据先复制到内存再执行的访问的方式,称为在线执行 (Execution In Place);
DEK(Data Encryption Key):数据加密秘钥,用户加密存储器上数据/代 码的秘钥;
KEK(Key-Encryption Key):密钥加密密钥,加密 DEK 的秘钥。
先楫半导体 HPM6000 系列 MCU 设计的 EXIP 在线解密引擎支持在线执 行功能,并且可以对加密的外部 NOR Flash 进行实时解密,实现在线实时解密 执行,EXIP 主要特性有:
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 启动镜像布局
如上图所示,完整的 XPI NOR 启动镜像有 EXIP BLOB、XPI 配置选项、 FW BLOB、固件头和固件组成,其中虚线框为可选内容,实线框为必须包含内 容。
要实现加密镜像,则镜像头部必须包含 EXIP BLOB 内容,该部分内容使用 RFC3394 定义的密钥封装和密钥解封算法,通过 KEK 加密后以密文形式存放 在 Flash 中,以保护 EXIP 解密用的 DEK 和相关敏感数据。
Security Flash 系统流程介绍
如上图所示,Security Flash 流程包含三个方面:
(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 次特定数学计算,得出运行消耗时间 测试结果如下表:
可见,相同软硬件平台下,加密镜像执行对处理器性能并没有实质影响
注意:由于加密环节涉及到对OTP的烧写,可能一个疏失造成芯片无法正常启动。因此先楫建议开发者在有实际需要时联系先楫,这样可以得到更好的支持。
|