VeraCrypt: Schlüsseldatei (Keyfile) mit TPM absichern

Vor einiger Zeit hatte ich hier im Blog schon mal beschrieben, wie man VeraCrypt-Volumes mit auf einem YubiKey gespeichterten Schlüsseldatei absichern kann. Das Ganze funktioniert unter Verwendung der PKCS#11-Schnittstelle. Aus Interesse habe ich mal ausprobiert, ob und wie sich das mittels TPM (Trusted Platform Module) umsetzen lässt. Verwendet habe ich hierzu, wie schon beim verschlüsselten Speichern von SSH-Keys per TPM, die Bibliothek tpm2-tools.

Folgende Software wurde verwendet:
  • VM mit Arch Linux und emuliertem TPM-2.0-Modul
  • VeraCrypt v1.25.9
  • tpm2-tools v5.3-2
  • tpm2-pkcs11 v1.8.0-2

PKCS#11-Bibliothek in VeraCrypt einrichten

Für die Einrichtung der PKCS#11-Bibliothek in VeraCrypt verweise ich mal auf meinen Beitrag VeraCrypt: Schlüsseldatei (Keyfile) mit YubiKey verwenden. Folgt einfach den Schritten im entsprechenden Abschnitt. Abweichend ist der Pfad zur PKCS#11-Bibliothek bei mir unter Arch Linux wie folgt:

/usr/lib/pkcs11/libtpm2_pkcs11.so

Schlüsseldatei ereugen

Auch hier folgt einfach dem entsprechenden Abschnitt im o.g. Beitrag.

TPM-Store & Token erzeugen

Als erstes erstellen wir einen TPM-Store/Slot:

tpm2_ptool init
action: Created
id: 1
Terminal / Konsole
Hinweis TPM-PKCS#11-Initialisierung

Weiterführende Informationen zur Store- und Token-Initialisierung findet ihr im GitHub-Repository von tpm2-pkcs11: tpm2-pkcs11 - Initialization

Für diesen Slot erzeugen wir nun noch einen Token, in dem später die VeraCrypt-Schlüsseldatei gespeichert wird.

tpm2_ptool addtoken --pid 1 --label veracrypt --sopin mysuperpin --userpin mypin
Terminal / Konsole
Warnung Passwort/PIN innerhalb Befehl eingeben

Aus Sicherheitsgründen sollten Passwörter/PINs eigentlich nicht innerhalb eines Terminal-Befehls direkt angegeben werden, wei sie sonst z.B. in der Shell-History landen. Für Bash gibt es hier z.B. die Einstellung HISTCONTROL mit der konfiguriert werden kann, dass Befehle, die mit einem Leerzeichen anfangen, nicht in der History landen.

VeraCrypt-Volume mit TPM-Schlüsseldatei erstellen

Startet den "Wizard" zum Erstellen eines neuen VeraCrypt-Volumes. Im Dialog, in dem ihr euer Passwort vergeben müsst, wählt die Option Use keyfiles und klickt auf Keyfiles.

VeraCrypt: Volume mit TPM-Schlüsseldatei erstellen

In dem sich öffnenden Dialog klickt auf Add Token Files:

VeraCrypt: Volume mit TPM-Schlüsseldatei erstellen

Ihr werden nun nach der PIN eures TPM-Tokens gefragt, die ihr nun eingeben müsst:

VeraCrypt: Volume mit TPM-Schlüsseldatei erstellen

Anschließend öffnet sich ein Dialog in dem ihr auf Import Keyfile to Token:

VeraCrypt: Volume mit TPM-Schlüsseldatei erstellen

Daraufhin öffnet sich der Datei-Auswahl-Dialog eures Dateimanagers. Wählt die zuvor von euch erzeugte Schlüsseldatei aus. Klickt dann auf OK, um die ausgewählte Schlüsseldatei dem ausgewählten TPM-Token hinzuzufügen.

VeraCrypt: Volume mit TPM-Schlüsseldatei erstellen

Jetzt könnt ihr die dem TPM-Token hinzugefügte Schlüsseldatei per OK auswählen.

VeraCrypt: Volume mit TPM-Schlüsseldatei erstellen

Abschließend wählt nun erneut die Schlüsseldatei aus und klickt auf OK:

VeraCrypt: Volume mit TPM-Schlüsseldatei erstellen

Fahrt nun ganz normal mit dem Erstellen des VeraCrypt-Volumes fort.

VeraCrypt mit TPM-Schlüsseldatei entschlüsseln & mounten

Zum Entschlüsseln und Mounten eures VeraCrypt-Volumes müsst ihr nun immer die TPM-Schlüsseldatei auswählen. VeraCrypt wird euch dann nach der PIN für euren TPM-Token fragen, um auf die Schlüsseldatei zugreifen zu können.

Fazit

VeraCrypt-Schlüsseldateien lassen sich über die universelle PKCS#11-Schnittstelle auch per TPM verschlüsselt speichern. Aus Portabilitätsgründen ist die YubiKey- bzw. Security-Token-Variante sicherlich vorzuziehen bzw. nützlicher.

Feedback

Für Feedback zum Beitrag, seien es Fragen, Korrigierungen und/oder Anregungen, könnt ihr mir gerne eine Nachricht per E-Mail oder Mastodon schreiben (siehe Kontakt).