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启动信任链是这样的:
- CRTM(核心根信任度量):固化在BIOS中的一小段代码,是信任链的起点
- BIOS/UEFI固件:CRTM度量BIOS主代码,记录度量值到TPM
- Boot Loader:BIOS度量Boot Loader,记录度量值
- OS内核:Boot Loader度量OS内核,记录度量值
- 系统服务和应用:OS内核度量后续加载的模块
你想想看,如果中间任何一环被篡改,度量值就会和预期值不一样,系统就能检测到异常。我在一个工控项目里见过,攻击者替换了Boot Loader,但因为信任链完整,系统在启动时就报警了,避免了后续的灾难。
1.3.3 信任度量(Trust Measurement)
信任度量说白了就是“算哈希、存哈希、比哈希”。具体流程:
- 度量:对要加载的代码或配置计算SHA-256哈希值
- 存储:将哈希值扩展到TPM的平台配置寄存器(PCR)中
- 比对:将PCR中的值与预期的“黄金值”比对,判断是否可信
这里有个关键点:PCR的值是通过“扩展”操作生成的,不是简单的覆盖。扩展公式是:
PCR_new = SHA-256(PCR_old || 新度量值)
这样做的好处是,PCR的值记录了所有历史度量值的完整链条。你没法通过替换某个中间环节来伪造PCR值——因为后面的扩展依赖于前面的值。
重要提醒:信任度量只保证“代码没被改过”,不保证“代码没有漏洞”。我见过有人把可信计算和代码安全混为一谈,结果被攻击者利用合法代码的漏洞绕过了所有保护。记住,可信计算解决的是“完整性”问题,不是“安全性”问题。
1.4 知识体系总览
下面这张图,是我自己总结的可信计算知识体系。它把信任根、信任链、信任度量之间的关系画清楚了。
这张图我建议你保存下来。每次做可信启动配置时,对照着看,思路会清晰很多。我自己做项目时,就经常拿这张图跟团队对齐——先确认信任根是什么,再梳理信任链怎么走,最后设计度量策略。
1.5 本章小结
这一章我们聊了可信计算的核心思想。说白了,就是三件事:
- 信任根:一个你绝对信得过的起点(TPM)
- 信任链:从起点开始,一级一级验证下去
- 信任度量:每级都算哈希、存PCR、做比对
嗯,内容不多,但都是基础。后面的章节我们会深入每个环节,包括怎么配置策略、怎么处理度量值比对失败、怎么在真实环境中部署。到时候你会发现,今天讲的这些概念,每一个都会反复用到。