跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 虚拟化指南 / 独立于超级管理程序的功能 / 软件 TPM 模拟器
适用范围 SUSE Linux Enterprise Server 15 SP4

21 软件 TPM 模拟器

21.1 简介

可信平台模块 (TPM) 是使用加密密钥保护硬件的加密处理器。对于使用 TPM 开发安全功能的开发人员而言,软件 TPM 模拟器是一种便利的解决方案。与硬件 TPM 设备相比,该模拟器对可以访问它的 Guest 数不设限制。此外,您可以方便地在 TPM 版本 1.2 与 2.0 之间切换。QEMU 支持 swtpm 软件包中包含的软件 TPM 模拟器。

21.2 先决条件

您需要先安装 libvirt 虚拟化环境,然后才能安装并使用软件 TPM 模拟器。请参见第 6.2 节 “安装虚拟化组件”并安装所提供的虚拟化解决方案之一。

21.3 安装

要使用软件 TPM 模拟器,请安装 swtpm 软件包:

> sudo zypper install swtpm

21.4 swtpm 与 QEMU 搭配使用

swtpm 提供三种类型的接口:socketchardevcuse。以下过程重点介绍 socket 接口。

  1. 在 VM 目录(例如 /var/lib/libvirt/qemu/sle15sp3)中创建 mytpm0 目录,用于储存 TPM 状态:

    > sudo mkdir /var/lib/libvirt/qemu/sle15sp3/mytpm0
  2. 启动 swtmp。swtmp 将创建一个可供 QEMU 使用的套接字文件,例如 /var/lib/libvirt/qemu/sle15sp3

     > sudo swtpm socket
      --tpmstate dir=/var/lib/libvirt/qemu/sle15sp3/mytpm0 \
      --ctrl type=unixio,path=/var/lib/libvirt/qemu/sle15sp3/mytpm0/swtpm-sock \
      --log level=20
    提示
    提示:TPM 版本 2.0

    默认情况下,swtpm 会启动 TPM 版本 1.2 模拟器,并将此模拟器的状态储存在 tpm-00.permall 目录中。要创建 TPM 2.0 实例,请运行以下命令:

     > sudo swtpm socket
      --tpm2
      --tpmstate dir=/var/lib/libvirt/qemu/sle15sp3/mytpm0 \
      --ctrl type=unixio,path=/var/lib/libvirt/qemu/sle15sp3/mytpm0/swtpm-sock \
      --log level=20

    TPM 2.0 状态将储存在 tpm2-00.permall 目录中。

  3. 将以下命令行参数添加到 qemu-system-ARCH 命令:

    > qemu-system-x86_64 \
    [...]
    -chardev socket,id=chrtpm,path=/var/lib/libvirt/qemu/sle15sp3/mytpm0/swtpm-sock \
    -tpmdev emulator,id=tpm0,chardev=chrtpm \
    -device tpm-tis,tpmdev=tpm0
  4. 运行以下命令,以校验在 Guest 中是否可以使用 TPM 设备:

    > tpm_version
    TPM 1.2 Version Info:
    Chip Version:        1.2.18.158
    Spec Level:          2
    Errata Revision:     3
    TPM Vendor ID:       IBM
    TPM Version:         01010000
    Manufacturer Info:   49424d00

21.5 将 swtpm 与 libvirt 配合使用

要将 swtpm 与 libvirt 搭配使用,请将以下 TPM 设备添加到 Guest XML 规范中:

<devices>
 <tpm model='tpm-tis'>
  <backend type='emulator' version='2.0'/>
 </tpm>
</devices>

libvirt 将自动为 Guest 启动 swtpm,您不需要提前手动将它启动。系统将在 /var/lib/libvirt/swtpm/VM_UUID 中创建相应的 permall 文件。

21.6 使用 OVMF 固件进行 TPM 测量

如果 Guest 使用开放虚拟机固件 (OVMF),它将使用 TPM 来测量组件。可以在 /sys/kernel/security/tpm0/binary_bios_measurements 中查看事件日志。

21.7 资源