#!/coding/blatt
Sammelsurium mit Schwerpunkten Linux & IT-Sicherheit

Virtual Machine Manager & QEMU/KVM: VM mit emuliertem TPM einrichten

Aktuell beschäftige ich mich gerade etwas mit TPM (Trusted Platform Module) und dazugehörigen nützlichen Anwendungsfällen. Ein Beispiel wäre z.B. die per TPM verschlüsselte Aufbewahrung von SSH-Keys. Im Allgemeinen verwende ich zum "Experimentieren" immer eine VM. Standardmäßig stellt eine VM auf Basis von QEMU/ KVM aber kein TPM zur Verfügung. Wie ihr mittels swtpm eure VMs mit einem emuliertem TPM(2)-Chip ausstatten könnt, erfahrt ihr in diesem Beitrag.

Folgende Software wurde verwendet:
  • Arch Linux
  • Virtual Machine Manager (virt-manager) v4.0.0
  • QEMU/KVM v6.2.0
  • swtpm v0.7.2

VM mit TPM-Unterstützung einrichten

Generelle Voraussetzung ist, dass swtpm auf dem Hostsystem installiert ist, was sich mit folgendem Befehl bewerkstelligen lässt:

sudo pacman -S swtpm
Terminal / Konsole

Zum Verwalten meiner VMs nutze ich Virtual Machine Manager (VMM). Öffnet VMM und wählt eine VM für die ihr einen emulierten TPM-Chip hinzufügen möchtet. Fügt dann ein neues TPM-Gerät mit folgenden Einstellungen zur VM hinzu:

Virtual-Machine-Manager: TPM2-Chip hinzufügen

In diesem Fall habe ich einen TPM2-Chip zu meiner VM hinzugefügt. Falls ihr VMM nicht verwendet, könntet ihr auch direkt in eurer VM-XML-Konfigurationsdatei innerhalb <devices> das TPM-Gerät hinzufügen:

<tpm model="tpm-crb">
    <backend type="emulator" version="2.0"/>
</tpm>
Datei: VM-Konfigurationsdatei

Startet nun die VM und prüft, ob der TPM-Chip in eurer VM verfügbar ist. Dazu stellt z.B. sicher, dass der Pfad /dev/tpm0 existiert. Die entsprechende TPM-Version könnt ihr wie folgt ermitteln:

cat /sys/class/tpm/tpm0/tpm_version_major
2
Terminal / Konsole

Fazit

Mithilfe von swtpm lassen sich QEMU/KVM-VMs leicht um eine TPM-Unterstützung erweitern. Nebst emuliertem TPM, kann man wohl auch das TPM des Hosts zum Gast bzw. zur VM durchreichen.