查找 TPM2 的信息,甚至更糟糕的是 Ubuntu 18.04 服务器的信息是一项相当艰巨的任务。我有一台板载英特尔 TPM V2 模块的机器,基本上试图让它在启动时解锁 LUKS。到目前为止,我有以下
- 安装了 Ubuntu 18.04 服务器(带有 LVM 和加密的 rootfs)
- 安装了 tpm2-tools
- 启用并启动资源管理器服务(状态检查运行正常)
- 将 TPM2TOOLS_TCTI 设置为
/dev/tpmrm0
- 试图取得所有权(和大多数其他 tpm2_ 命令失败
Failed to initialize tcti context: 0x1
这就是我卡住的地方。
# apt install tmp2-tools
# systemctl enable tpm2-resourcemgr
# systemctl start tpm2-resourcemgr
# export TPM2TOOLS_TCTI=device:/dev/tpmrm0
# tpm2_takeownership -e 123 -o 123 -l 123
Failed to initialize tcti context: 0x1
首先,组合的 TPM2TOOLS_TCTI 环境变量是 tpm2-tools v3.0 中的新变量。旧版本过去使用单独的设置
TPM2TOOLS_TCTI_NAME=device
和TPM2TOOLS_DEVICE_FILE=/dev/tpm0
.二、TPM 2.0设备的三种访问方式:
直接,通过 TCTI
device
和 path/dev/tpm0
。这一次仅限于一个进程,并且该进程需要自行清理(刷新临时句柄等)。这种方法适用于 LUKS 使用。通过内核资源管理器、TCTI
device
和路径。这需要一个相对较新的内核。/dev/tpmrm0
通过用户空间资源管理器。在现代系统上,这通常是 TCTI
abrmd
(没有路径),在 'tpm2-abrmd' 包中可用 - 服务也将是“tpm2-abrmd”。Ubuntu 18.04 提供了一个非常旧版本的 Intel TPM2 堆栈——它的“tpm2-resourcemgr”似乎完全不同(据我所知,没有匹配的 tcti 库)。我会避免使用这项旧服务。
如果您使用内核资源管理器(
tpmrm0
设备),则不需要用户空间资源管理器。反之亦然,如果您使用用户空间资源管理器 (abrmd),那么它就是声称对 /dev/tpm0 的独占访问权限的管理器,我认为这意味着您也不应该使用 /dev/tpmrm0。所以在你的情况下,我认为你应该:
tpm2-resourcemgr.service
device
/dev/tpmrm0
如果要使用内核 RM(或/dev/tpm0
其他) ,请将TPM2TOOLS_DEVICE_FILE 设置为如果没有任何效果,IBM 还提供了另一个 TPM 2.0 堆栈,以“tss2”包的形式提供。两者都提供几乎相同的操作,并且都可以与相同的 TPM 设备一起使用。(请注意,IBM 工具使用不同的环境变量,并且需要将 TPM_INTERFACE_TYPE 设置为
dev
。)