修订历史:
2023.3.4
2023.6.18
可信计算组织(Trusted Computing Group, TCG)是一个非盈利的工业标准组织,它的宗旨是加强不同计算机平台上计算环境的安全性。TCG 于 2003 年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance, TCPA)所开发的规范。现在的规范都不是最终稿,都还在不断的更新中,比如:TPM 的规范就从原来的 v1.0 更新到 v1.2,现在还在不断的修订。
修订
本规范在 TCG 文档路线图中位置
1. 范围和读者
本文提供了 TCG 的目标和架构描述,定义了 TPM 的使用场景、合规程序以及生产制造、部署、维护的相关影响。
这也是了解 TCG 规范必读的文档。
2. TCG 是什么
历史
可信计算组织(TCG)是一个非盈利的行业标准组织,旨在增强不同计算机平台中计算环境的安全性。TCG 成立 2003 年春季,采用了可信计算平台联盟(TCPA)制定的规范。TCG 技术的显著特点可以说是将“信任根”植入计算机平台。
使命
通过平台、软件和技术供应商的协作提供增强的基于硬件和操作系统的可信计算平台,增强客户的信任域。
目标
可信计算组织( TCG )发布了一系列的标准规范来对架构、功能和接口进行定义,作为各种不同计算平台实现的基线。此外,TCG 发布描述特定平台实现的规范,如个人计算机、个人数字助理( PDA )、蜂窝电话和其他计算设备。
采用 TCG 规范的平台能够在功能和可靠性方面满足更高的可信保障要求,TCG 也发布了评估标准和平台特定配置轮廓,作为采用 TCG 技术设备的评估标杆。
为了实现更高的可信性,除了设计开发可信的平台设备,还需要保证设备部署后维护过程的操作完整性;同时,TCG 也推荐了一些最佳实践和流程,来维护设备部署后的可信性。
3. TCG 的使用场景
- 场景1:资产管理,防止数据丢失、非授权访问;
- 场景2:电子商务,实现商客互信;
- 场景3:安全监控和应急响应,防止网络安全攻击。
- 场景4:风险管理:防止有意、无意数据暴露;
4. TCG 的架构

4.1 可信平台基本特性
可信是指设备能够按照预期的行为来实现特定目的,一个可信平台应该至少提供 3 个基本特性:
- 保护能力
- 完整性度量
- 完整性报告
特性1:保护能力
保护能力指的是一套独立访问屏蔽区域的命令;屏蔽区域就是能够安全的操作敏感数据的内存、寄存器等地方。
TPM 实现了保护能力和屏蔽区域,来保护和报告完整性度量值,这就是 TPM 的平台配置寄存器集 PCRs。
当然,TPM 的保护能力还包括一些额外的安全功能:比如密钥管理、随机数生成器、数据封装以及其他的必要的保护能力。
所以,保护能力其实可以认为是访问 PCRs 的一组命令集合以及其背后的安全功能。
证明
虽然规范里把证明用单独一个小节来讲,但其本质上还是属于保护能力特性中的内容,只是证明这块有些复杂,有必要单独进行澄清。
证明就是证实信息准确性的过程;外部实体可以要求保护区域、保护能力以及信任根的证明,平台可以对那些影响平台完整性(可信性)的平台特性描述提供证明,所有形式的证明都依赖证明实体证据的可靠性。
可以从多个维度理解证明,这段比较绕,所以附上原文:
1)TPM 证明是对 TPM 已知数据提供证明的操作,这个操作是通过对 TPM 特定内部数据进行数字签名完成,签名密钥是证明身份密钥 AIK。
Attestation by the TPM is an operation that provides proof of data known to the TPM. This is done by digitally signing specific internal TPM data using an attestation identity key (AIK). The acceptance and validity of both the integrity measurements and the AIK itself are determined by a verifier. The AIK is obtained using either the Privacy CA or via a trusted attestation protocol.
2)平台(资质)证明是平台提供资质证明的操作;通过这个证明,可以相信该平台能够如实的报告完整性度量,这个证明主要通过平台相关的凭证(证书)来实现;平台证明的目的是给平台颁发(签发)AIK 凭证(证书)。
Attestation to the platform is an operation that provides proof that a platform can be trusted to report integrity measurements; performed using the set or subset of the credentials associated with the platform; used to issue an AIK credential.
3)平台(完整性)证明是对平台完整性度量值提供证明的操作,通常就是指用TPM 中的 AIK 对 一些 PCRs 进行数字签名过程。
Attestation of the platform is an operation that provides proof of a set of the platform’s integrity measurements. This is done by digitally signing a set of PCRs using an AIK in the TPM.
4)平台(身份)证明能够为平台声称的身份提供证据,声称的身份不一定和用户或用户行为相关。平台认证是通过任何不可迁移签名密钥进行的,认证密钥是通过 AIK 签发的,具有可证明的附加语义。正因为一个 TPM 可以有无限个不可迁移密钥,所以平台可以拥有无数可以被认证的身份。
Authentication of the platform provides evidence of a claimed platform identity. The claimed identity may or may not be related to a user or any actions performed by the user. Platform Authentication is performed using any non-migratable signing key. Certified keys (i.e. signed by an AIK) have the added semantic of being attestable. Since there are an unlimited number of non-migratable keys associated with the TPM, there are an unlimited number of identities that can be authenticated.
特性2、3:完整性的度量、[记录]、报告
完整性度量是获得影响平台完整性的各项特性的度量值,并将这些度量值的摘要存储在 TPM 的 PCRs 中的过程;
一个度量的起点称作度量信任根 RTM,从常见的上电自测等启动状态开始的度量称为静态度量信任根 SRTM;从不可信状态转换为可信状态的度量称为动态度量信任根 DRTM。
SRTM 能够最好的实现可信安全,但是 SRTM 会严重影响系统的易用性(更新),所以 DRTM 更常见,也可以认为是 SRTM 的产业界落地版本。

在完整性度量和报告之间的完整性日志记录步骤是可选的,这个步骤会将完整性度量值保存到日志中以备将来使用。当然,TCG 推荐采用这个日志记录步骤来提升效率,否则,在解析 PCR 数值时,每次都需要重新计算度量值。
完整性报告是证实 PCRs 里记录的完整性度量值的过程。
完整性度量、记录、报告的设计哲学是一个平台可以进入任何一种状态,包括不安全的、非预期的状态,但是不允许平台谎称其在或者不在某种状态中,可以通过独立的过程来评估平台的完整性状态,来决定采取适当的响应。比如服务器可以通过对平台设备进行完整性评估,决定平台可以访问那些服务。
4.2 可信平台
信任根 RoT,即信任锚点,是可信系统中无条件相信的部件,这部分的行为本身无法被检测到,完整的信任根集合是能够描述影响系统可信性特性的最小基础函数集合;
通常,可信平台包含 3 个信任根:可信度量根 RTM、可信存储根 RTS、可信报告根 RTR。
- RTM 是一个内在可靠的进行完整性度量的计算引擎;通常,普通的计算平台引擎由可信度量根代码 CRTM (之前有翻译为 Core,现在倾向于范围为 Code)控制,当 CRTM 充当 RTM 时, CRTM 就是平台执行的一些指令/代码,RTM 也是信任传递的信任根。
- RTS 也是一个计算引擎,它能够维护各种完整性度量摘要值以及它们的顺序;
- RTR 是能够可靠报告 RTS 保存的信息的计算引擎;
每个信任根都可以在没有外部监督的情况下正确的工作,相信信任根可以通过多种途径实现,不过这少不了合格专家的技术评估。
4.2.1 可信平台构成要素 TBB
TBB 指的是 RoT 中除去屏蔽区域和保护能力的部分,通常这包括 RTM 的代码、TPM 初始化函数(复位等),TBB 是平台相关的。图 3 展示了一个 TBB 的例子,绿线部分就是 TBB,在这里 TBB 包括 CRTM 、CRTM 存储到母版的连接、TPM 到母版的连接以及确定这些物理存在的机制。

我们说 TBB 是可信的,通常指的是 TBB 能够遵循预期的行为方式,不会违背可信平台的目标。
4.2.2 信任边界
TBB 和 各个信任根共同构成了信任边界,在这个信任边界里,度量、存储、报告能够以最小的配置实现。更复杂的系统可能要求度量值来自 CRTM 和其他可选的 ROM 代码,这时就需要其他 ROM 必须也要建立信任,比如在交出控制权前对 ROM code 进行独立(虽然 ROM 不可改,但是有可能被物理替换)。TBB 应该以特定的的方式建立,在建立方式能够避免设备中其他度量代码无意的将 TBB 边界扩展到信任关系没有建立过的连接上。
4.2.3 信任传递
信任传递是信任根对第二组功能函数进行可信度描述的过程;基于这些描述,相关方可以决定其对第二组功能函数的信任,如果相关方觉得第二组功能函数的信任等级可以接受,那么信任边界就从信任根扩展到了包含第二组功能函数。在这种情况下,该过程可以继续迭代,即第二组功能函数可以给第三组功能函数给予可信度描述等。信任传递常用于对平台特性提供可信度描述,也可以用来证明不可迁移密钥确实是不可迁移的。

正如图 4 展示,系统上的信任传递是从静态信任根开始逐渐拓展到信任根之外的代码,每次拓展信任边界时,都会首先对代码进行度量,然后再执行控制转换。
附录
//take ownership of tpm
TSS_RESULT rc=Tspi_TPM_TakeOwnership(a_hTpm, a_hSrk, NULL_HKEY);
if(rc!=TSS_SUCCESS)
{
fprintf(stderr,"Tspi_TPM_TakeOwnership:%s ", Trspi_Error_String(rc));
goto out_close;
}
printf("result is %d ",result);
return result;
//create key
SS_RESULT result = Tspi_Key_CreateKey(hKey,hSrk,NULL_HOBJECT);
if(result!=TSS_SUCCESS)
{
fprintf(stderr,"Tspi_Key_CreateKey: %s ", Trspi_Error_String(rc));
goto out_close;
}
printf("create key success! ");
//data encryption
TSS_RESULT rc=Tspi_Data_Bind(hEncdata,hKey, strlen(testCipher),(unsigned char*)testCipher);
if(result !=TSS_SUCCESS)
{
fprintf(stderr,"Tspi_Data_Bind: %s ",Trspi_Error_String(rc));
goto out_close;
}
//data decryption
TSS_RESULT rc=Tspi_Data_Unbind(hEncdata,hKey, &unsealedDataLength, &unsealedData)
if(rc!=TSS_SUCCESS)
{
fprintf(stderr,"Tspi_Data_Unbind: %s ",Trspi_Error_String(rc));
goto out_close;
}
参考
术语
TCG,可信计算组织;
TPM,可信平台模块;
可信度量,主体通过密码学方法对客体进行度量的方法;
皮格马利翁效应心理学指出,赞美、赞同能够产生奇迹,越具体,效果越好~
“收藏夹吃灰”是学“器”练“术”非常聪明的方法,帮助我们避免日常低效的勤奋~