1. 可信计算基础:概念、规范与信任链

各位同学,咱们今天聊聊可信计算。说实话,这个概念听起来挺玄乎的,但说白了就一句话——让计算机只干你让它干的事,不被篡改。

我最早接触可信计算是在做一款金融安全网关的时候。客户要求设备启动时必须验证固件完整性,否则不允许接入生产网络。那时候我才意识到,光靠软件层面的安全措施,根本防不住物理攻击和底层篡改。嗯,这就是可信计算要解决的问题。

1.1 什么是可信计算?

可信计算(Trusted Computing)不是指“这个计算机值得信任”,而是指行为可预测、可度量、可验证。它的核心目标有三个:

  • 身份可信:证明你是你,不是冒牌货
  • 行为可信:执行的代码没有被篡改
  • 环境可信:运行环境没有被污染

你想想看,如果一台服务器的BIOS被人刷了恶意固件,操作系统层面装再多杀毒软件也没用。因为攻击者已经在比你更底层的地方等着了。

核心观点:可信计算不是“绝对安全”,而是“可验证的安全”。它提供的是证据,而不是承诺。

1.2 TPM 与 TCM 规范

聊可信计算,绕不开两个硬件规范:TPM 和 TCM。

对比项 TPM(Trusted Platform Module) TCM(Trusted Cryptography Module)
制定组织 TCG(可信计算组织) 中国国家密码管理局
密码算法 RSA、SHA-1/256、ECC SM2、SM3、SM4(国密算法)
硬件形态 独立芯片或CPU内置 独立芯片或CPU内置
核心功能 密钥存储、平台度量、远程证明 密钥存储、平台度量、远程证明
国内应用 国际设备、部分国产服务器 党政军、关键基础设施

我在项目中遇到过一个问题:客户采购的国产服务器同时支持TPM和TCM,但固件默认只启用了TPM。结果等保测评时发现国密算法没启用,又得返工刷固件。所以我的建议是——做国产化项目,优先确认TCM是否启用。

个人经验:TPM 2.0 和 TCM 在功能上基本对标,但算法体系不同。如果你的系统需要过国密认证,别犹豫,直接上TCM。我曾经见过一个项目因为混用算法导致远程证明失败,排查了整整三天。

1.3 信任根与信任链

信任不能凭空产生,必须有一个绝对可信的起点。这个起点就叫信任根(Root of Trust)。

典型的信任根包括:

  • 度量信任根(RTM):通常是CPU或BIOS中的一段不可修改的代码
  • 存储信任根(RTS):TPM/TCM中的防篡改存储区域
  • 报告信任根(RTR):TPM/TCM中的签名引擎,用于报告度量结果

信任链的传递逻辑是这样的:

  1. 信任根度量下一级代码的哈希值
  2. 将哈希值扩展到TPM的PCR(平台配置寄存器)中
  3. 如果度量值匹配,控制权移交给下一级
  4. 下一级继续度量它的下一级
  5. 直到操作系统和应用程序

说白了,就是一级验证一级,环环相扣。任何一级被篡改,链条就会断裂。

避坑指南:我曾经在调试一个可信启动问题时,发现PCR值始终不对。查了两天才发现,BIOS升级后信任根代码变了,但度量策略没同步更新。记住——信任根一旦变更,所有依赖它的度量结果都要重新校准。

1.4 可信启动核心思想

可信启动(Trusted Boot)是信任链在启动过程中的具体实现。它的核心思想就四个字:度量、存储、报告。

  • 度量:在代码执行前计算它的哈希值
  • 存储:将哈希值扩展到PCR,形成不可逆的度量链
  • 报告:向验证方提供PCR值,证明启动过程未被篡改

我画了一张图,帮你理解整个流程:

可信启动信任链传递流程图 可信启动信任链传递流程 信任根(RTM) 度量 BIOS/UEFI 度量 Bootloader 度量 OS 内核 度量 应用/服务 关键说明 1. 每一级度量前一级 2. 度量值扩展到PCR 3. 匹配则移交控制权 4. 不匹配则中断启动 5. PCR值不可逆 6. 远程证明时上报 7. 信任根不可篡改 8. 硬件保护度量过程 9. 支持静默启动验证 10. 兼容TPM/TCM

看到这张图,你应该能理解为什么可信启动被称为“链式信任”了。每一级都在保护下一级,而信任根就是整条链子的锚点。

我的建议:在实际部署时,不要只依赖硬件信任根。我习惯在BIOS层面再加一道软件校验——用TPM/TCM的NVRAM存储一个自定义的度量白名单。这样即使信任根代码有漏洞,攻击者也无法绕过白名单校验。

1.5 为什么可信启动如此重要?

你可能觉得,现在操作系统都有安全启动(Secure Boot)了,为什么还要搞可信启动?

原因很简单:Secure Boot 只验证签名,不验证完整性。它只能保证代码来自合法厂商,但无法保证代码没有被篡改。而可信启动通过哈希度量,能检测出任何比特级别的修改。

我举个例子:

  • Secure Boot:检查这个驱动是不是微软签名的 → 是 → 放行
  • 可信启动:计算这个驱动的哈希值 → 和PCR中的期望值对比 → 一致才放行

你想想看,如果攻击者拿到了合法的签名证书,Secure Boot 就形同虚设。但可信启动的PCR值存储在TPM/TCM硬件中,攻击者无法伪造。

注意:可信启动不是万能的。它只能保证启动过程的完整性,无法防御运行时的攻击。我曾经见过一个案例,攻击者绕过了可信启动,在系统运行后通过DMA攻击篡改了内存中的内核代码。所以,可信启动只是防御体系的第一环,不是全部。

1.6 本章小结

咱们这一章把可信计算的基础概念捋了一遍。记住几个关键点:

  • 可信计算的核心是可验证,不是绝对安全
  • TPM 和 TCM 是硬件基础,选型时注意算法兼容性
  • 信任根是整条链子的起点,必须物理防篡改
  • 信任链传递的核心是“度量-存储-报告”
  • 可信启动比 Secure Boot 更严格,因为它度量的是内容,不只是签名