「史上最全的 TCG 规范解读」TCG 规范架构概述(下)

news2024/12/22 19:51:34

 可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强不同计算机平台上计算环境的安全性。TCG 于 2003 年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance, TCPA)所开发的规范。现在的规范都不是最终稿,都还在不断的更新中,比如:TPM的规范就从原来的 v1.0 更新到 v1.2,现在还在不断的修订。

416f22625bff0de3a009fac07323686d.jpeg

修订


本规范在 TCG 文档路线图中位置


9348aebc1291441f86eed6d6f64a728c.png

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.

图4 ISO 15408 安全评估上下文

认证评估支持业主利益,帮助改进应对措施并识别到漏洞。TCG 通过几种方式实现这一点:

  • 通过建立计算资产的所有者,即平台。
  • 通过启用所有者对平台的控制。
  • 通过提供最小化和规避威胁的测量、存储和报告对策。
  • 通过要求可用于识别漏洞的评估。
  • 通过启用产品认证,从而将风险降至最低。

评估目标

图5 ISO 15408 评估环境保障

评估的目标是提高对可信赖的对策的保证,以降低受保护资产的风险。评估结果是一种对反措施进行保证评级的声明,保证是反措施的性质,对其正确操作有信心。

评估过程

TCG利用 ISO-15408(A.K.A.通用标准)标准评估计算系统,这些标准可作为评估人员的指南,它提供了通用术语、分类和评级使得评估结果可以被广泛的受众解释和理解。TCG 期望许多组织参与 TCG 产品的评估和认证,ISO-15408 在全球范围内被IT、IS 和政府采购机构广泛接受。

图6 ISO 15408 评估上下文流程图

认证

认证过程是对评估结果的独立检查,从而产生最终证书或批准,该证书通常是公开的。为了让认证

更有意义,必须由称职的评估人员进行评估,认证确定最终评级并提供评估证明。值得注意的是,认证过程是在应用安全标准时获得更大一致性的一种手段。

评审

评审是客户在确定哪种技术最能支持客户安全和安全目标时参与的过程。

获取安全或安保目标的安全政策、实践、指南和程序是特定于客户的,并影响产品采购决策。为了使认证成为有意义,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 主规范-设计原则

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/389672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】P4 Linux 权限 chmod chown

Linux 权限认知权限信息chmod 修改权限chown 修改用户与用户组认知权限信息 序号1:文件、文件夹权限控制信息; 权限控制信息一共有十位 第 1 位: - 表示文件,d 表示文件夹,l 表示软链接 第 2~4 位: 所属用…

JDK19下载、安装与测试的完整图文教程

一、下载JDK 1、官网获取:https://www.oracle.com/ 1.1 点击“Products”; 1.2 选择“Java”; 1.3 选择“Download Java”; 1.4 选择“Java downloads”,这里以最新版(JDK19)为例&#xff…

Python基础—文件操作(二)

Python基础—文件操作(二) CSV格式文件 逗号分隔值,以纯文本形式存储表格数据 由任意数目的记录组成,记录间以换行符分隔 每条记录由字段组成,字段间用逗号或制表符分隔 每条记录都有同样的字段序列 如有列名,位于文件第一行 每条…

【编程实践】代码之中有创意:“我一直认为工程师世界上最具创造性的工作之一”

代码之中有创意 “我一直认为工程师世界上最具创造性的工作之一”。 文章目录 代码之中有创意一、代码可以赋予创造力1.1 代码的创造力1.2 如何发挥代码的创造力二、有创意的代码可以提高工作效率2.1 代码创意可以提高工作效率2.2 如何利用代码创意来提高工作效率三、代码创意可…

【壹】嵌入式系统硬件基础

随手拍拍💁‍♂️📷 日期: 2023.2.28 地点: 杭州 介绍: 日子像旋转毒马🐎,在脑海里转不停🤯 🌲🌲🌲🌲🌲 往期回顾 🌲🌲&#x1f332…

【Java 类】001-访问修饰符、命名规范

【Java 类】001-访问修饰符、命名规范 文章目录【Java 类】001-访问修饰符、命名规范一、访问修饰符概述1、是什么2、作用作用问题3、访问修饰符有哪些4、作用对象二、访问修饰符使用演示1、类访问修饰符演示第一步:创建 Dog 类:public第二步&#xff1a…

画图说透 ZooKeeper如何保证数据一致性:选举和ZAB协议

1、zookeeper是什么? zookeeper能被各个牛逼的中间件项目中所依赖,已经说明了他的地位。一出手就是稳定的杀招。zookeeper是什么?官网中所说,zookeeper致力于开发和维护成为一个高度可靠的分布式协调器。 开局一张图,…

STM32MP157-Linux音频应用编程-简易语音助手

文章目录前言STM32MP157简易语音助手alsa-lib简介:移植alsa-lib库:libcurl库简介:移植libcurl库:API调用修改asrmain.c文件修改token.c文件录音文件IO打开音频文件硬件控制sysfs文件系统数据解析和控制多线程主循环实现效果及注意…

Hive与HBase的区别及应用场景

当数据量达到一定量级的时候,存储和统计计算查询都会遇到问题,今天了解一下Hive和Hbase的区别和应用场景。 一、定义 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能&am…

Umi使用百度地图服务

需求描述 需要在前端页面中使用地图定位功能,所以在前端umi项目中使用百度地图服务,由于umi项目默认没有入口的html文件,所以无法通过常规的在head中加入外链js的方式使用 百度ak zyqeLCzvQPCCNImRu9yRGOqWlEUicxxGreact使用百度api 链接:…

【Mybatis系列】Mybatis常见的分页方法以及源码理解

Mybatis-Plus的selectPage 引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency>添加分页插件 Configuration public class My…

ifm3dlib+Python实现摄像头点云数据保存

0. 起因&需求 现有一款摄像头 O3D303&#xff0c;通过网线将其连接到局域网后&#xff0c;同一局域网的电脑可以通过可视化软件查看到各项参数以及对应的点云图。 但是如果想定制化具体的需求&#xff0c;用官方的可视化软件无疑是不可取的。这时候就需要用到SDK&#xf…

【Java】JVM

一、介绍 1.什么是JVM? JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的机器&#xff0c;是通过在实际的计算机上仿真模拟各种功能实现的。JVM包含一套字节码指令集&#xff0c;一组寄存器&#xff0c;一个栈&#xff0c;一个垃圾回收堆和一个存储方法域。JVM屏…

面向对象设计模式:创建型模式之抽象工厂模式

一、抽象工厂模式&#xff0c;Abstract Factory Pattern 1.1 Definition 定义 抽象工厂模式是围绕一个抽象工厂&#xff08;其他工厂的工厂&#xff09;创建其他工厂的创建型模式。 1.2 Intent 意图 Provide an interface for creating families of related or dependent o…

【AutoSAR】【MCAL】Dio

一、结构 二、功能介绍 DIO&#xff08;数字输入输出&#xff09;驱动模块主要是对端口&#xff08;Port&#xff09;&#xff0c;通道&#xff08;Channel&#xff09;和通道组&#xff08;ChannelGroup&#xff09;进行读写操作。 通道&#xff08;Channel&#xff09;&…

Tomcat服务器配置以及问题解决方案

文章目录01 Tomcat简介02 Tomcat的安装03 Tomcat的使用启动Tomcat服务器 &#xff08;解决一闪而过&#xff09;测试 Tomcat 是否启动Tomcat 服务器的关闭04 Tomcat的配置配置端口控制台配置&#xff08;乱码解决&#xff09;部署工程到Tomcat中01 Tomcat简介 Tomcat是一款开源…

Android Compose——一个简单的Bilibili APP

Bilibili移动端APP简介依赖效果登录效果WebView自定义TobRow的Indicator大小首页推荐LazyGridView使用Paging3热门排行榜搜索模糊搜索富文本搜索结果视频详情合集信息Coroutines进行网络请求管理&#xff0c;避免回调地狱添加suspendwithContextGit项目链接末简介 此Demo采用A…

Motor-DK (MM32SPIN05PF, MM32SPIN06PF, MM32SPIN07PF)

输入电压范围&#xff1a;12V - 30V 使用 60V / 40A N-MOS 管 使用内建&#xff08;MM32SPIN2x&#xff09;/外挂&#xff08;MM32SPIN05 / MM32SPIN06 / MM32SPIN07&#xff09;GBW 6MHz 高速运放 x 4 MCU 使用 5V 供电 支持 48 / 64 Pin MM32SPIN 系列 MCU 支持无霍尔&#x…

LearnDash测验报告如何帮助改进您的课程

某一个场景。Pennywell 大学有一门课程“Introduction to Linear Algebra”。上学期进行了两次测验。20% 的学生在第一次测验中不及格&#xff0c;而 80% 在第二次测验中不及格。在进一步评估中&#xff0c;观察到第一次测验不及格的学生在第二次测验中也不及格。在第二次测验中…

基于Linux系统-搭建Java Web开发环境

目录 1. 安装JDK 2.安装MySQL数据库 3.安装Tomcat 4.访问Tomcat 1. 安装JDK 1.执行以下命令&#xff0c;查看yum源中JDK版本。 yum list java* 2.执行以下命令&#xff0c;使用yum安装JDK1.8。 yum -y install java-1.8.0-openjdk* 3.执行以下命令&#xff0c;查看是否安…