4、可信计算基础:可信根(Root of Trust)、信任链(Chain of Trust)、TPM/TCM规范、远程证明(Remote Attestation)核心概念
可信计算(Trusted Computing)是服务器安全架构的基石,其核心思想是“从信任的源头出发,逐级验证,构建一条不被破坏的信任传递路径”。在服务器CPU安全体系中,可信计算并非单一技术,而是一套涵盖硬件锚点、固件校验、系统度量、远程验证的完整闭环。本章将围绕可信根、信任链、TPM/TCM规范与远程证明四大核心概念展开,帮助读者建立从硬件可信锚点到云端验证的完整认知框架。
4.1 可信根(Root of Trust)——信任的硬件锚点
4.1.1 核心原理:为什么需要可信根
可信计算的根本问题在于:软件层面的校验无法自证清白。如果攻击者已经篡改了操作系统或BIOS,那么由这些被篡改的软件发起的自检结果就毫无意义。因此,必须存在一个物理上不可篡改、逻辑上不可绕过的硬件锚点,作为所有信任判断的起点。这个锚点就是可信根(Root of Trust, RoT)。在服务器CPU中,可信根通常由CPU内部的安全协处理器(如Intel的CSME、AMD的PSP)或独立的TPM芯片承担。
可信根在功能上分为三个子模块,三者协同工作:
- 度量根(RTM, Root of Trust for Measurement):负责执行首次度量动作,即对系统启动的第一段代码(如BIOS Boot Block)进行哈希计算。RTM必须保证自身是“干净的”,通常由CPU微码或ROM中的固件实现。
- 存储根(RTS, Root of Trust for Storage):负责安全存储度量值、密钥和证书。RTS必须能够抵抗物理攻击和总线嗅探,通常由TPM芯片内部的非易失性存储器(NVRAM)实现。
- 报告根(RTR, Root of Trust for Reporting):负责向外部实体(如远程验证服务器)提供可信的、经过签名的平台状态报告。RTR必须确保报告内容真实反映PCR寄存器的值,且不可被伪造。
4.1.2 判断方法:如何评估可信根的强度
在实际选型或安全审计中,可以从以下维度评估一个可信根方案的强度:
| 评估维度 | 强可信根特征 | 弱可信根特征 |
|---|---|---|
| 物理防篡改 | 芯片有主动屏蔽层、总线加密、防侧信道设计 | 仅依赖外部封装,无主动防护 |
| 密钥保护 | 私钥永不出芯片,支持直接匿名认证(DAA) | 私钥可被软件读取或导出 |
| 更新机制 | 支持经签名的固件更新,有版本回滚保护 | 固件可被降级或未签名更新 |
| 隔离性 | 与主CPU物理隔离或逻辑隔离(如TrustZone) | 与主CPU共享内存且无隔离 |
| 性能开销 | 硬件加速哈希和签名,不影响启动速度 | 依赖软件模拟,启动时间显著增加 |
4.1.3 实战场景:服务器启动时的可信根调用
以一台搭载Intel Xeon Scalable处理器和独立TPM 2.0芯片的服务器为例,其启动过程对可信根的调用如下:
- CPU上电后,微码(Microcode)首先执行,这是RTM的起点。微码对BIOS的第一个扇区(Boot Block)进行SHA-256哈希计算。
- 哈希结果通过LPC或SPI总线发送给TPM芯片,TPM将值扩展(Extend)到PCR[0]寄存器。
- BIOS Boot Block执行后,继续度量BIOS主固件,将结果扩展到PCR[1]。
- BIOS主固件度量Option ROM和Bootloader,结果扩展到PCR[2]、PCR[3]等。
- 操作系统内核加载时,内核度量自身和关键驱动,扩展到PCR[4]及以后。
整个过程,TPM芯片始终作为“旁观者”记录度量值,不干预执行流程。这种设计保证了即使某个环节被攻破,PCR值也会如实反映异常,为后续的远程证明提供依据。
4.2 信任链(Chain of Trust)——从锚点到系统的信任传递
4.2.1 核心原理:逐级度量与扩展
信任链解决的是“如何从可信根出发,建立对整个系统的信任”的问题。其核心机制是逐级度量(Measured Boot):每一级代码在获得执行权之前,先由上一级对其进行完整性度量,度量值记录到PCR寄存器中,然后才移交控制权。这种“先度量、后执行”的模式,确保了任何一级被篡改,都会在PCR值中留下痕迹。
信任链的传递遵循严格的顺序依赖:
信任链传递伪代码:
1. RTM (CPU微码) 度量 BIOS Boot Block
→ 哈希值 H1 扩展到 PCR[0]
→ 若 H1 与基准值一致,执行 Boot Block
2. Boot Block 度量 BIOS 主固件
→ 哈希值 H2 扩展到 PCR[1]
→ 若 H2 与基准值一致,执行 BIOS 主固件
3. BIOS 主固件度量 Option ROM / Bootloader
→ 哈希值 H3 扩展到 PCR[2]
→ 若 H3 与基准值一致,执行 Bootloader
4. Bootloader 度量 OS Kernel
→ 哈希值 H4 扩展到 PCR[3]
→ 若 H4 与基准值一致,执行 OS Kernel
5. 后续应用层度量由 OS 安全机制接管
这里需要特别理解PCR的扩展(Extend)操作:它不是简单的覆盖写,而是 PCR_new = SHA256(PCR_old || 新度量值)。这种链式哈希的特性使得PCR值记录了所有历史度量值的累积指纹,攻击者无法通过“回滚”到某个旧状态来伪造PCR值。
4.2.2 操作流程:构建一条完整的信任链
在实际服务器部署中,构建信任链需要以下步骤:
- 启用硬件RoT:在BIOS设置中开启TPM功能,并确保CPU的RTM(微码度量)未被禁用。
- 配置Secure Boot:在UEFI设置中启用Secure Boot,确保Bootloader和OS Kernel的签名被验证。
- 建立基准值库:在首次干净安装系统后,记录各PCR的基准值,并安全存储(如离线数据库或签名清单)。
- 启用完整性度量架构(IMA):在Linux内核中启用IMA,对可执行文件和关键配置进行运行时度量。
- 配置远程验证策略:设置验证服务器,定期或按需获取服务器的PCR值并进行比对。
4.2.3 案例拆解:一次启动失败的分析
背景:某云服务商在批量更新BIOS固件后,部分物理服务器无法正常启动,且无法通过远程管理卡进入系统。
初始现象:服务器电源指示灯正常,但网络不可达,管理卡日志显示“TPM PCR[0] mismatch”错误。
关键数据:
- 更新前PCR[0]基准值:
0x3A4F8C2B... - 更新后PCR[0]实际值:
0x7B1E9D45... - BIOS版本:从v2.1升级到v2.2
分析判断:PCR[0]度量的是BIOS Boot Block。固件升级后,Boot Block代码发生变化,导致哈希值改变。而服务器的信任链策略配置为“PCR值不匹配则拒绝启动”(严格模式),因此系统被锁定。
实际操作:
- 通过带外管理(如iLO/IDRAC)进入BIOS设置,临时关闭“TPM强制校验”选项。
- 正常启动系统,确认新固件运行稳定。
- 重新采集PCR[0]的新基准值,更新到验证服务器的基准值库中。
- 重新启用“TPM强制校验”,并验证系统可正常启动。
结果对比:恢复时间从预期的“每台2小时”缩短到“每台15分钟”。风险与代价:在关闭校验的窗口期内,服务器面临固件被篡改的风险,因此操作必须在隔离网络中进行。
复盘经验:固件升级必须与PCR基准值更新同步进行,建议在变更流程中加入“TPM基准值重采集”步骤。
4.3 TPM/TCM规范——可信计算的硬件载体
4.3.1 核心原理:TPM与TCM的架构对比
TPM(Trusted Platform Module)是国际主流的可信计算芯片规范,由TCG(Trusted Computing Group)制定,当前主流版本为TPM 2.0。TCM(Trusted Cryptography Module)是中国制定的可信计算芯片规范,由国密局主导,其密码算法基于SM2/SM3/SM4国密算法。两者在架构上有相似之处,但在算法支持和合规要求上存在显著差异。
| 对比维度 | TPM 2.0 | TCM |
|---|---|---|
| 制定组织 | TCG(国际) | 中国国家密码管理局 |
| 核心算法 | RSA/ECC/SHA-256/HMAC | SM2/SM3/SM4 |
| 密钥类型 | EK、SRK、Attestation Key | EK、SMK(存储主密钥) |
| PCR数量 | 至少24个(TPM2.0) | 至少16个 |
| 授权机制 | Password/PIN/PCR Policy | Password/国密算法签名 |
| 合规要求 | 国际通用,无国内合规要求 | 满足等保2.0和密评要求 |
| 生态支持 | Windows/Linux原生支持 | 需安装国密驱动和中间件 |
TPM 2.0相比1.2版本,在算法灵活性、授权策略、密钥层次等方面有大幅改进。其核心组件包括:
- PCR(Platform Configuration Register):至少24个,用于存储度量值。
- EK(Endorsement Key):出厂时写入的不可迁移密钥,代表芯片身份。
- SRK(Storage Root Key):保护其他密钥的根密钥,存储在芯片内部。
- Quote引擎:对PCR值进行签名的功能模块,用于远程证明。
- NVRAM:安全存储区,用于保存证书、策略等数据。
4.3.2 操作流程:TPM的初始化与使用
在服务器上启用TPM的典型流程如下:
# 1. 检查TPM状态(Linux)
cat /sys/class/tpm/tpm0/device/description
# 输出示例:TPM 2.0 Device
# 2. 安装tpm2-tools工具包
apt install tpm2-tools
# 3. 获取TPM随机数(验证基本功能)
tpm2_getrandom 16 --hex
# 4. 创建主密钥(SRK)
tpm2_createprimary -C e -c primary.ctx
# 5. 创建子密钥
tpm2_create -C primary.ctx -u key.pub -r key.priv
# 6. 加载密钥
tpm2_load -C primary.ctx -u key.pub -r key.priv -c key.ctx
# 7. 使用密钥签名
echo "test data" | tpm2_sign -c key.ctx -g sha256 -o sig.bin
4.3.3 实战场景:TCM在等保合规中的应用
在中国境内的政务云或金融云场景中,等保2.0三级及以上要求使用国密算法。某政务云平台在等保测评中,被要求“可信计算基使用国密算法”。该平台原使用TPM 1.2芯片,无法满足要求。
改造方案:
- 硬件层面:将服务器主板上的TPM芯片更换为TCM芯片(如国民技术Z32H330TC)。
- 驱动层面:安装TCM驱动和国密中间件(如三未信安、江南天安的产品)。
- 应用层面:将LUKS磁盘加密的密钥保护从TPM切换到TCM,使用SM4算法加密。
- 远程证明:将验证服务器的签名算法从RSA/SHA-256切换为SM2/SM3。
结果:顺利通过等保测评,且性能开销增加不到5%。复盘经验:TCM的生态不如TPM成熟,部分开源工具(如tpm2-tools)不直接支持TCM,需要厂商提供配套工具链。
4.4 远程证明(Remote Attestation)——向外部验证平台可信状态
4.4.1 核心原理:挑战-响应机制
远程证明解决的是“如何让远程的验证方相信本平台处于可信状态”的问题。其核心是挑战-响应(Challenge-Response)机制:验证方发送一个随机数(Nonce),被验证方使用TPM的Quote引擎对当前PCR值进行签名,并将签名结果返回。验证方通过验证签名和比对PCR基准值,判断平台是否可信。
完整的远程证明流程包含以下步骤:
- 挑战阶段:验证方生成随机数Nonce,发送给被验证方。
- 收集阶段:被验证方读取当前PCR值(如PCR[0]-PCR[7])。
- 签名阶段:TPM使用Attestation Key(AK)对“PCR值 + Nonce”进行签名,生成Quote数据。
- 响应阶段:被验证方将Quote数据、PCR值、AK证书发送给验证方。
- 验证阶段:验证方执行以下检查:
- 验证AK证书的合法性(是否由可信CA签发);
- 使用AK公钥验证Quote签名;
- 检查Nonce是否与挑战时一致(防重放攻击);
- 将PCR值与基准值库比对,判断是否匹配。
4.4.2 判断方法:远程证明的信任模型
远程证明的信任模型分为三种,适用于不同场景:
| 信任模型 | 验证方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| 直接匿名证明(DAA) | 使用DAA签名,不暴露EK身份 | 公有云、隐私敏感场景 | 保护平台隐私 | 实现复杂,性能开销大 |
| Privacy CA | 通过第三方CA签发AK证书 | 企业内网、私有云 | 实现简单,兼容性好 | 依赖CA可用性 |
| 直接验证 | 验证方直接信任EK | 小规模、高信任环境 | 无需额外CA | 扩展性差,EK暴露风险 |
4.4.3 案例拆解:零信任架构中的远程证明实践
背景:某大型互联网公司实施零信任架构,要求所有接入内部网络的服务器必须通过远程证明,否则拒绝接入。
初始目标:在30分钟内完成1000台服务器的远程证明改造。
关键输入:
- 服务器配置:Intel Xeon Gold 6248R,TPM 2.0芯片
- 操作系统:Ubuntu 20.04 LTS
- 验证服务器:独立的Raspberry Pi 4B(用于测试),生产环境使用高可用集群
实施步骤:
- 在每台服务器上安装
tpm2-tools和tpm2-tss引擎。 - 编写脚本采集PCR基准值,并上传到验证服务器。
- 配置
systemd服务,在启动时自动执行远程证明客户端。 - 验证服务器部署
libtpm和自定义验证逻辑,支持批量验证。 - 在交换机上配置802.1X,只有通过远程证明的服务器才能获得网络访问权限。
结果对比:
| 指标 | 改造前 | 改造后 |
|---|---|---|
| 服务器接入时间 | 即时接入 | 平均3.2秒(含证明时间) |
| 异常检测率 | 依赖传统IDS,滞后 | 实时检测,篡改即拒绝接入 |
| 运维复杂度 | 低 | 需维护基准值库,定期更新 |
风险与代价:远程证明增加了启动时间(约3秒),且基准值库需要随系统更新而同步更新。如果基准值库维护不及时,会导致大量服务器被误拒绝。复盘经验:建议将基准值库的更新纳入CI/CD流程,与系统镜像更新同步。
4.5 总结与常见误区
可信计算基础是服务器CPU安全架构的“信任起点”,其核心逻辑可以概括为:硬件锚定、逐级度量、密码签名、远程验证。在实际部署中,需要特别注意以下常见误区:
- 误区一:认为TPM芯片等于安全。TPM只是提供密码学功能的硬件,如果上层软件不调用其度量功能,或者验证方不检查PCR值,TPM就只是一个“昂贵的随机数发生器”。
- 误区二:忽视基准值库的维护。远程证明的强度完全取决于基准值库的准确性。系统更新、固件升级、驱动变更都会导致PCR值变化,必须同步更新基准值库。
- 误区三:信任链越长越好。过长的信任链会增加启动失败的风险和性能开销。应根据业务安全需求,合理选择信任链的