Betrouwbare Versleutelde Containers met FIDO2 en Post-Quantum Cryptografie-ondersteuning
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.
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:
- 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.
- 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.
- 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
.kybervoor 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_secretsysteemcall de mastersleutel uit van kernel memory dumps en hibernation images. Op andere systemen wordt een combinatie van memory locking en buffer zeroing viaZeroizetraits gebruikt. - Rollback-aanvalsbescherming. Een optioneel sidecar-bestand
.anchorslaat 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
.hdrbestand, wordt de hoofdcontainer.lbxeen 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:
- Synchroniseren via derden-clouds. U bewaart uw wachtwoordendatabase, persoonlijke sleutels of werkdocumenten in één
.lbxbestand in een Google Drive- of Yandex Disk-map. - Back-ups op externe servers. Een back-upscript mount de container, plaatst verse dumps erin en unmount de schijf.
- 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