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