Yubikey-Dateiverschlüsselung ohne Verwendung von OpenPGP?

Yubikey-Dateiverschlüsselung ohne Verwendung von OpenPGP?

Gibt es eine Möglichkeit, einzelne Dateien mit einem Yubikey zu verschlüsseln, der kein OpenPGP verwendet?

Ich verwende meinen Yubikey für SSH-Anmeldungen und zum Verschlüsseln einzelner Dateien (Passwortspeicher). Der Yubikey arbeitet nur im CCID-Modus (ich verwende derzeit weder OTP noch U2F). Für alle Vorgänge ist der physische Anwesenheitstest erforderlich.

Bisher habe ich meinen Yubikey als OpenPGP-Smartcard zusammen mit Folgendem verwendet:

  • gpg-agent --enable-ssh-supportfür SSH-Unterstützung; und
  • gnupg.vim-Pluginzum Verschlüsseln von Dateien.

GnuPG ist klobig, unzuverlässig und schwer zu skripten. Ich würde den Yubikey in diesem Modus nicht mehr verwenden.

Ich habe einen weiteren Yubikey, der als NIST PIV-Smartcard konfiguriert ist. Ich verwende die PKCS11-Unterstützung von OpenSSH und einen regulären SSH-Agenten. Dies ist viel zuverlässiger als die GPG-Tools, aber esbietet keine Unterstützung für die Verschlüsselung einzelner Dateien.

Aus meiner Sicht gibt es mehrere Möglichkeiten, eine PIV-Smartcard zur individuellen Dateiverschlüsselung zu verwenden:

  • eine Art ssh-agent+ vimHack?
  • Vielleicht gibt es ein nahtloses, auf PKCS11 basierendes Dateiverschlüsselungstool?
  • einen der anderen Steckplätze auf dem Yubikey zur Dateiverschlüsselung verwenden, vielleicht mit OpenSC oder etwas von libccid?
  • Open-Source-Passwort-Manager, der direkt mit dem Yubikey kommuniziert?

Antwort1

Hier ist ein Python-Skript, das ich geschrieben habe, um den folgenden Prozess zu automatisieren:

Zum Verschlüsseln wird das Wire-Protokoll von ssh-agent verwendet (sieheRFC-Entwurffür Details) können Sie beliebige Daten mit einem privaten Schlüssel signieren, also:

  • Wählen Sie eine Zufallszahl
  • Bitten Sie den SSH-Agenten, es zu signieren
  • Verwenden Sie die Signatur, um einen symmetrischen Schlüssel abzuleiten
  • Verschlüsseln Sie Ihre Daten mit dem symmetrischen Schlüssel
  • Speichern Sie die Zufallszahl und die verschlüsselten Daten (aber nicht den symmetrischen Schlüssel) auf der Festplatte

und zum Entschlüsseln:

  • Lesen Sie die Zufallszahl und die verschlüsselten Daten von der Festplatte zurück
  • Bitten Sie den SSH-Agenten, die Zufallszahl zu signieren
  • Verwenden Sie die Signatur, um denselben symmetrischen Schlüssel abzuleiten, der zum Verschlüsseln der Daten verwendet wird
  • entschlüsseln Sie die Daten!

verwandte Informationen