在 Android 系统安全架构中,TEE 包括 KeyMint(或者说 KeyMint 是运行在 TEE 中的一个安全服务/组件)。

两者的核心概念、层级关系与分工如下:


1. 核心区别

  • TEE (Trusted Execution Environment,可信执行环境)

  • 性质:是一个硬件级隔离的安全运行环境(系统/平台)

  • 作用:它独立于主操作系统(Android/Linux 内核),运行在 CPU 的安全世界(如 ARM TrustZone)。它拥有自己的安全操作系统(如 Trusty OS、OP-TEE),专门用来执行敏感的计算任务,保护数据不被已被 Root 或被入侵的 Android 主系统读取。

  • 比喻:TEE 就像是银行里装有独立防弹玻璃和门禁的“安全金库大楼”。

  • KeyMint (密钥铸造厂 / 原 Keymaster)

  • 性质:是运行在 TEE 内部的一个具体的安全硬件抽象层服务/应用(TA, Trusted Application)

  • 作用:它是 Android 12 及之后对 Keymaster 的重构与升级,专门负责硬件级密钥的管理与密码学运算(如生成密钥、RSA/ECC 签名、AES 加解密、Attestation 根证书链校验等)。

  • 比喻:KeyMint 就像是开设在 TEE 这座金库大楼里面的“专职印钞与保管印章的办公室”。


2. 包含与依赖关系(谁包括谁)

TEE 包括 KeyMint,KeyMint 依赖于 TEE。

  • 架构层级

硬件 (ARM TrustZone)⟶TEE 安全操作系统⟶KeyMint 服务 (TA)\text{硬件 (ARM TrustZone)} \longrightarrow \text{TEE 安全操作系统} \longrightarrow \text{KeyMint 服务 (TA)}硬件 (ARM TrustZone)TEE 安全操作系统KeyMint 服务 (TA)

  • 调用流程
  1. 当 Android 系统(如 Framework 层的 KeyStore2)需要生成一个不可导出的高安全级别密钥时。
  2. Android 通过 HAL 层发送 IPC 请求给 TEE。
  3. TEE 接收到请求后,将其路由给内部运行的 KeyMint 服务
  4. KeyMint 利用 TEE 才能访问的硬件根密钥(Root of Trust)完成密钥生成或签名,并仅把结果返回给 Android,私钥本身永远不离开 TEE。

📊 总结对比

维度 TEE (可信执行环境) KeyMint (密钥服务)
角色定义 隔离的安全环境 / 基础设施 具体的密钥管理与加密算法服务
层级 底层环境/操作系统级 上层应用/服务级(运行于 TEE 内)
职责范围 运行各类安全应用(KeyMint、指纹/人脸识别、DRM 解密、支付等) 专职处理 Android 密钥生成、存储、签名及防篡改校验
演进历史 长期存在的硬件安全架构 由 Keymaster HAL (v1~v4) 在 Android 12 演进而来

所以在 Android 安全设计中,TEE 是容器和保障,KeyMint 是具体的业务实现

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐