无法初始化 tcti 上下文

无法初始化 tcti 上下文

查找有关 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

答案1

首先,组合的 TPM2TOOLS_TCTI 环境变量是 tpm2-tools v3.0 中的新变量。旧版本过去使用单独的设置TPM2TOOLS_TCTI_NAME=deviceTPM2TOOLS_DEVICE_FILE=/dev/tpm0

二、访问TPM 2.0设备的方式有三种:

  1. 直接通过 TCTIdevice和 path /dev/tpm0。这仅限于一次一个进程,并且该进程需要在自身之后进行清理(刷新临时句柄等)。此方法非常适合 LUKS 使用。

  2. 通过内核资源管理器、TCTIdevice和路径。这需要相对较新的内核。/dev/tpmrm0

  3. 通过用户空间资源管理器。在现代系统上,这通常是 TCTI abrmd(没有路径),可在“tpm2-abrmd”包中找到 - 并且服务也将是“tpm2-abrmd”。

    Ubuntu 18.04 附带了非常老版本的 Intel TPM2 堆栈 - 其“tpm2-resourcemgr”似乎工作方式完全不同(据我所知,没有匹配的 tcti 库)。我会避免使用这项旧服务。

如果你使用内核资源管理器(tpmrm0设备),你不要需要一个用户空间资源管理器。反之亦然,如果你使用用户空间资源管理器 (abrmd),那么它就是那个声称对 /dev/tpm0 具有独占访问权限的管理器,我认为这意味着你不应该使用 /dev/tpmrm0。

因此,就你的情况而言,我认为你应该:

  1. 停止并禁用tpm2-resourcemgr.service
  2. 取消设置 TPM2TOOLS_TCTI
  3. 将 TPM2TOOLS_TCTI_NAME 设置为device
  4. /dev/tpmrm0如果您想使用内核 RM(或/dev/tpm0其他方式),请将 TPM2TOOLS_DEVICE_FILE 设置为

如果什么都不起作用,IBM 还提供另一个 TPM 2.0 堆栈,可用作“tss2”包。两者提供的操作基本相同,并且都可以与同一个 TPM 设备一起使用。(请注意,IBM 工具使用不同的环境变量,并且需要将 TPM_INTERFACE_TYPE 设置为dev。)

相关内容