1. 构建时度量(Build-time Measurement)
- 开发者编译TEE代码后,使用私钥对Enclave或机密虚拟机镜像进行数字签名
- 代码的哈希值(如SHA-256)被记录在与签名绑定的证书或元数据结构中
- 该哈希值将作为远程证明过程中的关键比对基准。
2. 加载时度量(Load-time Measurement)
- TEE代码加载至内存时,CPU硬件自动计算加载代码的哈希值
- 该哈希值被写入CPU硬件保护的度量寄存器(如Intel SGX的MRENCLAVE)
- 任何对代码的未授权修改都会导致度量值发生变化,从而使远程证明失败。
3. 远程证明报告生成
- TEE内部代码调用CPU提供的证明接口,生成包含MRENCLAVE、MRSIGNER等度量信息的报告
- 该报告使用CPU内置的证明签名密钥(Attestation Key)进行签名
- 签名私钥由CPU硬件在制造阶段注入,无法被软件提取或克隆。
4. 验证方确认代码完整性
- 验证方收到证明报告后,将其发送至硬件厂商的认证服务(如Intel IAS)进行验证
- 认证服务验证报告签名的有效性,并确认MRENCLAVE值与预期的正确代码哈希值一致
- 验证通过后,验证方确信远端TEE内运行的是未经篡改的预期代码。
5. 运行时完整性监控
- 部分进阶TEE方案支持运行时控制流完整性验证和代码度量周期性重新验证
- 通过硬件性能计数器或专用监控模块,检测TEE内部是否发生未授权的代码修改或注入
- 一旦发现完整性异常,TEE可主动终止执行或通知验证方。
相关文章
Linux对机密计算的支持Author: Wenhui Zhang, Yibo Zhou, Yuan Zhu, Guixiong Wei, Zhe Li, Chenyu Jiang, Sam Han,Yizheng Jiao, Hou Yu, Zefan Li, Wei Xu,