把「进程级 vs VM 级」「TCB」「远端证明」三大概念穿进 20 年技术演化故事
① 虚拟化黄金时代——隐患埋下(2005 ←)
- 2005 VT-x / 2006 SVM:硬件终于帮 Hypervisor 拦截特权指令,VM 跑得像裸机。
- 云计算兴起:一台物理机给 N 家客户用,但 Host 仍能在 VM-Exit 时随手看内存。 这就是后来机密计算要解决的“宿主偷窥”原罪。
② 第一代 TEE:把机密锁进“小保险柜”(2003–2015)
时间 | 技术 | 想解决的痛点 |
---|---|---|
2003 | ARM TrustZone | 手机支付 / DRM 要有“系统外的小黑屋” |
2015 | Intel SGX | 把 x86 进程里 几百 MiB 划出来加密,Host 也看不到 |
典型特征:
“区块级”隔离 → 必须用专门 SDK(sgx_init(), OCALL/ECALL)。 • 好处:TCB 极小(µCode+Enclave runtime)。 • 新问题:
内存太小,大数据库/AI 跑不进来; 开发门槛高,迁移成本大。
③ 第二代:干脆把整台虚机都加密(2016–2020)
-
2016 AMD SEV • 每 VM 一把密钥,加密所有 DRAM。 • 但 Host 还能改页表 → 只能保证机密性,不保证完整性。
-
2019 SEV-ES(Encrypted State) • 连寄存器也密文封存,Host 无法在 VM-Exit 时偷看。 • 页表篡改仍未解。
-
2020 SEV-SNP • 引入 RMP(Reverse-Map Table): “这物理页属于哪台 VM” 写进硬件表,Host 想乱映射直接被 CPU 拒。 • 至此,机密性 + 完整性 一次到位。 • 启用 ioctl:SNP_GET_REPORT → 1184 B 报文,拿去云端验证。
④ 云厂商分叉:轻量 Micro-VM(AWS Nitro,2020)
- AWS 用 KVM 改写出 Nitro Hypervisor,把 I/O 做成独立 ASIC。
- 同年推出 Nitro Enclave:
在现有 EC2 里切一块独立内存当 “Mini-VM”;
不重做 CPU 指令,而是用 Hypervisor 把父机 RAM 完全屏蔽;
报文通过 vsock POST /attestation 拿到 JSON。
• 目的:让开发者 零改业务 就能把私钥、HSM 服务丢进 Enclave。
⑤ 第三代:Intel 的 VM-级方案(TDX,2023 GA)
新角色 | 作用 |
---|---|
TDX-Module | 芯片中常驻固件,负责分配密钥+维护完整性表 PAMT |
TDVF | 特制 OVMF,启动时先自我测量 |
- 效果与 SNP 类似:整机内存密文 + Host 改页表会被硬件拦截。
- 报文 ioctl:TDX_GET_REPORT(4 KiB)。
- Intel 把 VM 级 TEE 与原 SGX 分家:大内存靠 TDX,小保险柜仍用 SGX。
⑥ TCB 概念诞生与膨胀
时间轴里 TCB 的组成在不断变化:
-
2003–2015(TrustZone/SGX) µCode + ROM Key + 几百 KB runtime ⇒ 超小 TCB。
-
2016–2020(SEV/ES) 再加上 PSP 固件、Guest 内核 ⇒ TCB 放大一个数量级。
-
2020–2023(SNP/TDX) 又把 RMP / PAMT、TDVF 拖进来 ⇒ 开发者要学会给 “来宾 OS” 打补丁。
口诀:想迁移无痛 → 接受大 TCB;想 TCB 超小 → 接受改代码。
⑦ 远端证明流水线的标准化(2015→)
SGX 时代
- Quote -> IAS(Intel Attestation Service)-> JSON。 SEV-SNP 民主化
- SNP_GET_REPORT → Ask/Ark 在线 CA → JWT。 Nitro 全托管
- vsock /attestation → ACM → 带 cert 的文档。 TDX 重用 DCAP
- TDX_GET_REPORT → Intel DCAP PCS → JWT/JSON。 不管格式怎么长,三件事永远固定:
① CPU 把度量签名成 Quote;
② 某处有 CA 颁发根证书;
③ 服务端验完给你 token。
⑧ 进程级 vs VM 级 —— 最终对照
维度 | 进程级(SGX/TZ) | VM 级(SNP/TDX/Nitro) |
---|---|---|
迁移改造 | 需用 SDK 改代码 | 几乎零改,Lift-and-Shift |
内存上限 | 256 MiB–1 GiB | 上百 GiB–TiB |
TCB 大小 | 小 | 大 |
主要场景 | 加密签名、MPC、HSM | DB、大模型、整站迁云 |
因果链:业务越复杂,开发者越想“不改代码直接上云” → VM 级 TEE 成主流。
⑨ 再回首:一条因果记忆法
- Host 能看 VM 内存 → 不安全
- 切块锁内存(SGX) → 太小太难用
- 整台 VM 加密(SEV) → Host 还能换页
- 加完整性表(SNP/TDX) → 机密+完整性齐活
- 云要批量卖(Nitro/CCA) → API 一键化、远端证明云服务化
- 把这“1→5”背下来,就能把 TEE 全景和时间点同时刻入脑中。
到这里你应该能回答
- 为什么说 SGX TCB 比 SEV-SNP 小,但开发更痛?
- SNP/TDX 为什么要引入 RMP/PAMT?
- Quote → Verifier → Token 三步各解决什么问题?
如果可以脱口而出,0-2 节即掌握。 Pomelo_刘金 下一讲:1-1 深潜 SEV-SNP。