概述

技术背景

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 执行。

整体使用流程

RDP 使用流程分为开发、生产、运行三个阶段:

小技巧

MbedTLS 已默认编译进 Image3,开发者可参考 RDP 安全服务例程。