MindMapVaultMMV

Zero-Knowledge-Architektur

Deine Maps werden verschlüsselt,
bevor sie dein Gerät verlassen.

Der Server speichert ausschließlich Chiffrat – er besitzt keinen Schlüssel, kein Passwort und keinen lesbaren Inhalt. Architektonisch erzwungen, nicht nur versprochen.

AES-256-GCMArgon2id KDFML-KEM-768 Post-QuantenOpen-Source-Krypto

Vertrauensmodell

Was der Server sehen kann – und was nicht

Die Sicherheitsgrenze ist kein Versprechen, sondern eine Konsequenz der Architektur. Der Server empfängt niemals die Eingaben, die zur Entschlüsselung deiner Daten erforderlich wären.

Dein Browser
  • Dein Passwort
  • Master-Schlüssel (nur RAM)
  • Private Schlüssel (entschlüsselt)
  • Klartext-Mindmap
  • Map-Titel (Klartext)
auth_token (HKDF-Credential)
Verschlüsselte Private-Key-Blobs
AES-256-GCM-Chiffrat-Blob
Verschlüsselter Titel
Unser Server
  • Argon2id-Hash des auth_token
  • AES-umschlossene Private Keys
  • Verschlüsselter Map-Blob (MinIO)
  • Verschlüsselter Titel-Chiffrat
  • Öffentliche Schlüssel (bewusst öffentlich)

Kerngarantien

Drei Dinge, die die Architektur erzwingt

Passwort wird nie übertragen

Dein Passwort durchläuft lokal Argon2id, um einen Master-Schlüssel zu erzeugen. Der Server empfängt nur ein per HKDF abgeleitetes auth_token – ein Credential, das mathematisch vom Passwort und von den Verschlüsselungsschlüsseln getrennt ist. Selbst wenn dieses Token gestohlen würde, kann damit kein Tresorinhalt entschlüsselt werden.

Private Schlüssel nie im Klartext gespeichert

Deine X25519- und ML-KEM-768-Private-Keys werden im Browser generiert und sofort mit AES-256-GCM(master_key, …) umschlossen, bevor sie hochgeladen werden. Der Server speichert das Chiffrat. Ohne deinen Master-Schlüssel – der dein Gerät niemals verlässt – sind die Blobs bedeutungslos.

Map-Inhalt nie vom Server lesbar

Jeder Speichervorgang erzeugt einen frischen Data-Encryption-Key (DEK). Der DEK verschlüsselt deine Mindmap mit AES-256-GCM und wird dann selbst mit einem hybriden klassischen + Post-Quanten-KEM umschlossen. Der Server speichert den umschlossenen DEK und den Blob – hat aber keine Möglichkeit, den DEK zu entschlüsseln. Kein Schlüssel-Reuse zwischen Speichervorgängen.

So funktioniert es

Verschlüsselung Schritt für Schritt

Registrierung – Schlüsselableitung

Dein Passwort
+ zufälliges Salt
Argon2id
64 MiB · 3 Iterationen
Master-Schlüssel
32 Byte · nur RAM
HKDF "auth-v1"
auth_token
→ an Server gesendet
AES-256-GCM Wrap
Verschl. Private Keys
→ server-seitig gespeichert

Der Server hasht auth_token nochmals mit Argon2id, bevor er ihn speichert – das Credential in der Datenbank ist also ein abgeleiteter Hash, nicht das originale Token.

Speichern einer Mindmap – Verschlüsselung pro Speichervorgang

Deine Mindmap
Klartext-JSON
AES-256-GCM
frischer DEK pro Speicherung
Verschlüsselter Blob
opaques Chiffrat
Upload via HTTPS
Objektspeicher
MinIO · kein Schlüssel
Frischer DEK
zufällig, 32 Byte
Hybrid-KEM
X25519 + ML-KEM-768
Umschlossener DEK
+ ephemerer Pub-Key
in DB gespeichert
Datenbank
MongoDB · kein Schlüssel

Der DEK wird nirgendwo gespeichert. Er wird auf Anfrage vom Client mithilfe seiner Private Keys neu abgeleitet. Jeder Speichervorgang ist unabhängig verschlüsselt – kein Schlüssel-Reuse zwischen Speichervorgängen oder zwischen Nutzern.

Kryptografie-Stack

Standardisierte Algorithmen, geprüfte Bibliotheken

AES-256-GCM
Symmetrische Verschlüsselung

Verschlüsselt alle Inhalte: Mindmap-Blobs, Map-Titel und Private-Key-Blobs. Verwendet die native Web-Crypto-API des Browsers – keine externe Krypto-Bibliothek für die symmetrische Verschlüsselung.

NIST-Standard · Web Crypto API
Argon2id
Schlüsselableitung

Leitet den Master-Schlüssel aus deinem Passwort ab. Parameter: 64 MiB Arbeitsspeicher, 3 Iterationen, 4 Threads. Implementiert via hash-wasm (WebAssembly) – läuft vollständig im Browser.

Password-Hashing-Competition-Gewinner
X25519
Klassischer Schlüsselaustausch

Elliptische-Kurven-Diffie-Hellman für die klassische Hälfte des Hybrid-KEM. Erzeugt bei jedem Speichervorgang ein ephemeres Schlüsselpaar – kein Langzeit-Schlüssel-Reuse. Implementiert via @noble/curves.

RFC 7748 · @noble/curves
ML-KEM-768
Post-Quanten-KEM

Die Post-Quanten-Hälfte des Hybrid-KEM. Von NIST 2024 standardisiert (FIPS 203). Schützt vor zukünftigen Quantencomputern, die X25519 mit dem Shor-Algorithmus brechen könnten. Via @noble/post-quantum.

NIST FIPS 203 · Standard 2024
HKDF-SHA256
Sub-Schlüsselableitung

Leitet domänengetrennte Schlüssel aus dem Master-Schlüssel ab ("crypt-mind-auth-v1", "crypt-mind-title-v1", "crypt-mind-dek-v1") und kombiniert die klassischen und Post-Quanten-Shared-Secrets. Via @noble/hashes.

RFC 5869 · @noble/hashes
Hybrid-KEM
Key Encapsulation

Kombiniert X25519- und ML-KEM-768-Shared-Secrets via HKDF: HKDF(klassisch ‖ pq). Die Sicherheit gilt, solange eine der beiden Schichten ungebrochen bleibt – ein konservatives Defense-in-Depth-Design.

Klassisch + Post-Quanten kombiniert

Datenübersicht

Genau was wo gespeichert wird

Server sieht niemals
  • Dein Passwort
  • Dein Master-Schlüssel
  • Deine Private Keys (Klartext)
  • Dein Data-Encryption-Key (DEK)
  • Mindmap-Inhalt (Klartext)
  • Map-Titel (Klartext)
Server speichert (alles verschlüsselt)
  • Argon2id(auth_token) – Credential-Hash
  • Argon2id-Salt + Parameter (für Client-Ableitung nötig)
  • AES-256-GCM(master_key, x25519_private)
  • AES-256-GCM(master_key, mlkem_private)
  • AES-256-GCM(DEK, map_content) – MinIO
  • AES-256-GCM(title_key, map_title)
  • X25519- + ML-KEM-768-Public-Keys (bewusst öffentlich)

Wenn die gesamte Datenbank und der Objektspeicher gestohlen würden, sähe ein Angreifer ausschließlich opake Chiffrat-Blobs und öffentliche Schlüssel. Ohne dein Passwort ist es rechnerisch nicht möglich, den Inhalt wiederherzustellen.

Bedrohungsmodell

Ehrlich darüber, was wir schützen – und was nicht

Geschützt gegen

  • Server-Kompromittierung – DB und Dateispeicher enthalten nur Chiffrat. Ein Einbruch legt keinen Klartext frei.
  • Netzwerk-Abfang – TLS während der Übertragung; Nutzdaten sind unabhängig davon Chiffrat.
  • Credential-Diebstahl – Das Stehlen des auth_token allein kann keinen Tresorinhalt entschlüsseln.
  • Zukünftige Quantencomputer – ML-KEM-768 schützt die Key-Encapsulation gegen den Shor-Algorithmus.
  • Cross-User-Replay – Jeder Speichervorgang nutzt ein frisches ephemeres Schlüsselpaar und einen frischen DEK.
  • Admin liest deine Tresore – Kein Entschlüsselungspfad auf Server-Seite. Keine Policy-Aussage – eine architektonische Tatsache.

Aktuelle Einschränkungen

  • Browser-Speicher-Angriffe – Code-Ausführung im Browser (z. B. XSS) könnte den im Speicher liegenden Master-Schlüssel auslesen. Das ist eine inhärente Eigenschaft browser-basierter E2E-Verschlüsselung.
  • Passwortstärke – Argon2id ist stark, aber ein schwaches Passwort bleibt ein schwaches Geheimnis. Nutze eine lange, zufällige Passphrase.
  • Kein Schlüsselrotations-UI – Schlüsselrotation nach einer Passwortänderung wird server-seitig nachverfolgt, ist aber noch nicht in der UI verfügbar.
  • Kein Audit-Log – Zugriffsereignisse werden noch nicht aufgezeichnet. Du kannst nicht sehen, welche IP oder welches Gerät zuletzt einen Tresor geöffnet hat.
  • Keine Passwort-Wiederherstellung – Wenn du dein Passwort für einen verschlüsselten Tresor verlierst, gibt es keinen admin-seitigen Wiederherstellungspfad. Die Daten sind kryptografisch unzugänglich.