3. OP-TEE安全存储概述

在移动终端、车机、支付终端与物联网设备中,敏感数据(密钥、证书、生物特征模板、支付令牌)一旦被普通操作系统读取或篡改,整个安全体系就会崩塌。OP-TEE 的安全存储(Secure Storage)正是为解决这一问题而设计:它把敏感数据从 Rich OS(如 Linux/Android)中“搬进”安全世界,由 TEE 内核统一管理,并通过可信应用(TA)接口对外提供受控访问。理解安全存储,需要先厘清它的定义、威胁模型、信任链、存储分类以及典型应用场景。

一、安全存储的定义与边界

OP-TEE 安全存储是指:在 TEE 内部,由 OP-TEE OS 提供的、以可信应用为访问主体的持久化数据保护机制。它并不是一块“加密的普通文件系统”,而是一套包含机密性、完整性、可用性与访问控制的完整方案。其核心特征包括:

  • 隔离性:数据由 TEE 内核管理,普通世界无法直接读取或修改;
  • 绑定性:数据与设备、TA 身份(UUID)以及安全存储密钥绑定,复制到其他设备无法解密;
  • 完整性保护:通过哈希树/MAC 检测篡改,回滚攻击也会被版本号或计数器识别;
  • 受控访问:只有持有合法 TA 身份与权限的调用者才能读写对应对象。

需要强调的是,安全存储保护的是“静态数据”和“访问路径”,它不替代 TA 自身的业务逻辑安全,也不替代安全启动。若 TA 存在漏洞,攻击者仍可能通过合法接口越权读取数据。

二、威胁模型:防谁、防什么、不防什么

安全存储的威胁模型通常围绕“攻击者能力”来定义。典型假设是:Rich OS 可能被攻破,攻击者拥有普通世界的 root 权限,能够读取文件系统、篡改文件、重放旧数据,甚至尝试调用 TA 接口。安全存储需要在这种前提下仍然保证敏感数据不泄露、不被篡改。

威胁类型 攻击者能力 安全存储的应对
数据窃取 读取 REE 文件系统、内存转储 数据在 TEE 内加密后落盘,密钥不出安全世界
数据篡改 修改存储文件内容 完整性校验(MAC/哈希树)拒绝非法修改
回滚/重放 用旧版本文件替换新版本 版本号、单调计数器或新鲜度校验
越权访问 伪造 TA 身份调用接口 基于 TA UUID 与登录会话的访问控制
物理攻击 拆机、探针、故障注入 依赖 SoC 安全子系统、防篡改与安全启动配合
安全存储不承诺抵御所有物理攻击。若攻击者能够直接读取 TEE 内部 RAM 或提取硬件根密钥,安全边界将被突破。因此实际产品通常需要安全启动、TrustZone、eFuse、安全计数器等共同构成纵深防御。

三、信任链:从硬件根到安全存储对象

安全存储的可信性并非凭空产生,而是由一条自上而下的信任链逐级传递。最底层是芯片内的硬件信任根(如 ROM Code、eFuse 中的公钥哈希、设备唯一密钥);启动阶段通过安全启动验证 BL1/BL2、OP-TEE OS 与 TA 的签名;OP-TEE OS 启动后,基于硬件唯一密钥派生安全存储主密钥(SSK),再按 TA 维度派生子密钥,最终用于加密和完整性保护每个存储对象。

OP-TEE 安全存储信任链与数据流 硬件信任根:ROM Code / eFuse / 设备唯一密钥 / 安全计数器 不可篡改的起点,提供设备身份与密钥派生种子 安全启动链:BL1 → BL2 → OP-TEE OS → TA 签名验证 逐级验签,确保运行的是合法 TEE 与可信应用 OP-TEE OS 密钥派生:HUK → SSK → TA 子密钥 按 TA UUID 与存储对象派生独立密钥,实现密钥隔离 安全存储对象 加密数据 + 完整性标签 + 元数据 按 TA UUID 隔离,支持持久化与回滚保护 落盘于 REE 文件系统(如 /data/tee) Rich OS 侧可见内容 仅看到密文文件与目录结构 无法解密、无法伪造完整性标签 篡改或回滚会被 TEE 检测并拒绝 密文落盘

这条信任链的关键在于:安全存储主密钥永远不以明文形式离开 TEE,REE 侧只能看到密文。即使攻击者拿到整个 /data/tee 目录,也无法还原明文。

四、存储分类:从 RPMB 到 REE FS

OP-TEE 安全存储并非只有一种后端。根据硬件能力与产品需求,常见分类如下:

  • REE FS(普通文件系统后端):数据以密文文件形式存放在 Linux 文件系统中,部署简单,适合大多数消费类设备;
  • RPMB(Replay Protected Memory Block):eMMC/UFS 提供的防重放分区,由 TEE 直接读写,具备单调计数器,适合存放高价值密钥与计数器;
  • SE/StrongBox 后端:借助独立安全芯片存储根密钥,安全性更高,常见于支付与身份认证设备;
  • 内存型临时存储:仅会话内有效,掉电即失,适合临时密钥与中间状态。
选择后端时,应权衡安全等级、成本与性能。多数产品采用“REE FS 存普通对象 + RPMB 存根密钥/计数器”的混合策略,既控制成本又满足防回滚需求。

五、典型应用场景与实操观察

安全存储的典型场景包括:移动支付中的支付令牌与生物特征模板、DRM 中的内容解密密钥、车联网中的设备证书与私钥、物联网设备的固件更新签名密钥等。以 TA 读写安全对象为例,其调用路径通常如下:

CA (Rich OS)
  └─ TEEC_InvokeCommand(TA_UUID, CMD_WRITE_KEY, ...)
       └─ OP-TEE SMC 陷入安全世界
            └─ TA 调用 TEE_OpenPersistentObject / TEE_WriteObjectData
                 └─ OP-TEE OS 加密 + 完整性保护
                      └─ 写入 REE FS 或 RPMB

在调试时,可以通过 tee-supplicant 日志观察安全存储文件的创建与读写;在 OP-TEE 侧,CFG_REE_FS、CFG_RPMB_FS 等编译选项决定后端能力。若发现 TA 无法读取对象,常见原因是 TA UUID 不匹配、对象权限标志错误,或 RPMB 计数器不一致。

安全存储的价值不在于“把文件加密”,而在于把密钥管理、访问控制、完整性校验和防回滚统一收敛到 TEE 内部,使 Rich OS 被攻破时敏感数据仍然可控。理解信任链与威胁模型,是正确使用 OP-TEE 安全存储的前提。