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》:

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

TPM查看

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

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

BIOS下可以开关TPM设备。

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

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

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

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

TPM访问

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

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

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

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

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

## This PCD indicates TPM base address.<BR><BR>
# @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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值