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

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.

Folgende Software wurde verwendet:
  • Ubuntu v20.04 LTS
  • VeraCrypt v1.24-Update7
  • YubiKey Neo - Firmware v.3.4.9
  • YubiKey Manager (ykman) v4.0.0

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.

Sicherheitshinweis

Im Gegensatz zu privaten Schlüsseln bei Public-Key-Verschlüsselungsverfahren verlässt die Schlüsseldatei euren Security Token, wenn VeraCrypt auf die Schlüsseldatei zugreift. VeraCrypt macht also nicht vollständig Gebrauch von der maximal möglichen Sicherheit, die durch Einsatz eines Security Tokens bzw. einer Smartcard möglich wäre.

PKCS#11-Bibliothek einrichten

Falls nicht auf eurem System vorhanden, installiert als erstes das opensc-pkcs11-Paket:

sudo apt install opensc-pkcs11
Terminal / Konsole

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.

VeraCrypt: PKCS#11-Bibliothek-Dateipfad einstellen

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:

VeraCrypt: PKCS#11-Bibliothek-Dateipfad einstellen

Schlüsseldatei erzeugen

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

VeraCrypt: Schlüsseldatei generieren

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.

VeraCrypt: Schlüsseldatei generieren

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
Terminal / Konsole

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.

VeraCrypt: Volume mit YubiKey-Schlüsseldatei erstellen

Im sich öffnenden Dialog klickt auf Add Token Files.

VeraCrypt: Volume mit YubiKey-Schlüsseldatei erstellen

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.

VeraCrypt: YubiKey-PIN-Abfrage für Schlüsseldatei

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.

VeraCrypt: YubiKey-Schlüsseldatei auswählen

Im nächsten Dialog klickt abermals auf OK.

VeraCrypt: YubiKey-Schlüsseldatei auswählen

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.

VeraCrypt: YubiKey-Schlüsseldatei auswählen

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.