存储背书密钥(EK)第一章(TPM历史)
----------------通读
为什么要有TPM?
在硬件上没有针对安全的相关支持,软件设计也完全没有顾及安全性
试图在PC系统上创建一个硬件安全锚点,以弥补之前所欠缺的安全性。通过物理方式连接到计算机主板上,但是为了降低成本,许多不是绝对必要的功能都从芯片转移到了软件上。
概念的定义(重点)
1.2通读
CA可以证明TPM中产生的密钥是来自于真实的TPM实体,并且无需确认是来自哪一个TPM。
PCR是TPM中的动态内存区,被保留用于保持系统的引导序列度量结果的完整性。PCR可与身份密钥一起用于证明系统引导顺序是否正常。
只安装TPM硬件没有任何价值,需要配合软件进行使用
从TPM1.2到TPM2.0的变化?
TPM2.0要求摘要算法要灵活,不再使用SHA-1的硬编码,而是使用算法标识符。
在密码算法上的变化
面向平台的变化:1.2主要面向PC,属主只有一个就是用户;2.0给出三个控制域。
密钥:
PCR:存储系统启动和运行过程中的度量值
授权:授权即是否允许软件进程访问TPM内部的资源
第二章(基础安全概念)
重点考核
用于确保完整性的哈希算法
用于机密性的对称密码算法
用于数字签名与密钥管理的非对称密码算法
密码算法应用的强度是由算法和密钥长度共同决定的。
消息:在双方间传送的字节序列
机密性:防止未授权方查看消息内容
共享密码:双方都知道的一个值,可以是口令,也可以是加密密钥。
授权:证明用户被允许执行这个操作
简单的哈希应用于快速查找,稍高级的哈希应用于数据的随机错误校验和。
扩展机制用于更新平台配置寄存器(PCR)的值,也用于TPM的审计日志中。审计日志记录了TPM的请求及回复信息,一个审计项一旦被添加到日志后就不能移除,且日志的大小与审计过的请求数量无关。
KDF
TPM需要支持由单一秘密(种子密钥)生成多种密钥,这样就能由一个大随机数生成多种密钥。
HMAC(消息认证码)是一种加密的哈希算法
TPM会在三种情况下使用对称密钥加密:
使TPM数据对外部保密
TPM的通信加密
使用TPM来协同处理密码
在同等强度下,ECC的密钥比RSA的要短小得多。ECC密钥的强度为密钥大小的一半,即一个256位的ECC密钥的强度为128位。
ECDH实现密钥传递
当需要在TPM上用RSA去加密对称密钥时,可以直接使用TPM的RSA公钥去完成加密。而当需要在TPM上使用ECDH密钥加密对称密钥时,需要进行两步:
首先生成另一个ECDH密钥;
再用新生成的ECDH密钥中的私钥和TPM ECDH密钥中的公钥生成一个临时随机数,将随机数输入到KDF中生成一个对称密钥。
ECDSA实现签名
当ECDSA的密钥只有n位时,签名哈希值的长度也只能有n。
对称密钥算法模式
ECB(电码本):相同的密钥对明文进行加密,同样的明文分组得到相同的密文,不适用较大数据的加密。不具有链接依赖性,无错误传播。
以下的模式:同一个分组在一个消息中多次加密,每次得到的结果都不相同
CBC(密码分组链接):加密算法的输入是明文分组和前一个密文分组的异或,第一个明文分组与IV进行异或。
CFB(密码反馈):明文本身并没有进入加密算法中进行加密,而是与加密函数的输出进行了异或,得到了密文。能将任意分组密码转化为流密码,不需要将明文分组填充到分组长度的整数倍。
OFB(输出反馈):在CFB中,是将密文反馈到下一分组加密算法输入的移位寄存器中;而在OFB中,是直接将加密算法的输出反馈到下一分组加密算法的输入中。
CTR(计数器)
CFB模式和CTR模式有一个共有特性(异或)就是若加密字节流中反转1位,那么解密字节流中也会反转同一位,因此攻击者能在不知道消息内容的情况下对其进行篡改。
攻击者在CBC模式中也能对某一位进行反转,但是受影响的数据位会在解密结果中扩散。
票据是一种包含许多数据的HMAC的数据结构,允许TPM延迟验证其执行的操作。
证书包括用户的公钥部分及密钥的属性,由CA的密钥签名。
数字证书依赖于CA的诚信度。
选择、判断、填空 两三道问答题
第三章(TPM2.0快速教程)
只看3.1
为什么要做TPM,TPM解决的主要问题?
设备识别:在发布TPM规范之前,设备主要通过MAC地址或IP地址来识别,而不是靠安全标识符。
密钥安全生成:创建密钥时,具有硬件随机数生成器是一个很大的优势
密钥安全存储:TPM设计带给设备的一大优势就是针对软件攻击能够很好地保护密钥安全
NVRAM存储:当IT组织获取新设备时,它经常擦除硬盘并以组织的标准加载方式重写磁盘,而具有NVRAM则允许TPM能维护证书存储。
设备健康证明:在拥有TPM之前,IT组织使用软件来证明系统的健康状况,但是如果一个系统受到破坏时,软件可能会在系统不健康的时候也报告它是健康的
TPM2.0还拓展了以下功能:
算法灵活性:如果算法被证明在加密时弱于预期,则可以在不重新修改规范的情况下进行更改。
增强授权:统一了TPM实体授权的方式,同时扩展了TPM启用考虑多因素和多用户身份验证的授权策略的能力,还包括了额外的管理功能。
密钥快速加载:通过使用对称密码算法而不是非对称算法,密钥能快速加载
非脆性PCR:过去将密钥与设备状态锁定时会导致管理问题。
灵活管理:不同类型的授权可以分开,从而允许更灵活地管理TPM资源
按名称识别资源:间接引用带来了安全挑战,通过为所有的TPM资源使用加密的安全名称修复了
TPM使用场景
身份识别
加密(提供加密密钥的方法)
什么时候加密?加密哪些内容?
密钥存储
随机数生成器
NVRAM存储
NVRAM提供以下功能:
存储用于证书链的根密钥
存储背书密钥(EK)
存储用于表示机器状态的内容
在磁盘可用之前使用的解密密钥的存储
平台配置寄存器
隐私启用
提供一种手段来证明一个密钥是由TPM创建和保护的,而密钥的接收方不知道哪个TPM是密钥的创建者和保护者。
通过使EK成为仅解密密钥、与签名密钥相反,EK不能直接用于标识特定的TPM。相反,提供了一个协议用来生成身份证明密钥(AIK),这个密钥可以作为TPM平台的伪身份密钥。提供使用隐私CA的协议意味着EK可以用于证明AIK源自TPM,而不会证明AIK源自哪个TPM。因为可以有无限数量的AIK,你可以在创建和使用AIK之后销毁AIK,或者为了不同的目的有多个AIK。
对于一个TPM而言,EK是唯一的,代表着每一个可信平台的真实身份,用于解密所有者的授权数据和产生AIK相关的数据。EK从不用于数据加密和签名。
EK和AIK区别
由于EK唯一标识了一个TPM,为了保证EK的安全,需尽量避免使用EK。身份证明密钥的目的是代替EK来提供平台的证明,可以理解为EK的别名。
第五章(规范指南)
通读
TPM2.0库规范由四部分组成:
架构:描述了TPM的操作规范和设计原理
结构体:TPM所使用的数据类型、结构体和联合体
命令
支持例程
授权:授予访问TPM中某些实体的权利,TPM2.0使用三种授权(口令、HMAC、策略)
HMAC授权:HMAC密钥是使用共享密钥派生的,这是授权的基础。
句柄:用于标识占用TPM内存的TPM资源的标识符
字节流:在命令中指实际发给TPM的字节。在响应中指实际从TPM接收的字节
会话:每次使用后变化的TPM状态的集合
串行化数据:序列化、规范化的数据(发送或从TPM接收的格式)
反串行化数据:C语言结构体格式的数据
命令字节流的主要字段定义
命令头:所有命令的公共部分
句柄区域:
授权区域:包含命令会话数据。多个会话可以与单个命令关联。
参数区域
响应字节流的主要字段定义
响应头:所有响应的公共部分
句柄区域:包含0~3个句柄
参数区域
授权区域:包含响应会话数据。
命令组成?
一般描述
命令和响应
详细操作
第七章(TPM软件栈)
重点了解
TSS:TPM操作系统,允许应用程序以一种便携的方式调用栈中各层的API。
TSS从上到下包含如下:
特征API(FAPI):用FAPI创建和使用的实体都用策略来授权
不会用到口令会话,因为在封装之下,如果使用一个授权值,那么总是用在一个加盐HMAC会话里。
增强系统API
系统API
TCTI(命令传输接口):字节流转换,即用于传输TPM命令和接收响应,与汇编编程类似。
TAB
TAB用来控制和同步对一个单一共享TPM的多进程访问,即控制多进程同步访问TPM。
1.当一个进程向TPM发送命令和从TPM接收响应时,不允许其他进程发送命令和接收响应。
2.阻止进程访问不属于它的TPM会话、对象和序列。
RM
RM的作用相当于操作系统中虚拟内存管理器。TPM片内存储空间通常有限,对象、会话和序列需要在TPM和外部存储器之间交换。
一个TPM命令最多可以使用三个实体句柄和三个会话句柄。所有这些都需要存储在TPM内存中,供TPM执行命令所用。RM的工作是拦截命令字节流,确定什么资源需要被加载到TPM中,交换出能够加载所需资源的足够空间,再加载所需资源。
设备驱动
SAPI层等同于用C语言编写而成的TPM2.0.
SAPI包含四组函数:命令上下文分配函数、命令准备函数、命令执行函数和命令完成函数
第八章(TPM实体)
凡是概念性的,都要掌握
是TPM中一个可以通过句柄直接索引到的项目。
实体类型:
永久性实体
永久性实体的句柄由TPM规范定义,不能被创建和删除。
字典攻击锁定机制 PCR
持久性
平台、存储、背书,都需要通过授权才允许使用。所以每一个都有一个授权值和策略。
临时:空
授权值和策略都是空的。与持久性不同的是,它在每次TPM加电重启后都会被自动清除。
重置词典攻击锁定
代表TPM存储的IT管理员。
PCR
口令授权会话
有一种会话是永久的,即口令授权会话
平台NV启用-------平台使能
控制着平台启用。当它是clear(禁用)时,不允许在平台中访问任何NV索引。
NV索引可以属于平台或存储。存储使能控制存储中的NV索引。然而,平台启用不能控制平台的NV索引,必须使用一个单独的控制:平台NV使能。
非易失性实体:NV索引,与永久性实体非常相似
TPM不把NV索引看作对象,因为它们有超过标准对象的属性,对它们的读和写可单独控制
对象:密钥或数据
与NV索引一样,对象的策略在创建后就不能再被修改
所有的对象都隶属于四种中的一种:平台、存储、背书或者空。当某一被销毁时,属于这一的所有对象都会被销毁。
易失性实体(非持久性实体)
HMAC和策略会话
非持久性实体在系统断电重启后不会继续存在
持久性实体
一个持久性实体是一个对象,一个所有者已要求在重启时留存在TPM里。
拥有永久性实体的的所有者可以清除持久性实体。TPM只有有限的持久性内存,应尽量少用持久性实体。
实体名称
TPM2.0中的概念,是实体唯一的标识符,使用名称进行授权计算,而不使用实体的句柄。
名称怎么来的?
永久性实体拥有永远都不会改变的句柄,所以它的名称就是它的句柄。
其他实体拥有一个经计算得到的名称,计算实体公开数据的哈希值。
当数据发送给TPM时,攻击者有可能截获数据。
句柄就是密钥加载到内存中的位置的简写。
使用名称进行授权计算,而不使用实体的句柄,因为当RM加载和擦除实体时,句柄可能会随时间发送变化。
第九章()
给出XXX的定义
是一个实体集合,其相互关联,并作为一个组来被管理。
TPM有三个持久性。
平台通常被平台OEM使用,其代表的是早期的启动代码。平台OEM能依赖于已使能的平台,即使终端用户关闭了其他。
存储受控于用户,它用于隐私不敏感操作。
背书及其TPM供应商以及OEM证书,都受控于隐私管理员,它用于隐私敏感性操作。
空是易失性的。会话、上下文和序列对象都在空中。
TPM1.2只有一个管理员
平台
存储
背书
激活证书(重点)
证书提供方
收到公钥和TPM加密密钥证书
验证证书链
检查公钥
生成证书
生成秘密,封装证书
生成种子,用TPM加密密钥加密种子
用KDF和种子(与名称),生成HMAC密钥和对称密钥。用对称密钥封装秘密,并用HMAC密钥保护。
做完上述,得到结果:
被秘密封装的证书;
被派生于种子的对称密钥封装的秘密;
被TPM加密密钥加了密的种子
TPM:
使用TPM加密密钥解密种子
计算名称
使用种子KDF(与名称),得到HMAC密钥和对称密钥
使用对称密钥解封秘密
TPM2.0中密钥的名称是其公开数据的摘要。
主密钥是一个解密密钥,非签名密钥。CA生成证书,并用主密钥的公钥加密它。只有拥有对应私钥的TPM,才可以恢复证书。
空
第十章(密钥)
密钥生成器以TPM自身的随机数发生器为基础
通读10.3
主密钥和种子
TPM密钥可以形成一个,用父密钥封装子密钥。主密钥是的根密钥。
TPM2.0允许有不限数量的主密钥,不用持续保存。
TPM1.2基于一个SRK进行工作的原因有二:
封装密钥时它只有一个算法和密钥大小
其只有一个密钥:存储。2.0有三个
TPM利用主密钥种子实现有限的非易失性存储空间支持数量不限的根密钥。根密钥不能存在在外面,因其没有父密钥封装它。
主种子不会离开TPM,它们是密钥派生函数的秘密输入。
当TPM创建一个主密钥时,它使用一个主种子和一个公共模板。
10.8-10.9.4通读
密钥属性
用途:签名、加密
类型:对称、非对称
可复制限制
复制是将密钥从一个地方拷贝到另外一个地方的过程。
使用限制
受限的解密密钥
一个受限的签名密钥只可以签名由TPM生成的摘要。
受限的解密密钥
受限的解密密钥实际上就是存储密钥。此密钥只能解密有明确格式的数据,包括结构体其余部分的完整性值。只有这些密钥可以用作父密钥,创建或者加载子对象或者激活证书。
一个非受限的密钥可以对所提供的任意数据执行一般的解密结果并返回结果。
第十一章(非易失性索引)
普通类型
对写入的数据类型没有任何限制
计数器类型
只能递增的64位值。在第一个递增命令开始时,它初始化为TPM上任何计数器中的最大值。这个值包括当前定义的计数器索引和过去定义的但已不在TPM中的计数器。即使删除或重建索引,计数器也无法倒退。
NV位字段索引
NV扩展索引
由特定的哈希算法定义的。
混合索引
NV索引元数据是非易失性的,混合索引数据是在易失性存储器中创建的。除了混合计数器,索引数据仅在正常关机时写入NV内存。
当应用程序希望频繁写操作时,混合索引可能才是适用的,易失性存储器不存在耗损问题。
若索引在正常关机之前被删除,则混合索引数据只能存在于易失性存储器中。
混合普通、扩展和位子段索引只在正常关机时写入NV存储器,但混合计数器则较复杂,因为它不可以出现回滚或丢失递增操作。
NV索引可以有单独的读写控制
TPM支持一组NV索引读写锁
每个NV索引在第一次创建时,都有一个隐含值:未写入
第十二章(平台配置寄存器)
重点
度量审计
PCR值
PCR通过预引导或引导后的软件进行扩展,以反映系统上运行的基础软件的状态。
PCR属性
大多数PCR按照约定分配给特定的软件,但是有一些是未分配的且开放给应用程序的。
PCR Reset属性:是否可以进行复位
PCR 属性:是否可以扩展PCR
PCR算法
催生出2.0的第一需求是删除1.2的sha-1的硬编码。
作为第一个运行的软件,CARM无法被度量或验证,它是可信的根源。
TPM包含多个PCR,PC客户端24个PCR
PCR有两个基本用途:
通过PCR,依赖方可以确定平台软件的可信状态。
PCR可用于根据PCR值授权其他对象的使用
第十三章(授权与会话)
授权控制了对TPM中实体的访问,为TPM提供了安全保证
会话是在后续命令中完成授权和维护状态的载体和工具
会话变体(四个--绑定和未绑定 加盐和未加盐):在会话创建时建立,在会话的整个生命周期中持续存在,决定如何建立会话,以及HMAC密钥和HMAC如何产生。
会话使用修饰符:在单命令的基础上修改HMAC和策略会话的行为,口令授权永远不能用于使用修饰符的会话,常用的有
继续
解密
加密
审计
HMAC会话使用两个随机数,一个来自于调用方,一个来自于TPM,用于防止重放攻击。
HMAC和策略会话的区别
主要区别在于如何授权操作
使用HMAC会话发送的命令只有当与命令一同发送的HMAC正确时才算成功。HMAC授权使用正确计算的HMAC作为证明了解授权的的方法。
策略会话根据策略命令的正确顺序授权操作,是建立在HMAC会话基础上的,并且增加了额外的授权级别。
策略授权需要一组策略命令及其所需的一组特定条件才能授权操作。
策略会话不能用于审计
第十四章(扩展授权策略)
通读到14.6
对实体使用限制的总和称为策略。策略是一个表示满足策略的方法的摘要
一个策略为一个代表一组认证的哈希,它们一起描述如何满足策略。
策略一开始是一个与实体相关联的缓冲区,其大小为哈希算法的大小并设置为全零。
TPM2.0统一了由TPM控制的所有实体可能被授权的方式。
TPM的所有实体通过两种基本方式进行授权:
基于与实体创建时相关联的口令
基于与实体创建时相关联的策略
和字典攻击重置句柄由TPM创建,因此具有默认口令和策略,由TPM分配固定的名称,不依赖于授权它们的策略。策略可变。
所有其他实体(NVRAM索引和密钥)的名称部分是由它们创建时分配的策略计算的。因此,它们的口令可变,策略不可变。
任何可以使用口令直接完成的事情也可以通过策略来完成,但反之则不然。
EA(扩展授权)用于解决TPM实体授权的可管理性问题。
用于认证的每种机制统称为断言,包括如下
口令
HMAC
提供数字签名的智能卡
物理存在
机器状态(PCR)
TPM状态(计数器、时钟)
外部硬件的状态(GPS定位于哪里、已经对指纹识别器进行了认证)
策略可以要求任意数量的断言是真实的。EA的创新在于它以单个哈希值表示由许多断言组成的复杂策略。
策略不包含任何秘密,因此,所有策略都可以纯粹由TPM之外的软件创建。
简单断言策略:单一认证
多断言策略:and
复合策略:or
外部设备状态(GPS、指纹识别器)
外部设备由一对公私钥表示,设备的状态可以是使用设备私钥进行签名的任何东西。
TPM将签名和识别的信息与其期望值进行比较,它不对所得到的信息执行计算。
第十六章(TPM命令审计)
为什么要审计?
审计负责记录在主机与TPM之间传递的TPM命令和响应参数,而且只审计成功执行的命令。
TPM支持两种审计类型:命令审计和会话审计
命令审计有两个重要的特性
审计是以每条命令为基础的
命令审计在PC客户端的TPM规范中是可选择的
会话审计是2.0的新特性,为每个会话提供一个审计摘要
审计日志
审计人员首先从一个审计日志中读取命令和响应参数的列表--日志的存储和命令的执行都在主机端,然后计算命令参数和响应参数的哈希值
审计人员执行一个相当于扩展的计算
验证数字签名
审计人员通过证书链返回到一个受信任的根证书,从而建立对验证公钥的信任
第十七章(解密和加密会话)
加密和解密会话的作用?
加密和解密会话保护在不安全的媒介上传输的秘密信息。
有两种不同的对称密钥模式可以用来加解密会话:XOR CFB
XOR:仅需要哈希算法,适合需要非常少的代码量的情景
一个掩码(一次一密)用于与待加密或者待解密的数据进行异或操作
CFB:提供高强度的加密,但是需要TPM和调用程序都支持一种哈希算法和一种加密算法
KDFa用来生成加密密钥和初始向量IV
第十八章(上下文管理)
TPM功能强大,为了在很大程度上降低成本,内存非常有限。这也意味着包括对象、会话以及序列在需要的情况下必须频繁进出TPM,就像一个虚拟内存管理器与磁盘驱动交换内存页。
当多个应用程序或进程访问TPM时,需要用到TSS的两个组件:TPM访问代理(TAB)和资源管理器(RM)
TAB的责任非常简单:仲裁访问TPM的多个进程
TAB可以以两种不同的方式实现:包含TPM锁或者不包含
RM负责透明地处理所有的对象、会话以及序列与TPM交换的细节
评论(0)