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).
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.lbxFor TPM after .deb/.rpm install:
sudo usermod -aG tss "$USER"
# log out + back in, then verify:
id | tr , '\n' | grep tssTarball 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
Related in other

Rerandomizable Garbling for Arithmetic Circuits

