如何重置 TPM 2.0 的 SRK? 1.平台层次结构被禁用2. TPM2_Clear 命令被禁用

问题描述

我想重置 SRK。 也可以将其视为 TPM 的出厂重置。

我试过 tpm2_clear 但它不起作用。


机器:VMWare 工作站

# tpm2_getcap properties-variable
TPM2_PT_PERSISTENT:
  ownerAuthSet:              0
  endorsementAuthSet:        0
  lockoutAuthSet:            1
  reserved1:                 0
  disableClear:              0
  inLockout:                 0
  tpmGeneratedEPS:           1
  reserved2:                 0
TPM2_PT_STARTUP_CLEAR:
  phEnable:                  0
  shEnable:                  1
  ehEnable:                  1
  phEnableNV:                1
  reserved1:                 0
  orderly:                   0

# tpm2_clear -c p
WARNING:esys:src/tss2-esys/api/Esys_Clear.c:282:Esys_Clear_Finish() Received TPM Error
ERROR:esys:src/tss2-esys/api/Esys_Clear.c:97:Esys_Clear() Esys Finish ErrorCode (0x00000185)
ERROR: Esys_Clear(0x185) - tpm:handle(1):hierarchy is not enabled or is not correct for the use
ERROR: Unable to run tpm2_clear

在 VMWare 中,即使在冷启动后也未设置 phEnable。


机器:HP EliteBook 850 G5

~# tpm2_getcap properties-variable
TPM2_PT_PERSISTENT:
  ownerAuthSet:              0
  endorsementAuthSet:        0
  lockoutAuthSet:            1
  reserved1:                 0
  disableClear:              0
  inLockout:                 0
  tpmGeneratedEPS:           0
  reserved2:                 0
TPM2_PT_STARTUP_CLEAR:
  phEnable:                  1
  shEnable:                  0
  ehEnable:                  1
  phEnableNV:                1
  reserved1:                 0
  orderly:                   1

# tpm2_clear -c p
WARNING:esys:src/tss2-esys/api/Esys_Clear.c:282:Esys_Clear_Finish() Received TPM Error
ERROR:esys:src/tss2-esys/api/Esys_Clear.c:97:Esys_Clear() Esys Finish ErrorCode (0x000009a2)
ERROR: Esys_Clear(0x9A2) - tpm:session(1):authorization failure without DA implications
ERROR: Unable to run tpm2_clear

# tpm2_clear -c o
ERROR: Unexpected handle - TPM2_RH_OWNER
ERROR: UnkNown or unsupported handle,got: "o"
ERROR: Cannot make sense of object context "o"
ERROR: Invalid lockout authorization
ERROR: Unable to run tpm2_clear

有什么办法可以重置SRK吗?

解决方法

您走对了,tpm2_clear 清除了所有者层次结构,即 SRK 及其所有子密钥。

根据 command specification (sec. 24.6)tpm2_clear 可能失败的原因有多种。

1.平台层次结构被禁用

这个错误很微妙,因为它没有在 TPM2_Clear 的命令描述中明确提及。默认情况下,TPM2_Clear 在平台层次结构上运行。但是,可以通过命令 phEnable:

禁用平台层次结构(TPM2_HierarchyControl 位清除)
tpm2_hierarchycontrol -C p phEnable clear

平台层次结构的任何未来使用都应导致返回代码 TPM2_RC_HANDLE = 0x0000010B。但是,没有用于重新启用平台层次结构的 TPM 命令。 Architecture specification (Sec 13.3)

当 phEnable 为 CLEAR 时,需要一个 _TPM_Init 来设置它。

您似乎需要重置 TPM(切换硬件重置信号或关闭电源)以重新启用平台层次结构。

如果这不能解决您的问题,请查看下一个潜在问题。

2. TPM2_Clear 命令被禁用

这可能不是您的问题,因为它会产生另一个错误(返回码 TPM_RC_DISABLED = 0x0000120)。

可以禁用 TPM2_Clear 命令(disableClear 位设置)。这是通过命令 TPM2_ClearControl 完成的。要启用清算,请调用 tpm2_clearcontrol -Cp c。与 tpm2_clear 一样,tpm2_clearcontrol 需要平台授权。