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

news/2024/4/26 5:29:02/文章来源:https://blog.csdn.net/tq384998430/article/details/128055983

简述 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.luyixian.cn/news_show_38759.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「区块链+数字身份」:DID 身份认证的新战场

美国经济学家布莱恩 • 阿瑟在其著作《技术的本质》中,写过这么一句话:「技术总是进行着这样一种循环,为解决老问题去采用新技术,新技术又引发新问题,新问题的解决又要诉诸更新的技术」。 区块链技术之所以能流行&…

在MacOS上实现两个网络调试助手的UDP通信测试

文章目录一、背景二、网络调试助手软件三、UDP通信过程一、背景 因为有一个项目要中会使用本机中两个应用程序之间的UDP通信。 因此本文记录一下怎么在MacOS上实现两个网络调试助手的UDP通信测试。 二、网络调试助手软件 我使用的网络调试助手软件是:网络调试助…

Redis实战——优惠券秒杀(超卖问题)

1 实现优惠券秒杀功能 下单时需要判断两点:1.秒杀是否开始或者结束2.库存是否充足 所以,我们的业务逻辑如下 1. 通过优惠券id获取优惠券信息 2.判断秒杀是否开始,如果未返回错误信息 3.判断秒杀是否结束,如果已经结束返回错误…

传奇登录器打不开的四种原因

最近很多传奇玩家或者GM都遇到了传奇登陆器打不开,没反应,提示无法访问指定设备等问题,导致很多游戏没有办法玩,让玩家心情沮丧,作为GM,那么就更伤心了,很多玩家进不来游戏,开服数千…

Maven笔记(2022-11-29)

一、Maven简述 1.1 什么是Maven? Apache Maven 是一款基于 Java 平台的项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。 简单来讲Maven就是一个构建工具,用来管理我们的项目…

GMM算法

高斯混合模型聚类(Gaussian Mixture Mode,GMM) 高斯混合模型是一种概率式的聚类方法,它假定所有的数据样本x由k个混合多元高斯分布组合成的混合分布生成。 其中高斯分布的概率密度函数如下: 现在的问题就是如何求α,μ,σ\alpha,\mu,\sigm…

Spring-全面详解(学习总结---从入门到深化)

目录 Spring简介 Spring体系结构 IOC_控制反转思想 IOC_自定义对象容器 IOC_Spring实现IOC IOC_Spring容器类型 ​ 容器实现类 IOC_对象的创建方式 使用构造方法 使用工厂类的方法…

09【MyBatis多表关联查询】

文章目录三、MyBatis多表关联查询3.1 表的关系3.2 一对一查询3.2.1 搭建环境3.2.2 需求分析3.2.3 dao接口3.2.3 mapper.xml3.2.4 测试3.2.5 配置MyBatis一对一关系1)传统映射:2)使用association标签映射3.3 一对多查询3.3.1 需求分析3.3.2 da…

Kamiya丨Kamiya艾美捷大鼠微量白蛋白酶联免疫吸附试验说明书

Kamiya艾美捷大鼠微量白蛋白酶联免疫吸附试验预期用途: 大鼠微量白蛋白酶联免疫吸附试验(ELISA)是一种高灵敏度的双位点酶联免疫吸附试验(ELISA)大鼠生物样品中微量白蛋白的测定。仅供研究使用。 引言 白蛋白&#x…

SpringBoot、EasyPoi、Echarts 实现文档导入、出、图表显示 (饼状图、柱状图) 保姆级教程

一、介绍环境 EasyPOI: 现在我们就来介绍下EasyPoi,首先感谢EasyPoi 的开发者​。EasyPoi开源 easypoi 是为了让开发者快速的实现excel,word,pdf的导入导出,基于Apache poi基础上的一个工具包。easypoi教程 Echarts: …

转扩!寻找G2022次列车“旅客”

各位求职朋友大家好,欢迎乘坐G2022次列车 本次列车为6节编组,由上海开往北京,途径宁波、重庆 本次列车乘务组全体工作人员为您提供全方位福利待遇 上车地址:上海擎创信息技术有限公司 - 社会招聘 (eoitek.com) 如您还需其他帮助…

Java给图片增加水印,根据图片大小自适应,右下角/斜角/平铺

Hi,I’m Shendi 最近写自己的文件服务器,上传图片时需要自动增加水印,在这里记录一下 文章目录效果展示读取图片从 byte[] 读取图片获取画板绘制水印根据图片大小自适应水印大小右下角文字水印斜角水印平铺水印图片水印输出图片水印就是在图片…

SLAM学习笔记(二)

5.相机与图像 相机将三维世界中的坐标点(单位米)映射到二维图像平面(单位为像素)的过程中能够用一个几何模型进行描述。 单目相机(Mono)的成像过程: 1、世界坐标系下有个固定的点P,世界坐标为 2、由于相…

基于Java+SSM+Vue+ElementUi的汉语言类网上考试系统

项目介绍 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信…

前置微小信号放大器在光声技术的血管识别研究中的应用

实验名称:前置微小信号放大器在光声技术的血管识别研究中的应用 研究方向:生物识别技术 测试目的: 利用MATLAB对光声血管进行识别:1、对光声血管图库的图像进行预处理包括归一化、二值化、平滑、细化和毛刺修剪得到细化图像&#…

【安卓逆向】去除云注入(使用MT论坛dl的方法总结拓展)

1 需求 因为最近使用的虚拟机突然不能用了,被人云注入强制弹窗,如下图:(这一看就是云注入了) 2 大佬的方法 如图(MT大佬分享的,感兴趣的朋友可以去大佬主页看看他其他文章)&…

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

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

[附源码]计算机毕业设计springboot基于Java的失物招领平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

用R Shiny生态快速搭建交互Web网页APP应用

什么是Shiny? Shiny包可以快速搭建基于R的交互网页应用。对于web的交互,之前已经有一些相关的包,不过都需要开发者熟悉网页编程语言(html,CSS,JS)。最近我们被客户要求撰写关于R Shiny的研究报告,包括一些…

快速复现 实现 facenet-pytorch 人脸识别 windows上 使用cpu实现 人脸对比

目录0 前言1 搭建环境与项目2 人脸预测与结果展示0 前言 这一次要复现的是人脸识别中的 facenet-pytorch 参考了: Pytorch 搭建自己的Facenet人脸识别网络(Bubbliiiing 深度学习 教程) https://gitee.com/xiaozhao123666/facenet-pytorch ht…