概述
技术背景
TrustZone 技术 将系统划分为安全世界和非安全世界。安全固件(image3)运行于安全世界中,承载系统的核心安全功能。 若安全固件以明文形式存储于 Flash,非安全世界的代码可能读取并分析其内容,从而破坏 TrustZone 的安全隔离机制。
RDP(Read Protection,读保护)技术通过加密存储方式保护 TrustZone 安全固件,确保安全代码仅以密文形式存在于 Flash 中, 阻止非安全世界获取明文,从而维护 TrustZone 的安全隔离边界。
工作原理
RDP 采用 AES-256 算法对安全固件进行加密保护,整个流程分为编译阶段和运行阶段:
编译阶段: SDK 后处理脚本使用用户提供的密钥对安全固件进行 AES-256 加密,生成加密固件。加密后的固件以密文形式烧录至 Flash。
运行阶段: 系统启动时,硬件引擎从 OTP 读取密钥,对 Flash 中的密文固件进行解密。整个解密过程由硬件自动完成,密钥存储于 OTP 安全区域并支持读写保护,可防止密钥被非法读取或篡改。
根据 IC 是否具备 Flash 地址安全隔离能力,RDP 提供不同的固件运行方式:
不支持 Flash 地址安全隔离,加密固件使用对称硬件加密引擎进行解密。系统启动时,固件被完整解密并加载至安全 RAM,再由 CPU 执行。
解密流程:OTP 中的 RDP 密钥由硬件自动加载至 IPSEC-S 解密引擎,内部安全 DMA 分块读取 Flash 中的加密固件,硬件引擎解密并传输至安全 RAM,CPU 跳转至安全 RAM 执行。
不支持 Flash 地址安全隔离,加密固件使用对称硬件加密引擎进行解密。系统启动时,固件被完整解密并加载至安全 RAM,再由 CPU 执行。
解密流程:OTP 中的 RDP 密钥由硬件自动加载至 IPSEC-S 解密引擎,内部安全 DMA 分块读取 Flash 中的加密固件,硬件引擎解密并传输至安全 RAM,CPU 跳转至安全 RAM 执行。
不支持 Flash 地址安全隔离,加密固件使用对称硬件加密引擎进行解密。系统启动时,固件被完整解密并加载至安全 RAM,再由 CPU 执行。
解密流程:OTP 中的 RDP 密钥由硬件自动加载至 IPSEC-S 解密引擎,内部安全 DMA 分块读取 Flash 中的加密固件,硬件引擎解密并传输至安全 RAM,CPU 跳转至安全 RAM 执行。
支持 Flash 地址安全隔离,加密固件使用 RSIP 硬件引擎 。除支持将固件加载至 RAM 执行外,还支持 XIP(eXecute In Place)模式,可在 Flash 上实时解密执行,无需将固件完整加载至 RAM。
解密流程:首先将安全固件的逻辑地址通过 Flash MPC 配置为安全区域,OTP 中的 RDP 密钥由硬件自动加载至 RSIP 引擎。支持两种运行模式:
XIP 运行:CPU 在安全世界运行 Flash 中的安全代码时,RSIP 自动将固件解密为明文返还 CPU,无需将固件加载至 RAM。适用于固件较大、RAM 空间有限的场景。
RAM 运行:软件通过 RSIP 读取 Flash 中的密文固件至安全 RAM,读取过程自动解密成明文。CPU 在 RAM 中运行安全固件。适用于需要更高执行性能的场景。
整体使用流程
RDP 使用流程分为开发、生产、运行三个阶段:
小技巧
MbedTLS 已默认编译进 Image3,开发者可参考 RDP 安全服务例程。