可信平台模块 (TPM) 版本 1.2 与 2.0 以及针脚数

ron*_*ron 6 tpm

我试图了解我拥有的主板上的 TPM 接头,它是 Asrock “H170m Pro4” 它TPMS1在主板上有一个接头,它有 9x2 针,其中 1 个缺失。

在网上搜索时,我看到一个 14-1 针 TPM 模块,其他参考 20 针。 这是怎么回事?

这是我正在尝试为其获取 TPM 芯片的特定主板的制造商站点的链接。您可以从这里下载手册:https : //www.asrock.com/mb/Intel/H170M%20Pro4/

H170M Pro4.pdf第 6 页和第 7 页,它显示了TPMS1接头位置,在第 22 页,它说明了17 针 TPMS1以及每个针的作用

  1. PCICLK 底行最左边
  2. FRAME 底行向右
  3. PCIRST#
  4. LAD3
  5. +3v
  6. LAD0
  7. 没有针
  8. +3VSB
  9. GND 最右下排
  10. GND 顶排最左边
  11. SMB_CLK_MAIN
  12. SMB_DATA_MAIN
  13. LAD2
  14. LAD1
  15. 地线
  16. S_WRDWN# 这是在空引脚 #7 上方
  17. 串行请求
  18. GND 顶排最右边

让我担心和困惑的是TPMS1在他们的网站https://www.asrock.com/mb/spec/card.asp?Model=TPM-S%20Module 上使用和这里 指的是这 3 件事:

  • TPM-S 模块 (V 1.2)
  • TPM-s 模块 (V 2.0)
  • TPM2-S 模块 (V 2.0)

任何人都可以理解这一点吗?

Bri*_*ard 5

TL;DR:这是一堆垃圾,没有好的答案。

由于没有好的答案,我至少会围绕这个问题解决一些细微差别:有什么交易

我很抱歉,因为这不是您想要的问题的答案(我相信)(即基于TPM的承诺......即从制造商那里购买我想要的设备,我更喜欢基于他们的安全立场和已实现的功能,主板的引脚是什么,以便我可以将我想要的 TPM 连接到主板上)。

唉,我可以解决这个问题,但(如前所述)这将做更多的工作来解决元问题:“有什么交易?”


TPM 背景

为了让未来的读者了解这篇文章的内容,让我们介绍一下基础知识:

首先,可信平台模块(又名 TPM)是可信计算组创建和维护的规范的实现。

TPM 的目的是充当辅助计算设备,以完全独立于主处理器执行某些操作。主处理器和 TPM 之间的通信通常通过低引脚数(LPC) 接口或(最近的)串行外设接口¹ (SPI) 进行。

规范 1.2 和 2.0 有两个主要版本。2.0 规范是(或多或少是从头开始重写²)。

在 2.0 规范中有四个定义的区域:

  1. 建筑学:

TPM 2.0 第 1 部分包含对 TPM 的属性、功能和方法的叙述性描述。除非另有说明,否则此叙述性描述是提供信息的。TPM 2.0 第 1 部分包含对本规范使用的一些数据操作例程的描述。这些例程的规范行为在 TPM 2.0 第 3 部分和 TPM 2.0 第 4 部分中的 C 代码中。此 TPM 2.0 第 1 部分中描述的算法和过程可以通过参考 TPM 2.0 第 2 部分、TPM 2.0 第 3 部分或 TPM 来规范化2.0 第 4 部分。2. 结构 -

TPM 2.0 第 2 部分包含 TPM 接口的常量、数据类型、结构和联合的规范描述。除非另有说明:(1) TPM 2.0 Part 2 中的所有表格和 C 代码都是规范性的,并且 (2) TPM 2.0 Part 2 中的规范性内容优先于本规范的任何其他部分。

  1. 命令 -

TPM 2.0 第 3 部分包含:(1) 命令的规范描述,(2) 描述命令和响应格式的表格,以及 (3) 说明 TPM 执行的操作的 C 代码。在 TPM 2.0 第 3 部分中,命令和响应表具有最高优先级,其次是 C 代码,然后是命令的叙述性描述。TPM 2.0 第 3 部分从属于 TPM 2.0 第 2 部分。TPM 不需要使用 TPM 2.0 第 3 部分中的 C 代码实现。但是,任何实现都应提供等效或在大多数情况下与在 TPM 接口或通过评估证明。4. 配套例程——

TPM 2.0 第 4 部分提供了 C 代码,描述了 TPM 2.0 第 3 部分中命令代码使用的算法和方法。 TPM 2.0 第 4 部分中的代码扩充了第 2 部分和第 3 部分以提供 TPM 的完整描述,包括执行命令操作的代码。任何 TPM 2.0 第 4 部分代码都可以替换为在与 TPM 2.0 第 3 部分中的操作代码接口时提供类似结果的代码。未包含在附件中的 TPM 2.0 第 4 部分代码的行为是规范性的,如在与 TPM 的接口处观察到的2.0 第 3 部分代码。附件中的代码是为了完整性而提供的,即允许规范的完整实现。

从心理上讲,我更喜欢将这些与功能性 TPM³ 的四个主要方面并列:

在将使用TPM的主 CPU 上运行的软件(例如 Bitlocker、OpenSwan 等)

希望使用 TPM 实现的功能的平台(这通常是制造商开发或许可的知识产权)。通常,这更像是主 CPU 和 TPM 本身之间的接口

集成电路提供一种实现了所需的硬件,以满足在TPM 2.0第1部分的结构的嵌入式系统(例如,Optiga来自英飞凌或从类似设备的芯片器件系统的线ST新唐

最后,在集成电路上运行固件。截至 2020 年,这通常是“TSS”(TPM2 软件堆栈)。这可以是自由/开源(参考实现TrouSerS以及TPM2-TSS和 Microsoft 的TSS.MSR 的情况)或专有实现。

那么交易是什么?

::sigh:: 在最好的情况下,我们只剩下伪标准。对于 TPM 1.2 设备,许多供应商实现了 20 针(19 针和 1 个键控针)或 14 针(13 针和 1 个键控针)连接器。如何实现这一点的选择取决于“平台”供应商(例如 MSI、Asus、SuperMicro 等)和 TPM 硬件的实现者(参见上面的列表)。

随着 TPM 2.0 的实施,这种选择水平得以保持,此外,随着平台的安全性变得越来越重要,并且有越来越多的技术人员对如何使用 TPM具有经验(和意见),因此出现了越来越多的变化.

我们来看看可信计算组织发布的文档“ TPM 2.0:简介”。在这份文件中,作者呼吁:

TPM 需求表

因此,TPM 可以完全集成且不可现场维修,可通过可插拔排针或 100% 软件访问。

现在至于14 针变体的针脚输出,我能够找到许多具有常见针脚输出的图像(因此我将其称为伪标准),例如:

来自 DuckDuckGo 的随机 LPC 引脚输出

MSI CSM B85M JTPM1 引脚

当然,再说一遍……我什至在这里的原因是试图找出基于英飞凌 9670 的 SuperMicro AOM-TPM-9670 的引脚输出……带有 10 针头。

我对10 针实现感到困惑,直到我在 TPM 2.0 实现规范的第一部分的第 288 页上看到了这一点:

TPM 可能有一个或多个输入或输出逻辑状态的 I/O 引脚。TPM2_NV_Read 和 TPM2_NV_Write 可用于使用正常访问控制访问 GPIO 的值。特定于平台的规范定义了 NV 索引到单个通用 I/O (GPIO) 的映射。TPM 是否为指定的 GPIO 保留任何 NV 存储是平台特定的。

这...据我所知,不同的引脚数(在一些罕见的情况下是引脚布局)是提供给平台实现者的这种“选择”的一个功能,允许诸如二次篡改证据或与其他人的带外交互硬件设备。

注释/引用

¹:英特尔开发了一种 SPI 变体(“增强型串行外设接口”或“eSPI”),作为 LPC 的继任者

²:摘自“ TPM 2.0 实用指南”(第 1 章:TPM 的历史):

据说,最好的设计来自建筑师进行设计,然后在了解了他们将遇到的所有问题后,丢弃第一个设计并重新开始第二个设计。TPM 2.0 为架构师提供了这样做的机会。但是,他们仍然必须确保 TPM 1.2 设计支持的软件开发机会不会因新架构而丢失。

Arthur W.、Challener D.、Goldman K. (2015) TPM 的历史。在:TPM 2.0 实用指南。Apress, 伯克利, CA。https://doi.org/10.1007/978-1-4302-6584-9_1

³:这个例子在“虚拟”TPM 的情况下会失效,比如 QEMU 和一些手机和其他嵌入式设备上实现的那些。有关虚拟 TPM 的更多信息,请查看来自第 15 届 USENIX 安全研讨会的这篇论文:vTPM:虚拟化可信平台模块