当前位置:网站首页>【TPM2.0原理及应用指南】 5、7、8章
【TPM2.0原理及应用指南】 5、7、8章
2022-07-07 15:39:00 【Godams】
第5章 规范指南
5.2 一些定义
以下定义适用于命令和响应:
- 授权:授予访问TPM中某些实体的权利
- 密码授权:这是一次性明文授权
- HMAC授权:HMAC密钥是使用共享密钥派生的,这是授权的基础
- 策略或者增强授权:使用必须满足的策略断言来授权。策略断言是命令被授权之前就发送到TPM的命令
- 会话:会话用于授权,并且每个命令操作(加密,解密,审计等)都在一个会话里。在基于HMAC和策略的会话里,会话被创建并被多条其它命令使用。密码授权是不携带任何状态的一个特殊会话。
- 句柄:一个用于标识占用TPM内存的TPM资源标识符
- 字节流:在命令中实际发给TPM的字节,在响应中指实际从TPM接收的字节
- 规范化数据
- 反串行化数据:C语言结构体格式数据
- 串行化数据:规范化的数据(即发送或从TPM接收的格式)
以下字段,按照命令字节流中出现的顺序进行描述:
- 命令头:所有命令的公共部分
- 句柄区域:包哦含第三部分的命令中所指的0~3个句柄
- 授权区域:包含命令会话数据。多个会话可以与单个命令关联,所以这个区域可以包含0-3个绘画的参数。它包含了授权信息、每个命令会话信息和一些需要在应用程序和TPM之间进行通信的会话状态信息。
- 参数区域:包含第三部分所述的特定命令的参数
响应字节流的主要字段定义:
- 响应头:所有响应的公共部分
- 句柄区域
- 参数区域
- 授权区域:包含响应会话数据。多个会话可以与单个命令关联,因此该区域可包含0-3个会话的参数。
5.3 第三部分 命令
无需授权的命令(TPM2_Startup)由三部分组成:
- 一般描述:以文本形势描述命令,详细说明输入的约束条件
- 命令和响应:命令的输入数据和响应的输出数据
- 详细操作:包含代码和代码返回错误的条件表
第五章剩下都是些具体的命令细节,在此不赘述
第7章 TPM软件栈(TSS)
7.1 TSS概述
从上而下,TSS包含如下几层:特征API(Featurn API,FAPI)、增强系统API(Enhanced System API,ESAPI)、系统API(System API,SAPI)、TPM命令传输接口(TPM Command Transmission Interface,TCTI)、TPM访问代理(TPM Access Broker,TAB),资源管理器(Resource Manager,RM)和设备驱动(Device Driver)
技术人员应基于FAPI编写程序,等同于JAVA,C#等。接下来ESAPI,需要大量TPM知识,它提供一些会话管理和密码支持。SAPI层能让你访问TPM的所有功能,但需要高级专业知识。TCTI层用于传输TPM命令和接收响应。TAB层控制多进程同步访问TPM。RM类似于PC上虚拟内存管理的方式,负责TPM对象和会话在TPM内部存储空间的换入换出。
7.2 FAPI
创建TSS特征API(FAPI)的明确目的是,方便程序员使用TPM 2.0 功能。实现这一层的一种方法是使用配置文件,创建默认的配置选项,当创建和使用密钥时,不需要明确地选择算法、密钥长度、加密模式和签名机制。
FAPI为默认类型的实体定义了基本名称
- 密钥
- NV
- 标准策略及认证
用FAPI命令创建和使用的实体都用策略来授权,所有FAPI函数都假设密钥只通过策略进行认证。
7.3 SAPI
SAPI规范的设计目的如下:
- 提供访问TPM所有功能的能力
- 跨平台可用,从高嵌入、存储受限的环境到多处理服务器。
- 在提供能够访问TPM所有功能的条件下,让程序员轻松
- 同时支持同步和异步调用TPM
- SAPI实现并不需要分配任何内存,在大部分实现中,调用者负责分配SAPI的所有内存。
SAPI包含四组函数:命令上下文分配函数、命令准备函数、命令执行函数、 命令完成函数:
- 命令上下文分配函数:用来分配SAPI命令上下文数据结构体,它是一个不透明的结构体
- 命令准备函数
- 命令执行函数:命令可以同步或异步传送
- 命令完成函数:这组函数是命令后处理所需要的,如果会话被设置为加密会话,那么本组函数还包括响应HMAC计算和响应参数解密。
7.4 TCTI
TPM命令传输接口(TCTI)上下文结构体告知SAPI函数,如何与TPM通信。每个进程、每个TPM都有一个TCTI上下文结构体,由初始代码创建。
在TPM栈的任意一层,只要是发送和接收已排好顺序的字节流,都会用到TCTI。目前这体现在两个地方,SAPI和TAB以及RM和驱动之间。
7.5 TAB
TAB用来控制和同步对一个单一共享TPM的多进程访问。
- 当一个进程向TPM发送命令和从tpm接收响应时,不允许其它进程发送命令和接收响应。
- TAB需要阻止进程访问不属于它的TPM会话、对象和序列,使用哪个TCTI连接来加载对象、开启会话或启动序列,就确定了所有权关系。
7.6 RM
RM的作用相当于操作系统中的虚拟内存管理器。因为TPM片内存储空间有限,对象、会话、序列需要在TPM和外部存储器之间交换,以让TPM命令能够执行。
一个TPM命令最多可以使用三个实体句柄和三个会话句柄。所有的这些存储在TPM内存中,供TPM执行命令所用。RM的工作是拦截命令字节流,确定什么资源需要被加载到TPM中,交换出能够加载所需资源的足够空间,再加载所需资源。
7.7 设备驱动
设备驱动接收一个命令字节缓冲区和缓冲区大小,执行必要的操作,将那些字节发送给TPM。当被栈中的高层请求时,驱动程序会等待,直到TPM准备好响应数据,然后读取响应数据,将其返回给栈上层。
第8章 实体
TPM实体是TPM中一个可以通过句柄直接索引到的项目。本章将介绍:永久性实体(hierarchy、字典攻击锁定机制、PCR);非易失性索引(NV索引);对象(密钥和数据);易失性实体(各种会话);
8.1 永久性实体
永久性实体的句柄由TPM规范定义,不能被创建和删除。在TPM 1.2中,PCR和所有者是唯一的永久性实体;存储根密钥(SRK)也有一个固定句柄,但却不是永久性实体。在TPM 1。2中则有很多:三个持久性hierarchy、临时性hierarchy、字典攻击锁定复位、PCR、保留句柄、明文口令授权会话和平台hierarchy NV功能。
- 持久性hierarchy
平台、存储和背书。这些hierarchy都需要通过授权才允许使用,所以每一个都有一个授权值和策略,两者都可以被hierarchy管理员修改 - 临时性hierarchy
空hierarchy,它也被一个永久句柄索引,它在每次TPM加电重启后都会被自动清除 - 重置词典攻击锁定
它没有密钥或对象hierarchy。如果它被触发,该机制被用来重置字典攻击锁定机制或者清楚。它通常代表TPM存储的hierarchy的IT管理员。 - PCR
PC客户端平台至少有24个PCR。TPM强制规定至少有一个bank(使用相同哈希算法的PCR集合),在启动时可编程为支持SHA-1或者SHA-256。 - 保留句柄
如果特定的平台规范确定了要使用保留句柄,TPM中就会有一些针对特定制造商的保留句柄。 - 口令授权会话
调用者利用此句柄完成明文口令(与HMAC值相对应)授权 - 平台NV启用
8.2 NV索引
TPM中有一定数量的非易失性空间,用户可以将它们配置为存储空间,在配置时,需要给定一个用户选择的索引和一些属性集。
NV索引有一个关联的授权值和授权策略,授权值可以随索引所有者的意愿而改变,但是策略在创建NVRAM时被设置好后,就不能再被改变。
NV索引在创建时,就与一个hierarchy相关联,当hierarchy被清除时,与之相关联的NV索引也会被删除
8.3 对象
TPM对象要么是数据,要么是密钥,它有一个公开部分,也可能有一个四有部分。正如NV索引一样,所有的对象都隶属于四种hierarchy中的一种:平台、存储、背书、或者空。
8.4 非持久性实体
在系统断电重启后不会继续存在,尽管非持久性实体可以被保存,但在每次加电启动后,TPM加密机制会阻止加载保存的上下文,以强制丢失,这种实体类型有多种类别:
- 授权会话:包括HMAC和策略会话
- 哈希和HMAC事件队列实体持有中间结果
与非持久性实体相反的是,持久性实体在每次重启后都会持续存在。
8.5 持久性实体
一个持久性实体是一个对象,一个hierarchy所有者已要求在重启时留存在TPM里。它与永久性实体的不同在于,它可以被删除,TPM只有有限的持久性内存。
通常,主存储密钥(SRK)、主受限签名密钥(AIK),可能还有背书密钥(EK),是TPM中仅有的持久性实体。
8.6 实体名称
被哈希计算和HMAC计算的命令参数流,暗含了句柄所对应的每个实体的名称,即使命令参数可能不包含名称。在它经过HMAC计算被授权后,攻击者可能修改句柄,但不能修改相应的值。
名称是实体唯一的标识符。永久性实体(hierarchy和PCR)拥有永远都不会改变的句柄,所以他们的名称就是他们的句柄。其他实体(NV索引和加载的实体)拥有一个经计算得到的名称,该名称本质上是实体公开数据的哈希值。攻击者可以删除此索引并重新定义它,但是,除非公开数据区(索引值,属性值以及策略)是相同的,否则名称便会改变,授权不会通过。公开数据区随着实体类型的不同而变化。
边栏推荐
- L1-027 出租(Lua)
- LeetCode 1477. 找两个和为目标值且不重叠的子数组 每日一题
- skimage学习(3)——使灰度滤镜适应 RGB 图像、免疫组化染色分离颜色、过滤区域最大值
- DNS series (I): why does the updated DNS record not take effect?
- 【视频/音频数据处理】上海道宁为您带来Elecard下载、试用、教程
- From Devops to mlops: how do it tools evolve to AI tools?
- 99% 用户在 Power BI 云端报表常犯错误
- SlashData开发者工具榜首等你而定!!!
- Seaborn数据可视化
- LeetCode 312. 戳气球 每日一题
猜你喜欢
MRS离线数据分析:通过Flink作业处理OBS数据
麒麟信安携异构融合云金融信创解决方案亮相第十五届湖南地区金融科技交流会
With the latest Alibaba P7 technology system, mom doesn't have to worry about me looking for a job anymore
Sator launched Web3 game "satorspace" and launched hoobi
Sator a lancé le jeu web 3 "satorspace" et a lancé huobi
【视频/音频数据处理】上海道宁为您带来Elecard下载、试用、教程
Seaborn数据可视化
状态模式 - Unity(有限状态机)
SIGGRAPH 2022最佳技术论文奖重磅出炉!北大陈宝权团队获荣誉提名
skimage学习(3)——Gamma 和 log对比度调整、直方图均衡、为灰度图像着色
随机推荐
The mail server is listed in the blacklist. How to unblock it quickly?
With the latest Alibaba P7 technology system, mom doesn't have to worry about me looking for a job anymore
数值 - number(Lua)
QT视频传输
Establishment of solid development environment
Jenkins发布uniapp开发的H5遇到的问题
Rpcms method of obtaining articles under the specified classification
Number of exchanges in the 9th Blue Bridge Cup finals
AI来搞财富分配比人更公平?来自DeepMind的多人博弈游戏研究
The computer cannot add a domain, and the Ping domain name is displayed as the public IP. What is the problem? How to solve it?
Solid function learning
Shallow understanding Net core routing
QT video transmission
LeetCode 1654. The minimum number of jumps to get home one question per day
Pychart ide Download
LeetCode 120. 三角形最小路径和 每日一题
Nerf: the ultimate replacement for deepfake?
【Seaborn】组合图表:PairPlot和JointPlot
Seaborn data visualization
MRS离线数据分析:通过Flink作业处理OBS数据