Skip to content

Security overview

How MGVault protects your data

A plain account of our cryptography, what our servers can and cannot see, how team sharing stays trustworthy — and the limits we haven't solved yet.

Where we stand today

MGVault is in beta. We'd rather tell you exactly what has and hasn't been done than make claims we can't back up.

Product stage
BetaRegistration is open. Features and design may still change before general availability.
Independent security audit
Not yet done — plannedAn independent audit and penetration test are planned before general availability. We'll publish an update here when they are complete.
Internal security reviews
OngoingWe review the design and code in focused rounds. Findings are fixed and covered by tests before release.
Cryptography tests
In placeOur crypto package is checked against standard test vectors (RFC 9106, RFC 7693, RFC 7748, XChaCha20-Poly1305) and against an independent reimplementation of our formats.
Bug bounty
PlannedNot running yet. Until then, please report issues directly (see below).
Certifications
None yetWe don't hold certifications such as ISO 27001 or SOC 2 at this time.

Cryptographic primitives

We use well-studied, modern primitives from libsodium, the same library in the web app and the browser extension.

PurposePrimitiveParameters
Deriving keys from your master passwordArgon2idm = 64 MiB · t = 3 · p = 1
Encrypting items and keysXChaCha20-Poly1305256-bit · 192-bit nonce
Sharing collection keys with membersX25519 sealed boxcrypto_box_seal
Signing shared keys and key epochsEd25519RFC 8032
Salts and key fingerprintsBLAKE2bRFC 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. 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. 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. 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. 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. 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.

Never visible to us
  • 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
Visible to us (needed to run the service)
  • 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

Sharing in teams

Sharing is where many designs quietly trust the server. Ours is built so that a compromised server can't quietly insert itself between team members.

  • Signed key epochs

    Every shared collection key is wrapped for a member with a sealed box and signed with Ed25519 by the person who shared it. Clients check the signature before opening anything.

  • Fingerprint verification

    Admins confirm new members by their key fingerprints, which you can compare over a trusted channel. Unverified keys aren't used for sharing.

  • Rotation when someone leaves

    Removing a member deletes their copies of the keys and moves the collection to a new key epoch. Clients refuse to write with an older key, so new items stay out of their reach.

  • An honest rotation checklist

    Someone who leaves may remember what they saw. MGVault lists the passwords and 2FA codes they could access, so you can change them.

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.

  • Hosting in Istanbul, Turkey

    Database, backups and logs are kept in Turkey and handled under 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

    Daily database backups are encrypted to a public key. 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.

Known limitations

No system is perfect. These are the trade-offs we know about today.

  • 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.

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

Start your vault in under a minute

Free for personal use. Your keys are created on your device, right now, in your browser.