VeraCrypt: Schlüsseldatei (Keyfile) mit YubiKey verwenden
Zum Ver- und Entschlüsseln von VeraCrypt-Volumes können neben einem Passwort auch sogenannte Schlüsseldateien (Keyfiles) zur Erhöhung der Sicherheit verwendet werden. Die Schlüsseldatei (es können theoretisch auch mehrere sein) kann dann z.B. auf einem USB-Stick, oder einem Hardware-Security-Token gespeichert werden. In diesem Beitrag zeige ich euch wie ihr eure Schlüsseldatei auf einem YubiKey speichern könnt. Zum Entschlüsseln des VeraCrypt-Volumes muss dann immer der YubiKey eingesteckt sein und per PIN die Schlüsseldatei freigegeben werden.
VeraCrypt - Unterstützung von Security Tokens via PKCS#11
Standardmäßig unterstützt VeraCrypt die Verwendung von Schlüsseldateien, die auf einem Security Token gespeichert sind. Der Security Token muss dabei die PKCS#11-Schnittstelle unterstützen.
PKCS#11-Bibliothek einrichten
Falls nicht auf eurem System vorhanden, installiert als erstes das opensc-pkcs11-Paket:
sudo apt install opensc-pkcs11
Als nächstes muss in VeraCrypt der Pfad zur entsprechenden PKCS#11-Bibliothek hinterlegt werden. Öffnet VeraCrypt und wählt im Menü Settings - Security Tokens
.

Klickt auf Select Library
und wählt den Dateipfad zur installierten PKCS#11-Bibliothek aus und speichert das Ganze per OK
. In meinem Fall ist der Pfad z.B. wie folgt:

Schlüsseldatei erzeugen
Zum Generieren einer Schlüsseldatei wählt in VeraCrypt Tools - Keyfile Generator
.

Nehmt eure gewünschten Einstellungen vor, vergebt einen Dateinamen und per Klick auf Generate and Save Keyfile
wird die Schlüsseldatei dann erzeugt und gespeichert.

Schlüsseldatei auf YubiKey speichern
Leider bieten YubiKeys - zumindestens meinem Kenntnisstand nach - keine (offizielle) Möglichkeit, beliebige Datenobjekte, wie z.B. Schlüsseldateien zu speichern. Insofern ist die folgende Lösung eher als Workaround zu betrachten. Wir nutzen hierzu die vom YubiKey unterstützte PIV-API. Dabei werden wir unsere Schlüsseldatei im PIV-Slot 0x5fc103
(Cardholder Fingerprints) hinterlegen.
Für den Zugriff auf den YubiKey und die PIV-API verwende ich den YubiKey Manager CLI. In eurer Konsole führt nun folgenden Befehl zum Speichern der Schlüsseldatei auf dem YubiKey aus (gebt euren entsprechenden Management-Key an):
ykman piv objects import 0x5fc103 mykey.txt
Enter a management key [blank to use default key]: abc
Die Schlüsseldatei befindet sich nun auf eurem YubiKey. Die auf eurem Rechner könnt ihr nun löschen.
VeraCrypt-Volume mit YubiKey-Schlüsseldatei erstellen
Erstellt mittels VeraCrypt ein neues Volume. An der Stelle, wo ihr das Passwort vergeben müsst, wählt nun zusätzlich die Option Use keyfiles
. Anschließend klickt auf Keyfiles
.

Im sich öffnenden Dialog klickt auf Add Token Files
.

Im folgenden Dialog werdet ihr nach der PIV-PIN eures YubiKey gefragt, die ihr nun eingeben müsst, um die Schlüsseldatei auswählen zu können.

Nachdem ihr die PIN korrekt eingegeben habt, werden euch die verwendbaren Schlüsseldateien aufgelistet. Wählt in diesem Fall den Eintrag Cardholder Fingerprints
und klickt auf OK
.

Im nächsten Dialog klickt abermals auf OK
.

Abschließend müsst ihr nur noch den Wizard zum Erstellen des VeraCrypt-Volumes bis zum Ende durchgehen. Das Ergebnis ist ein verschlüsseltes VeraCrypt-Volume, welches ihr nur mit eurem Passwort und der auf dem YubiKey hinterlegten Schlüsseldatei entschlüsseln könnt.
VeraCrypt mit YubiKey-Schlüsseldatei entschlüsseln & mounten
Zum Mounten eures verschlüsselten VeraCrypt-Volumes geht so vor, wie üblich und wählt zusätzlich zur Eingabe eures Passort die Schlüsseldatei auf dem YubiKey aus. Ihr werdet, falls die PIN nicht noch gecached ist, nun auch wieder zur Eingabe der YubiKey-PIV-PIN aufgefordert.

Fazit
Mit dem Einsatz von Schlüsseldateien für VeraCrypt-Volumes kann der Zugriff auf eure verschlüsselten Daten weiter abgesichert werden. Wer einen Security Token, wie z.B. einen NitroKey oder YubiKey rumliegen hat, kann zudem die Schlüsseldateien auf diesem speichern.