【计算机】可信平台模块Trusted Platform Module - TPM

news2024/12/27 14:09:38

简述 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。

EKEndorsement 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.
EKpubRefers to public key of the EK.
EKPrivRefers to private key of the EK.
EKCertEK 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/46300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

速锐得解码理想汽车L8方向盘转向角度应用随动大灯照明升级

前日,速锐得解码了理想汽车L8车型,由于理想L8是新款车型,架构和理想L9十分相似,与理想ONE这一代有比较大的差异,这恰恰也是我们很好的一次学习机会,也让我们重新认识了理想汽车。 我这里,只挑有…

PCL 点云的法向量

一,点的法向量 点云法线 法向量的概念是很小的时候我们就已经说的,法向量是我们点云中一个非常重要的属性,诸如饿哦们常说的三维重建、点云分割,点云去噪 以及特种描述算法等。 特性: 点云中每一点的法向量夹角和曲率…

【即将开源】⽤于3D激光雷达SLAM闭环检测的词袋模型BoW3D

​以下内容来自从零开始机器人SLAM知识星球 每日更新内容 点击领取学习资料 → 机器人SLAM学习资料大礼包 #论文# BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM 论文地址:https://arxiv.org/abs/2208.07473 作者单位:中国沈阳自动…

C++基础语法

cout输出 cin是键盘输入 //i input 输入 o output输出 stream流 输入输出流头文件&#xff08;类似stdio.h&#xff09; 2 #include <iostream> 3 4 //std(标准) 使用标准的命名空间using namespace std;//命名空间,此标识符作为此组群的名字 5 using namespace std; 6…

A*算法-Python实现

好久没有在CSDN上发文章了&#xff0c;快一年了吧。这两天重新登录了一下&#xff0c;不看不知道&#xff0c;一看吓一跳&#xff0c;没想到访问量快13万了。 之前写博客的时候&#xff0c;想着把一些有用的东西写下来&#xff0c;一方面是当做笔记了&#xff0c;免得以后忘记…

小程序数据请求的方式和注意事项

1.小程序中网络数据请求的限制 出于安全性方面的考虑&#xff0c;小程序官方对数据接口的请求做出了如下两个限制&#xff1a; ① 只能请求HTTPS类型的接口 ② 必须将接口的域名添加到信任列表中 2.配置request合法域名 假设要在自己的微信小程序中&#xff0c;希望请求某…

Mysql 索引基数与选择性

这篇文章主要介绍 MySQL 索引的 Cardinality 值&#xff08;基数&#xff09;以及索引的可选择性。 什么是索引&#xff1f; 先看一下 wiki 定义&#xff1a; 索引&#xff08;英语&#xff1a;Index&#xff09;&#xff0c;是一本书籍的重要组成部分&#xff0c;它把书中的…

微信小程序中基础入门

一、数据绑定 1.数据绑定的基本原则 ① 在data中定义数据&#xff08;在.js文件&#xff09; ② 在wxml中使用数据 2.Mustache语法的格式 把data中的数据绑定到页面中进行渲染&#xff0c;使用MUstache语法&#xff08;双大括号&#xff0c;可以理解为vue中的插值表达式&…

Redis——》数据类型:List(列表)

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 Redis——》数据类型&#xff1a;List&#xff08;列表&#xff09;一、简介…

Linux02——操作系统接口

一、前言 OS是软硬件之前的桥梁&#xff1a;操作系统管理硬件&#xff0c;最终以服务的形式提供给用户。如用户读取磁盘数据&#xff0c;OS设备管理将读出来的数据通过文件系统交给用户。OS管理员对CPU&#xff08;进程&#xff09;管理&#xff0c;对内存管理&#xff0c;对设…

PyCharm中鼠标悬停在函数上时显示函数和帮助

一、问题 1.1 鼠标放上去不显示文档的提示 鼠标放在随意一个函数上面不显示他的说明了 我也不知道是咋了 二、解决 2.1 首先我只记得有一个侧边栏叫document 经典的解决办法 2.2 在setting中查看这是干嘛的 很多东西都可以在setting中查看到具体的功能 还可以查看到从哪里能…

Redis高级篇——持久化

Redis持久化 1.RDB 1.1RDB简介 RDB全称Redis Database Backup file &#xff08;Redis数据备份文件&#xff09;&#xff0c;也被叫做Redis数据快照。把内存中的数据都记录到磁盘中&#xff0c;当Redis实例故障重启后&#xff0c;从磁盘中读取快照文件&#xff0c;恢复数据。…

蓝海创意云接受【看苏州】独家专访:助力苏州数字文化行业全方位发展

近日&#xff0c;由蓝海创意云提供渲染服务的动漫电影《老鹰抓小鸡》获金鸡奖最佳美术片提名&#xff0c;位列获奖名单的《长津湖》《独行月球》也由蓝海创意云渲染提供了后期服务。 就此&#xff0c;苏州广播电视总台旗下的苏州权威热点新闻和视频平台【看苏州】对蓝海彤翔执…

# Vue 中 JSON 编辑器使用

Vue 中 JSON 编辑器使用 文章目录Vue 中 JSON 编辑器使用背景描述vue-json-edit安装依赖测试页面效果图bin-code-editor安装依赖测试页面效果图CodeMirror安装依赖测试页面效果图vue-json-views安装依赖属性说明测试页面效果图vue-json-pretty安装依赖属性说明测试页面效果图码…

【CSS3】重点知识内容,快速上手

推荐前端学习路线如下&#xff1a; HTML、CSS、JavaScript、noodJS、组件库、JQuery、前端框架&#xff08;Vue、React&#xff09;、微信小程序和uniapp、TypeScript、webpack 和 vite、Vue 和 React 码源、NextJS、React Native、后端内容。。。。。。 层级选择器 a>b …

Kotlin高仿微信-第3篇-主页

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点&#xff0c;包括&#xff1a;注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

Matlab图像处理基础(2):区域处理,边沿检测

目录 0. 概要 2. 卷积和相关 2.1 卷积 2.2 相关 2.3 卷积与相关的关系 2.4 Matlab函数 2.5 2-D卷积/相关的分解 3. 高通滤波&#xff0c;edge detection 3.1 matlab edge()函数 3.2 各种算子简介 3.2.1 Robert算子 3.2.2 Prewitt算子 3.2.3 Sobel算子 3.4 Cann…

维也纳国际酒店+丽柏酒店首个同物业双品牌项目成功加盟,中高端酒店品牌联动浮现新模式

从改革开放开启中国酒店市场化浪潮伊始&#xff0c;中国酒店市场一直处在高速发展的快车道。但四十年来&#xff0c;这条赛道上的竞争也出现了多次驱动引擎的动能转换。1996年起的20年里&#xff0c;庞大的经济型酒店切割了市场的主要蛋糕。而从2016年开始&#xff0c;中端酒店…

P2 Pytorch 张量数据类型

前言 1&#xff1a; 数据类型 2&#xff1a; 常用API 参考&#xff1a; 课时14 张量数据类型-1_哔哩哔哩_bilibili 一 数据类型 除了string ,相对于Numpy PyTorch 都能找到对应的数据类型 1.1 常用的Data type 常用的5种: IntTensor, LogTensor, ByteTensor, DoubleTensor,…

从迷之自信到逻辑自信(简版)

从2012年开始工作&#xff0c;10多年了&#xff1b; 从2002年开始奋斗&#xff0c;20多年了。 回首这20年&#xff0c;感觉自己的成绩很有限&#xff0c;相比过往的勤奋努力。 时代因素也有&#xff0c;个人智商等先天性制约也存在&#xff0c;但是呢&#xff0c;我就特别想…