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 安全子系统、防篡改与安全启动配合 |
三、信任链:从硬件根到安全存储对象
安全存储的可信性并非凭空产生,而是由一条自上而下的信任链逐级传递。最底层是芯片内的硬件信任根(如 ROM Code、eFuse 中的公钥哈希、设备唯一密钥);启动阶段通过安全启动验证 BL1/BL2、OP-TEE OS 与 TA 的签名;OP-TEE OS 启动后,基于硬件唯一密钥派生安全存储主密钥(SSK),再按 TA 维度派生子密钥,最终用于加密和完整性保护每个存储对象。
这条信任链的关键在于:安全存储主密钥永远不以明文形式离开 TEE,REE 侧只能看到密文。即使攻击者拿到整个 /data/tee 目录,也无法还原明文。
四、存储分类:从 RPMB 到 REE FS
OP-TEE 安全存储并非只有一种后端。根据硬件能力与产品需求,常见分类如下:
- REE FS(普通文件系统后端):数据以密文文件形式存放在 Linux 文件系统中,部署简单,适合大多数消费类设备;
- RPMB(Replay Protected Memory Block):eMMC/UFS 提供的防重放分区,由 TEE 直接读写,具备单调计数器,适合存放高价值密钥与计数器;
- SE/StrongBox 后端:借助独立安全芯片存储根密钥,安全性更高,常见于支付与身份认证设备;
- 内存型临时存储:仅会话内有效,掉电即失,适合临时密钥与中间状态。
五、典型应用场景与实操观察
安全存储的典型场景包括:移动支付中的支付令牌与生物特征模板、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 计数器不一致。