← back to vault

Security model

Last updated: 27 August 2026

vault is designed so the safest thing to do with your secrets is also the default: keep them on your device. Here is exactly how it works.

No backend, no storage

vault is a static site. Every tool runs in your browser. There is no server that receives your inputs, no database, and nothing is logged. The smallest possible attack surface is no server at all.

The only network request

The breach check uses k-anonymity. Your password is hashed with SHA-1 locally and only the first five characters of that hash are sent to the Have I Been Pwned range API. The API returns every hash suffix sharing that prefix and the match is done in your browser. Your password, and even its full hash, never leave your device. The Content-Security-Policy connect-src is limited to self and api.pwnedpasswords.com, so the app cannot talk to anything else.

Randomness

Passphrases and passwords are generated with crypto.getRandomValues (a CSPRNG), using rejection sampling so every character or word is chosen with equal probability. Entropy is computed from the actual pool size, so the strength number is honest.

Hardening

Honest limits

Strength estimates and breach checks are indicators, not guarantees. The JWT decoder decodes but does not verify signatures. As with any web app, you are trusting that the code served to your browser is the code in the public repository.

Report an issue

security@0x6a03448f4d.com — see also /.well-known/security.txt.

privacy →