机密计算入门:数据使用中的安全与TEE
硬盘加密了、网络加密了,可数据一进内存就是明文——谁来保护”正在被计算的数据”?
📚 基本概念速读
| 名称 | 定义 | 省流 |
|---|---|---|
| 数据三态 | 静态、传输中、使用中三种数据状态 | 内存里的数据最危险 |
| TEE | Trusted Execution Environment,可信执行环境 | CPU 里的硬件保险箱 |
| CVM | Confidential Virtual Machine,机密虚拟机 | 内存被硬件加密的虚拟机 |
| SEV-SNP | AMD 的 CVM 技术(安全加密虚拟化-安全嵌套分页) | AMD 系机密虚拟机 |
| TDX | Intel 的 CVM 技术(信任域扩展) | Intel 系机密虚拟机 |
| CCA | ARM 的 CVM 技术(机密计算架构) | ARM 系机密虚拟机 |
| 内存加密 | 数据在内存里以密文形式存储 | 明文只在 CPU 芯片内出现 |
| 信任根(RoT) | Root of Trust,信任链的起点 | 安全体系的”根” |
| 黑盒信任根 | 用户无法直接验证的信任根 | 信任全押在厂商身上 |
| 信任缺口 | trust gap,用户与云平台间的信任落差 | 数据你说了不算 |
| TLS | Transport Layer Security,传输层安全协议 | 加密管道本身 |
| HTTPS | HTTP over TLS | 加密管道送 HTTP |
🧩 数据三态:为什么内存里的数据最难保护
任何数据在生命周期里都有三种状态:
1 | ┌─────────────────────────────────────────────────┐ |
传统加密方案只保护前两种:
| 状态 | 保护手段 | 例子 |
|---|---|---|
| 静态 | 磁盘加密 | BitLocker、LUKS |
| 传输中 | 网络加密 | HTTPS/TLS |
| 使用中 | ❌ 传统方案管不了 | 内存里的明文 |
第 ③ 种状态是真正的盲区:数据在内存里被 CPU 处理时是明文。在传统云环境里,云服务商的运维人员、管理员、甚至被攻破的虚拟机监控器(hypervisor)都能看到内存里的明文数据。
典型场景:云端跑 AI 推理,模型权重和用户数据在内存里参与计算。磁盘加密管静态、HTTPS 管传输,唯独”正在计算”这一头是裸奔的。
🏦 TEE:给 CPU 装一个保险箱
TEE(Trusted Execution Environment,可信执行环境) 的思路:在 CPU 硬件层面划出一块隔离区域,里面的数据和代码连操作系统、hypervisor、甚至物理上能摸到内存条的人都读不走。
1 | 普通虚拟机 vs 机密虚拟机(CVM) |
主流的 CVM 技术:
| 技术 | 厂商 | 特点 |
|---|---|---|
| AMD SEV-SNP | AMD | 内存加密 + SNP(安全嵌套分页)防篡改,生态最成熟 |
| Intel TDX | Intel | 类似思路,生态还在早期 |
| ARM CCA | ARM | 面向 ARM 芯片,适合移动/嵌入式 |
一句话:TEE = 硬件帮你把”正在计算的数据”锁进保险箱。
🔐 内存加密:计算时不还是要解密吗?
这是最常问的问题。答案:要解密,但解密发生在 CPU 芯片”内部”,明文永远不出芯片。
1 | 传统(无内存加密): |
四个关键点:
- 密钥永远在 CPU 内部,由 CPU 的专用安全处理器(AMD 是 PSP,Platform Security Processor)生成和管理,外界拿不到。
- 解密点 = 内存控制器,它就在 CPU 芯片上。数据从 DRAM 进入芯片后才被解密;离开芯片写回内存前被加密。
- 攻击者能接触到的所有地方——内存条、总线、DMA 设备——看到的都是密文。“计算”这个动作发生在芯片内部,外人看不到明文。
- 类比:CPU 是个保密工厂。仓库(DRAM)里堆的全是加密原料,原料进车间(芯片内部)才解锁加工,成品出车间前重新上锁。你能抢仓库、能蹲在传送带(总线)旁边,但看到的永远是锁着的东西。
边界提醒:这个模型防的是”外部窃读”。如果攻击者攻破了 CVM 内部的软件(guest kernel 漏洞),明文当然还是会被读到——这要靠后面讲的远程认证来保证 CVM 内部没被装后门。
🧷 HTTPS 和 TLS 的区别
TLS 是”加密管道”协议本身,HTTPS 是”HTTP 跑在 TLS 管道里”这个组合。
1 | HTTP ──┐ |
| 概念 | 是什么 |
|---|---|
| TLS | 独立的加密协议:握手、证书验证、密钥协商、加密传输。不关心上面跑的是什么 |
| HTTPS | “HTTP + TLS”的固定组合,是 TLS 最常见的应用场景 |
| SSL | TLS 的前身(SSL 3.0 → TLS 1.0),现在说”SSL 证书”其实都是 TLS 证书 |
TLS 不只服务 HTTP:比如内核里可以直接跑 TLS(kernel TLS),给特定通道做端到端加密,这是机密计算里的常见性能优化点。
🔮 黑盒信任根:TEE 的信任缺口
TEE 的保险箱钥匙(信任根)捏在芯片厂商手里:
- 你要相信 AMD/Intel 的密钥管理、固件、证书链全都没问题
- 用户无法直接验证,只能”信任厂商”,这叫 black-box trust root(黑盒信任根)
- 用户和云平台之间存在 trust gap(信任缺口):数据在你云上跑,但你说了不算
1 | 传统 TEE 信任模型: |
三个具体痛点:
| 痛点 | 说明 |
|---|---|
| 厂商依赖 | 用户必须信任制造商,制造商出问题或作恶,安全就崩 |
| 无法独立验证 | 验证服务本身也是厂商/平台提供的,用户只能被动接受结论 |
| 多租户复杂 | 多租户云环境虚拟化栈复杂,漏洞不可避免,风险放大 |
这正是 TEE 与 TPM 协作信任的切入点:TPM 是用户能直接访问、能自己配置的”白盒”信任根,用它来制衡 TEE 的黑盒信任根。
⚠️ 常见误区
| 误区 | 正解 |
|---|---|
| 磁盘加密 + HTTPS 就能保护云端数据 | 只保护静态和传输两种状态,内存里的使用中数据仍是明文 |
| 内存加密后 CPU 计算会暴露明文 | 解密只在 CPU 芯片内部,外部看到的永远是密文 |
| TEE 是纯软件方案 | TEE 依赖 CPU 硬件隔离和内存加密,密钥由芯片内安全处理器管理 |
| 信任厂商 = 安全 | 黑盒信任根意味着用户无法独立验证,存在信任缺口 |
| HTTPS 和 TLS 是两种加密技术 | HTTPS = HTTP over TLS,TLS 才是底层协议 |
| SSL 和 TLS 没关系 | TLS 是 SSL 的继任者,本质同一套体系 |
✅ 总结
数据在使用中(内存里)是明文,传统加密管不了,需要 TEE 这类硬件级隔离;TEE 靠”内存加密 + 解密只在芯片内”保护使用中数据,但它的信任根归厂商、用户无法验证,形成了黑盒信任缺口——这正是 TEE + TPM 协作信任要解决的问题。
下一站:SEV-SNP 的隔离到底怎么做到的(NPT、RMP、ASID)。
Happy Hacking! 🎉