尝试了解 tpm2-tools 的错误

尝试了解 tpm2-tools 的错误

我正在尝试按照本教程进行操作,但我使用的是 Ubuntu 21.04: https://run.tournament.org.il/ubuntu-20-04-and-tpm2-encrypted-system-disk/

当我运行第二条命令时:

sudo tpm2_nvdefine -s 64 0x1500016

我收到错误:

WARNING:esys:src/tss2-esys/api/Esys_NV_DefineSpace.c:337:Esys_NV_DefineSpace_Finish() Received TPM Error 
ERROR:esys:src/tss2-esys/api/Esys_NV_DefineSpace.c:122:Esys_NV_DefineSpace() Esys Finish ErrorCode (0x000009a2) 
ERROR: Failed to define NV area at index 0x1500016
ERROR: Esys_NV_DefineSpace(0x9A2) - tpm:session(1):authorization failure without DA implications
ERROR: Failed to create NV index 0x1500016.
ERROR: Unable to run tpm2_nvdefine

我也尝试过:

sudo tpm2_clear

结果是:

WARNING:esys:src/tss2-esys/api/Esys_Clear.c:291:Esys_Clear_Finish() Received TPM Error 
ERROR:esys:src/tss2-esys/api/Esys_Clear.c:97:Esys_Clear() Esys Finish ErrorCode (0x0000098e) 
ERROR: Esys_Clear(0x98E) - tpm:session(1):the authorization HMAC check failed and DA counter incremented
ERROR: Unable to run tpm2_clear

这让我看看状态:

$ sudo tpm2_getcap properties-variable | egrep 'TPM2_PT_(MAX|LOCKOUT).*'
TPM2_PT_LOCKOUT_COUNTER: 0x0
TPM2_PT_MAX_AUTH_FAIL: 0xA
TPM2_PT_LOCKOUT_INTERVAL: 0x1C20
TPM2_PT_LOCKOUT_RECOVERY: 0x1C20

我也尝试过:

sudo tpm2_dictionarylockout --setup-parameters --max-tries=4294967295 --clear-lockout

这也会导致类似的错误:

WARNING:esys:src/tss2-esys/api/Esys_DictionaryAttackLockReset.c:288:Esys_DictionaryAttackLockReset_Finish() Received TPM Error 
ERROR:esys:src/tss2-esys/api/Esys_DictionaryAttackLockReset.c:98:Esys_DictionaryAttackLockReset() Esys Finish ErrorCode (0x00000921) 
ERROR: Esys_DictionaryAttackLockReset(0x921) - tpm:warn(2.0): authorizations for objects subject to DA protection are not allowed at this time because the TPM is in DA lockout mode
ERROR: Unable to run tpm2_dictionarylockout

我还尝试了此处有关磁盘加密的 tpm2-tools 教程中的第一个命令:https://tpm2-software.github.io/2020/04/13/Disk-Encryption.html

其中写道:

sudo tpm2_createprimary -Q -C o -c prim.ctx

并导致类似的错误:

WARNING:esys:src/tss2-esys/api/Esys_CreatePrimary.c:393:Esys_CreatePrimary_Finish() Received TPM Error 
ERROR:esys:src/tss2-esys/api/Esys_CreatePrimary.c:135:Esys_CreatePrimary() Esys Finish ErrorCode (0x000009a2) 
ERROR: Esys_CreatePrimary(0x9A2) - tpm:session(1):authorization failure without DA implications
ERROR: Unable to run tpm2_createprimary

我已经在 Google 上搜索了所有这些错误,但找不到可以理解的解释。有很多信息,但来自 tpm-tools 和/或带有完全错误的参数。看来 tpm2_* 命令变化非常快!

这是否意味着我的 TPM 已被禁用或锁定?

我注意到 tpm2_takeownership 不再在 Ubuntu 软件包中(也不在 20.04 中),所以我在互联网上找到的其他解决方案将不起作用(除非我从源代码安装它),但我想如果它不在软件包中,这是意料之外的。

其他东西(如 tpm2_pcrread)没有抛出任何错误。那么我的 TPM 是否可能可读但不可写?我该如何重置它,或者这是制造商的设置还是我需要在 BIOS 中执行某些操作才能使其可写?

答案1

在 ubuntu 20.04 上设置 TPM 时,我遇到了同样的错误。我的情况是,我之前的操作系统是 Windows 10,所有驱动器都为 bitlocker 设置了 TPM。

对我来说,解决方案重置 TPM 的方法

$ echo 5 > /sys/class/tpm/tpm0/ppi/request
$ reboot

然后,TPM 被重置并且命令按预期工作。

编辑:根据 OP 中的链接中的一条评论:https://run.tournament.org.il/ubuntu-20-04-and-tpm2-encrypted-system-disk/,TPM 被 Windows 10 bitlocker 锁定到引导加载程序和硬件的特定组合(即 Windows 10 拥有 TPM 的所有权)。因此,如果使用新操作系统,则需要重置 TPM 才能使用。

相关内容