如何确定计算机是否具有可用的 TPM(可信平台模块)

如何确定计算机是否具有可用的 TPM(可信平台模块)

想一起玩可信平台模块东西,我安装了裤子并尝试开始tcsd,但我得到了这个错误:

TCSD TDDL ERROR: Could not find a device to open!

但是,我的内核加载了多个 TPM 模块:

# lsmod | grep tpm
tpm_crb                16384  0
tpm_tis                16384  0
tpm_tis_core           20480  1 tpm_tis
tpm                    40960  3 tpm_tis,tpm_crb,tpm_tis_core

那么,如何确定我的计算机是否缺少 TPM,以及 TrouSerS 是否存在错误?

两者都不dmidecode也不cpuid输出有关“tpm”或“信任”的任何内容。往里看/var/log/messages,一方面我看到rngd: /dev/tpm0: No such file or directory,但另一方面我看到kernel: Initialise system trusted keyrings并根据这个内核文档可信密钥使用 TPM。

编辑:我的计算机的 BIOS 设置菜单中没有提及任何有关 TPM 的内容。

另外,看看/proc/keys

# cat /proc/keys 
******** I--Q---     1 perm 1f3f0000     0 65534 keyring   _uid_ses.0: 1
******** I--Q---     7 perm 3f030000     0     0 keyring   _ses: 1
******** I--Q---     3 perm 1f3f0000     0 65534 keyring   _uid.0: empty
******** I------     2 perm 1f0b0000     0     0 keyring   .builtin_trusted_keys: 1
******** I------     1 perm 1f0b0000     0     0 keyring   .system_blacklist_keyring: empty
******** I------     1 perm 1f0f0000     0     0 keyring   .secondary_trusted_keys: 1
******** I------     1 perm 1f030000     0     0 asymmetri Fedora kernel signing key: 34ae686b57a59c0bf2b8c27b98287634b0f81bf8: X509.rsa b0f81bf8 []

答案1

TPM 不一定出现在 ACPI 表中,但模块在找到受支持的模块时确实会打印一条消息;例如

[  134.026892] tpm_tis 00:08: 1.2 TPM (device-id 0xB, rev-id 16)

所以这dmesg | grep -i tpm是一个很好的指标。

明确的指标是固件的设置工具:TPM 涉及通过固件设置进行管理的所有权程序。如果您的设置没有提及任何与 TPM 相关的内容,那么您就没有 TPM。

TPM 最初发现于服务器和商用笔记本电脑(以及 ChromeBook,如伊卡洛斯),并且在台式机或“非商用”笔记本电脑中很少见;这种情况在过去几年发生了变化,Windows 11 现在需要 TPM。任何支持 Intel TXT 的设备都有 TPM。

答案2

也可以通过sysfs检测它:

[ -d $(ls -d /sys/kernel/security/tpm* 2>/dev/null | head -1) ] && \
    echo "TPM available" || echo "TPM missing"

并且自从内核5.6(犯罪7084eddf6be9 tpm:添加 tpm_version_major sysfs 文件),可以使用sysfs文件检测版本:

$ cat /sys/class/tpm/tpm*/tpm_version_major
1

注意:某些 TPM 不导出 sysfs(固件错误)。

其他方法是检查/dev/tpm0/dev/tpmrm0。所有 TPM 设备都应具有/dev/tpm0./dev/tpmrm0仅适用于 TPM 2.0,但在 v4.12-rc1 中添加了它(fdc915f7f719 tpm:通过设备链接 /dev/tpmrm 公开空间):

[ -c /dev/tpmrm0 ] && echo "TPM 2.0" # since v4.12-rc1

[ -c /dev/tpm0 ] && echo "TPM 1.2 or 2.0"

相关内容