Version: 1.0Datum: November 2025Status: Produktion
1. Zusammenfassung
SeraVault ist eine Zero-Knowledge-Plattform für Ende-zu-Ende-verschlüsselte Dateispeicherung und Nachrichtenübermittlung, die darauf ausgelegt ist,
Angriffen sowohl durch klassische als auch durch Quantencomputer standzuhalten. Das System verwendet ML-KEM-768 (NIST FIPS 203), einen
gitterbasierten Schlüsselkapselungsmechanismus, der vom NIST für die Post-Quanten-Kryptografie standardisiert wurde, kombiniert mit
AES-256-GCM für die symmetrische Verschlüsselung.
Dieses Whitepaper bietet eine umfassende technische Beschreibung der kryptografischen Architektur von SeraVault,
des Sicherheitsmodells und der Implementierung. Wir erläutern im Detail unser Zero-Knowledge-Design, die Protokolle zur Schlüsselverwaltung und
die post-quanten-kryptografischen Primitive.
Hinweis: Dies ist ein lebendiges Dokument. Mit der Weiterentwicklung kryptografischer Standards und dem Fortschritt der Sicherheitsforschung
werden wir unsere Implementierung und diese Dokumentation entsprechend aktualisieren. Die aktuelle Version spiegelt
das Produktionssystem mit Stand November 2025 wider.
2. Bedrohungsmodell
2.1 Fähigkeiten des Angreifers
SeraVault ist darauf ausgelegt, vor den folgenden Angreifern zu schützen:
2.1.1 Kompromittierung des Servers
Wir gehen davon aus, dass die Serverinfrastruktur vollständig kompromittiert werden kann. Ein Angreifer, der sich vollständigen Zugriff
auf unsere Server verschafft, sollte nicht in der Lage sein, die Dateien oder Nachrichten der Nutzer zu entschlüsseln. Dies wird durch
clientseitige Verschlüsselung erreicht, bei der die Verschlüsselungsschlüssel den Server niemals im Klartext erreichen.
2.1.2 Netzwerk-Angreifer
Wir gehen davon aus, dass ein Angreifer den Netzwerkverkehr zwischen Clients und Servern abfangen, verändern oder einschleusen kann. TLS
bietet Sicherheit auf Transportebene, doch unsere Verschlüsselung auf Anwendungsebene stellt sicher, dass selbst eine Kompromittierung von TLS
keine Klartextdaten preisgibt.
2.1.3 Quanten-Angreifer
Wir rechnen mit zukünftigen Angreifern, die Zugriff auf kryptografisch relevante Quantencomputer (CRQC) haben. Traditionelle
Public-Key-Kryptosysteme wie RSA und Kryptografie auf Basis elliptischer Kurven sind anfällig für den Shor-Algorithmus. SeraVault
verwendet ML-KEM-768, das auf der Schwierigkeit von Gitterproblemen beruht, die als resistent gegen Quantenangriffe gelten.
2.1.4 Staatlicher Angreifer
Wir schützen auch gegen staatliche Akteure mit erheblichen Rechenressourcen, der Fähigkeit, Dienstanbieter zu Zwangsmaßnahmen zu verpflichten,
und "Harvest Now, Decrypt Later"-Fähigkeiten, bei denen verschlüsselte Daten für eine spätere Entschlüsselung gespeichert werden,
sobald Quantencomputer verfügbar werden.
2.2 Vertrauensannahmen
Sicherheit des Client-Geräts: Wir gehen davon aus, dass das Gerät des Nutzers nicht kompromittiert ist. Schadsoftware auf dem Client kann die Verschlüsselung immer aushebeln.
Kryptografische Primitive: Wir vertrauen auf die vom NIST standardisierten kryptografischen Algorithmen (ML-KEM-768, AES-256-GCM).
Kryptografische Implementierung: ML-KEM-768 wird von der quelloffenen Bibliothek @noble/post-quantum bereitgestellt, die gegen die Referenz-Testvektoren (KAT) von NIST FIPS 203 validiert ist. Bis heute wurde diese Bibliothek keinem unabhängigen Sicherheitsaudit durch Dritte unterzogen; es handelt sich um auditierbares reines JavaScript ohne externe Laufzeitabhängigkeiten außer @noble/hashes. AES-256-GCM und ChaCha20-Poly1305 nutzen die native Web-Crypto-API des Browsers sowie die auditierte Bibliothek @noble/ciphers.
Generierung von Zufallszahlen: Wir verlassen uns für kryptografisch sichere Zufallszahlen auf crypto.getRandomValues() des Browsers.
Stärke der Nutzer-Passphrase: Bei der passphrasenbasierten Authentifizierung gehen wir davon aus, dass Nutzer ausreichend starke Passphrasen wählen (mindestens 12 Zeichen).
2.3 Außerhalb des Geltungsbereichs
Die folgenden Bedrohungen liegen ausdrücklich außerhalb des Geltungsbereichs:
Seitenkanalangriffe auf die Client-Hardware
Physischer Zugriff auf entsperrte Client-Geräte
Nötigung oder Social Engineering von Nutzern
Bösartige Browser-Erweiterungen oder kompromittierte Browser
Metadatenanalyse (Zugriffsmuster auf Dateien, Upload-Zeiten und Dateigrößen sind für die Server sichtbar)
3. Systemarchitektur
3.1 Zero-Knowledge-Design
SeraVault implementiert eine echte Zero-Knowledge-Architektur, bei der der Server keinen Zugriff hat auf:
Dateiinhalte im Klartext
Verschlüsselungsschlüssel (außer in verschlüsselter Form)
Dateinamen, Ordnerstrukturen oder andere Metadaten
Nachrichteninhalte im verschlüsselten Chat-System
Alle Ver- und Entschlüsselungsvorgänge finden clientseitig im Browser oder in der Anwendung des Nutzers statt. Der Server
speichert ausschließlich verschlüsselte Daten und fungiert als reine Speicher- und Synchronisationsschicht.
3.2 Komponentenübersicht
3.2.1 Client-Anwendung
React-basierte Webanwendung, die vollständig im Browser läuft
Implementiert alle kryptografischen Operationen mit der Web Crypto API und WebAssembly
Verwaltet Nutzerschlüssel und Authentifizierung
Übernimmt Ver- und Entschlüsselung von Dateien, Verschlüsselung von Metadaten und sichere Freigabe
3.2.2 Cloud-Backend
Backend-Datenbank: Speichert verschlüsselte Datei-Metadaten, Nutzerprofile und Freigabeberechtigungen
Authentifizierungsdienst: Übernimmt die Nutzerauthentifizierung (E-Mail/Passwort, nicht für Verschlüsselungsschlüssel verwendet)
Cloud-Funktionen: Minimale serverseitige Logik für Benachrichtigungen und Bereinigung (kein Zugriff auf Klartextdaten)
3.3 Datenfluss
Ablauf des Datei-Uploads
Der Nutzer wählt eine Datei im Browser aus
Der Client generiert einen zufälligen symmetrischen 256-Bit-Schlüssel (Dateischlüssel)
Der Client verschlüsselt den Dateiinhalt mit AES-256-GCM unter Verwendung des Dateischlüssels
Der Client verschlüsselt die Datei-Metadaten (Name, Größe, Typ) mit dem Shared Secret des Nutzers
Der Client kapselt den Dateischlüssel für den öffentlichen Schlüssel des Nutzers mit ML-KEM-768
Der Client lädt den verschlüsselten Blob in den Cloud-Speicher hoch
Der Client schreibt die verschlüsselten Metadaten und den gekapselten Schlüssel in die Backend-Datenbank
Ablauf des Datei-Downloads
Der Client ruft die verschlüsselten Metadaten aus der Backend-Datenbank ab
Der Client entschlüsselt die Metadaten mit dem Shared Secret des Nutzers
Der Client entkapselt den Dateischlüssel mit ML-KEM-768 unter Verwendung des privaten Schlüssels des Nutzers
Der Client lädt den verschlüsselten Blob aus dem Cloud-Speicher herunter
Der Client entschlüsselt den Dateiinhalt mit AES-256-GCM unter Verwendung des Dateischlüssels
Der Client präsentiert dem Nutzer die Datei im Klartext
4. Kryptografische Primitive
4.1 ML-KEM-768 (NIST FIPS 203)
Module-Lattice-Based Key-Encapsulation Mechanism (auf modularen Gittern basierender Schlüsselkapselungsmechanismus) ist unsere primäre post-quanten-kryptografische Primitive,
die vom NIST im August 2024 als FIPS 203 standardisiert wurde.
Parameter
Parameter
Wert
Sicherheitsniveau
NIST Level 3 (entspricht AES-192)
Größe des öffentlichen Schlüssels
1.184 Bytes
Größe des privaten Schlüssels
2.400 Bytes
Größe des Chiffretexts
1.088 Bytes
Größe des Shared Secret
32 Bytes
Warum ML-KEM-768?
NIST-standardisiert: Erster vom NIST finalisierter Post-Quanten-Algorithmus
Konservative Sicherheit: Level 3 bietet eine starke Sicherheitsmarge
Performance: Schnelle Schlüsselerzeugung sowie Kapselung/Entkapselung
Quantenresistenz: Basiert auf Learning With Errors (LWE) über modularen Gittern, gilt als sicher gegen Quantenangriffe
4.2 AES-256-GCM
Advanced Encryption Standard mit 256-Bit-Schlüsseln im Galois/Counter-Modus bietet authentifizierte
Verschlüsselung für Dateiinhalte.
Eigenschaften
Schlüsselgröße: 256 Bit
Nonce-Größe: 96 Bit (12 Bytes), pro Verschlüsselung zufällig generiert
Authentifizierungs-Tag: 128 Bit (16 Bytes)
Sicherheit: Bietet sowohl Vertraulichkeit als auch Authentizität
Quantenresistenz: Der Grover-Algorithmus reduziert die effektive Schlüsselgröße auf 128 Bit, weiterhin sicher
4.3 ChaCha20-Poly1305
ChaCha20-Poly1305 ist ein authentifizierter Hochgeschwindigkeits-Verschlüsselungsalgorithmus, der zum Schutz von sensiblem
Schlüsselmaterial (wie Ihrem privaten Schlüssel) im Ruhezustand verwendet wird.
Verwendung: Verschlüsselung privater Nutzerschlüssel mit aus Passphrasen abgeleiteten Schlüsseln
Performance: Extrem schnell in Software, ideal für mobile Geräte
Sicherheit: Immun gegen Timing-Angriffe (konstante Laufzeit), bietet 256-Bit-Sicherheit
Verbreitung: Standardisiert in RFC 8439, verwendet von Google, Cloudflare und WireGuard
4.4 Argon2id
Argon2id zum Ableiten von Verschlüsselungsschlüsseln aus Nutzer-Passphrasen. Gewinner der Password Hashing Competition (2015).
Zeitkosten: 3 Iterationen
Speicherkosten: 64 MiB (65536 KiB)
Parallelität: 4 Threads
Salt: zufälliger 128-Bit-Wert, pro Verschlüsselung eindeutig
Ausgabe: 256-Bit-Schlüssel
Warum Argon2id: Argon2id ist speicherintensiv (memory-hard) und macht dadurch GPU- und ASIC-Angriffe teuer. Es kombiniert
datenunabhängige (Argon2i) und datenabhängige (Argon2d) Ansätze für Seitenkanalresistenz und
maximalen Schutz gegen parallele Knackversuche.
5. Protokoll zur Dateiverschlüsselung
5.1 Schlüsselerzeugung
Wenn ein Nutzer erstmals sein Konto erstellt und seine Verschlüsselungsschlüssel generiert:
// ML-KEM-768-Schlüsselpaar generieren
(publicKey, privateKey) = ML-KEM-768.KeyGen()
// Verschlüsselungsschlüssel aus der Passphrase ableiten
salt = CSPRNG(32 bytes)
encryptionKey = Argon2id(passphrase, salt, t=3, m=64MiB, p=4, 32 bytes)
// Privaten Schlüssel mit dem aus der Passphrase abgeleiteten Schlüssel verschlüsseln
nonce = CSPRNG(12 bytes)
encryptedPrivateKey = ChaCha20-Poly1305.Encrypt(encryptionKey, nonce, privateKey)
// Verschlüsselten privaten Schlüssel in der Backend-Datenbank speichern
// Öffentlicher Schlüssel in der Backend-Datenbank gespeichert (im Klartext, da öffentlich)
Anders als viele verschlüsselte Speichersysteme verschlüsselt SeraVault die Datei-Metadaten, darunter:
Dateinamen
Dateigrößen
MIME-Typen
Ordnerpfade
Upload-Zeitstempel
Dies verhindert, dass der Server anhand von Dateinamen oder -typen ein Profil der Aktivitätsmuster des Nutzers erstellt.
Sichtbarkeit von Metadaten: Obwohl Inhalte und Namen verschlüsselt sind, kennt der Server dennoch:
Größen der verschlüsselten Blobs (ungefähre Dateigrößen)
Zeitstempel von Upload/Änderung
Anzahl der Dateien pro Nutzer
Freigabebeziehungen (Nutzer A hat etwas mit Nutzer B geteilt)
Dies ist jedem Cloud-Speichersystem inhärent und kann nicht vollständig beseitigt werden, ohne Techniken wie
ORAM (Oblivious RAM) einzusetzen, die die Performance erheblich beeinträchtigen würden.
6. Schlüsselverwaltung
6.1 Schlüsselhierarchie des Nutzers
Jeder Nutzer verfügt über mehrere Schlüssel, die unterschiedlichen Zwecken dienen:
Schlüsseltyp
Zweck
Speicherung
Öffentlicher ML-KEM-768-Schlüssel
Kapselung des Dateischlüssels (andere verschlüsseln für Sie)
Backend-Datenbank (im Klartext)
Privater ML-KEM-768-Schlüssel
Entkapselung des Dateischlüssels
Backend-Datenbank (verschlüsselt mit aus der Passphrase abgeleitetem Schlüssel)
Shared Secret
Verschlüsselung von Metadaten
Abgeleitet aus dem ML-KEM-768-Schlüsselpaar
Aus Passphrase abgeleiteter Schlüssel
Verschlüsselt den privaten Schlüssel
Bei Bedarf abgeleitet, niemals gespeichert
6.2 Speicherorte der Schlüssel
Wichtig: SeraVault unterstützt mehrere Authentifizierungsmethoden gleichzeitig. Nutzer können
Passphrasen-Authentifizierung, Hardware-Schlüssel-Authentifizierung und biometrische Authentifizierung gleichzeitig aktivieren. Jede Methode
speichert eine unabhängig verschlüsselte Kopie des privaten Schlüssels an unterschiedlichen Orten und bietet so Redundanz und Flexibilität.
6.2.1 Passphrasen-Authentifizierung
Die primäre Authentifizierungsmethode, bei der der private Schlüssel mit einem aus der Passphrase abgeleiteten Schlüssel verschlüsselt und in der Backend-Datenbank gespeichert wird:
Der Nutzer erstellt eine starke Passphrase (mindestens 12 Zeichen)
Die Passphrase leitet über Argon2id einen Verschlüsselungsschlüssel ab (64 MiB, speicherintensiv)
Privater Schlüssel mit dem abgeleiteten Schlüssel per ChaCha20-Poly1305 verschlüsselt
Verschlüsselter privater Schlüssel in der Backend-Datenbank gespeichert
Bei der Anmeldung: Verschlüsselter privater Schlüssel wird heruntergeladen und mit der Passphrase entschlüsselt
Entschlüsselter privater Schlüssel wird während der Sitzung im Browser-Speicher gehalten
Privater Schlüssel wird beim Abmelden verworfen
6.2.2 Hardware-Schlüssel-Authentifizierung
Nutzer können die Hardware-Schlüssel-Authentifizierung zusätzlich zur oder anstelle der Passphrasen-Authentifizierung aktivieren. Private Schlüssel werden
durch einen Hardware-Sicherheitsschlüssel (YubiKey, Titan Key) mittels FIDO2/WebAuthn geschützt:
Privater Schlüssel verschlüsselt mit einem aus der Credential-ID des Hardware-Schlüssels abgeleiteten Schlüssel (via Argon2id)
Verschlüsselter privater Schlüssel in der IndexedDB des Browsers gespeichert (nur clientseitig)
Privater Schlüssel wird niemals an einen Server gesendet
Der Hardware-Schlüssel muss physisch vorhanden sein, um den Entschlüsselungsschlüssel abzuleiten
Privater Schlüssel wird nur bei Bedarf entschlüsselt und nur vorübergehend im Speicher gehalten
Funktioniert mit jedem FIDO2-Authentifikator (YubiKey 5, Titan Key usw.)
Kompromiss bei Hardware-Schlüsseln: Wenn Sie Hardware-Schlüssel ohne Passphrasen-Authentifizierung verwenden, bedeutet der Verlust des
Hardware-Schlüssels den Verlust des Zugriffs auf Ihre verschlüsselten Daten, sofern Sie keinen Ersatzschlüssel oder keine exportierte Schlüsseldatei besitzen.
Der verschlüsselte private Schlüssel in der IndexedDB kann ohne den physisch vorhandenen Hardware-Schlüssel nicht entschlüsselt werden.
6.2.3 Biometrische Authentifizierung
Nutzer können die biometrische Authentifizierung (Fingerabdruck, Face ID) für einen bequemen Zugriff auf mobilen Geräten aktivieren:
Privater Schlüssel verschlüsselt mit einem aus der WebAuthn-Credential-ID abgeleiteten Schlüssel (via Argon2id)
Verschlüsselter privater Schlüssel im localStorage des Browsers gespeichert (nur clientseitig)
Privater Schlüssel wird niemals an einen Server gesendet
Biometrische Authentifizierung ist erforderlich, um den Entschlüsselungsschlüssel abzuleiten
Funktioniert mit den nativen biometrischen Sensoren des Geräts
6.2.4 Sicherung als Schlüsseldatei
Nutzer können ihren privaten Schlüssel verschlüsselt mit einer separaten Passphrase exportieren:
Der Nutzer generiert eine starke Backup-Passphrase
Privater Schlüssel wird mit dem aus der Backup-Passphrase abgeleiteten Schlüssel neu verschlüsselt
Verschlüsselte Schlüsseldatei wird vom Nutzer heruntergeladen
Der Nutzer bewahrt die Schlüsseldatei sicher offline auf
Kann verwendet werden, um den Zugriff wiederherzustellen, falls die primäre Authentifizierungsmethode verloren geht
6.3 Schlüsselrotation
SeraVault unterstützt die Schlüsselrotation, um Forward Secrecy aufrechtzuerhalten:
Ablauf der Schlüsselrotation
Der Nutzer generiert ein neues ML-KEM-768-Schlüsselpaar
Für jede dem Nutzer gehörende Datei:
Dateischlüssel mit dem alten privaten Schlüssel entschlüsseln
Dateischlüssel mit dem neuen öffentlichen Schlüssel neu kapseln
Backend-Datenbank mit dem neuen gekapselten Schlüssel aktualisieren
Für jede freigegebene Datei:
Freigabepartner über die Schlüsseländerung benachrichtigen
Freigegebene Schlüssel mit dem neuen öffentlichen Schlüssel neu kapseln
Alter privater Schlüssel sicher gelöscht
Neuer öffentlicher Schlüssel veröffentlicht
Performance-Hinweis: Die Schlüsselrotation kann bei Nutzern mit Tausenden von Dateien zeitaufwendig sein.
Der Vorgang wird schrittweise im Hintergrund durchgeführt.
7. Sichere Dateifreigabe
7.1 Freigabemodell
SeraVault implementiert für die Dateifreigabe eine Schlüsselkapselung pro Empfänger:
// Der Dateieigentümer gibt die Datei für den Empfänger frei
// 1. Eigentümer ruft den öffentlichen Schlüssel des Empfängers aus der Backend-Datenbank ab
recipientPublicKey = Backend.getPublicKey(recipientUserId)
// 2. Eigentümer entschlüsselt den Dateischlüssel für sich selbst
ownerSharedSecret = ML-KEM-768.Decapsulate(ownerPrivateKey, ownerCiphertext)
fileKey = AES-256-GCM.Decrypt(ownerSharedSecret, keyNonce, encryptedFileKey)
// 3. Eigentümer kapselt den Dateischlüssel für den Empfänger
(recipientCiphertext, recipientSharedSecret) = ML-KEM-768.Encapsulate(recipientPublicKey)
recipientKeyNonce = CSPRNG(12 bytes)
recipientEncryptedFileKey = AES-256-GCM.Encrypt(recipientSharedSecret, recipientKeyNonce, fileKey)
// 4. Gekapselten Schlüssel des Empfängers in der Backend-Datenbank speichern
Backend.grantAccess(fileId, recipientUserId, recipientCiphertext, recipientEncryptedFileKey)
7.2 Eigenschaften der Freigabe
Schlüssel pro Empfänger: Jeder Empfänger erhält seine eigene gekapselte Kopie des Dateischlüssels
Keine erneute Verschlüsselung: Der Dateiinhalt wird nicht neu verschlüsselt, nur der Dateischlüssel wird neu gekapselt
Sofortiger Entzug: Der Eigentümer kann den Zugriff entziehen, indem er den gekapselten Schlüssel des Empfängers löscht
Forward Secrecy: Der Entzug des Zugriffs verhindert künftigen Zugriff, doch der Empfänger könnte den Klartext zwischengespeichert haben
Post-Quanten: Die Freigabe verwendet ML-KEM-768 und ist damit resistent gegen Quantenangriffe
Kann die Datei entschlüsseln und anzeigen, jedoch nicht ändern oder freigeben
Derzeit implementiert SeraVault ein einfaches Berechtigungsmodell mit Eigentümer/Anzeigen. Nutzer, für die eine Datei freigegeben wurde, können Dateien anzeigen, sie jedoch nicht
ändern oder an andere weitergeben.
7.4 Gruppenfreigabe
Um mit mehreren Nutzern zu teilen, kann der Eigentümer eine "Gruppenfreigabe" erstellen:
Der Eigentümer wählt mehrere Empfänger aus
Das System kapselt den Dateischlüssel für jeden Empfänger einzeln
Alle Empfänger erhalten gleichzeitig Zugriff
Der Eigentümer kann einzelne Nutzer entziehen, ohne die anderen zu beeinträchtigen
Speicherkosten: Für jede freigegebene Datei muss pro Empfänger ein gekapselter Schlüssel (~1 KB) gespeichert werden.
Bei großflächiger Freigabe ist dies im Vergleich zum eigentlichen Dateiinhalt vernachlässigbar. Es wird nur das Speicherkontingent des Dateieigentümers
verbraucht, unabhängig davon, mit wie vielen Personen die Datei geteilt wird.
8. Authentifizierungsmethoden
8.1 Mehr-Faktor-Authentifizierung
SeraVault trennt die Kontoauthentifizierung vom Zugriff auf die Verschlüsselungsschlüssel:
Kontoauthentifizierung: Weist nach, dass Sie der Kontoinhaber sind (Authentifizierungsdienst)
Schlüsselzugriff: Weist nach, dass Sie auf die Verschlüsselungsschlüssel zugreifen können (Passphrase, Biometrie, Hardware-Schlüssel)
8.2 Passphrasenbasierte Authentifizierung
Die Standard-Authentifizierungsmethode:
Der Nutzer erstellt eine starke Passphrase (mindestens 12 Zeichen erzwungen)
Passphrase wird verwendet, um über Argon2id einen Schlüssel abzuleiten (Speicherkosten 64 MiB)
Abgeleiteter Schlüssel verschlüsselt den privaten ML-KEM-768-Schlüssel des Nutzers
Passphrase wird niemals an den Server gesendet
Verschlüsselter privater Schlüssel in der Backend-Datenbank gespeichert
8.3 Biometrische Authentifizierung
Verwendet WebAuthn mit Plattform-Authentifikatoren:
Nutzt die biometrischen Sensoren des Geräts (Fingerabdruck, Face ID)
Privater Schlüssel verschlüsselt mit einem aus WebAuthn abgeleiteten Credential
Privater Schlüssel verschlüsselt in der IndexedDB des Browsers gespeichert
Verwendet FIDO2/CTAP2 für eine hardwaregestützte Authentifizierung:
Standardmodus: YubiKey wird zur WebAuthn-Authentifizierung verwendet, Schlüssel werden wie üblich verschlüsselt und gespeichert
Paranoid-Modus: Private Schlüssel werden ausschließlich auf dem YubiKey gespeichert, niemals auf Servern
Unterstützt die YubiKey-5-Serie mit der HMAC-secret-Erweiterung
Erfordert im Paranoid-Modus für alle Operationen die physische Anwesenheit des Schlüssels
8.5 Passkey (Plattform-Authentifikator)
Moderne passwortlose Authentifizierung mit WebAuthn:
Gespeichert im sicheren Enclave des Geräts (TPM, Secure Enclave)
Über die Plattform zwischen den Geräten des Nutzers synchronisiert (iCloud Keychain, Google Password Manager)
Vereint Sicherheit und Komfort
Phishing-resistente Authentifizierung
9. Verschlüsselte Nachrichten
9.1 Chat-Architektur
SeraVault umfasst Ende-zu-Ende-verschlüsselte Nachrichten und verwendet dieselben kryptografischen Primitive wie die Dateiverschlüsselung:
9.2 Austausch des Konversationsschlüssels
// Eine Konversation erstellen
// 1. Der Initiator generiert einen zufälligen Konversationsschlüssel
conversationKey = CSPRNG(32 bytes)
// 2. Für jeden Teilnehmer (einschließlich des Initiators):
(ciphertext_i, sharedSecret_i) = ML-KEM-768.Encapsulate(participant_i_PublicKey)
nonce_i = CSPRNG(12 bytes)
encryptedConversationKey_i = AES-256-GCM.Encrypt(sharedSecret_i, nonce_i, conversationKey)
// 3. Verschlüsselte Konversationsschlüssel in der Backend-Datenbank speichern
// Jeder Teilnehmer kann mit seinem privaten Schlüssel entschlüsseln
9.3 Nachrichtenverschlüsselung
// Eine Nachricht senden
// 1. Der Absender entschlüsselt den Konversationsschlüssel
sharedSecret = ML-KEM-768.Decapsulate(senderPrivateKey, senderCiphertext)
conversationKey = AES-256-GCM.Decrypt(sharedSecret, nonce, encryptedConversationKey)
// 2. Nachricht verschlüsseln
messageNonce = CSPRNG(12 bytes)
encryptedMessage = AES-256-GCM.Encrypt(conversationKey, messageNonce, messageContent)
// 3. In die Backend-Datenbank hochladen
Backend.addMessage(conversationId, encryptedMessage, messageNonce, timestamp)
9.4 Eigenschaften des Chats
Ende-zu-Ende-verschlüsselt: Der Server kann Nachrichteninhalte nicht lesen
Post-Quanten-sicher: Verwendet ML-KEM-768 für den Schlüsselaustausch
Gruppen-Chat: Unterstützt Konversationen mit mehreren Teilnehmern
Dauerhaft: Nachrichten werden verschlüsselt in der Backend-Datenbank gespeichert
Nur auf Einladung: Man muss Kontakte sein, um Konversationen zu beginnen (verhindert Spam)
Sichtbarkeit von Metadaten: Der Server kennt:
Wer sich in welchen Konversationen befindet
Zeitstempel der Nachrichten
Ungefähre Länge der Nachrichten
Dies ähnelt der serverseitigen Metadaten-Sichtbarkeit von Signal.
9.5 Zukünftige Verbesserungen
Mögliche Erweiterungen für künftige Versionen:
Perfect Forward Secrecy: Implementierung des Double-Ratchet-Algorithmus
Abstreitbarkeit: Kryptografische Abstreitbarkeit von Nachrichten
Verschwindende Nachrichten: Automatisches Löschen von Nachrichten
Sealed Sender: Verbergen der Absenderidentität vor dem Server
Detaillierte Fehler werden nur clientseitig zum Debuggen protokolliert
11. Sicherheitsanalyse
11.1 Bedrohungsanalyse
11.1.1 Kompromittierung des Servers
Bedrohung: Ein Angreifer erlangt vollständigen Zugriff auf die Cloud-Infrastruktur.
Auswirkung: Gering. Der Angreifer erhält verschlüsselte Dateien, verschlüsselte private Schlüssel, öffentliche Schlüssel und verschlüsselte Metadaten.
Gegenmaßnahme: Ohne Nutzer-Passphrasen oder Hardware-Schlüssel kann der Angreifer nicht entschlüsseln. Die Zero-Knowledge-Architektur begrenzt den Schaden auf das Sammeln verschlüsselter Daten.
11.1.2 Passives Mithören im Netzwerk
Bedrohung: Ein Angreifer fängt den Netzwerkverkehr ab.
Auswirkung: Gering. TLS schützt den Transport, doch selbst eine Kompromittierung von TLS legt nur verschlüsselte Daten offen.
Gegenmaßnahme: Die Verschlüsselung auf Anwendungsebene stellt sicher, dass niemals Klartext übertragen wird. Metadaten sind verschlüsselt.
11.1.3 Angriff durch einen Quantencomputer
Bedrohung: Ein zukünftiger Quantencomputer versucht, die Verschlüsselung zu brechen.
Auswirkung: Gering für durch ML-KEM-768 geschützte Daten. Die Sicherheit der symmetrischen Verschlüsselung (AES-256) ist reduziert, aber weiterhin stark.
Gegenmaßnahme: ML-KEM-768 basiert auf Gitterproblemen, die gegen bekannte Quantenalgorithmen resistent sind. AES-256 bietet 128-Bit-Sicherheit gegen Quantenangriffe (Grover-Algorithmus), was für die meisten Anwendungsfälle ausreichend ist.
11.1.4 Schwache Passphrase
Bedrohung: Der Nutzer wählt eine schwache Passphrase, der Angreifer führt einen Offline-Brute-Force-Angriff durch.
Auswirkung: Hoch, sofern erfolgreich. Der Angreifer entschlüsselt den privaten Schlüssel und erhält Zugriff auf alle Dateien.
Gegenmaßnahme:
Vorgabe einer Passphrase mit mindestens 12 Zeichen
Der speicherintensive Argon2id-Hash (64 MiB) macht GPU-/ASIC-Angriffe teuer
Empfehlung zur Verwendung von Hardware-Schlüsseln für besonders schützenswerte Konten
Aufklärung der Nutzer über die Stärke von Passphrasen
11.1.5 Phishing
Bedrohung: Der Nutzer wird dazu verleitet, seine Passphrase auf einer bösartigen Website einzugeben.
Auswirkung: Hoch. Der Angreifer erlangt die Passphrase und kann den privaten Schlüssel entschlüsseln.