1、可信计算基础:从信任根到可信启动

各位同学好,我是老赵。今天咱们聊聊可信计算——这个听起来有点玄乎,其实说白了就是「怎么让计算机自己证明自己是干净的」。

我刚开始接触这个领域时,也觉得不就是加个安全芯片嘛。直到有一次在客户现场,一台服务器死活过不了合规审计,就是因为启动过程中被注入了恶意代码。嗯,从那以后我才真正理解——信任不能靠感觉,得靠度量。

1.1 可信计算到底在解决什么问题?

传统安全模型假设操作系统是可信的。但你想啊,如果系统在启动阶段就被篡改了,后面装再多杀毒软件也没用。可信计算的核心思路是:从硬件底层开始,逐级度量、逐级验证,确保每一层都未被篡改。

一句话总结:可信计算不是让系统绝对安全,而是让系统能够「自证清白」——任何篡改行为都会被检测到并记录下来。

我个人习惯把可信计算比作「接力赛」:第一棒是硬件信任根,它度量下一棒(Bootloader),Bootloader 再度量操作系统内核,内核再度量应用程序。每一棒都要确认前一棒是可信的,才能接过信任的接力棒。

1.2 TPM 与 TCM:两种信任根芯片

信任根不能靠软件实现——软件本身可能被改。所以业界搞了硬件芯片来做这件事。目前主流的有两种:

特性 TPM(Trusted Platform Module) TCM(Trusted Cryptography Module)
标准组织 TCG(Trusted Computing Group) 中国国家密码管理局
密码算法 RSA、SHA-1/SHA-256、ECC SM2、SM3、SM4(国密算法)
核心功能 密钥生成、存储、度量、远程证明 同左,但算法为国密
应用场景 国际主流,Windows、Linux 原生支持 国内合规场景,政务、金融、关键基础设施
物理形态 独立芯片或集成到 CPU(如 Intel PTT) 独立芯片或 SoC 集成

避坑指南:我曾经遇到一个项目,客户要求用 TCM 做可信启动,但 BIOS 里只支持 TPM 2.0。结果折腾了两周才发现是固件不兼容。所以选型时一定要确认主板固件对 TPM/TCM 的支持情况,别等硬件到了才发现跑不起来。

1.3 信任根与信任链:信任的起点

信任根(Root of Trust)是整个可信计算的基石。它必须满足三个条件:

  • 不可篡改:物理上无法被修改(比如固化在芯片 ROM 中)
  • 不可绕过:系统启动必须经过它
  • 可度量:能够计算下一级代码的哈希值

信任链(Chain of Trust)就是从信任根开始,一级一级传递信任的过程。我画了一张图,你看一眼就明白了:

信任链传递流程 信任根(CRTM) Bootloader / BIOS 操作系统内核 应用程序 / 服务 每一级度量前一级的哈希值,并存入 TPM/TCM 的平台配置寄存器(PCR)

你看,从 CRTM(Core Root of Trust for Measurement)开始,到 Bootloader,再到 OS 内核,最后到应用层。每一级都要度量下一级的代码完整性,并把度量值存到 TPM 的 PCR 寄存器里。

注意:信任链一旦断裂,系统就不能继续启动。比如 Bootloader 的哈希值和预期不符,TPM 会拒绝释放密钥,系统直接停在那里。这不是 bug,是设计——宁可不开机,也不让被篡改的系统运行。

1.4 可信启动流程:一步一步来

说了这么多理论,咱们看看实际的可信启动是怎么跑的。我以一台支持 TPM 2.0 的 x86 服务器为例:

  1. 上电自检(Power-On):CPU 从固定的物理地址执行 CRTM 代码(固化在 BIOS ROM 中)。
  2. 度量 BIOS:CRTM 计算 BIOS 固件的哈希值,与 TPM 中存储的预期值比对。如果一致,将度量值扩展到 PCR[0]。
  3. 度量 Bootloader:BIOS 加载 Bootloader(如 GRUB)之前,先度量它的代码和配置。结果存入 PCR[1]。
  4. 度量 OS 内核:Bootloader 度量操作系统内核(vmlinuz)和 initramfs。结果存入 PCR[2]。
  5. 度量关键服务:内核启动后,度量关键系统服务(如 systemd、sshd)。结果存入 PCR[3] 及后续寄存器。
  6. 远程证明(可选):系统向远程验证服务器发送 PCR 值签名,证明自己「干净」。

关键点:PCR 寄存器只能扩展(Extend),不能重置(除非系统重启)。扩展操作是:PCR[n] = SHA256(PCR[n] || 新度量值)。这意味着度量顺序一旦确定,就无法伪造——你想插入一个恶意组件,哈希链就对不上了。

1.5 我在项目中踩过的坑

讲几个真实案例,你们以后遇到了能少走弯路:

  • PCR 选择错误:有一次我配置 GRUB 度量策略,把内核哈希写到了 PCR[4],但 BIOS 默认只校验 PCR[0-3]。结果度量了等于没度量。后来我养成了习惯——先查平台固件的 PCR 分配表。
  • TPM 被锁定:某次测试时连续输错授权密码,TPM 直接进入锁定状态,必须断电重启才能恢复。嗯,生产环境千万别这么玩。
  • 国密兼容性:用 TCM 做远程证明时,服务端不支持 SM2 签名。最后两边都得改代码。所以做国密方案前,先确认整个链路都支持。

1.6 小结:信任的起点

可信计算不是银弹,但它解决了「谁证明我干净」这个根本问题。从硬件信任根出发,通过 TPM/TCM 芯片逐级度量,最终形成一条完整的信任链。你想想看,如果没有这个机制,你怎么知道你的服务器没有被植入 rootkit?