>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Rust

Betrouwbare Versleutelde Containers met FIDO2 en Post-Quantum Cryptografie-ondersteuning

LUKSbox

Cloudproviders herhalen graag de frase "uw data is versleuteld in rust". Het klinkt geruststellend, totdat je je realiseert wie de sleutels van die encryptie beheert. Als de hostingprovider de sleutels heeft, dan kan elk regelgevingsverzoek, intern lek of gecompromitteerd toegangstoken uw bestanden voor buitenstaanders openen.

Om niet afhankelijk te zijn van vertrouwen in iemand anders zijn dienst, wordt data aan de clientzijde versleuteld voordat het over het netwerk wordt verzonden. Er bestaan tools zoals VeraCrypt, gocryptfs of age hiervoor, maar elk heeft zijn afwegingen: verouderde formaten, gebrek aan hardware-sleutelondersteuning, of complicaties bij het mounten van de container als een reguliere schijf.

Ik ben onlangs LUKSbox tegengekomen, een project geschreven in Rust. Het is een tool voor het maken van versleutelde bestandscontainers die de beste ideeën uit de LUKS2-wereld gebruikt, maar ze aanpast voor cloudopslag, USB-sticks en moderne authenticatiemethoden.


Wat Zit Er In De Container

Het kernconcept is eenvoudig: alle data wordt verpakt in één enkel bestand .lbx. Voor een buitenstaander of clouddrive ziet dit bestand eruit als willekeurige ruis zonder voor de hand liggende headers of metadata, mits de header in een apart bestand wordt opgeslagen.

Tegelijkertijd mount de container in het besturingssysteem als een reguliere schijf via FUSE (op Linux en macOS) of WinFsp (op Windows). U werkt ermee zoals met een reguliere USB-stick.

Penthertz

Het hoofddoel van het project, zoals de auteurs het beschrijven, is het maken van een draagbare veilige kopie. U uploadt .lbx naar S3, Dropbox of een gedeeld netwerkstation en kunt gerust zijn: de host is fysiek niet in staat om de inhoud te lezen.


Ontgrendelingsmethoden en Kwantumcomputerbescherming

Typisch vereist versleutelde opslag een wachtwoord. LUKSbox heeft ook wachtwoorden, gehasht via Argon2id met serieuze standaardparameters, maar de ontwikkelaars zijn verder gegaan en hebben slots toegevoegd voor hardware-sleutels.

Hier zijn de ondersteunde opties voor het ontgrendelen van de opslag:

  1. FIDO2-authenticators. U kunt een YubiKey, Nitrokey of Google Titan binden via het HMAC-secret protocol. Zonder de sleutel fysiek aan te raken, gaat de container niet open.
  2. TPM 2.0. Binding aan de hardware-chip op uw moederbord op Linux en Windows. Handig als de container alleen op uw werkstation moet openen.
  3. Post-quantum hybride modus. Bescherming tegen het "oogst nu, decodeer later op een kwantumcomputer"-scenario. LUKSbox kan klassieke algoritmen combineren met het ML-KEM-algoritme (FIPS 203, voorheen Kyber). Er wordt een apart sleutelbestand .kyber voor gemaakt, dat u apart van de container kunt bewaren.

Geen van deze slots versleutelt bestanden direct. Ze wrappen de Master Volume Key. Bij succesvolle validatie van elk slot wordt de mastersleutel gedecodeerd, en worden sleutels voor metadata, bestandsblokken en integriteitsverificatie hiervan afgeleid via HKDF-SHA256.

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

Beveiliging Op Detailniveau

De repository verrast prettig met aandacht voor details die veel ontwikkelaars over het hoofd zien.

Standaard wordt AES-256-GCM-SIV gebruikt voor blokversleuteling. De SIV-toevoeging biedt weerstand tegen nonce-hergebruik, wat nuttig is bij frequente overschrijvingen. U kunt ook kiezen voor ChaCha20-Poly1305 of standaard AES-256-GCM.

Enkele interessante bevindingen uit de broncode:

  • Blokvervangingsbescherming. Elk versleuteld chunk van een bestand is voorzien van aanvullende geverifieerde data (AAD), inclusief de bestands-ID, blokindex en generatieteller. Een cloudgebaseerde aanvaller kan niet stilzwijgend een nieuw blok vervangen door een oudere versie of stukken verwisselen.
  • Geheugenopruiming. Op Linux sluit de memfd_secret systeemcall de mastersleutel uit van kernel memory dumps en hibernation images. Op andere systemen wordt een combinatie van memory locking en buffer zeroing via Zeroize traits gebruikt.
  • Rollback-aanvalsbescherming. Een optioneel sidecar-bestand .anchor slaat een ondertekende wijzigingsteller op. Als een provider de hele container terugzet naar een oudere versie, zal het programma dit opmerken.
  • Afzonderlijke header. Als u de header verplaatst naar een .hdr bestand, wordt de hoofdcontainer .lbx een byte-array zonder handtekeningen.

Snelle Start

Het project is geschreven in Rust, dus u kunt het op de standaard cargo build manier vanuit de broncode bouwen. Vooraf gebouwde pakketten .deb, .rpm, Windows-installers en macOS-bundles zijn beschikbaar voor de meeste platforms.

U kunt containers op drie manieren beheren: via CLI, een interactieve TUI-wizard, of een grafische interface gebouwd op egui.

Een reguliere container maken en mounten:

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

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

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

Een FIDO2-hardware-sleutel toevoegen aan een bestaande container:

luksbox enroll my-vault.lbx --kind fido2

Een post-quantum container maken met een hybride sleutel op een aparte USB-stick:

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

Als u geen command-line flags wilt onthouden, start het luksbox wizard commando een stapsgewijze dialoog in de terminal.


Praktische Scenario's

LUKSbox lost het probleem van veilig transport en externe opslag op. Hier zijn situaties waarin het project een goede keuze lijkt:

  1. Synchroniseren via derden-clouds. U bewaart uw wachtwoordendatabase, persoonlijke sleutels of werkdocumenten in één .lbx bestand in een Google Drive- of Yandex Disk-map.
  2. Back-ups op externe servers. Een back-upscript mount de container, plaatst verse dumps erin en unmount de schijf.
  3. Delen van geheime archieven. Bestanden naar een collega sturen met de vereiste van fysieke bevestiging via een hardware-token.

Huidige Projectstatus

Het project is in pre-1.0 stadium. Containerformaat v3 is al bevroren, fuzzing is geconfigureerd in de repository via libFuzzer en AFL++ met miljoenen iteraties. Veertien interne beveiligingsauditrondes zijn voltooid, hoewel een onafhankelijke externe audit nog moet plaatsvinden.

De auteurs waarschuwen eerlijk: een versleutelde container is een enkelvoudig storingspunt. Als het bestand beschadigd raakt of alle sleutels verloren gaan, is de data onherstelbaar. Daarom is LUKSbox ontworpen voor beschermde draagbare kopieën, niet als enige opslaglocatie voor kritisch belangrijke bestanden.

Als u een modern platformonafhankelijk encryptiehulpmiddel nodig hebt met FIDO2-ondersteuning en post-quantum toekomstbestendigheid, is de repository zeker het bekijken waard. De broncode is vrijgegeven onder de Apache-2.0-licentie.

Gerelateerde projecten