Trusted Computing Platform Moudle

TPM介绍

Posted by PYQ on January 7, 2022

Ⅰ. 何为TPM

在微软的最新版本Windows 11中,要求用户电脑必须满足TPM 2.0才能升级Windows 11。这使得不太为人所知的TPM模块一下进入了大家的视野,并引起广泛讨论。那么什么是TPM呢?微软为何一定要求用户电脑必须满足TPM 2.0版本才能升级Winodws 11呢?

TPM即Trust Platform Module,可信平台模块,标准由TCG(可信赖计算组织,Trusted Computing Group)提出,目前最新版本为2.0。符合TPM标准的芯片首先必须具有产生加解密密钥的功能,此外还必须能够进行高速的资料加密和解密,以及充当保护BIOS和操作系统不被修改的辅助处理器。

换句话说TPM芯片是一颗专门用于加密解密、隐私保护等功能的独立芯片。这个芯片简单来说就是一个硬件电路制成的保险柜,里面锁着用户的密钥、凭证、生物识别特征(面容/指纹)等重要数据。它的权限管理一般是独立于操作系统的,也就是说,就算黑客往用户的电脑上装了一个木马,控制了所有权限,如果不知道用户的PIN码或是面容/指纹的话,也还是没法解锁这个保险柜,拿不到里面锁着的身份凭证。

在移动设备上,这类技术早就已经是所有厂商的标配了:

  • 2005年,ARM就开始在 Cortex-A8等处理器上搭载基于分时隔离的TrustZone拓展,成为了早期苹果阵营和安卓阵营标配的安全技术。2013年,苹果全线产品开始切换到自家设计的Security Enclave Processor。

  • 2016年,华为从麒麟960芯片开始使用自家的inSE安全方案。

  • 2018年,Google也发行了自己的Titan M安全芯片,搭载于Pixel系列手机上。

而PC端的话,这方面的进展却有点落后:

  • Intel从2013年开始搭载PTT技术。

  • 而AMD到目前为止似乎也只有软件模拟的fTPM。

但不管是PTT还是fTPM,很多厂商默认都是不开启这些安全功能的。另外,即使搭载了TPM,也有很多厂商给用户搭载的是落后的TPM 1.2版本,这个版本目前存在很多安全问题,比如在众多散列算法中,1.2版本只支持了濒临报废的SHA1,导致它的HMAC实现也不太安全。非对称加密方面,1.2版本仍然接受已经废弃的RSA 1024,却不支持ECC相关算法。

微软目前之所以强制要求Windows 11上TPM 2.0,其实主要的原因应该在于PC端真的缺少一个强势的领头厂商去推广这个安全标准,这才导致大量的用户仍在用快报废的老掉牙算法保护自己的隐私。如果将TPM 2.0作为硬性标准的话,一方面能有效促使PC厂商改善目前的惨状,另一方面也不算是个太激进的策略。

不得不感慨大厂对某种技术或标准的推动效应。

此外我国不支持在国外生产和安装的TPM 2.0芯片(防止后门),我国也在推行TCM标准。

Ⅱ. TPM原理

TPM的可信基础来源于可信根(Root of trust),可信根是无条件被信任的,系统并不检测可信根的行为,因此可信根是否真正值得信任,是系统可信的关键。TPM是一个含有密码运算部件和存储部件的小型系统,也可以作为另一个芯片的一部分出现,比如以太网接口。

TPM安全芯片包含了分别实现RSA、SHA等算法硬件处理引擎,它既是密钥生成器,又是密钥管理器件。TPM通过提供密钥管理和配置管理等特性,与配套的应用软件一起,主要用于完成计算平台的可靠性认证、防止未经授权的软件修改、用户身份认证、数字签名以及全面加密硬盘和可擦写等功能。TPM安装在输入/输出控制器,即连接外部设备与内存的总线中,让TPM可以监视每一个从外存装载入内存的软件。由于TPM处于硬件层,所以只要用户选择了打开TCG功能,任何行为都无法逃避监视。

img

通过TPM安全芯片对计算机系统提供保护的方法为:

  1. 在主板上设置TPM安全芯片
  2. 启动信息处理设备时,由TPM芯片验证当前底层固件的完整性,如正确则完成正常的系统初始化后执行步骤3,否则停止启动该信息处理设备
  3. 由底层固件验证当前操作系统的完整性,如正确则正常运行操作系统,否则停止装入操作系统

此方法是通过在信息处理设备的启动过程中对BIOS、底层固件、操作系统依次进行完整性验证,从而保证信息处理设备的安全启动之后,再利用TPM芯片内置的加密模块生成并管理系统中各种密钥,对应用模块进行加解密,以保证计算机等信息设备中应用模块的安全。

TPM安全保护要点如下:

  • 传统的系统中,密钥和授权信息等安全信息只能存储在磁盘中,这样非常不安全。而在带TPM安全芯片的系统中,一些关键的key是存在TPM芯片内部,这时攻击者只有攻破TPM才有可能攻破系统的防护,攻破一块芯片比一块硬盘成本和难度可大得多。TPM成为系统可信的最低层次,它提供了整个系统可信的基础。
  • TPM主要目的是用来加解密数据(seal/unseal),这些经TPM加密的数据只有这块TPM芯片才能解密,从而达到了数据与此TPM芯片绑定来保护数据的目的,离了加密的这块TPM芯片这份资料是无法解密的。
  • 但是通常TPM芯片是一个很低速的芯片,所以不会用来加解密大量的数据。通常只是用来加解密少量数据(比如其他软件层加解密算法的key,可以统称这些key经TPM加密保护的数据为TPM密钥)。例如整个硬盘数据加密,并不是直接用TPM加密,而是用一个key去软件加密,而这个key是用TPM再加密保护起来。如果要解密硬盘数据,只能先把该TPM密钥用这个TPM芯片解密得到初始的key,才能解密硬盘数据。如此即使别人偷了硬盘也没用。
  • TPM功能的核心是签注密钥(endorsement key),这是在生产过程中内置到TPM硬件的加密密钥,每个TPM是唯一的。这个签注密钥的私钥部分绝不会出现在TPM外部或暴露给其他组件、软件、程序或个人。它是TPM的基础,也可以认为是数据与此TPM芯片绑定的原因。
  • TPM有密码和ownership的概念,take ownership的时候你会设置一个密码,之后就是这块TPM的owner,只有知道这块密码才能用它做一系列的操作,如前面提到的加解密。你可以clear ownership,clear之后别人才可以take ownership,但是在这之前这块TPM只属于你(的密码)。

Ⅲ. 查看本机的TPM

Windows+R调出运行,输入tpm.msc即可查看本机TPM模块。

image-20220107131239681

参考文献

CSDN fgupupup的博客

知乎 furious的回答

知乎 Ghou1L5的回答