规范定义的安全组件

可信平台模块(Trusted Platform Module,TPM)是可信计算组织(TCG)定义的系统组件,具有与所报告的宿主系统分离的状态,通过规定的命令接口交互。它不是任何安全芯片的泛称,也不是整部计算机的可信计算基。其作用是在明确的保护边界内保存状态、处理密码运算,并为外部判断平台状态提供依据。

TPM可保护用于签名、解密或封存数据的密钥及授权条件,但“受TPM保护”不表示所有对象始终物理存放在芯片内部。TPM 2.0的存储层级允许以父密钥保护对象的机密性与完整性,将其加密形式保存在模块之外,使用时再按规则装入。对象的属性和策略决定能否迁移、导出或执行特定操作。

参考:[1] [2]

度量、寄存器与证明

平台配置寄存器(PCR)保存的是度量摘要,不是完整固件或启动文件。度量根及后续启动组件负责计算和提交摘要;扩展操作把旧PCR值与新摘要连接后再次散列,使结果关联于输入内容及顺序。除规范允许的重置外,PCR并非供普通软件随意写入期望值的记录格。

证明把这些状态同密码身份联系起来。TPM2_Quote可对选定PCR的摘要形成签名证明,验证者还需核对签名密钥的可信依据、对应PCR及可接受的状态。调用者提供的新鲜随机数可绑定本次请求,防止把旧证明直接重放。一个有效签名只能证明特定来源报告了这些值,不能自行说明这些值代表没有漏洞的系统。

参考:[1] [2]

按启动状态释放秘密

封存是为秘密附加释放条件。例如,系统可把磁盘加密所需的秘密封存到一个对象,并要求相关PCR满足预设启动状态。正常启动时,固件和引导程序的度量形成预期值,授权策略满足后才允许取出秘密;引导组件被替换后,PCR结果改变,同一条件就可能不再成立。这里TPM控制的是秘密的访问,并不是替操作系统加密整个磁盘。

合法升级同样可能改变启动度量,因此部署必须考虑策略更新与恢复路径,不能把“变化”简单等同于“攻击”。TPM 2.0的策略还可组合PCR条件与其他授权要求。封存主要约束本地对象的使用,证明则向另一方报告状态,二者可以配合,但不是同一操作。

参考:[1] [2]

实现形式与系统边界

独立TPM使用单独芯片封装;集成TPM把专用硬件放入含其他组件的封装;固件TPM在受保护的执行环境中实现功能。它们的物理攻击面、隔离机制及认证条件并不相同。普通宿主进程中的软件仿真即使提供类似命令,也不能仅凭接口兼容就获得独立硬件的保护,其状态安全仍取决于宿主及隔离机制。

本文机制以TPM 2.0为主。相较1.2,2.0扩展了密码算法选择与授权体系,但实际支持仍应核对具体实现和平台配置。TPM通常被动接收命令,若度量根不可信、重要组件未被度量,或软件在秘密释放后遭到攻击,模块本身不能补齐这些缺口。可信启动链、操作系统隔离和密钥生命周期管理必须共同构成安全设计。

参考:[1] [3]