可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强不同计算机平台上计算环境的安全性。TCG 于 2003 年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance, TCPA)所开发的规范。现在的规范都不是最终稿,都还在不断的更新中,比如:TPM的规范就从原来的 v1.0 更新到 v1.2,现在还在不断的修订。
修订
本规范在 TCG 文档路线图中位置
4.2.4 完整性度量
度量内核会生成一系列的度量事件,一个度量事件包含两类数据:
- 被度量数值:用来表示程序代码或数据
- 度量摘要值,被度量数值的哈希值
度量内核会依次扫描这些数据并生成消息摘要值,这些摘要值是机器操作状态的快照。被测量数据和度量摘要会独立存放。度量摘要值会存储到 TPM 里,这涉及到了 RTR 和 RTS 的使用。被度量数据由度量内核决定放在哪里,实际上这些数据没必要存储,需要时重新生成即可。
度量值描述了被度量组件的属性、特性,至于度量域的词法、语法以及详细程度、度量输出值的格式由度量内核决定,只要能够满足度量事件消费者的需求即可。度量内核可以决定度量数据的格式划分,平台相关的规范包含额外的平台配置要求、表示形式以及其消费者是谁。
存储度量日志 SML 包含了一系列相关的度量值,每个序列共享通用的度量摘要值(所有度量事件生成一个摘要值),即新的测量数据和之前的事件摘要值扩展,重新生成新的摘要值。扩展哈希保证了所有度量值及其顺序都能够很好的由哈希值保护。 TPM 中的一组平台控制寄存器 PCR 用来记录这些摘要值,这些值在 TPM 重启后会被重置。
度量事件的验证方需要重建这个度量值,并和 PCR 值比较即可。 TCG 没有规定 SML 内容的格式,只是建议采用类似 XML 这样的标记语言,最终还是由平台相关的规范来定义(比如 PC向的平台规范)。
SML 有可能会变得很大,所有 SML 不要求 TPM 对其进行保护,不过 SML 在收到 DOS 攻击时,实现者应该能够重新复制或者生成这些日志。
4.2.5 完整性报告
软件报告根 RTR 有两个功能:
- 提供保护区域存储完整性度量值
- 基于可信平台的各种身份来证明存储数据的真实性
PCR 可以在易失、非易失存储中实现,不过必须能够抵抗软件攻击,也应该实施一定措施来防止物理篡改,完整性报告由 身份证明密钥 AIK 签名来验证 PCR 中数值的真实性。
TPM 负责生成并管理 AIK,TPM 可以由多个 AIK,当平台拥有者担心系统存串通问题事使用不同的 AIK 来保护隐私。
TPM 出厂时嵌入了一把密钥:背书/签注密钥(EK),EK 用来签发 AIK 来以建立平台所有者的过程。平台所有者可以创建存储根密钥,存储根密钥用来包装其他 TPM 密钥。
TCG 凭证
TCG 定义了 5 种类型的凭证,每种类型用来提供执行特定操作所必须的信息,凭证采用 ASN.1 表示,这个借用了公钥基础设施中的元素,凭证类型包括:
- 背书或 EK 凭证
- 符合性凭证
- 平台凭证
- 验证凭证
- 身份或 AIK 凭证
1. 背书凭证
背书凭证由生成背书密钥 EK 方颁发,EK 是在制作过程中生成的,即 TPM 制造商会生成 EK。不过,EK 可以在发给终端用户前的任意点生成,只要 TPM 制造商声明 EK 已经正常创建并嵌入到可用的 TPM 中。
EK密钥对在客户拿到平台后生成的话,密钥生成的条件可能会影响背书的提供。
背书凭证包含的信息有:
- TPM 制造商名称
- TPM 零件号
- TPM 版本或阶段
- EK 公钥
虽然 EK 公钥是公开的,但因为其和 TPM 一一绑定并会对平台进行扩展,所以属于敏感隐私。TCG 预期每个 TPM 需要有一个 EK 凭证。
2. 符合性凭证
这些证书由具有足够可信度的任何人发布,以评估TPM或包含TPM的平台。这些评估可以由平台制造商、供应商或独立实体来进行。这个符合性凭证表明评估方根据评估指南同意可信构建元素TBB 的设计和实现。通过签发凭证,评估者可以证明评估结果,这些会被用于后期的检查。TCG 通过定义有意义的评估标准和准则来促进评估。
评估方可以像一个平台签发多个符合性凭证,一个是给 TPM 的,其他是签给各个可信构成元素 TBB 组件的。
符合性凭证可能包含以下信息:
- 评估方名称
- 平台制造商名称
- 平台型号
- 平台版本(如果有的话)
- TPM 制造商名称
- TPM 型号
- TPM 版本号或阶段
符合性凭证不包含任何唯一识别任何平台特定的信息。
TCG设想每个平台模型可能存在多个一致性证书,但同一品牌和型号的多个平台只需要一组证书。
3. 平台凭证
平台凭证由平台制造商、供应商或者任何具有足够信用的相关方颁发,平台凭证能够唯一识别平台的制造商并描述平台属性。平台凭证会引用 TPM 背书凭证以及相关的符合性凭证。这些引用由引用凭证的消息签名构成。平台凭证可以被看做是隐私敏感信息,这个凭证和特定平台相关,而不是和一类平台相关。
平台凭证包含如下信息:
- 平台制造商名称
- 平台型号
- 平台版本(如果适用)
- 背书凭证
- 符合性凭证
平台凭证根据背书凭证证明平台包含一个 TPM。TCG 建议每个平台实例只有一个平台凭证。
4. 验证(资格)凭证
TCG 建议可测量组件(软硬件)能够在功能测试后能够生成其度量值,形成对应的凭证。当然,这只是对那些能够对安全造成威胁的组件。这些度量值需要在安全环境下生成,并形成签名文档,即验证凭证,在运行时进行度量值比较。
以下一些组件通常需要验证证书:
- 视频适配器
- 磁盘存储适配器
- 通信控制器/网络适配器
- 处理器
- 键盘和鼠标
- 软件
验证凭证由验证实体颁发,任何愿意并有能力度量、证明这些度量值的实体都可以视作验证实体。通常,组件制作商产生这些值的最佳选择。组件描述中的任何一部分可能成为信任决策的原料。然而,验证凭证的候选组件可能会造成安全威胁。
组件描述至少包含如下元素:
- 验证实体名称
- 组件制造商名称
- 组件型号
- 组件版本或阶段
- 度量值
- 组件能力(比如不可改,这个是可选的)
一个型号中的一组组件可以颁布一份凭证,也可以颁发多个凭证。
组件更新、升级流程由供应商自定义,比如如何使原来的验证凭证无效等。
5. 身份证明凭证
证明身份凭证(身份证)是用来证明 AIK 私钥的凭证,由 AIK 公钥和其他签发者认为有用的信息组成,证明凭证是由可信服务方颁发并能验证各种凭证同时保证客户端的隐私条款。
通过签发证明身份凭证,签发者能够证明 TPM 的真实性,证明 TPM 的一些事实。证明的目的是 TPM 拥有 AIK 并且这个 AIK 绑定了有效的背书凭证、符合性凭证、平台凭证。受信方进一步保证了其遵守的隐私保护满足用户期望,这些隐私包括在注册过程中暴漏的个人隐私数据。
证明身份凭证参考其他凭证如下:
证明身份凭证包含了一个TPM 制造商和型号的引用,如下图中 C,没有引用隐私敏感的 EK
证明身份凭证同时包含了平台制造商和型号如图 D,值得注意的是这个引用并不是引用平台凭证本身,而是引用平台凭证中信息不敏感的信息
最后,证明身份凭证包含一个指向 TPM 和平台符合性的条目,如图 E
挑战者可以使用该信息以及证书中的其他信息,通过认证协议信任平台。
TPM 通信端点
当考虑系统之间的信息交换时,必须识别通信的端点。端点的组成和组成和通信协议对系统的整体安全性同等重要。TCG设计者主张端点至少由保护协议数据的非对称密钥、密钥存储和处理组成。
传统基于非对称密码的消息交换只能使用公钥对其进行加密。此外,还可以过使用私钥签名防止消息篡改。密钥才是通信的终点,不正确的管理密钥会导致安全性的降低。此外,不正确配置的端点也可能导致失去安全性。TPM通过提供了密钥管理和配置管理功能(例如受保护的存储、测量和报告)。
这些功能可以结合起来“密封”密钥和平台配置,从而定义端点变得更强。
TCG定义了四类受保护的消息交换;绑定 Binding、签名 Signing、密封绑定(Sealed-Binding)和密封签名 Sealed-Signing。
1. 绑定 Binding
装订就是传统意义上的公钥加密,也就是说发送者使用公钥对发送的消息加密,消息只能由接收者的私钥解密来还原出来。当私钥是由 TPM 管理的不可迁移密钥时,即只有这个 TPM 能够使用这个密钥,也就是说这个消息是由这把不可迁移密钥的公钥加密的,从而将其“绑定”到了一个特定的 TPM 上。
对于那些可以在 TPM 之间迁移的密钥来讲,绑定就失去其意义了。
2. 签名
签名也是一个老生常谈,使用一个密钥对消息生成签名,和这个消息联系起来。 TPM 会对其管理的一些密钥标识成只签名密钥,即这些密钥只能用于计算数据的哈希并对其加密。因此,他们不能被认为是加密密钥。
3. 密封
密封相对绑定更进一步,密封的消息会被发送者绑定到一系列平台度量值,平台度量值指明了允许解密时的平台配置状态。密封动作将加密消息和一系列的 PCR 寄存器数值以及不可迁移非对称密钥联系起来。
密封消息创建时会选取一些 PCR 寄存器数值并由非对称密钥加密,用于消息解密的对称密钥也一同被加密,只有拥有非对称解密密钥的 TPM 才能尝试解密对称密钥,只有相应的 PCR 寄存器值和指定值匹配时才能解密消息。
密封是 TPM 一个强大的特性。它保证了只有平台处在特定配置中时才能对消息进行恢复。
4. 密封签名
上面是把消息解密和 PCR 数值联系起来,密封签名就是把消息签名和 PCR 寄存器值联系起来。
TCG 安全评估模型
TCG 意识到实现可信计算不仅仅需要这些技术标准,还需要一个能够确保这些标准被正确应用的过程支持。本章节就 TCG 为促进标准的正确应用而采取的方法展开了讨论,采取了一个 3 要素概念框架,即:评估时向审查人员揭示了开发和制造的过程和产物,审查人员提供评估报告说明产品满足客户既定的目标,这个评估能够很好的说明产品符合了 TCG 标准,而鉴定允许客户将经认证的产品纳入其计算环境,并实现认证需要要求的策略。
评估上下文
For evaluation to be meaningful, the right features must be evaluated. Figure 5:a shows the general context of security which motivates the class of features chosen by TCG for definition and standardization. The model captures the objectives of two classes of activity, Owners and Threat Agents. It is evident that the interests’ of each are contradictory.
认证评估支持业主利益,帮助改进应对措施并识别到漏洞。TCG 通过几种方式实现这一点:
- 通过建立计算资产的所有者,即平台。
- 通过启用所有者对平台的控制。
- 通过提供最小化和规避威胁的测量、存储和报告对策。
- 通过要求可用于识别漏洞的评估。
- 通过启用产品认证,从而将风险降至最低。
评估目标
评估的目标是提高对可信赖的对策的保证,以降低受保护资产的风险。评估结果是一种对反措施进行保证评级的声明,保证是反措施的性质,对其正确操作有信心。
评估过程
TCG利用 ISO-15408(A.K.A.通用标准)标准评估计算系统,这些标准可作为评估人员的指南,它提供了通用术语、分类和评级使得评估结果可以被广泛的受众解释和理解。TCG 期望许多组织参与 TCG 产品的评估和认证,ISO-15408 在全球范围内被IT、IS 和政府采购机构广泛接受。
认证
认证过程是对评估结果的独立检查,从而产生最终证书或批准,该证书通常是公开的。为了让认证
更有意义,必须由称职的评估人员进行评估,认证确定最终评级并提供评估证明。值得注意的是,认证过程是在应用安全标准时获得更大一致性的一种手段。
评审
评审是客户在确定哪种技术最能支持客户安全和安全目标时参与的过程。
获取安全或安保目标的安全政策、实践、指南和程序是特定于客户的,并影响产品采购决策。为了使认证成为有意义,TPM和TBB评估必须由可信的认证机构进行。安全策略应定义受信任的人和责任。
TCG 规范合规
虽然ISO-15408评估过程将执行许多TCG定义的标准,但它不能替代符合性标准。TCG 参与了TCG 标准的符合标准,这些规范将在功能上进行合规性和完整性测试。
TPM 制造和支持实现
本节强调了与TPM设备的制造、部署和维护相关的关键含义。这些可以通过仔细阅读本文件和其他 TCG 文件来收集,但为了方便起见,这里包含了一些描述。
- 防篡改封装
- 现场升级
- 国际密码算法进出口
- 密钥管理基础设施
附录
//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标准规范下载
术语
TCG,可信计算组织;
TPM,可信平台模块;
可信度量,主体通过密码学方法对客体进行度量的方法;
皮格马利翁效应心理学指出,赞美、赞同能够产生奇迹,越具体,效果越好~
“收藏夹吃灰”是学“器”练“术”非常聪明的方法,帮助我们避免日常低效的勤奋~
下一篇 「TCG 规范解读」TCG 主规范-设计原则