Skip to content

Back to the catalog

PentHertz/LUKSbox
github.comrepo

PentHertz/LUKSbox

LUKSbox is an open-source (Apache 2.0), pre-1.0 encrypted vault format and CLI/GUI/TUI toolset written in Rust, designed so files can be stored on untrusted cloud/shared media while remaining opaque to the provider. It layers passphrase, FIDO2 hardware authenticators (hmac-secret), and TPM 2.0 sealed keys as unlock factors that all derive a Master Volume Key via HKDF-SHA256, and adds an optional ML-KEM-768/1024 post-quantum sidecar for hybrid encryption. The project publishes its on-disk format spec, threat model, and side-channel notes, and runs libFuzzer/AFL++ harnesses against every parser that touches attacker-controlled bytes (header, keyslot, metadata, hybrid sidecar, WinFsp paths).

TL;DR Rust-based encrypted vault tool with FIDO2 + TPM 2.0 + post-quantum (ML-KEM) keyslots, published crypto architecture/threat model, and active fuzzing harnesses.
Document

What it is

LUKSbox (PentHertz) is an open-source encrypted-vault tool written in Rust that produces a single .lbx container — not, despite the name, a LUKS-format volume. It targets client-side encryption for untrusted storage (cloud sync, NAS, USB, backup tapes): the file is encrypted under your keys before it leaves your machine and mounts locally as a real drive. It is a pre-1.0 release with a locked on-disk format. Defaults are AES-256-GCM-SIV with Argon2id (interactive).

How it works

Keyslots do not encrypt files directly — they wrap a Master Volume Key (MVK), the root secret. Any valid keyslot (passphrase/PIN, FIDO2 hmac-secret, TPM 2.0 sealed KEK, or an ML-KEM .kyber seed file on separate storage) unwraps the MVK; every other key (header HMAC, metadata AEAD, per-file HKDF, rollback anchor) is derived from it via HKDF-SHA256 with a per-purpose info string. Revoking a slot permanently removes that material's ability to recover the MVK. A vault can carry a separate header (.hdr) and PQ sidecar (.kyber) kept on different storage.

flowchart LR
  PW[Passphrase/PIN] --> MVK[Master Volume Key]
  FIDO[FIDO2 hmac-secret] --> MVK
  TPM[TPM2 sealed KEK] --> MVK
  PQ[ML-KEM seed .kyber] --> MVK
  MVK -->|HKDF-SHA256| Keys[File / metadata / header / anchor keys]

Preconditions / Affected

TPM keyslots bind to a specific machine (Linux/Windows). TPM enrollment needs tpm2-tools plus udev rules/tss group access. The default v3 format requires LUKSbox v0.2.1+ to open; v2 (needed to share with a pre-v0.2.0 reader) caps at ~10 GiB.

What to do

luksbox create my-vault.lbx
luksbox mount my-vault.lbx /mnt/v      # Linux/macOS
luksbox enroll my-vault.lbx --kind fido2
luksbox enroll my-vault.lbx --kind tpm2
luksbox create my-vault.lbx --kind hybrid-pq --pq-hybrid /media/usb/my.kyber
luksbox migrate-to-v3 old-v2.lbx --dst new-v3.lbx

For TPM after .deb/.rpm install:

sudo usermod -aG tss "$USER"
# log out + back in, then verify:
id | tr , '\n' | grep tss

Tarball users can run dist/install.sh --tpm-setup instead.

Caveats

This is pre-1.0: 14 internal audit rounds shipped, but external paid audit and broad deployment are still pending, and the integration layer plus on-disk format are unaudited PentHertz code (primitives rest on RustCrypto, libfido2, tss-esapi). A vault is a travelling copy, not a master — a corrupted .lbx or lost keyslots means total data loss; the forensic tools (header-backup, check, extract --tolerate-errors) cannot recover bytes no longer on disk. Keep an unencrypted trusted copy of anything you can't lose. Parsers touching attacker-controlled bytes have libFuzzer (fuzz/) and AFL++ (fuzz-afl/) harnesses; CI fuzzes each target 5 minutes per PR.

Technologies named here

  • LUKSbox
  • RustCrypto
  • LUKS2
  • VeraCrypt
  • libfido2
  • tss-esapi
  • age
  • gocryptfs
  • cargo-fuzz
  • Cryptomator
  • AFL++
  • BitLocker
  • libFuzzer
  • FileVault
  • WinFsp
  • FUSE3
  • Linux
  • Windows
  • FUSE-T
  • macOS
  • tpm2-tools
  • tpm-udev
  • tpm2-tss
  • Rust
  • FIDO2
  • TPM 2.0
  • WebAuthn

Techniques named here

  • Client-side encryption before upload
  • FIDO2 hmac-secret unlock factor
  • TPM 2.0 sealed KEK
  • Post-quantum hybrid key material
  • Key wrapping / HKDF key derivation hierarchy
  • AEAD encryption
  • Argon2id key derivation
  • Rollback anchor / anchor HMAC
  • Keyslot revocation
  • Fuzz harness testing of attacker-controlled parsers