A 6-digit PIN has ~10^15 times less entropy than a private key. Yet it can still protect one — if the design borrows the entropy from elsewhere. Here is exactly how this wallet does it, and the limits of the model.
What is stored
Only one object, in your browser's local storage: the vault. It contains your encrypted seed phrase, a random 16-byte salt, a random 12-byte AES-GCM nonce, and some public metadata (your addresses, creation time). The plaintext phrase, PIN and private keys are never written to storage.
How the PIN becomes a key
The PIN alone is a terrible key — it is short and guessable. So it is stretched: PBKDF2-SHA256 runs 600,000 rounds using your PIN and the vault's random salt, producing a 256-bit AES key. Two consequences:
- Brute-forcing a PIN requires 600,000 hash operations per guess, per vault — a guessing machine that could try millions of raw PINs per second is reduced to a handful of guesses per second against one device. Ten million dollars of cloud compute still means years per 6-digit space when the attacker must also possess your exact vault file.
- The salt is random per vault, so precomputed "PIN tables" work against nobody.
Why AES-256-GCM
GCM is authenticated encryption: any tampering with the stored ciphertext fails decryption loudly rather than yielding garbage keys. A wrong PIN produces the same failure — the app cannot distinguish "wrong PIN" from "corrupted vault" and treats both as a wrong PIN.
What this protects against — and what it does not
Protects: someone with your device (or a stolen vault file) who does not know the PIN. Does not protect: malware running in your browser while you are unlocked — no local encryption can; that threat is defeated by not installing malicious extensions and by keeping balances reasonable on internet-connected devices. And it does not protect the phrase itself: that job belongs to your physical backup.
Design philosophy
Security in layers: the PIN guards the device, the passphrase guards your life. Lose the device and an attacker faces PBKDF2; lose the phrase and no mathematics on Earth helps. That second sentence is not a bug — it is what "non-custodial" means.