简述 Brief Introduction
TPM内部功能模块示意图:
引述 Trusted Platform Module Technology Overview (Windows) | Microsoft Learn:
Trusted Platform Module (TPM) technology is designed to provide hardware-based, security-related functions. A TPM chip is a secure crypto-processor that is designed to carry out cryptographic operations. The chip includes multiple physical security mechanisms to make it tamper-resistant, and malicious software is unable to tamper with the security functions of the TPM. Some of the key advantages of using TPM technology are that you can:
- Generate, store, and limit the use of cryptographic keys.
- Use TPM technology for platform device authentication by using the TPM’s unique RSA key, which is burned into it.
- Help ensure platform integrity by taking and storing security measurements.
Trusted Platform Module简称TPM,该技术旨在为计算机设备提供基于硬件的安全相关的功能。TPM芯片是一种安全的协处理器,用于执行密码学相关操作。TPM芯片包含了多重物理防护措施,以防止被暴力破解和篡改,同时恶意软件无法篡改芯片的安全功能。列举一些使用TPM技术的优势:
1. 生成和保存秘钥,同时限制秘钥的使用
2. 使用TPM芯片内部烧录的独一无二的RSA秘钥对设备进行认证操作
3. 使用度量操作,并通过获取和保存度量值来保证平台完整性
引述 TPM 2.0 A Brief Introduction:
The TPM standard defines a hardware root of trust(HRoT) widely accepted as more secure than software that can be more easily breached by attackers.
ATTRIBUTES OF THE TPM INCLUDE:
TPM标准定义了一个基于硬件的根信任机制,其因比更容易被黑客攻破的基于软件的根信任机制更加安全而被广泛接受。
TPM拥有以下属性:
■ Support for bulk (symmetric) encryption in the platform 支持对称批量数据加密运算
■ High quality random numbers 高可信随机数生成
■ Cryptographic services 密码学服务
■ A protected persistent store for small amounts of data, sticky- bits, monotonic counters and extendible registers 存储小批量数据的受保护非易失存储器,粘结位,单向计数器以及
可延伸寄存器
■ A protected pseudo-persistent store for unlimited amounts of keys and data
■ An extensive choice of authorization methods to access protected keys and data
■ Platform identities 平台唯一标识符
■ Support for platform privacy
■ Signing and verifying digital signatures(normal, anonymous, pseudonymous) 签名及认证
■ Certifying the properties of keys and data
■ Auditing the usage of keys and data
引述 Trusted-Platform-Module-Summary_04292008.pdf:
TPM (Trusted Platform Module) is a computer chip (microcontroller) that can securely store artifacts used to authenticate the platform (your PC or laptop). These artifacts can include passwords, certificates, or encryption keys. A TPM can also be used to store platform measurements that help ensure that the platform remains trustworthy. Authentication (ensuring that the platform can prove that it is what it claims to be) and attestation (a process helping to prove that a platform is trustworthy and has not been breached) are necessary steps to ensure safer computing in all environments. Trusted modules can be used in computing devices other than PCs, such as mobile phones or network equipment.
TPM是一种计算机芯片(微控制器),它可以存储各种用于认证你的PC或笔记本的工件。这些工件包括密码,证书,秘钥等。TPM芯片还可以用于存储平台度量值,该值可用于验证平台的可信度。认证(平台证明自己是自己所宣称的)和自证(平台证明自己处于可信状态且没有被破坏)是所有环境下确保安全计算的必要步骤。TPM不仅仅可以在PC中使用,也能在手机或者网络设备中使用。
重要术语 Important Terminologies
Endorsement Key: EK 签注秘钥
The endorsement key is an encryption key that is permanently embedded in the Trusted Platform Module (TPM) security hardware, generally at the time of manufacture. This private portion of the endorsement key is never released outside of the TPM. The public portion of the endorsement key helps to recognize a genuine TPM. The endorsement key is a base64 encoded value.
EK是在制造阶段被注入到TPM中的一个非对称加密秘钥,无法更改删除,其中的私钥部分永远不会在芯片外面出现,因此公钥部分能够用于唯一识别一个真正的TPM。
EK | Endorsement Key. This is an asymmetric key contained inside the TPM (injected at manufacturing time). The EK is unique for every TPM and can identify it. The EK cannot be changed or removed. |
EKpub | Refers to public key of the EK. |
EKPriv | Refers to private key of the EK. |
EKCert | EK Certificate. A TPM manufacturer-issued certificate for EKPub. Not all TPMs have EKCert. |
Storage Root Key: SRK 存储根秘钥
The storage root key is embedded in the Trusted Platform Module (TPM) security hardware. It is used to protect TPM keys created by applications so that these keys cannot be used without the TPM. Unlike the endorsement key (which is generally created when the TPM is manufactured), the storage root key is created when you take ownership of the TPM. This means that if you clear the TPM and a new user takes ownership, a new storage root key is created. This property is not typically manipulated by the service client. The StorageRootKey is a base64 encoded value.
SRK也存储在TPM中,用于保护各类应用程序生成的秘钥,以保证这些秘钥在离开TPM的SRK后无法使用。SRK是在获取到TPM的所有权之后生成的,这意味着如果TPM被清空之后,另一个新的用户获得了所有权,一个新的SRK会被生成。
Attestation Identity Key: AIK 身份证明秘钥
An Attestation Identity Key is a special purpose TPM-resident RSA key that is used to provide platform authentication based on the attestation capability of the TPM.
AIK是一个存储在TPM中有特殊用途的RSA秘钥,它和EK有数学上的关联,用于平台签名认证。
引述:
What's the difference between the endorsement key and the attestation identity key within the TPM?
The Endorsement Key is used to prove that you are talking to a real TPM. However, it cannot be used for signing. The AK can be used for signing and is associated with the EK.
You can consider the Endorsement Key (EK) fixed per TPM. Actually, the EK is the primary key of the endorsement hierarchy. As such, it depends on the Endorsement Primary Seed (EPS) which is really fixed for the lifetime of the TPM and a so-called template which e.g. determines if the EK is an RSA or an ECC key.
I mentioned earlier, that disclosing the EK public key would violate our privacy (since we can never change it). Therefore, the TPM will not allow us to use the EK for signing. That is the reason why we need an Attestation Key (AK), previously also called Attestation Identity Key (AIK).
The purpose of AKs is to sign data (e.g. PCR values) to prove that they originate from a real TPM (without having been tampered with). Remember, we cannot use the EK for signing directly.
PCR: Platform Configuration Registers 平台状态寄存器
RoT: Root of Trust 根信任
HRoT: Hardware Root of Trust 根信任
SCoT: Static Chain of Trust 静态信任链条
VMK: Volume Master Key 卷主密钥
FVEK: Full Volume Encryption Key 全卷加密密钥
TPM的所有权Ownership
译自:Change the TPM owner password (Windows) | Microsoft Learn
使用TPM需要成为它的“主人”,也就是需要Take Ownership of the TPM,获取所有权的方式就是设置一个Ownership Password,只有知道这块密码才能用它做一系列的操作,如加解密。同一时刻,一个TPM只能存在一个owner password,这个owner password让你能够在没有物理访问能力的情况下,使能、失能、清除一个TPM,例如使用远程命令行工具。同时,TPM owner password也给予了修改TPM字典破解逻辑的权限(为了防止owner password被暴力破解Brute Force Attack,TPM有防破解逻辑,例如在尝试若干次错误的owner password之后,TPM会在一定时间内禁止尝试)。获得所有权的操作会在每次启动的时候由Windows系统执行。所有权可以被更改,例如当你分享你的owner password或者清除你对该TPM的所有权之后,别人也可以获得所有权并对它从新初始化。
基于静态可信根(SRTM)的Bitlocker的工作原理
引述:
基于静态可信根(SRTM)的Bitlocker的工作原理是什么? - 知乎前文介绍了bitlocker的大致工作流程: 老狼:Bitlocker、TPM和系统安全大家应该了解了Windows上保证系统数据安全的Bitlocker的大致原理。本文将深入探讨它背后的工作原理:基于静态可信根(SRTM,Static Root of Tr…https://zhuanlan.zhihu.com/p/33858479TPM的主要作用是利用安全的经过验证的加密密钥带来强大的设备安全性。TPM功能的核心是签注密钥EK - Endorsement Key,这是在生产过程中内置到TPM硬件的加密密钥。这个签注密钥的私钥部分绝不会出现在TPM外部或暴露给其他组件、软件、程序或个人。另一个关键密钥是存储根密钥SRK - Storage Root Key,该密钥也存储在TPM内;它被用来保护其他应用程序创建的TPM密钥,使这些密钥只能由TPM通过被称为绑定的过程来解密,TPM也是通过该过程锁定数据到设备。与签注密钥不同,只有当TPM设备第一次被初始化或新用户获得所有权时,存储根密钥才会被创建。
平台状态寄存器PCR - Platform Configuration Registers,是用来记录系统运行状态的寄存器,TCG规范要求实现的一组寄存器,至少有16个(TCG 1.1规范),每个20个字节;TCG 1.2规范中引进了8个额外的平台状态寄存器用于实现动态可信根(DRTM);在TPM 2.0之后,引入了多bank的概念。
PCR是TPM的核心器件,为了防止PCR值被恶意代码随便篡改或伪造,TPM限制对平台状态寄存器的操作,不能像普通寄存器那样通过MMIO来随意进行读写操作,平台状态寄存器位于TPM内部,其内部数据受到TPM的保护。对PCR内容的读取是不受限制的,但对其写入只有一种,那就是Extend。Extend操作大致如下:
New PCR value = SHA-1 hash (Current PCR value || new SHA-1 hash)
也就是在原有的20字节PCR后面加上新Hash的SHA-1的值,组成40个字节,然后再对这40个字节进行SHA-1的Hash,再次得到新的20个字节的PCR。
这个Extend操作全部由TPM芯片完成,外部只能提供新的SHA-1的值。扩展操作是不可逆的,即先扩展度量值A再扩展度量值B所得到的PCR值跟先扩展B再扩展A的结果是不同的。而且知道了新的PCR的值和老的PCR的值,也不能倒推出新的SHA-1的值。
通过扩展,PCR能够记录一个无限长的度量值序列,这一系列度量值组成的序列反应了系统状态的变迁 ,这个扩展序列中的某一个度量值被改变了,之后的度量序列都会受到影响。虽然理论上来说,一个PCR维护的度量序列就能够记录整个平台的状态值,但实际应用中,PCR被TCG定义为多个寄存器组,并且越来越多。每个寄存器都被赋予不同的度量对象:
有了PCR的帮忙,我们就可以开始建立静态信任链。所谓静态,是因为它需要一个核心信任根(CRTM - Core root of trust measurement)。这个CRTM是先验的可以信任的基础,有了它,整个信任链条才可以建立。CRTM开始的时候,被设定是UEFI BIOS的PEI阶段的FV,认为它是不会被修改的,它是可信的。但是因为对BIOS的攻击越来越多,甚至包括物理攻击,即用BIOS工程师常用的烧写工具直接烧写BIOS,这对直接使用PEI作为CRTM提出了挑战。于是CRTM被前置到Boot Guard ACM中,关于Boot Guard不在本文的范围内,我们今后再讲,这里权且相信它的安全性。有了CRTM的安全,下面的链条就可以建立起来了:(measure就是将当前状态的hash值使用Extent操作记录到PCR中去)
引述:bitlocker对磁盘进行加密解密
1. BIOS 启动并初始化TPM。并measure firmware部分敏感内容和启动分区以及bootloader,将结果放入PCR组。
2. 如果 PCR 值与期望值相匹配,则 TPM 将使用存储根密钥 (SRK - Storage Root Key) 对卷主密钥 (VMK - Volume Master Key) 进行解密。
3. 从卷中读取加密过的 FVEK - Full Volume Encryption Key,并使用解密 VMK 对其进行解密。
4. 访问磁盘扇区时,使用 FVEK 进行解密。
5. 为应用程序和过程提供解密数据。
引述:How Windows uses the TPM | Microsoft Learn
什么是Boot Guard?电脑启动中的信任链条解析
引述:什么是Boot Guard?电脑启动中的信任链条解析 - 知乎“无事可干”的黑客们早已经把目光从操作系统转移到固件上了,毕竟一旦攻破了固件的大门,那么在其上的操作系统也会门户洞开。现在电脑或者x86服务器系统中固件众多: UEFI在其中居于中间地位,它的安全性也是重中…https://zhuanlan.zhihu.com/p/116740555
BIOS固件的验证
Intel Boot Guard引入了一个叫做ACM(Authenticated Code Module) 的黑盒,也把BIOS凭空分成两部分:IBB和OBB。IBB(Initial Boot Block)一般只包括PEI和SEC阶段,OBB(OEM boot block)则是剩余的阶段。
CPU在出厂的时候,ME是处于Manufacture mode,这时主板厂商(OEM)可以通过工具将厂商的主板启动非对称秘钥对中的公钥部分Fuse到pch中的NVRAM中。并用签名服务器对BIOS image用密钥对中的私钥进行签名。在启动的时候,黑盒ACM先启动,它用Fuse在pch中的公钥验证BIOS是否真的由其对应的私钥签名,如果通过,就跳到Reset Vector执行,否则死机。这似乎很好理解,但诡异的是ACM也放在Flash上,谁来保证ACM的真伪呢?答案就是ACM是由Intel用ACM私钥签名了的,而由Intel的microcode来验证签名正确与否。
好了,我们可以串起来讲一下了。Microcode验证ACM, ACM验证IBB,IBB验证OBB(想想为什么不用ACM验证整个BIOS,而要分成两步)。OBB后面呢?那就是UEFI安全启动了。整体是这样:
由此一个启动的安全链条建立起来了。它环环相扣,每一步验证后一步,如果其中任何一个呗破坏,则拒绝启动,来保证最终用户看到的界面是安全的。
安全根的问题
如果我们梳理整个链条,源头的源头,在这条河的最上游,信任和安全的原点在哪里呢?在Microcode,如果你信任它,才能信任最后的结果,也就是它是这一信任链条的根。那么,我们该不该信任它呢?
实际上Microcode也需要签名,而验证这个签名的就是CPU硬件。在最后的最后,这实际上取决于相信不相信Intel公司。相信Intel,才能相信Microcode这个黑盒,才能相信它验证过的ACM黑盒,才有接下来的安全链。而CPU硬件是目前是无法伪造的,也目前没有被攻破。所以现在大部分电脑厂商,包括笔记本和台式机,总的趋势都是接受并开启了Boot Guard,把主板的安全水平提升了一个档次。
参考链接:
A Practical Guide to TPM 2.0:https://link.springer.com/content/pdf/10.1007/978-1-4302-6584-9.pdf