1. 可信计算概述:信任根、信任链与信任度量

各位同学,咱们今天聊聊可信计算。说实话,这词儿在安全圈里被念叨了二十多年,但真正搞明白的人不多。我刚开始接触这个领域时,也觉得它玄乎——什么“可信”、“信任链”,听着像哲学概念。直到后来在项目里栽过跟头,才明白这东西有多实在。

简单说,可信计算就是一套机制,确保你的系统从开机那一刻起,每一步都是“可信”的。什么叫可信?不是说你信任这台机器,而是机器能证明它自己是按照预期运行的,没被篡改过。

1.1 可信计算的定义

可信计算(Trusted Computing,TC)的定义,不同组织给过不同版本。我个人比较认可TCG(Trusted Computing Group)的说法:如果一个实体的行为总是以预期的方式和预期的目标进行,那它就是可信的。

嗯,这里要注意,可信不等于安全。可信是说“我按规矩办事”,至于规矩本身有没有漏洞,那是另一回事。我在一个金融项目里遇到过,客户非要强调“可信系统就是绝对安全的系统”,结果花了大半年解释两者区别。

核心要点:可信计算关注的是行为的可预测性和可验证性,而不是绝对的安全。它提供的是“证据”,而不是“保证”。

1.2 发展历程:从概念到落地

可信计算的发展,我把它分成三个阶段:

阶段 时间 关键事件 我的观察
萌芽期 1990s TCG前身TCPA成立,提出可信平台模块概念 那时候文档写得像天书,我啃了三个月才看懂
标准化期 2000s TPM 1.2规范发布,微软、Intel开始支持 TPM芯片开始出现在商用主板上,但没人用
普及期 2010s至今 TPM 2.0成为国际标准,Windows强制要求 现在几乎每台PC都有TPM,但配置率依然低

为什么TPM普及这么慢?说白了,早期硬件贵、驱动烂、应用场景不明确。我记得2012年帮一家银行做项目,采购了一批带TPM的服务器,结果发现BIOS里默认是关闭的,还得手动去开。你说尴尬不尴尬?

1.3 核心思想:信任根、信任链、信任度量

可信计算的三大核心概念,我习惯用一个比喻来解释:信任根是“起点”,信任链是“路径”,信任度量是“检查点”。

1.3.1 信任根(Root of Trust)

信任根是整个可信体系的基石。它必须满足三个条件:

  • 不可伪造:物理上无法篡改
  • 不可绕过:系统启动必须经过它
  • 行为可预测:它的行为是固定的、可验证的

最常见的信任根就是TPM芯片。它内部有一组被称为“信任根”的组件:

  • 度量信任根(RTM):通常是CPU,负责执行度量操作
  • 存储信任根(RTS):TPM内部的寄存器,存储度量值
  • 报告信任根(RTR):TPM的签名能力,用于报告度量结果

避坑指南:我曾经在项目里犯过一个低级错误——以为只要装了TPM芯片,系统就自动可信了。实际上,信任根只是起点,你得把整个启动流程串起来才行。就像你有了把好锁,但门是纸糊的,那也没用。

1.3.2 信任链(Chain of Trust)

信任链是从信任根开始,一级一级传递信任的过程。它的核心逻辑是:前一级度量后一级,后一级的度量值被前一级记录。

典型的PC启动信任链是这样的:

  1. CRTM(核心根信任度量):固化在BIOS中的一小段代码,是信任链的起点
  2. BIOS/UEFI固件:CRTM度量BIOS主代码,记录度量值到TPM
  3. Boot Loader:BIOS度量Boot Loader,记录度量值
  4. OS内核:Boot Loader度量OS内核,记录度量值
  5. 系统服务和应用:OS内核度量后续加载的模块

你想想看,如果中间任何一环被篡改,度量值就会和预期值不一样,系统就能检测到异常。我在一个工控项目里见过,攻击者替换了Boot Loader,但因为信任链完整,系统在启动时就报警了,避免了后续的灾难。

1.3.3 信任度量(Trust Measurement)

信任度量说白了就是“算哈希、存哈希、比哈希”。具体流程:

  • 度量:对要加载的代码或配置计算SHA-256哈希值
  • 存储:将哈希值扩展到TPM的平台配置寄存器(PCR)中
  • 比对:将PCR中的值与预期的“黄金值”比对,判断是否可信

这里有个关键点:PCR的值是通过“扩展”操作生成的,不是简单的覆盖。扩展公式是:

PCR_new = SHA-256(PCR_old || 新度量值)

这样做的好处是,PCR的值记录了所有历史度量值的完整链条。你没法通过替换某个中间环节来伪造PCR值——因为后面的扩展依赖于前面的值。

重要提醒:信任度量只保证“代码没被改过”,不保证“代码没有漏洞”。我见过有人把可信计算和代码安全混为一谈,结果被攻击者利用合法代码的漏洞绕过了所有保护。记住,可信计算解决的是“完整性”问题,不是“安全性”问题。

1.4 知识体系总览

下面这张图,是我自己总结的可信计算知识体系。它把信任根、信任链、信任度量之间的关系画清楚了。

可信计算核心知识体系 信任根 (Root of Trust) 信任链 (Chain of Trust) 信任度量 (Measurement) RTM (度量) RTS (存储) RTR (报告) CRTM BIOS Boot Loader OS内核 计算哈希 扩展PCR 比对黄金值 核心逻辑 1. 信任根提供不可篡改的起点(TPM芯片) 2. 信任链将信任从起点逐级传递到整个系统 3. 信任度量在每个环节计算哈希并记录到PCR 4. 最终比对PCR值与预期值,判断系统是否可信

这张图我建议你保存下来。每次做可信启动配置时,对照着看,思路会清晰很多。我自己做项目时,就经常拿这张图跟团队对齐——先确认信任根是什么,再梳理信任链怎么走,最后设计度量策略。

1.5 本章小结

这一章我们聊了可信计算的核心思想。说白了,就是三件事:

  • 信任根:一个你绝对信得过的起点(TPM)
  • 信任链:从起点开始,一级一级验证下去
  • 信任度量:每级都算哈希、存PCR、做比对

嗯,内容不多,但都是基础。后面的章节我们会深入每个环节,包括怎么配置策略、怎么处理度量值比对失败、怎么在真实环境中部署。到时候你会发现,今天讲的这些概念,每一个都会反复用到。