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.
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
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:

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>
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
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.