传统虚拟化:Guest 信任 Host。机密计算反转信任模型——Guest 不信任 Host/Hypervisor,硬件保证隔离。
一、先看图
flowchart TD
GUEST[Guest OS<br/>机密 VM] --> HW[硬件加密<br/>内存加密引擎]
HOST[Host / Hypervisor] -.->|无法读取| HW
GUEST --> ATT[远程认证<br/>Attestation]
ATT --> VERIFY[验证方<br/>确认 Guest 完整性]
classDef trusted fill:#3fb95022,stroke:#3fb950,color:#adbac7;
classDef untrusted fill:#f8514922,stroke:#f85149,color:#adbac7;
class GUEST,HW,ATT,VERIFY trusted
class HOST untrusted
二、威胁模型
传统:信任 hypervisor → 只防 Guest 攻击 Host。
机密计算:不信任 hypervisor:
- Host 管理员可能恶意
- 云提供商可能被入侵
- 物理访问攻击
硬件保证:Guest 内存加密 → Host 无法读取。
三、AMD SEV / SEV-SNP
3.1 SEV(Secure Encrypted Virtualization)
每个 VM 有独立的内存加密密钥 → AES-128 加密。
3.2 SEV-ES(Encrypted State)
加密 vCPU 寄存器 → VM-exit 时 Host 看不到寄存器内容。
3.3 SEV-SNP(Secure Nested Paging)
完整性保护 → 防止 Host 重放/重映射 Guest 内存页。
# QEMU 启动 SEV-SNP Guest
qemu-system-x86_64 \
-object sev-snp-guest,id=sev0,policy=0x30000 \
-machine memory-encryption=sev0,vmport=off四、Intel TDX
Trust Domain Extensions:
- TD(Trust Domain)= 机密 VM
- SEAM 模块 = TDX 的 hypervisor 扩展
- 内存加密 + 完整性
- 与 KVM 集成
五、ARM CCA
Confidential Compute Architecture:
- Realm = 机密执行环境
- RMM(Realm Management Monitor)
- 与 TrustZone 共存但独立
六、远程认证(Attestation)
1. Guest 启动 → 硬件度量 Guest 固件和内核
2. 度量值签名(硬件密钥)
3. 发送给验证方
4. 验证方确认 Guest 运行的是预期的代码
认证链:硬件 → 固件 → Guest OS → 应用。
七、COCONUT-SVSM
Secure VM Service Module:
Guest OS → COCONUT-SVSM → 硬件
在 Guest 和硬件之间提供安全服务:
- vTPM(虚拟 TPM)
- 安全启动
- 密钥管理
- 运行在 VMPL0(最高特权级)
八、I/O 挑战
机密 VM 的 I/O 必须经过 Host → 数据可能泄露:
| 方案 | 说明 |
|---|---|
| bounce buffer | Guest 加密 → Host 传输 → Guest 解密 |
| TIO(Trusted I/O) | 硬件保护的 DMA |
| virtio 加密 | 传输层加密 |
九、生产使用
| 云厂商 | 技术 |
|---|---|
| Azure | SEV-SNP |
| GCP | SEV-SNP / TDX |
| AWS | Nitro Enclaves(不同架构) |
| 阿里云 | TDX |
十、小结
- 机密计算反转信任模型 → Guest 不信任 Host
- AMD SEV-SNP / Intel TDX / ARM CCA 提供硬件保护
- 远程认证验证 Guest 完整性
- COCONUT-SVSM 提供安全服务
- I/O 是当前最大的性能和安全挑战
参考文献
- AMD, “SEV-SNP: Strengthening VM Isolation.” 2020
- Intel, “Trust Domain Extensions.” 2023
- ARM, “Confidential Compute Architecture.” 2021
- COCONUT-SVSM project (github.com/coconut-svsm)
工具
- QEMU SEV-SNP/TDX 支持
snphost/snpguesttdx-tools
上一篇:Rust for Linux 下一篇:可拆分 OS
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【数据库研究前沿】TEE 数据库与 Oblivious 原语:EnclaveDB 与加密计算
从 SGX / SEV-SNP / TDX / ARM CCA 的硬件抽象出发,梳理 EnclaveDB、Opaque、ObliDB 三条研究主线,以及侧信道攻击对 TEE 数据库设计的约束;下半讨论 Azure Confidential SQL、AWS Nitro Enclaves 上做 OLAP 的工程边界与性能开销量级。
【操作系统百科】内核内存调试
内核内存 bug 是最难追的:UAF、OOB、double free、leak 都可能沉默数月。本文讲 KASAN 三种模式、KFENCE 生产采样、kmemleak、SLUB_DEBUG、UBSAN/KCSAN 联动。
【操作系统百科】VFS 四层抽象
Linux 的一切皆文件靠 VFS 实现——superblock、inode、dentry、file 四层抽象加 ops 表。本文讲 VFS 核心数据结构、dcache、inode cache、RCU lookup,以及文件系统如何插入 VFS。
操作系统百科
Linux 6.x 视角下的操作系统系列索引:110 篇覆盖调度、虚拟内存、文件系统与 I/O、并发、隔离、可观测性,按主题、阅读路径与关键问题三种入口组织。