TPM 2.0第1部分包含对TPM属性、功能和方法的叙述描述。
本篇主要基于TPM 2.0规范Part 1的第13章(TPM Control Domains)的内容,对TPM的控制域进行解读。
有三个实体控制着TPM:平台固件(platform firmware)、平台所有者(platform Owner)和隐私管理员(Privacy Administrator)。
提示:这三个实体(角色)是有别于普通用户的“特殊身份”。
这三个实体中的每一个都有自己的控制域。 在该域中保留给该实体的TPM资源。 每个实体通过使用特定于域的授权值对其域进行控制。
平台固件定义的NV空间有一个额外的控制参数phEnableNV。 当phEnableNV置位(SET)时,平台固件定义的NV空间是可访问的。 当phEnableNV清除(CLEAR)时,平台固件定义的NV空间无法访问。 这允许独立控制平台固件层次结构及其NV空间。 例如,平台层次结构可以被禁用,同时仍然允许访问平台固件NV空间。
平台固件、平台所有者和隐私管理员都由一个授权值和一个授权策略来控制TPM的某些部分,包括一个特定的Primary Seed(参见第14章)。 每个域的授权、策略和Primary Seed是:
与每个层次结构相关联的是一个逻辑开关(即“enable”),它决定是否启用层次结构。 这些使能是p
hEnable(平台层次结构使能)、shEnable(存储层次结构使能)和ehEnable(背书层次结构使能)。
当对层次结构的启用设置为SET (1),并且规范表明可以使用授权值对操作进行授权时,允许使用相应的策略。 例如,当phEnable是SET且platformAuth允许时,也可以使用platformPolicy。
当一个层次结构的enable为CLEAR时,相应的authValue和authPolicy都不能授权操作。
两种授权类型(值和策略)和关联的层次结构启用的交互旨在提供一组灵活的控件。 Table 2显示了控件组合。
TPM2_HierarchyChangeAuth()可以更改与层次结构相关联的authValue,但只有在该层次结构被启用的情况下。 层次结构的authPolicy或authValue都可以用来授权修改authValue。
平台固件对TPM进行全面的控制,并且平台所有者或隐私管理员可以使用TPM。 平台固件假定由平台制造商提供,并执行硬件管理,为操作系统(操作系统可能由不同的供应商提供)使用做准备。 在某些系统中,平台固件会在加载操作系统后运行。 通常需要这个固件来确保系统的安全性。
平台制造商决定是否可以禁用平台对TPM的使用。 平台禁用TPM的方法与平台制造商相关。
平台控件允许进行以下操作,而普通TPM用户无法进行这些操作:
如前所述,phEnable门同时使用platformAuth/platformPolicy和PPS层次结构。 当phEnable为CLEAR时,需要一个_TPM_Init来SET它。
在任何_TPM_Init上,设置phEnable以确保平台可以在TPM初始化期间使用TPM。
在TPM复位或TPM重启时,platformAuth设置为EmptyAuth, platformPolicy设置为Empty Policy。
所有者可用的TPM控件是平台可用控件的子集。包括:
shEnable门使用了ownerAuth/ownerPolicy和SPS层次结构,ownerAuth和ownerPolicy值是持久的。 当SPS改变时,它们被设置为标准的初始化值(TPM2_Clear()): ownerAuth设置为EmptyAuth, ownerPolicy设置为Empty Policy。 它们可以通过指定的命令显式地更改。
隐私管理员可以控制背书层次结构和隐私敏感数据的报告。
隐私管理员使用endorsementAuth和endorsementPolicy来进行控制。 隐私管理员的控制范围比平台固件和所有者的控制范围更有限。
需要endorsementAuth或endorsementPolicy的情况如下:
其他可能被认为是隐私敏感的操作需要使用背书层次结构中的对象。 例如,由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。
endorsementAuth和endorsementPolicy值是持久的。 当SPS (TPM2_Clear())或EPS(TPM2_ChangeEPS())被更改时,它们被设置为标准的初始化值:endorsementAuth被设置为EmptyAuth, endorsementPolicy被设置为Empty Policy。 它们可以通过指定的命令显式地更改。
使用主种子创建主对象需要使用与主种子相关联的授权:PPS的平台授权、SPS的所有者授权和EPS的背书授权。
需要一个TPM来实现锁定机制,以防止所谓的“字典攻击”,即攻击者尝试许多授权值,直到其中一个成功。 字典攻击保护对于使用人工输入进行授权的安全设备(如智能卡)来说很常见。 人工授权来源的熵可能太小,无法防止自动攻击,因此需要防止快速猜测值的逻辑。
当使用字典攻击锁定防止使用某些资源被使用时,设置一个重置锁定的秘密值是有帮助的。 TPM将秘密值存储为lockoutAuth。 或者,可以使用策略(lockoutPolicy)重置锁定。
当执行TPM2_Clear()时,lockoutAuth值重置为EmptyAuth, lockoutPolicy重置为EmptyBuffer。
只有提供lockoutAuth的当前值时,才可以修改lockoutAuth (使用TPM2_HierarchyChangeAuth())。 LockoutPolicy可以使用TPM2_Set PrimaryPolicy()来修改。
获得TPM的所有权是为ownerAuth、endorsementAuth和lockoutAuth插入授权值的过程。
已清除TPM (TPM2_Clear())的ownerAuth、endorsementAuth和lockoutAuth值设置为EmptyAuth,其ownerPolicy、endorsementPolicy和lockoutPolicy值设置为Empty Buffers。 操作系统需要更改这些值,并代表平台所有者管理它们。
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进行如下操作:
以上就是今天要讲的内容。本文介绍实体的控件和控制域,实体通过控件可以实现一些普通用户无权进行的操作。实体包括平台(Platform)、所有者(Owner)和隐私管理员(Privacy Administrator),实体通过相对应的控件对平台所有权进行获取和释放,以达到控制TPM资源的目的。
下一篇我们介绍主种子(Primary Seeds,Part 1体系结构第14章)。