TPM 2.0规范解读系列——Part 1体系结构第(六)读:TPM控制域

前言

TPM 2.0第1部分包含对TPM属性、功能和方法的叙述描述。
本篇主要基于TPM 2.0规范Part 1的第13章(TPM Control Domains)的内容,对TPM的控制域进行解读。


文章目录

  • 前言
  • 一、介绍
  • 二、控件
    • 1.平台控件(Platform Controls)
    • 2.所有者控件(Owner Controls)
    • 3.隐私管理员控件(Privacy Administrator Controls)
  • 三、主种子授权(Primary Seed Authorizations)
  • 四、锁定控件(Lockout Control)
  • 五、TPM所有权(TPM Ownership)
    • 1.获取所有权(Taking Ownership)
    • 2.释放所有权(Releasing Ownership)
  • 总结


一、介绍

有三个实体控制着TPM:平台固件(platform firmware)、平台所有者(platform Owner)和隐私管理员(Privacy Administrator)
提示:这三个实体(角色)是有别于普通用户的“特殊身份”。

这三个实体中的每一个都有自己的控制域。 在该域中保留给该实体的TPM资源。 每个实体通过使用特定于域的授权值对其域进行控制。

平台固件定义的NV空间有一个额外的控制参数phEnableNV。 当phEnableNV置位(SET)时,平台固件定义的NV空间是可访问的。 当phEnableNV清除(CLEAR)时,平台固件定义的NV空间无法访问。 这允许独立控制平台固件层次结构及其NV空间。 例如,平台层次结构可以被禁用,同时仍然允许访问平台固件NV空间。

二、控件

平台固件、平台所有者和隐私管理员都由一个授权值和一个授权策略来控制TPM的某些部分,包括一个特定的Primary Seed(参见第14章)。 每个域的授权、策略和Primary Seed是:

  • 平台固件:platformAuth/platformPolicy/PPS
  • 所有者:ownerAuth/ownerPolicy/SPS
  • 隐私管理员:endorsementAuth/endorsementPolicy/EPS

与每个层次结构相关联的是一个逻辑开关(即“enable”),它决定是否启用层次结构。 这些使能是p
hEnable(平台层次结构使能)、shEnable(存储层次结构使能)和ehEnable(背书层次结构使能)。

当对层次结构的启用设置为SET (1),并且规范表明可以使用授权值对操作进行授权时,允许使用相应的策略。 例如,当phEnable是SET且platformAuth允许时,也可以使用platformPolicy。

当一个层次结构的enable为CLEAR时,相应的authValue和authPolicy都不能授权操作。

两种授权类型(值和策略)和关联的层次结构启用的交互旨在提供一组灵活的控件。 Table 2显示了控件组合。
TPM 2.0规范解读系列——Part 1体系结构第(六)读:TPM控制域_第1张图片
TPM2_HierarchyChangeAuth()可以更改与层次结构相关联的authValue,但只有在该层次结构被启用的情况下。 层次结构的authPolicy或authValue都可以用来授权修改authValue。

1.平台控件(Platform Controls)

平台固件对TPM进行全面的控制,并且平台所有者或隐私管理员可以使用TPM。 平台固件假定由平台制造商提供,并执行硬件管理,为操作系统(操作系统可能由不同的供应商提供)使用做准备。 在某些系统中,平台固件会在加载操作系统后运行。 通常需要这个固件来确保系统的安全性。

平台制造商决定是否可以禁用平台对TPM的使用。 平台禁用TPM的方法与平台制造商相关。

平台控件允许进行以下操作,而普通TPM用户无法进行这些操作:

  • TPM NV存储分配;
  • PCR配置;
  • 控制任何密钥层次的可用性;
  • 修改PPS、SPS和EPS,重置关联的授权值和策略。

如前所述,phEnable门同时使用platformAuth/platformPolicy和PPS层次结构。 当phEnableCLEAR时,需要一个_TPM_Init来SET它。

在任何_TPM_Init上,设置phEnable以确保平台可以在TPM初始化期间使用TPM。

在TPM复位或TPM重启时,platformAuth设置为EmptyAuth, platformPolicy设置为Empty Policy。

2.所有者控件(Owner Controls)

所有者可用的TPM控件是平台可用控件的子集。包括:

  • TPM NV存储分配
  • 控制任何存储层次的可用性

shEnable门使用了ownerAuth/ownerPolicy和SPS层次结构,ownerAuth和ownerPolicy值是持久的。 当SPS改变时,它们被设置为标准的初始化值(TPM2_Clear()): ownerAuth设置为EmptyAuth, ownerPolicy设置为Empty Policy。 它们可以通过指定的命令显式地更改。

3.隐私管理员控件(Privacy Administrator Controls)

隐私管理员可以控制背书层次结构和隐私敏感数据的报告。

隐私管理员使用endorsementAuthendorsementPolicy来进行控制。 隐私管理员的控制范围比平台固件和所有者的控制范围更有限

需要endorsementAuthendorsementPolicy的情况如下:

  • 在背书层次结构中创建Primary Objects时,和
  • 在控制背书层级的可用性时。

其他可能被认为是隐私敏感的操作需要使用背书层次结构中的对象。 例如,由TPM对TPM对象进行认证会产生一个数据结构,其中的数据可以允许对象之间的相互关联。 除非认证密钥在背书层次结构中,否则该数据将被模糊化。 TPM的隐私管理员需要管理背书层次结构中对象的创建,以确保这些对象的使用符合它们的隐私策略。

ehEnable门使用endorsementAuth/endorsementPolicy和EPS层次结构。 另外,当SPS发生变化时,会将EPS层次结构中的对象从TPM中清除,并创建新的EPS对象(即Primary Objects)。

注:清除层次结构是必要的,以确保新的所有者不会滥用前一个所有者创建的对象,并且属于前一个所有者的对象不会损害新的所有者。

ehEnable在每次TPM2_Startup(TPM_SU_CLEAR)时(即TPM Reset或TPM Restart)或SPS改变时(TPM2_Clear())设置。 ehEnable可以使用背书授权或平台授权进行CLEAR。 当ehEnable为CLEAR时,可以使用平台授权SET

注:如果提供了适当的授权,TPM2_HierarchyControl()将SET或CLEAR ehEnable。

endorsementAuthendorsementPolicy值是持久的。 当SPS (TPM2_Clear())或EPS(TPM2_ChangeEPS())被更改时,它们被设置为标准的初始化值:endorsementAuth被设置为EmptyAuth, endorsementPolicy被设置为Empty Policy。 它们可以通过指定的命令显式地更改。

三、主种子授权(Primary Seed Authorizations)

使用主种子创建主对象需要使用与主种子相关联的授权:PPS的平台授权、SPS的所有者授权和EPS的背书授权。

四、锁定控件(Lockout Control)

需要一个TPM来实现锁定机制,以防止所谓的“字典攻击”,即攻击者尝试许多授权值,直到其中一个成功。 字典攻击保护对于使用人工输入进行授权的安全设备(如智能卡)来说很常见。 人工授权来源的熵可能太小,无法防止自动攻击,因此需要防止快速猜测值的逻辑。

当使用字典攻击锁定防止使用某些资源被使用时,设置一个重置锁定的秘密值是有帮助的。 TPM将秘密值存储为lockoutAuth。 或者,可以使用策略(lockoutPolicy)重置锁定。

当执行TPM2_Clear()时,lockoutAuth值重置为EmptyAuth, lockoutPolicy重置为EmptyBuffer。

只有提供lockoutAuth的当前值时,才可以修改lockoutAuth (使用TPM2_HierarchyChangeAuth())。 LockoutPolicy可以使用TPM2_Set PrimaryPolicy()来修改。

五、TPM所有权(TPM Ownership)

1.获取所有权(Taking Ownership)

获得TPM的所有权是为ownerAuthendorsementAuthlockoutAuth插入授权值的过程。

已清除TPM (TPM2_Clear())的ownerAuth、endorsementAuth和lockoutAuth值设置为EmptyAuth,其ownerPolicyendorsementPolicylockoutPolicy值设置为Empty Buffers。 操作系统需要更改这些值,并代表平台所有者管理它们。

2.释放所有权(Releasing Ownership)

TPM2_Clear()从TPM中清除当前的Owner。 一个持久的TPM控件(TPMA_PERMANENT.disableClear)控制TPM2_Clear()是否有效。 如果disableClear是CLEAR,那么TPM2_Clear()可以使用平台授权或锁定授权进行授权。 如果控件是SET,则TPM2_Clear()不起作用。

TPMA_PERMANENT.disableClear可以使用platformAuth/ platformPolicy进行SET或CLEAR,使平台能够在需要时启用TPM2_Clear()的执行。

TPM2_Clear()指示TPM进行如下操作:

  • 刷新与SPS或EPS层次结构相关的任何瞬态或持久对象(PPS对象不受影响);
  • 释放任何没有TPMA_NV_PLATFORMCREATE属性SET的NV索引位置;
  • 设置shEnable和ehEnable为TRUE;
  • 设置ownerAuth, endorsementAuth和lockoutAuth为EmptyAuth;
  • 设置ownerPolicy, endorsementPolicy和lockoutPolicy为空策略;
  • 用RNG的新值替换现有的SPS;
  • 重新计算shProof和ehProof。

总结

以上就是今天要讲的内容。本文介绍实体的控件和控制域,实体通过控件可以实现一些普通用户无权进行的操作。实体包括平台(Platform)、所有者(Owner)和隐私管理员(Privacy Administrator),实体通过相对应的控件对平台所有权进行获取和释放,以达到控制TPM资源的目的。

下一篇我们介绍主种子(Primary Seeds,Part 1体系结构第14章)。

你可能感兴趣的:(TPM,可信计算,TCM,系统安全,安全架构,安全)