Security
The math is the part nobody brute-forces
Only standard, well-reviewed primitives — composed so the only way in is your password or your security key.
How a secret becomes ciphertext
- Your secret password · FIDO2 key
- Key derivation Argon2id
- Master key derived in memory
- Inner cipher XChaCha20-Poly1305
- Outer cipher AES-256-GCM
- On disk opaque ciphertext
What a vault looks like on disk
vault.torminal v3
{
"version": 3,
"keyslots": [
{ "kind": "password", "kdf": { "memKib": 262144 } },
{ "kind": "passkey", "credentialId": "…" }
],
"payload": {
"nonce": "…", // AES-256-GCM (outer)
"nonce2": "…", // XChaCha20 (inner)
"ciphertext": "…opaque random bytes…"
}
} - The master key is derived in memory and zeroized on lock — never written to disk.
- One vault, multiple ways in: a password slot plus optional security keys, with the password always kept as recovery.
- A wrong password fails the auth tag cleanly. No partial decrypt, no garbage.
- Self-describing KDF parameters; older vaults migrate forward on unlock.
- On disk it's opaque bytes — no plaintext, ever.
What it protects against
A stolen laptop
Disk-level theft yields opaque bytes. Without your password or security key, there's nothing to read.
A network watching you
Tor routing hides where you connect, and DNS never leaks outside the circuit — not to your ISP, not to the resolver.
A swapped server key
Host keys are pinned. A changed fingerprint stops the connection before a byte of your session is sent.