0-2 TEE 全景(历史长卷版)

32 阅读4分钟

把「进程级 vs VM 级」「TCB」「远端证明」三大概念穿进 20 年技术演化故事

① 虚拟化黄金时代——隐患埋下(2005 ←)

  • 2005 VT-x / 2006 SVM:硬件终于帮 Hypervisor 拦截特权指令,VM 跑得像裸机。
  • 云计算兴起:一台物理机给 N 家客户用,但 Host 仍能在 VM-Exit 时随手看内存。 这就是后来机密计算要解决的“宿主偷窥”原罪。

② 第一代 TEE:把机密锁进“小保险柜”(2003–2015)

时间技术想解决的痛点
2003ARM TrustZone手机支付 / DRM 要有“系统外的小黑屋”
2015Intel 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、HSMDB、大模型、整站迁云

因果链:业务越复杂,开发者越想“不改代码直接上云” → 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。