信任根与硬件基础:TPM 2.0、SGX、TDX、SEV
远程证明这件事,说白了就是「你怎么证明你是你」。在数字世界里,这个信任的起点不能靠软件自己说了算,必须得有个硬件级别的「根」。我做了这么多年安全架构,见过太多软件层被攻破的案例,最后大家发现,还是得把信任锚点焊死在芯片里才踏实。
这一章我们就把主流的硬件信任根技术过一遍。TPM 2.0、Intel SGX、Intel TDX、AMD SEV,这四样东西你搞明白了,远程证明的地基就算打牢了。
TPM 2.0 基础架构
TPM(Trusted Platform Module)是一个独立的硬件安全芯片,焊在主板上。它的核心能力就三件事:生成密钥、存储度量值、做签名验证。TPM 2.0 相比 1.2 版本,最大的变化是算法不再死绑 RSA,支持了 ECC、SM3/SM4 等国密算法,灵活性高了很多。
我个人习惯把 TPM 看作一个「不会说谎的记账本」。它记录了你系统从 BIOS 到 OS 启动过程中的每一个度量值(PCR 寄存器),而且这些值一旦写入,在下次重启前几乎改不了。
TPM 的密钥层次
TPM 的密钥体系分三层,我画个图你一看就明白:
这里有个关键点:EK 是硬件信任的根,但它不能直接拿来签名。为什么呢?因为 EK 是唯一的,如果泄露了,整个芯片的身份就废了。实际使用中,EK 只用来解密一个叫 EK 证书的东西,然后派生出一个或多个 AIK(身份密钥),用 AIK 去做远程证明的签名。
PCR 与平台度量
PCR(平台配置寄存器)是 TPM 里的一堆「只增不减」的哈希值。系统启动时,BIOS 先度量自己,把哈希值扩展到 PCR[0];然后 BootLoader 度量 OS 内核,扩展到 PCR[4];以此类推。任何一环被篡改,PCR 值就不对。
远程证明时,TPM 会生成一个 Quote,里面包含当前 PCR 值,并用 AIK 签名。验证方拿到后,跟预期的「黄金度量值」对比,就知道系统有没有被改过。
Intel SGX 基础概念
SGX(Software Guard Extensions)是 Intel 在 2015 年推出的技术。它的思路跟 TPM 完全不同——TPM 保护的是整个系统,SGX 保护的是进程内的一个「安全飞地」(Enclave)。
你想想看,就算操作系统被攻破了,内核被提权了,SGX 飞地里的代码和数据依然加密存储在内存中,CPU 之外的任何软件都读不到。这个隔离级别非常狠。
| 特性 | TPM 2.0 | Intel SGX |
|---|---|---|
| 保护粒度 | 整机启动链 | 进程内飞地 |
| 信任根位置 | 独立芯片 | CPU 内部 |
| 内存保护 | 不支持 | 硬件加密内存 |
| 远程证明方式 | AIK 签名 PCR | EPID/DCAP 签名飞地度量 |
| 适用场景 | 平台完整性验证 | 机密计算、数据隐私保护 |
SGX 的远程证明流程很有意思。飞地启动时,CPU 会计算它的度量值(MRENCLAVE),然后通过 Intel 的认证服务(EPID 或 DCAP)生成一个签名。验证方不需要直接信任飞地,只需要信任 Intel 的签名即可。
Intel TDX 基础概念
TDX(Trusted Domain Extensions)是 Intel 在 2021 年推出的新一代机密计算技术。它跟 SGX 最大的区别是:TDX 保护的是整个虚拟机,而不是进程内的一个飞地。
我个人觉得 TDX 更适合云场景。你想想,在公有云上租一个虚拟机,云厂商的管理员是有 root 权限的,能看到你的内存。TDX 把整个 VM 的内存用硬件加密,连 Hypervisor 都看不到明文。这就解决了「云平台可信吗」这个老大难问题。
TDX 的信任根是 Intel 的 CPU 硬件,远程证明时通过一个叫 TDX 模块的固件生成度量报告。验证方拿到报告后,可以确认这个 VM 运行在真实的 TDX 硬件上,并且没有被篡改过。
AMD SEV 基础概念
SEV(Secure Encrypted Virtualization)是 AMD 的机密计算方案,比 Intel TDX 出来得更早(2016 年)。SEV 的核心思路也是加密虚拟机内存,但实现方式不同。
SEV 使用 AMD 的 SME(Secure Memory Encryption)技术,在内存控制器里加了一个 AES 加密引擎。每个 VM 分配一个唯一的加密密钥,内存写入时自动加密,读取时自动解密。Hypervisor 看到的全是密文。
SEV 的远程证明通过 AMD 的 SEV-SNP(Secure Nested Paging)扩展来实现。SNP 增加了硬件级的完整性保护,防止恶意 Hypervisor 篡改 VM 的内存页。
| 特性 | Intel TDX | AMD SEV-SNP |
|---|---|---|
| 保护粒度 | 整机 VM | 整机 VM |
| 内存加密引擎 | CPU 内部 MKTME | 内存控制器 AES |
| 信任根 | Intel CPU + TDX 模块 | AMD CPU + PSP 固件 |
| 远程证明 | TDX 模块签名报告 | SEV-SNP 签名报告 |
| Hypervisor 可见性 | 不可见 VM 内存 | 不可见 VM 内存 |
四种技术的远程证明对比
最后我整理一个对比表,方便你快速决策:
| 技术 | 信任根 | 证明对象 | 签名方式 | 典型场景 |
|---|---|---|---|---|
| TPM 2.0 | EK(芯片内) | 平台 PCR 度量 | AIK 签名 | 设备身份认证、启动完整性 |
| Intel SGX | CPU 硬件 | 飞地度量 (MRENCLAVE) | EPID/DCAP | 机密计算、隐私保护 |
| Intel TDX | CPU + TDX 模块 | VM 度量报告 | TDX 模块签名 | 云上 VM 机密计算 |
| AMD SEV-SNP | CPU + PSP 固件 | VM 内存加密状态 | SEV-SNP 签名 | 云上 VM 机密计算 |
嗯,这一章的内容就到这里。四种硬件信任根各有各的脾气,但核心逻辑是一样的:信任必须从硬件开始,不能从软件自己编。后面的章节我们会深入每种技术的远程证明协议细节,到时候你会看到,这些硬件基础是怎么一步步支撑起整个证明链的。