Как сбросить SRK TPM 2.0?

Я хочу сбросить 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?


tpm
person user212942    schedule 07.01.2021    source источник


Ответы (1)


Вы на правильном пути, tpm2_clear очищает иерархию владельцев, то есть SRK и все его дочерние ключи.

Согласно спецификация команды (раздел 24.6) существует несколько причин, по которым tpm2_clear может не работать.

1. Иерархия платформы отключена

Эта ошибка довольно незаметна, потому что она не упоминается явно в описании команды для TPM2_Clear. По умолчанию TPM2_Clear работает с иерархией платформ. Однако иерархию платформ можно отключить (сбросить бит phEnable) с помощью команды TPM2_HierarchyControl:

tpm2_hierarchycontrol -C p phEnable clear

Любое будущее использование иерархии платформ должно привести к коду возврата TPM2_RC_HANDLE = 0x0000010B. Однако нет команды TPM для повторного включения иерархии платформы. Спецификация архитектуры (раздел 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 требует авторизации платформы.

person MemAllox    schedule 09.01.2021
comment
Спасибо за ваш ответ. В VMWare phEnable не устанавливается даже после холодного запуска. Поэтому я попытался на реальной машине, но вызвал ошибку: сбой авторизации без последствий DA. Не могли бы вы помочь мне еще немного? - person user212942; 11.01.2021
comment
Я предполагаю, что иерархия платформ отключена в прошивке, т.е. до передачи управления ядру Linux. После его отключения вы ничего не сможете сделать (кроме сброса доверенного платформенного модуля, что обычно невозможно сделать с помощью программного обеспечения). Я бы сказал, что вам нужно возиться с вашим гипервизором. К сожалению, я не очень хорошо знаком с виртуализацией TPM. - person MemAllox; 12.01.2021
comment
Если ваша производственная система не виртуализирована, вы можете использовать симулятор TPM для разработки. TSS (и, следовательно, инструменты tpm2) в настоящее время поддерживает MsSim и swtpm. - person MemAllox; 12.01.2021