>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Rust

Zuverlässige verschlüsselte Container mit FIDO2- und Post-Quantum-Kryptografie-Unterstützung

LUKSbox

Cloud-Anbieter wiederholen gerne den Satz „Ihre Daten sind im Ruhezustand verschlüsselt." Das klingt beruhigend, bis Sie sich daran erinnern, wer die Schlüssel zu dieser Verschlüsselung besitzt. Wenn der Hosting-Anbieter die Schlüssel hat, dann kann jede behördliche Anfrage, jeder interne Leak oder jedes kompromittierte Zugriffstoken Ihre Dateien für Außenstehende öffnen.

Um sich nicht auf das Vertrauen in den Dienst eines anderen verlassen zu müssen, werden Daten clientseitig verschlüsselt, bevor sie über das Netzwerk gesendet werden. Tools wie VeraCrypt, gocryptfs oder age existieren für diesen Zweck, aber jedes hat seine Kompromisse: veraltete Formate, fehlende Hardware-Schlüssel-Unterstützung oder Komplikationen beim Einhängen des Containers als reguläres Laufwerk.

Ich bin kürzlich auf LUKSbox gestoßen, ein Projekt in Rust. Es ist ein Tool zum Erstellen verschlüsselter Datei-Container, das die besten Ideen aus der LUKS2-Welt aufgreift, aber für Cloud-Speicher, USB-Laufwerke und moderne Authentifizierungsmethoden anpasst.


Was sich im Inneren des Containers befindet

Das Kernkonzept ist einfach: Alle Daten werden in einer einzigen Datei .lbx verpackt. Für einen externen Beobachter oder eine Cloud-Festplatte sieht diese Datei wie Zufallsrauschen ohne offensichtliche Header oder Metadaten aus, vorausgesetzt der Header wird in einer separaten Datei gespeichert.

Gleichzeitig wird der Container im Betriebssystem als reguläres Laufwerk über FUSE (unter Linux und macOS) oder WinFsp (unter Windows) eingehängt. Sie arbeiten damit wie mit einem normalen USB-Stick.

Penthertz

Das Hauptziel des Projekts, wie die Autoren es beschreiben, ist das Erstellen einer portablen sicheren Kopie. Sie laden .lbx auf S3, Dropbox oder ein gemeinsames Netzwerklaufwerk hoch und sind beruhigt: Der Host ist physisch nicht in der Lage, den Inhalt zu lesen.


Entsperrmethoden und Schutz vor Quantencomputern

Typischerweise erfordert verschlüsselter Speicher ein Passwort. LUKSbox hat auch Passwörter, die über Argon2id mit ernsthaften Standardparametern gehasht werden, aber die Entwickler sind noch einen Schritt weiter gegangen und haben Slots für Hardware-Schlüssel hinzugefügt.

Hier sind die unterstützten Optionen zum Entsperren des Speichers:

  1. FIDO2-Authentifikatoren. Sie können einen YubiKey, Nitrokey oder Google Titan über das HMAC-Secret-Protokoll binden. Ohne den Schlüssel physisch zu berühren, lässt sich der Container nicht öffnen.
  2. TPM 2.0. Bindung an den Hardware-Chip Ihres Mainboards unter Linux und Windows. Praktisch, wenn der Container nur auf Ihrem Arbeitsplatz geöffnet werden soll.
  3. Post-Quantum-Hybridmodus. Schutz gegen das Szenario „Jetzt sammeln, später auf einem Quantencomputer entschlüsseln". LUKSbox kann klassische Algorithmen mit dem ML-KEM-Algorithmus (FIPS 203, ehemals Kyber) kombinieren. Eine separate Schlüsseldatei .kyber wird dafür erstellt, die Sie separat vom Container aufbewahren können.

Keiner dieser Slots verschlüsselt Dateien direkt. Sie umschließen den Master Volume Key. Nach erfolgreicher Validierung eines Slots wird der Hauptschlüssel entschlüsselt, und Schlüssel für Metadaten, Dateiblöcke und Integritätsprüfung werden über HKDF-SHA256 daraus abgeleitet.

+-------------------------------------------------------------+
| Пароль / FIDO2 / TPM 2.0 / ML-KEM (.kyber)                 |
+------------------------------+------------------------------+
                               |
                               v
               +-------------------------------+
               | Master Volume Key (MVK)       |
               +---------------+---------------+
                               |
         +---------------------+---------------------+
         v                     v                     v
+-----------------+   +-----------------+   +-----------------+
| Header HMAC Key |   | Metadata Key    |   | Per-file Keys   |
+-----------------+   +-----------------+   +-----------------+

Sicherheit auf Detailniveau

Das Repository überrascht angenehm durch die Aufmerksamkeit für Details, die viele Entwickler übersehen.

Standardmäßig wird AES-256-GCM-SIV für die Blockverschlüsselung verwendet. Die SIV-Ergänzung bietet Widerstandsfähigkeit gegen Nonce-Wiederverwendung, was bei häufigen Überschreibungen nützlich ist. Sie können auch ChaCha20-Poly1305 oder Standard-AES-256-GCM wählen.

Einige interessante Erkenntnisse aus dem Quellcode:

  • Schutz vor Block-Substitution. Jeder verschlüsselte Datenblock einer Datei ist mit zusätzlichen authentifizierten Daten (AAD) ausgestattet, einschließlich der Datei-ID, Blockindex und Generationszähler. Ein cloudbasierter Angreifer kann keinen neuen Block stillschweigend durch eine ältere Version ersetzen oder Teile austauschen.
  • Speicherbereinigung. Unter Linux schließt der memfd_secret Systemaufruf den Hauptschlüssel aus Kernel-Speicherabbildern und Ruhezustandsdateien aus. Auf anderen Systemen wird eine Kombination aus Speicherverriegelung und Puffer-Nullung über Zeroize-Traits verwendet.
  • Schutz vor Rollback-Angriffen. Eine optionale Sidecar-Datei .anchor speichert einen signierten Änderungszähler. Wenn ein Anbieter den gesamten Container auf eine ältere Version zurücksetzt, bemerkt das Programm dies.
  • Separater Header. Wenn Sie den Header in eine .hdr-Datei verschieben, wird der Hauptcontainer .lbx zu einem Byte-Array ohne Signaturen.

Schnellstart

Das Projekt ist in Rust geschrieben, Sie können es also auf die übliche cargo build Weise aus dem Quellcode erstellen. Vorgefertigte Pakete .deb, .rpm, Windows-Installer und macOS-Bundles sind für die meisten Plattformen verfügbar.

Sie können Container auf drei Arten verwalten: über die CLI, einen interaktiven TUI-Assistenten oder eine grafische Oberfläche auf Basis von egui.

Einen regulären Container erstellen und einhängen:

# Создаем хранилище с настройками по умолчанию
luksbox create my-vault.lbx

# Монтируем как директорию в Linux/macOS
luksbox mount my-vault.lbx /mnt/vault

# Или в отдельный диск в Windows
luksbox mount my-vault.lbx Z:

Einen FIDO2-Hardware-Schlüssel zu einem bestehenden Container hinzufügen:

luksbox enroll my-vault.lbx --kind fido2

Einen Post-Quantum-Container mit einem Hybrid-Schlüssel auf einem separaten USB-Stick erstellen:

luksbox create secure-data.lbx --kind hybrid-pq --pq-hybrid /media/usb/key.kyber

Wenn Sie sich keine Kommandozeilen-Flags merken möchten, startet der Befehl luksbox wizard einen schrittweisen Dialog im Terminal.


Praktische Szenarien

LUKSbox löst das Problem des sicheren Transports und der Remote-Speicherung. Hier sind Situationen, in denen das Projekt gut geeignet erscheint:

  1. Synchronisierung über Cloud-Dienste von Drittanbietern. Sie speichern Ihre Passwortdatenbank, persönliche Schlüssel oder Arbeitsdokumente in einer einzigen .lbx-Datei in einem Google Drive- oder Yandex Disk-Ordner.
  2. Backups auf externen Servern. Ein Backup-Skript hängt den Container ein, legt frische Dumps hinein und hängt das Laufwerk wieder aus.
  3. Teilen geheimer Archive. Senden von Dateien an einen Kollegen mit der Anforderung einer physischen Bestätigung über einen Hardware-Token.

Aktueller Projektstatus

Das Projekt befindet sich in der Pre-1.0-Phase. Das Container-Format v3 ist bereits eingefroren, Fuzzing ist im Repository über libFuzzer und AFL++ mit Millionen von Iterationen konfiguriert. Vierzehn interne Sicherheits-Audit-Runden wurden abgeschlossen, obwohl ein unabhängiger Drittanbieter-Audit noch aussteht.

Die Autoren warnen ehrlich: Ein verschlüsselter Container ist ein einzelner Fehlerpunkt. Wenn die Datei beschädigt wird oder alle Schlüssel verloren gehen, sind die Daten nicht wiederherstellbar. Daher ist LUKSbox für geschützte portable Kopien konzipiert, nicht als alleiniger Speicherort für kritisch wichtige Dateien.

Wenn Sie ein modernes plattformübergreifendes Verschlüsselungstool mit FIDO2-Unterstützung und Post-Quantum-Zukunftssicherheit benötigen, lohnt sich das Repository auf jeden Fall. Der Quellcode ist unter der Apache-2.0-Lizenz veröffentlicht.

Ähnliche Projekte