第1章 数据保护组件设计总览:Android安全威胁模型、组件设计目标、整体架构分层、关键设计原则
1.1 威胁模型驱动的设计起点
Android 数据保护组件的设计必须以威胁模型为起点。攻击面覆盖硬件、内核、框架、应用四个层级,攻击者可能通过物理访问、侧信道、提权、应用层漏洞等路径窃取或篡改数据。STRIDE 模型是威胁分析的基础框架,下表演示各层面临的典型威胁与对应的数据保护策略锚点。
| 安全层 | 典型威胁(STRIDE) | 数据保护策略锚点 |
|---|---|---|
| 硬件层 | 物理探测 / 冷启动攻击 | 硬件隔离区(TEE/SE)密钥绑定 |
| 内核层 | 提权漏洞 / DMA 攻击 | KeyStore 内核加密服务 / dm-crypt |
| 框架层 | 权限绕过 / Binder 泄露 | 加密 API 访问控制 / 权限审计 |
| 应用层 | 数据存储泄露 / 网络中间人 | 数据保护 SDK / 密钥生命周期管理 |
核心观点: 数据保护组件不是单一加密库,而是一套跨越硬件安全区、内核安全服务、框架权限模型和应用 SDK 的纵深防御体系。每个安全层承担特定的信任边界职责,组件设计必须显式定义层间数据流与信任链路。
1.2 组件设计目标
数据保护组件需达成四个核心目标,它们共同构成架构决策的评判标准:
- 机密性: 数据在存储、传输、处理过程中不被未授权实体读取。依赖加密算法强度与密钥隔离等级。
- 完整性: 检测并防止数据被篡改或回滚。依赖签名、HMAC、防回滚计数器。
- 可用性: 合法用户能在授权时限内可靠访问数据。依赖密钥备份、灾难恢复、降级策略。
- 可审计性: 所有数据访问操作可追溯、可归因。依赖安全日志、远程证明、访问记录。
四个目标之间存在权衡:强机密性可能降低可用性(如 TEE 密钥丢失后无法恢复),完整性校验会增加访问延迟。架构决策需根据业务场景确定优先级。
1.3 整体架构分层
数据保护组件采用四层纵深架构。下方 SVG 展示各层核心模块、层间数据流与信任链路方向:
1.4 关键设计原则
基于威胁模型与分层架构,数据保护组件必须遵循以下设计原则:
- 纵深防御: 不依赖单层安全机制。即使某一层被突破,下层仍能保护核心密钥与数据。
- 最小权限: 每个组件只拥有完成其功能所需的最小数据访问权限。密钥使用策略强制执行。
- 安全默认: 所有加密、签名、访问控制默认启用并采用推荐强度,不允许开发者在安全与便捷之间选择弱配置。
- 信任锚点硬件化: 根密钥必须锚定在硬件隔离区(TEE/SE),避免根密钥被软件提取。
- 可降级与可恢复: 组件需提供降级路径(如 TEE 不可用时降级到软件密钥容器)和灾难恢复机制,但降级必须经用户明确授权。
1.5 组件边界与信任链路
四层架构的组件边界由信任链路连接。下表演示各层间的信任关系与数据流约束:
| 源层 | 目标层 | 信任建立方式 | 数据流约束 |
|---|---|---|---|
| 应用层 | 框架层 | Binder 调用 + 权限验证 | 仅允许授权 API;密钥明文不经过框架层 |
| 框架层 | 内核层 | 系统服务签名 + SELinux 策略 | 加密操作通过内核 API,密钥材料不可达 |
| 内核层 | 硬件层 | 安全监控器(Secure Monitor) | 密钥仅在 TEE/SE 内使用,内核不接触明文 |
| 硬件层 | 根信任锚 | 芯片级密钥注入 + 远程证明 | 根密钥不可导出;仅返回加密结果或签名 |
风险点警示: 信任链路中最薄弱的环节是框架层到应用层的边界。开发者在调用加密 API 时可能无意泄露密钥(如日志输出、IPC 序列化),必须在 SDK 设计层面禁止密钥对象序列化,并对所有密钥引用使用
WeakReference 或 Clearable 容器。
1.6 选型权衡
数据保护组件的技术选型需在以下维度进行权衡:
- 硬件隔离 vs. 兼容性: TEE 提供最强隔离,但碎片化严重(OEM 实现差异)。软件 KeyStore 兼容性好但安全强度低。推荐策略:优先硬件锚定,不可用时降级并提示用户。
- 加密粒度 vs. 性能: 文件级加密(fscrypt)性能优于块级加密(dm-crypt),但可能泄露文件大小和访问模式。敏感元数据建议使用块级加密。
- 密钥可恢复 vs. 防泄漏: 云端备份密钥提升可用性,但增加攻击面。采用用户提供的密码派生密钥(非对称包装)可平衡两者。
- 远程证明 vs. 隐私: 远程证明可验证设备安全状态,但可能收集设备标识。使用匿名证明或选择性披露策略。
1.7 落地步骤
在企业级 Android 产品中落地数据保护组件,建议按以下阶段推进:
- 威胁建模(第1-2周): 识别资产、信任边界、攻击路径,输出 STRIDE 威胁清单与风险等级。
- 架构决策(第3-4周): 确定硬件安全锚点方案(TEE/SE/软件降级),定义层间接口契约与信任链路。
- 核心组件实现(第5-10周): 依次实现硬件适配层、内核 KeyStore 扩展、框架加密 API、应用 SDK。每层独立单元测试 + 安全测试。
- 集成与审计(第11-12周): 端到端数据流验证、权限审计、远程证明联调。
- 灾难恢复演练(第13周): 模拟 TEE 芯片损坏、密钥被锁、设备丢失等场景,验证降级与恢复流程。
1.8 验收标准
组件交付时须通过以下验收检查点:
| 检查项 | 验收标准 | 验证方式 |
|---|---|---|
| 机密性 | 加密数据在无密钥时不可读;硬件锚定密钥不可导出 | FIPS 140-2 随机测试 + 硬件提取攻击测试 |
| 完整性 | 任何篡改尝试可被检测并触发安全响应 | HMAC 校验 + 防回滚计数器压力测试 |
| 可用性 | 密钥恢复流程在48小时内完成;降级路径用户确认率 >95% | 故障注入 + 用户验收测试 |
| 可审计性 | 所有密钥操作生成不可篡改的审计日志;日志可关联到具体请求 | 日志完整性校验 + 远程证明关联性验证 |
| 兼容性 | 覆盖 Android 12+ 主流 OEM 设备(三星、小米、OPPO、谷歌 Pixel) | CTS 兼容性测试 + 厂商安全API适配性测试 |