TPM简介

什么是TPM

TPM的全称是Trust Platform Module,可信平台模块。

当我们谈到TPM的时候,我们通常指的是实现了TPM标准的芯片,这类芯片可以是物理实体的(discrete TPM,简称dTPM),也可以是其它芯片模拟的(比如Intel的TXE技术中包含模拟的TPM,称为fTPM)。

重点实际上在于实现了TPM标准

TPM标准是一个叫做Trusted Computing Group(TCG)的组织制定的,目前(2019年)最新的版本是TPM2.0。该标准的目的是“从跨平台和操作环境的硬件和软件两方面,制定可信赖电脑相关标准和规范”。

关于TCG,可以参考https://trustedcomputinggroup.org/。

TPM的作用

TPM提供了一系列的接口,软件可以操作这些接口,来完成某些目的,这些目的通常跟安全有关,比如TPM可以用于:

  1. 安全启动;
  2. 敏感信息存取;
  3. 加解密;

等等。

这些功能的实现需要软硬件的支持,软件的支持当然是指软件要实现什么功能(需要注意上述的功能大多由软件完成,TPM只做支持),硬件的支持主要就是TPM芯片提供的那些接口,在《TPM-Rev-2.0-Part-3-Commands-01.38.pdf》中有列出完整的TPM2.0支持的接口。

比如说下图来自《TPM-Rev-2.0-Part-3-Commands-01.38.pdf》:

TPM简介_第1张图片

这里就提到了加解密,计算HASH,生成随机数等等接口。

TPM查看

如何确定自己的电脑上是否有TPM芯片?

首先可以在BIOS下查看,如下是某电脑(X1C)BIOS下Setup里面的TPM设置:

TPM简介_第2张图片

BIOS下可以开关TPM设备。

进入系统之后也可以查看设备是否存在或者使能:

TPM简介_第3张图片

Windows下可以直接通过PowerShell对TPM进行简单的操作:

TPM简介_第4张图片

具体支持的指令可以在https://docs.microsoft.com/zh-cn/powershell/module/trustedplatformmodule/?view=win10-ps找到(这里的图并不是在同一个平台上截取的,所以可能显示有差异)。

除了Windows,在Linux系统下也可以查看TPM,并通过tss2工具来操作TPM:

TPM简介_第5张图片

TPM访问

以x86平台为例,实际的物理TPM芯片是挂在SPI或者LPC下面的。

通常平台会通过一个固定的地址来访问TPM,具体的地址是什么,可以参考手册。

如果已经在Windows下面,那也可以直接查看:

TPM简介_第6张图片

直接通过MMIO来访问这个地址,如果读到的值是全F,则表示不存在该设备,否则就是存在。

关于这个地址,在UEFI的代码中也有定义:

## This PCD indicates TPM base address.

# @Prompt TPM device address. gEfiSecurityPkgTokenSpaceGuid.PcdTpmBaseAddress|0xFED40000|UINT64|0x00010012

具体的判断TPM是否存在的代码如下:

/**
  Check whether TPM PTP register exist.

  @param[in] Reg  Pointer to PTP register.

  @retval    TRUE    TPM PTP exists.
  @retval    FALSE   TPM PTP is not found.
**/
BOOLEAN
Tpm2IsPtpPresence (
  IN VOID *Reg
  )
{
  UINT8                             RegRead;

  RegRead = MmioRead8 ((UINTN)Reg);
  if (RegRead == 0xFF) {
    //
    // No TPM chip
    //
    return FALSE;
  }
  return TRUE;
}

与TPM交互

有了具体的地址,就可以跟TPM交互了,下面简单介绍与TPM交互的方式。

待续未完......

参考文档

https://docs.microsoft.com/en-us/windows/security/information-protection/tpm/tpm-recommendations

http://courses.cs.vt.edu/cs5204/fall10-kafura-BB/Papers/TPM/Intro-TPM-slides-2.pdf

https://trustedcomputinggroup.org/resource/tpm-library-specification/

https://docs.microsoft.com/zh-cn/windows/security/information-protection/tpm/trusted-platform-module-top-node

你可能感兴趣的:(杂七杂八,TPM)