当前位置:网站首页>【TPM2.0原理及应用指南】 9、10、11章
【TPM2.0原理及应用指南】 9、10、11章
2022-07-07 15:38:00 【Godams】
第9章 hierarchy
NV索引属于一个hierarchy,但不在树中。
每个hierarchy的密码根是一个种子,一个大的随机数,TPM产生,永远不可能泄露。
9.1 三个持久性hierarchy
TPM 1.2 中SRK(存储根密钥)是随机产生的,一旦被删除就不能再次生成同样的SRK。
YPM 2.0 中扩展出了三个持久性hierarchy(平台、存储、背书),这三个hierarchy有如下相同特征
- 每一个都有授权值和策略
- 每一个都有启用标志
- 每一个都有一个种子,从中可以得出密钥和数据对象。种子是持续存在的。
- 每一个都有主密钥,由主密钥可以生成子密钥
TPM 2.0中添加了更多灵活性:
- 主密钥并不限于存储密钥
- 可以存在不止一个主密钥
- 不用存储所有主密钥,可以只在需要时生成他们,本质上,种子才是真正的根,主密钥可以被换出到TPM外部,当作上下文存储起来。
三种hierarchy
- 平台hierarchy:
意在处于平台制造商的控制之下,平台hierarchy在重启时是使能的,平台授权值被设定为一个零长度的口令,策略被设定为一个不可满足的策略,这在hierarchy中是独特的。 - 存储hierarchy
目的是供平台所有者使用,存储hierarchy可以由所有者禁用,用于非隐私敏感性操作,而单独控制的背书hierarchy则处理隐私。 - 背书hierarchy
背书hierarchy是用于隐私敏感性操作的,它的使能标志、策略和授权值,与其他hierarchy都是独立的。 关心隐私的用户可以禁用背书hierarchy,TPM应用仍可使用存储hierarchy,允许平台软件使用TPM。
9.2 隐私
这里的隐私意味着接收到TPM数字签名的远程方,不能将数字签名相关联,并从密码学上证明其来自于同一个TPM。关联就是要求确定签名密钥来源于一个单一、经过认证的TPM。
TPM制造商生成背书主种子,基于此种子生成一个或多个主密钥,然后为这些密钥生成证书。证书证明密钥来自于一个经过认证的TPM,TPM是制造商生产的。
如果主密钥是一个签名密钥,直接证明其他签名密钥,关联就很简单,因为所有的签名收敛于同一个证书。
当主密钥是加密密钥时,创建子密钥证书的过程会采用一种更复杂的流程,叫做激活证书。证书授权机构称为隐私CA,因为对已经证明过的密钥,认为隐私CA不会泄露密钥之间的任何关联关系。
9.2.1 激活证书
主密钥是一个解密密钥,非签名密钥,CA生成证书,并用主密钥的公钥加密它。只有拥有对应私钥的TPM,才可以恢复证书。
课本P89页,这部分内容太多,打字可能有点慢。
9.3 空hierarchy
空hierarchy与三种持久性hierarchy类似,可以有主密钥,基于主密钥可以创建子密钥。不同点如下:
- 授权值是一个零长度的口令,策略为空(不能被满足)。这些不能被改变
- 它不能被禁用
- 它有一个种子,密钥和数据对象都来源于它。这个种子不是持久性的,在每次重启时,它和proof会被重新生成不同的值
会话、保存的上下文对象和序列对象(摘要和HMAC状态)都是空hierarchy。这使得他们在系统每次重启后都为空,因为种子和proof值改变了。用户通常不会修改背书hierarchy种子(因为这会使证书无效)、存储hierarchy种子(因为它会让具有长生命周期的密钥无效)和平台hierarchy种子(因为用户可能没有这个权力)。
临时性密钥在系统重启后就会被擦除,TPM可以被用作一个密码协处理器,利用外部生成的密钥,执行密码算法。
第10章 密钥
能够在应用程序是用密钥时,同时保证它们安全地存在于一个硬件设备里,这是TPM的最强之处。
10.2 密钥生成器
基于若软件随机数发生器或熵源强度不够的软件生成密钥的弱点,它都没有。
10.3 主密钥和种子
TPM密钥可以形成一个hierarchy,用父密钥封装子密钥。
1、TPM密钥可以形成一个hierarchy,用父密钥封装子密钥。主密钥是hierarchy的根密钥。它们没有父亲。
2、三个持久性 hierarchy 中的每一个都有一个相应的主种子:背书主种子、平台主种子和存储主种子。这些种子从来不会离开TPM。它们是密钥派生函数的秘密输人。当TPM创建一个主密钥时,它使用一个主种子和一个公共模板。在具体指定一个密钥时,你通常期望的所有项目在模板里都有,这些项目包括算法和密钥大小、它的策略和密钥类型(签名、加密等)。调用者也可以在模板中提供一个独特的数据。该独特数据是模板中公钥区域的输入。
3、密钥派生函数是固定的和可重复的。相同的种子、相同的模板,总是产生相同的密钥。通过改变模板中的独特数据,调用者可以创建无限数量的主密钥。
10.4 密钥持久留存
1、用户调用TPM2_EvictControl命令,将一个密钥从易失性空间移存到非易失性空间中,这样在每次加电重启后,它就可以保持已被加载(持久保存)。任何密钥都不一定需要被持久保存以供使用。通常我们希望只有少量主密钥,或许每个hierarchy有一个,会被设定为持久留存,以提高性能。
2、除主密钥外,在背书hierarchy、存储hierarchy和平台hierarchy中的其他密钥也可以被持久保存。
3、空hierarchy 中没有密钥可以被持久保存。重启后,所有的密钥都会丢失。
4、只有有限数量密钥可以被持久保存,但TPM可以处理无限数量的密钥,应用程序通过将TPM当作一个密钥缓存来做到这一点
10.5 密钥缓存
除了主密钥之外的其他密钥,TPM可用作密钥缓存。也就是说,TPM2_Create创建一个密钥,并使用父密钥封装( wrap)(加密)此密钥,将封装后的密钥返回给调用者。调用者将此密钥存储到TPM 之外,可能是磁盘上。为了使用此密钥,用户必须使用TPM2_Load,将它先加载到TPM 中。完成后,调用者可以使用TPM2_FlushContext释放空间。此密钥与主密钥不同,主密钥没有父亲,在创建后就留存在 TPM 中。
10.6 密钥授权
TPM可以提供访问控制,密钥访问需要授权。当密钥离开TPM时,他被一个强的父加密密钥封装,并且有词典攻击保护逻辑保护,即密码错误时,TPM会记录,并阻止在一个可配置时间内进一步尝试。
10.7 密钥销毁
有时,密钥需要被销毁,可能是因为授权被泄露,也可能是机器要被用作其他用途。用软件存储的密钥永远都不能被销毁,因为它们可能在任何地方复制。但是TPM密钥有父密钥或者本身就是主密钥。每个 hierarchy都有各自独特的主种子。擦除主种子,就可以阻止重新创建该hierarchy的主密钥——显然这是一个很强硬且很少执行的行为。擦除主密钥可以阻止它们的子密钥被加载到TPM中。有属性表明只能存在于TPM中的密钥都将被销毁。
密钥类型和属性
主密钥不能被复制,他们与TPM中的某个hierarchy相绑定。
密钥复制属性的一个主要用例就是密钥备份。TPM 2.0由两个属性控制密钥的复制,一个极端是,一个密钥被锁定到一个单一TPM上的单一父密钥,永远不允许被复制。另一个是,密钥可以自由复制,所有由该父密钥封装的子密钥,直至所有子孙,在目的平台都可用。居中的情况是,一个密钥被锁定到一个父密钥,但父密钥移动时,他也会移动。
子密钥可以有不止一个父密钥,复制过程就是建立新的父子关系的过程,但没有废除原来的父子关系。
受限的签名密钥:一个受限的签名密钥只可以签名由TPM生成的摘要。然而TPM如何知道它计算了摘要呢,答案是使用票据,当TPM计算摘要时,它生成一个票据,声明是TPM自身计算的摘要。TPM通过4字节的魔数知道哪些数据生成票据,不是以魔数开头,才生成。
10.10 上下文管理与加载
上下文管理包括,将一个已加载密钥的上下文保存到TPM之外,之后再将上下文加载到TPM里。
10.11 空hierarchy
每次重启时,都会被清除
第11章 非易失性索引
TPM要求在使用一下两种通用数据结构是,需要使用非易失性(NV)存储器:
- 在TPM架构中定义的数据结构:hierarchy授权值、种子、证据、计数器、时钟、密钥
- 有用户或特定平台规范定义的非结构化数据:用户的自定义索引,TPM通过基于HMAC的共享私钥、PCR值、物理位置(locality),以及物理存在来提供授权,进而控制索引访问。
NV四种索引类型:普通类型,计数器类型,位字段类型,扩展类型
11.1 NV普通索引
普通索引–类似于TPM1.2索引–拥有任意长度的非结构化数据。与计数器、位字段和扩展索引不同,它对可写入的数据类型没有任何限制
- NV计数器索引
非易失性计数器是一个只能递增的64位值。在第一个递增命令开始是,它初始化为TPM上任何计数器中的最大值。这个值包括当前定义的计数器索引和过去定义的但已不在TPM中的计数器。因此,即使删除或重建索引,计数器也无法倒退。 - NV位字段索引
位字段索引保护64位,在第一次写入开始是将所有位初始化为空,也可以有选择的设置位。一位(或多位)可以设置,但从不清空。 - NV扩展索引
扩展索引是由特定的哈希算法定义的,并且有固定的索引生命期。该索引的数据大小基于其哈希算法。数据在第一次写入之前全部初始化为0。写操作是一个扩展操作,类似于PCR中的写操作
大多数用力集结合扩展索引和混合索引来创建灵活的PCR,另一种通用的用例是安全审计日志,因为任何扩展操作都会创建一个无法逆转的密码保护历史记录。 - 混合索引
另一个新的TPM2.0特性是混合索引。与非混合索引一样,NV索引元数据(索引句柄、大小、属性、策略和口令)是非易失性,混合索引数据是在易失性存储器中创建的。处理混合计数器,索引数据仅在正常关机时写入NV内存。4种索引类型中的任何一种(普通、计数器、位字段或扩展)都可以是混合索引。
当应用程序希望频繁写操作时,混合索引可能才是适用的。由于NV技术往往是介质损耗性的,TPM可以通过拒绝频繁写操作保护自己。易失性存储器不存在损耗问题,因此可以根据需要编写混合索引。
若索引在正常关机之前被删除,则混合索引数据只能存在于易失性存储器中。应用程序可以定义索引、写入数据、适用策略的授权值,然后删除索引。
混合普通、扩展和位字段索引只在正常关机时写入NV存储器,但混合计数器则较复杂,因为它不可以出现回滚或丢失递增操作。因此必须确保即使不能实现正常关机,易失值也要写入NV存储器。 - NV访问控制
- NV写入
每个索引在第一次创建时,都有一个隐含值:未写入。在TPM1.2中,总是用全0数据创建索引,所以读操作不能区分全零和尚未写入的索引。在TPM2.0中,未写入是一个单独状态。策略可以指定索引必须写入或未写入。 - NV索引句柄值
当用户创建NV索引是,用户会分配索引值。在TPM1.2中,某些位具有特殊属性,例如用于锁定的D位。在TPM2.0库规范中,处理全局句柄范围之外就没有索引赋值,并且索引值的任何位都,没有特殊含义。TPM不会根据索引值强制规定任何属性。然而,特定平台规范或全局TCG注册表可以指定索引值。 - NV名称
TPM实体的名称唯一(加密)定义了该实体,并可用于授权。NV索引是一个公共区域的哈希值,包括索引(句柄)、属性(包括它是否已经被写入)、策略和大小。 - NV口令
TPM的一个奇怪的地方是用户不能真正更改对象的口令。TPM2_ObjectChangeAuth命令可以用新命令创建对象,但原来的对象仍然存在。用户可以删除该对象的所有现有副本,但TPM不能强制执行此操作。
NV索引仅存在于TPM内。它永远不会被保存到上下文或以任何方式移出TPM。
边栏推荐
- Seaborn数据可视化
- 如何在软件研发阶段落地安全实践
- 自定义View必备知识,Android研发岗必问30+道高级面试题
- LeetCode 1986. The minimum working time to complete the task is one question per day
- LeetCode 120. Triangle minimum path and daily question
- L1-028 判断素数(Lua)
- Smart logistics platform: make overseas warehouses smarter
- Blue Bridge Cup final XOR conversion 100 points
- [Huang ah code] Why do I suggest you choose go instead of PHP?
- Skimage learning (3) -- adapt the gray filter to RGB images, separate colors by immunohistochemical staining, and filter the maximum value of the region
猜你喜欢
麒麟信安云平台全新升级!
Share the latest high-frequency Android interview questions, and take you to explore the Android event distribution mechanism
Seaborn data visualization
SIGGRAPH 2022最佳技术论文奖重磅出炉!北大陈宝权团队获荣誉提名
skimage学习(3)——使灰度滤镜适应 RGB 图像、免疫组化染色分离颜色、过滤区域最大值
DevOps 的运营和商业利益指南
Lex & yacc of Pisa proxy SQL parsing
麒麟信安中标国网新一代调度项目!
SlashData开发者工具榜首等你而定!!!
Skimage learning (3) -- adapt the gray filter to RGB images, separate colors by immunohistochemical staining, and filter the maximum value of the region
随机推荐
LeetCode 1477. Find two subarrays with sum as the target value and no overlap
Sator a lancé le jeu web 3 "satorspace" et a lancé huobi
rpcms获取指定分类下的文章的方法
Reflections on "product managers must read: five classic innovative thinking models"
第二十四届中国科协湖南组委会调研课题组一行莅临麒麟信安调研考察
LeetCode 300. 最长递增子序列 每日一题
DevOps 的运营和商业利益指南
麒麟信安中标国网新一代调度项目!
Linux 安装mysql8.X超详细图文教程
Shallow understanding Net core routing
让保险更“保险”!麒麟信安一云多芯云桌面中标中国人寿, 助力金融保险信息技术创新发展
Smart logistics platform: make overseas warehouses smarter
麒麟信安云平台全新升级!
The process of creating custom controls in QT to encapsulating them into toolbars (II): encapsulating custom controls into toolbars
LeetCode 1654. 到家的最少跳跃次数 每日一题
Sator推出Web3游戏“Satorspace” ,并上线Huobi
Lex & yacc of Pisa proxy SQL parsing
Flask搭建api服务-生成API文档
Flash build API service
麒麟信安操作系统衍生产品解决方案 | 存储多路径管理系统,有效提高数据传输可靠性