Keyvaci

Security architecture

Don't trust us. Check us.

Every claim on this page is a property of the design, not a policy we promise to follow. Policies change with management; mathematics does not. Here is exactly what happens to a secret you store in Keyvaci.

The core mechanism

A secret's journey, end to end

Keys are born on your device

At enrolment, your master password runs through Argon2id (64 MiB memory, deliberately expensive to brute-force) to derive your master key, which protects your personal X25519 encryption keypair and Ed25519 signing keypair. The master password and master key never leave the browser.

The organisation countersigns

An administrator verifies your key's fingerprint with you over a separate channel and countersigns it with the organisation signing key. From then on, every device in your organisation can verify your key is really yours before trusting it with anything.

Entries are sealed client-side

Each vault has its own key. Every entry, including the vault's name, is encrypted with XChaCha20-Poly1305 authenticated encryption on your machine. What travels to us, and what we store, is the ciphertext.

Sharing is signed cryptography

Sharing a vault encrypts its key for the recipient's public key, after the countersignature check, and signs the grant so it cannot be redirected to a different key. Revoking re-encrypts the vault under a fresh key.

The honest inventory

What our servers hold

A zero-knowledge claim is only as good as its inventory. This is ours.

DataWhat we actually storeCan Keyvaci read it?
Vault entries (passwords, notes)XChaCha20-Poly1305 ciphertextNo
Vault namesCiphertext, encrypted like entriesNo
Your master passwordNothing. It is never transmittedNo
Private keysCiphertext sealed by your master keyNo
Organisation recovery & signing keysNothing. Generated and kept on your sideNo
Public keys and countersignaturesPlaintext (they are public by design)Yes
Names and emails of membersPlaintext, needed to run the accountYes
Audit events (who did what, when)Plaintext metadata, append-onlyYes
Sign-in links (email sign-in only)SHA-256 digest only, usable once, dead five minutes after it is sent. There is no sign-in password to holdDigest only

The consequence, stated plainly: a full compromise of Keyvaci's database yields ciphertext, public keys, and metadata. The material needed to decrypt your vaults is not there to be stolen.

Defence in depth

Around the cryptography

Step-up on reveal

Reading a credential requires recent authentication, with optional TOTP. Session tokens alone never open a vault entry.

Rate limits with a purpose

Reveals and vault opens are rate-limited per user, so even a hijacked, stepped-up session cannot bulk-export an organisation's secrets.

Edge protection

All traffic passes a WAF (managed rule sets, IP reputation, rate rules) in front of the API, and the API origin rejects any request that did not come through it.

Tenant isolation

Every record is keyed by organisation, checked on every request, and covered by cross-tenant isolation tests that run in CI.

Append-only audit

The audit service's own database permissions allow writing new events and nothing else. Tampering is not a policy violation; it is a permission error.

Strict sessions

Decryption keys live in memory only, wiped on lock, after 15 idle minutes, or when the tab hides. Sign-in freshness and audience are verified against the IdP's keys on every request.

More clients, same rules

What the extension and the phone are not allowed to do

Adding a browser extension and a mobile app is where most vaults quietly loosen their own rules, because filling a password conveniently is easier when something is holding a key for you. These are the places we refused to, and what each refusal costs.

RuleHow it is enforced
One implementation of the cryptographyThe extension and the phone consume the same encryption and the same verified read chain as the web app, as source. There is no second copy to drift, and no client with weaker parameters. On the phone this is why key derivation runs natively at the full 64 MiB rather than being reduced to something a browser engine could manage
An entry that fails a signature check is discardedThe web app can afford to show a warning next to something questionable. An autofill menu cannot hold that conversation, so anything that fails the organisation, grant, or author signature check is dropped and never offered. Filling a password from an unverified source is the one thing these clients must never do
Every reveal is auditedShowing, copying, and filling all go through the same audited reveal as the console, including fills into other apps on the phone. A second client is not a way around the log the product is sold on
Autofill cannot run without a personThe iOS provider refuses the silent path the system offers, and asks for the master password in its own process every time. Answering that request silently would mean a key was being stored somewhere for it
The menu only knows the site you are onMatching is by exact host or a true parent and child relationship, never by substring, and the page's own origin is taken from the browser rather than from anything the page can claim. A misdirected click on a hostile site can only fill a credential that already belonged to it
Keys expire on a deadline, not on idlenessTen minutes after unlocking, the extension and the phone erase their keys whether or not you returned. The phone also clears them the moment the app leaves the screen, so the app switcher never holds an open vault
The vault never sees your company passwordSigning in with Microsoft opens a window owned by the browser or the operating system, which the extension cannot script and cannot read

One honest exception, and it is the reader's to make: turning on Face ID stores your master password on that one device, guarded by the device's secure hardware and invalidated automatically if the biometric set changes. It is off until you switch it on, the app states the trade at the point of consent, the master password is still asked for every 30 days and immediately after any password change, and there is never a state where biometrics are the only way in.

Limits, stated out loud

What zero-knowledge does not do

A security page that lists only strengths is marketing. These are the boundaries of the model, and what we did about each.

Your devices are yours to secure

Decryption happens on your machines, so malware on a member's device can see what that member sees. Auto-lock, auto-hide, clipboard clearing, and reveal audit narrow the window; they cannot remove it.

Recovery is a real power

The organisation recovery key can restore any member's keys, which means it could read their vaults. We tell every member this at enrolment, in plain words, and every recovery is audited. Guard that kit like the master secret it is.

Lost keys are lost data

If a member forgets their master password and the organisation loses its recovery kit, that data is gone. Nobody, including us, can bring it back. We repeat this warning at signup because it is the honest price of a server that cannot read your data.

Certified operations. Keyvaci is operated by XNOR Group Pte. Ltd., whose information security management system is certified to ISO/IEC 27001. Certificate and scope statement available to your procurement or security team on request. A SOC 2 report for the Keyvaci service is on the roadmap; until it is issued, this page and the published design are the claims we ask you to hold us to. More on how the standards relate: ISO 27001 vs SOC 2.
Responsible disclosure. Found something? We want to know. Write to keyvaci@xnorgroup.com and we will respond quickly, credit you if you wish, and never take legal action against good-faith research.

Put the architecture to work

14 days, every feature, no card. Your security team is welcome to ask us hard questions at keyvaci@xnorgroup.com while you evaluate.