KeyMint 跟Tee有什么区别?谁包括谁?
在 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)
- 调用流程:
- 当 Android 系统(如 Framework 层的
KeyStore2)需要生成一个不可导出的高安全级别密钥时。 - Android 通过 HAL 层发送 IPC 请求给 TEE。
- TEE 接收到请求后,将其路由给内部运行的 KeyMint 服务。
- KeyMint 利用 TEE 才能访问的硬件根密钥(Root of Trust)完成密钥生成或签名,并仅把结果返回给 Android,私钥本身永远不离开 TEE。
📊 总结对比
| 维度 | TEE (可信执行环境) | KeyMint (密钥服务) |
|---|---|---|
| 角色定义 | 隔离的安全环境 / 基础设施 | 具体的密钥管理与加密算法服务 |
| 层级 | 底层环境/操作系统级 | 上层应用/服务级(运行于 TEE 内) |
| 职责范围 | 运行各类安全应用(KeyMint、指纹/人脸识别、DRM 解密、支付等) | 专职处理 Android 密钥生成、存储、签名及防篡改校验 |
| 演进历史 | 长期存在的硬件安全架构 | 由 Keymaster HAL (v1~v4) 在 Android 12 演进而来 |
所以在 Android 安全设计中,TEE 是容器和保障,KeyMint 是具体的业务实现。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)