Security overview
How MGVault protects your data
A precise account of our cryptography, what our servers can and cannot see, how team sharing stays trustworthy — and the limitations we design around.
- End-to-end encrypted
- Keys derived on device
- 4 data centers in Türkiye
Security program
How we test, review and respond — today.
- Ongoing
Internal security reviews
We review the design and code in focused rounds. Findings are fixed and covered by tests before release.
- In place
Cryptography tests
Our crypto package is checked against standard test vectors (RFC 9106, RFC 7693, RFC 7748, XChaCha20-Poly1305) and against an independent reimplementation of our formats.
- Open
Coordinated disclosure
Report vulnerabilities by email. Contact details are also published in machine-readable form at /.well-known/security.txt.
An independent third-party security audit and a bug bounty program are planned.
Architecture at a glance
Keys are created and used on the client. The network carries ciphertext; the server stores what it cannot open.
Cryptographic primitives
We use well-studied, modern primitives from libsodium, the same library in the web app and the browser extension.
| Purpose | Primitive | Parameters |
|---|---|---|
| Deriving keys from your master password | Argon2id | m = 64 MiB · t = 3 · p = 1 |
| Encrypting items and keys | XChaCha20-Poly1305 | 256-bit · 192-bit nonce |
| Sharing collection keys with members | X25519 sealed box | crypto_box_seal |
| Signing shared keys and key epochs | Ed25519 | RFC 8032 |
| Salts and key fingerprints | BLAKE2b | RFC 7693 |
Argon2id parameters are stored per account so they can be raised over time. Clients refuse parameters below a safe minimum, so a server can't weaken them.
How your keys fit together
Everything starts on your device. Here is the chain from your master password to an encrypted item.
- 1
Your master password is stretched with Argon2id
Together with a salt derived from your email, it produces 64 bytes on your device. Half becomes a login key, half becomes your key-encryption key.
- 2
Only the login key is sent — and hashed again
The server stores an Argon2id hash of the login key to check your login. The key-encryption key never leaves your device.
- 3
Your account key is wrapped
A random 256-bit account key is encrypted with your key-encryption key. It protects your private keys for sharing and signing.
- 4
Each collection has its own key
Personal and shared collections each use a random key, wrapped separately for every member with their X25519 public key.
- 5
Items are encrypted and bound to their place
Items are encrypted with XChaCha20-Poly1305. The item ID, collection and version are authenticated, so an encrypted item can't be swapped or rolled back unnoticed. Padding hides the exact length of your data.
What our servers can and cannot see
Zero-knowledge doesn't mean zero data. Here is the honest split.
- Your master password
- Your encryption keys and private keys
- Item titles, usernames, passwords, URLs and notes
- 2FA (TOTP) secrets stored in your vault, and the codes made from them
- Collection names in organizations
- Your email address and organization names
- Encrypted items, their IDs, approximate sizes and timestamps
- Who belongs to which organization and collection, and their roles
- Public keys, sessions and devices
- Security events in the audit log, with masked IP addresses
What if our servers were breached?
The most honest way to judge a security model is to ask about the worst case. Here is our answer:
Exposed: encrypted data only
The database and backups contain encrypted items, wrapped keys and an Argon2id hash of your login key. None of these reveal vault contents directly.
Not exposed: your keys
Your master password, key-encryption key and account key never exist in plaintext on the server. There is no master key to steal.
Remaining risk: master password guessing
An attacker could try to guess your master password offline against the stolen data. Argon2id (64 MiB, 3 passes) makes every guess expensive; a long, unique master password reduces this risk substantially.
Our obligation: timely notification
In the event of a personal data breach we notify the Personal Data Protection Authority and affected users as soon as possible under Article 12 of KVKK, and tell you clearly what to do.
Account and session security
Protecting the way in matters as much as protecting the vault.
Two-step login
Add an authenticator app (TOTP) or passkeys (WebAuthn). The login TOTP secret is stored server-side, encrypted, because the server must check your code.
Short-lived sessions
Access tokens expire after 15 minutes. Refresh tokens rotate on every use, and reuse of an old token revokes the whole session.
Devices you control
See your active sessions and revoke any of them remotely. Security changes trigger an email notification.
Rate limits
Login, registration and recovery attempts are rate limited per IP address and per account, and responses don't reveal whether an account exists.
Automatic locking
Your vault locks after 15 minutes of inactivity, and keys are kept in memory only while it's unlocked.
Infrastructure
Layers that still protect you if one of them fails.
Four data centers in Türkiye
Our servers and encrypted backups are distributed across four data centers in Türkiye: Datacasa, Mars Datacenter, Equinix and PenDC. The database and logs are kept in Türkiye and handled in line with KVKK.
Row-level security
PostgreSQL row-level security separates organizations as a second line of defense behind the application's own checks.
Append-only audit log
Audit events can be added but not edited by the application. Retention is 7 days on Free and 365 days on Team.
Encrypted backups
Nightly database backups are encrypted to a public key on the server and stored across our data centers in Türkiye, where the providers cannot read them. The private key needed to restore them is kept offline, and restores are tested.
Strict browser policy
A strict Content Security Policy with per-request nonces. No third-party scripts, fonts, trackers or analytics.
Payments kept apart
When paid plans launch, card payments will be handled by iyzico on a separate origin. Card data won't touch our servers.
What you can verify yourself
You should not have to take our word for it. Several of our claims can be checked in your own browser.
Network traffic
In your browser’s developer tools you can see that saving an item sends only encrypted data to the server.
Content Security Policy
The CSP header on every response shows that pages run only nonce-bearing scripts from our own origin. There are no third-party scripts, fonts or trackers.
Key fingerprints
By comparing fingerprints with teammates by phone or in person, you confirm that shared keys reach the right people.
Sessions and audit log
You can review the active sessions on your account and your organization’s audit log, and end any session you do not recognize immediately.
Known limitations
No system is perfect. These are the trade-offs we know about today, stated plainly:
- Lost master password and Emergency Kit. If you lose both, your data can't be recovered — by anyone, including us.
- Your master password matters. Argon2id slows guessing a lot, but a short or reused password can still be guessed offline by someone who obtains the encrypted data.
- First contact relies on trust. The first key you receive from a team member is trusted on first use unless you compare fingerprints out of band.
- Some audit events come from clients. Copy and autofill events are reported by members' apps and can't be verified by the server; they are labeled as such.
- Browser memory. We wipe keys from memory where JavaScript allows, but browsers may keep copies we can't erase.
- The web vault loads its code from our server. Like every web application, the web vault downloads its code from our server each time it opens, so someone who controlled the server could in theory serve modified code. A strict CSP and the ban on third-party scripts narrow this surface; the browser extension ships its code with the installation and does not load remote code.
Reporting a vulnerability
Found something? We want to hear about it and will respond quickly.
Email us with details and steps to reproduce. Please give us reasonable time to fix the issue before disclosing it publicly.
muhammed@aliguc.com
Get started
Start your vault in under a minute
Free for personal use. Your keys are created on your device — right now, in your browser.