3

我已经设置了双启动,所以我有 Windows 10 和 ubuntu。

按照此页面上的步骤,我可以在 Windows 10 注册表中检索我的 TPM 的锁定密码和所有者密码。结果如下所示:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TPM\WMI\Admin
OwnerAuthStatus    REG_DWORD    0x1
LastAuthLevel    REG_DWORD    0x4
OwnerAuthFull    REG_SZ    iTcW8t1B+tIKmP/uxXPL94QF2Jw=
LockoutHash    REG_SZ    Ki1RiIu8d+eqeDoEFYcAqIoi1n4=
SRKPub    REG_BINARY    A3FEFDE6DBAA425D24717422C46C7E9C85C433CB
StorageOwnerAuth    REG_SZ
TPMCleared    REG_DWORD    0x0

OwnerAuthFull 和 LockoutHash 都是 base64 编码,因此我可以使用此链接对它们进行解码(例如,它以 hexa 形式提供 893716F2DD41FAD20A98FFEEC573CBF78405D89C 作为所有者密码)。

在 ubuntu 上启动之后,我尝试使用这些密码与 TPM 交互。我正在使用tpm2-tools与 ubuntu 下的 TPM 进行交互。当 linux 控制 TPM 并设置这些密码时,tpm2-tools 工作得很好。但是在这里我试图让 Windows 控制 TPM 并且仍然能够在 Ubuntu 下与它通信。例如,当我运行这些命令时(在 ubuntu 控制 TPM 时有效)。

$ tpm2_createprimary --hierarchy e -g sha256 -G rsa -C primary.ctx
属性:
  值:fixedtpm|fixedparent|sensitivedataorigin|userwithauth|restricted|decrypt
  原始:0x30072
$ tpm2_create -g sha256 -G rsa -u key.pub -r key.priv -c primary.ctx
算法:
  值:sha256
  原始:0xb
属性:
  值:fixedtpm|fixedparent|sensitivedataorigin|userwithauth|decrypt|sign
  原始:0x60072
类型:
  值:rsa
  原始:0x1
  rsa: d14e5b7473972e4430b780dff0ec31a3a021fa0049ea1bafc17e2de4e232cba3afcdd8504c9f7dc2fa57df04ec1f64759f6bb0d8563c1ac53a7ce8d563ab7437f1f4b760960acfde7c414355c371ac8c94bba0e004bb08b499f115ba5e8efd655174c87309d64a23e198f6fce8e5451a851b7e96f7c172ba3d4be8e339176d136752e5d038ad9979585008e35bdedfdabe3236b92c60d5c4eabcafaabc8c65401aab5b479d8471d20ca18631c31404b38f3d373b5612ca906599914865cf281e550a748685fed4d60a7aa9c955d374c1d0852bb36ce9d39209e66fada20e4c473765160988470e93b63d81361613e3f5b918da167048ff8afe5e74768544fe03
$ tpm2_load -c primary.ctx -u key.pub -r key.priv -n key.name -C key.ctx

加载成功。
加载句柄:0x80000100

$ tpm2_evictcontrol --auth o -c key.ctx --persistent 0x81010003 -P hex:893716F2DD41FAD20A98FFEEC573CBF78405D89C
持久句柄:0x81010003
错误:Tss2_Sys_EvictControl(0x9A2) - tpm:session(1): 没有 DA 影响的授权失败

我明白了

错误:Tss2_Sys_EvictControl(0x9A2) - tpm:session(1): 没有 DA 影响的授权失败
.

有谁知道我为什么会收到这个错误/为什么这个密码不起作用?我在哪里可以获得正确的密码?那么任何关于如何解决这个问题的指针都值得赞赏!谢谢!

4

2 回答 2

2

我想我得到了答案,实际上 Windows 对密码进行 sha1 哈希,然后将其转换为 base64,然后如果 gpedit 配置如下,则将其存储在注册表中: https ://msdn.microsoft.com/en-us/库/windows/desktop/aa376421(v=vs.85).aspx

于 2018-02-13T15:22:03.467 回答
0

b3nj1 的回答不正确。使用--auth o选项tpm2_evictcontrol意味着您正在选择 TPM 的所有者控制域(请注意,在 2018 年 2 月发布问题时是这样,--auth现在意味着其他内容),这需要所有者授权。OwnerAuthFull并且LockoutHash确实按照 b3nj1 的回答中的描述生成,但OwnerAuthFull存储了 TPM 的锁定授权,而LockoutHash' 的目的未知。

的 base64 解码值OwnerAuthFull 锁定授权值。这可以使用 tpm2-tools' 进行验证tpm2_changeauth- base64-decoded 值可以让用户成功更改锁定授权。您可以使用以下 powershell 命令对十六进制字符串进行 base64 解码:

([System.BitConverter]::ToString([System.Convert]::FromBase64String('stringToConvert'))).Replace('-','')

那么Windows中的所有者授权值是什么?根据此页面:https ://docs.microsoft.com/en-us/windows/security/information-protection/tpm/trusted-platform-module-services-group-policy-settings ,它StorageOwnerAuth适用于 b3nj1。从问题中引用的结果来看,它只是一个空字符串,这意味着所有者授权值只是一个 0 字节的缓冲区。这是默认值。同样,您可以使用tpm2_changeauth.

请注意,该链接声称 TPM 2.0 的锁定授权存储在LockoutAuth. 这是不正确的。正如上面 b3nj1 的结果(以及在我的计算机中)所见,有StorageOwnerAuth,所以它必须是 TPM 2.0,但没有LockoutAuth. 取而代之的是LockoutHash,但文章没有提到这个值。尝试使用tpm2_changeauthwithLockoutHash修改任何所有者、背书和锁定授权都会失败,因此不清楚该值的用途。

对于王对 b3nj1 答案的评论中的链接,这是不正确的。可以tpm2_changeauth用来验证 Windows 中的 owner 和 endorsement 授权值都是空字符串,并且锁定授权存储在OwnerAuthFull. 这意味着所有由 Windows 控制的授权值都是未知的和/或被丢弃的。

我已经在 GitHub 上的文档中提出了这些问题,如果有任何进展,我会更新。

于 2022-01-05T09:04:24.557 回答