TEE 与远程证明
定义
TEE(Trusted Execution Environment,可信执行环境)是处理器提供的一类能力:在其中运行的代码与数据,对普通操作系统、hypervisor 管理员,以及物理上能读内存总线的观察者保持机密或完整。AMD SEV-SNP 是 Box 文档中出现的具体技术方向之一。
远程证明(remote attestation)是与 TEE 配套的协议:平台对启动测量(例如客户机固件、内核、init 与配置的摘要)出具签名报告。远端验证者检查签名链与测量值,再决定是否注入密钥或开始处理敏感数据。RA-TLS 把证明绑定到 TLS 握手,使连接对端与被证明的身份一致。
问题背景
MicroVM 已经把工作负载与宿主内核分开。若威胁模型进一步包含「宿主管理员不可信」或「需要向第三方证明此刻运行的正是某份已知二进制」,仅有虚拟化不够:管理员仍可能改内核命令行、替换 init,或读取未加密的客户机内存。TEE 把信任根放到 CPU;证明把「我声称在跑什么」变成可核查的测量。
机制说明
仅 VM、且必须显式武装
TEE 依赖虚拟机监视器与硬件。Box 因此把它列为仅 VM 功能:Sandbox 路径拒绝相关控制。模拟 KVM 符合性配置文件可以用于开发,但模拟与未执行的硬件作业不是硬件安全证据。硬件门需要单独武装,并固定启动测量。
产品面上的几个动词
| 命令 | 含义 |
|---|---|
attest |
取得或展示证明材料 |
seal / unseal |
把数据封到证明身份下,或在身份匹配时解封 |
inject-secret |
在证明通过之后再注入密钥,避免密钥进入未证明的环境 |
这些操作属于安全控制,不是日常 run
的一部分。未配置机密提供方时,身份附件不会被默默加上。
与「加密磁盘」的区别
对 rootfs 做静态加密,保护的是落盘后的字节。TEE 保护的是运行中的内存与启动链路。二者可以同时使用,但不能互相替代。没有证明的加密磁盘,只说明「读磁盘的人需要密钥」,不说明「此刻运行的内核是否被替换」。
在 Box 中的位置
- 核心类型:
src/core/src/tee.rs、src/core/src/security.rs。 - 运行时:
src/runtime/src/tee/。 - CLI:
attest.rs、seal.rs、unseal.rs、inject_secret.rs。 - 客户机:
src/guest/init/src/attest_server/。 - 密码学依赖(证明链校验、RA-TLS)列于
src/Cargo.toml的 workspace.dependencies。 - 平台状态:运行时绑定的 RA-TLS、身份附件、机密 Tasks/Services
的执行前证明,以及可选模拟配置文件已接线;Cloud
BX0.3硬件 TEE 宣称仍开放。
验证命令
a3s-box info |
先确认输出中的 TEE / 证明字段。没有硬件资格时,显式 TEE 工作流应在镜像或内存副作用之前失败。不要用模拟配置文件的成功,代替硬件门的证据。
相关与易混
- 相关:MicroVM、隔离级别对比、代际与 fail-closed
- 易混:证明成功不等于应用逻辑安全。它只说明启动身份与报告链符合预期。Sandbox 没有与 MicroVM TEE 对等的硬件机密性宣称。