Glossar
Die auf dieser Seite verwendeten technischen und kryptografischen Begriffe, einfach erklärt. Für ausführlichere Erklärungen geht es zum Blog.
Argon2id
Argon2id ist der Gewinneralgorithmus der Password Hashing Competition, entwickelt, um Brute-Force-Angriffen auch mit spezialisierter Hardware (GPU, ASIC) standzuhalten. Er wird hier auf zwei Ebenen eingesetzt: zur Ableitung des Schlüssels, der den privaten Schlüssel des Nutzers schützt, und für das serverseitige Passwort-Hashing.
Curve25519
Curve25519 ist eine elliptische Kurve für schnellen, sicheren Schlüsselaustausch (Diffie-Hellman). Jedes Konto besitzt ein auf dieser Kurve erzeugtes Schlüsselpaar: Der öffentliche Schlüssel kann frei geteilt werden, der private Schlüssel verlässt niemals das Gerät des Nutzers.
Ende-zu-Ende-Verschlüsselung (E2E)
End-to-End Encryption: Dateien werden im Browser verschlüsselt, bevor sie gesendet werden, und erst beim Anzeigen entschlüsselt, ebenfalls im Browser. Zu keinem Zeitpunkt verarbeitet der Server die Daten im Klartext.
JWT (JSON Web Token)
Ein JSON Web Token ist ein kompaktes, kryptografisch signiertes Token, das die Identität seines Inhabers nachweist. Nach der Anmeldung stellt der Server ein JWT aus, das der Client bei jeder Anfrage zurücksendet; der Server kann dessen Gültigkeit (über RSA-Signatur) prüfen, ohne einen Sitzungsstatus speichern zu müssen.
Kryptografisches Salt
Ein Salt ist ein eindeutiger Zufallswert, der jedem Nutzer zugeordnet und mit seinem Passwort kombiniert wird, bevor eine Ableitungsfunktion wie Argon2id angewendet wird. Dies verhindert, dass ein Angreifer vorberechnete Tabellen (Rainbow Tables) nutzt, um Passwörter massenhaft wiederherzustellen.
Libsodium
Libsodium ist eine moderne, geprüfte und weit verbreitete Kryptobibliothek, die sichere, einfache Implementierungen von Verschlüsselung (XChaCha20-Poly1305), Schlüsselableitung (Argon2id) und Schlüsselaustausch (Curve25519) bereitstellt. May·Secret nutzt ihre WebAssembly-Version direkt im Browser.
Nonce
„Number used once“ — ein für jede Verschlüsselungsoperation zufällig erzeugter Wert, der garantiert, dass die zweimalige Verschlüsselung derselben Datei mit demselben Schlüssel unterschiedliche Ergebnisse liefert. Unerlässlich für die Sicherheit moderner symmetrischer Verschlüsselungsalgorithmen.
Öffentlicher / privater Schlüssel
In der asymmetrischen Kryptografie besitzt jeder Nutzer zwei mathematisch verknüpfte Schlüssel. Der öffentliche Schlüssel dient zum Verschlüsseln von Daten oder zum Prüfen einer Signatur und kann gefahrlos verbreitet werden. Der private Schlüssel dient zum Entschlüsseln oder Signieren und darf niemals weitergegeben werden — bei May·Secret verlässt er niemals das Gerät des Nutzers, verschlüsselt mit seinem Passwort.
RSA 256 Bit (RS256)
RS256 kombiniert den RSA-Algorithmus mit der Hash-Funktion SHA-256, um JWT-Tokens zu signieren. Der Server signiert das Token mit einem privaten RSA-Schlüssel; jeder Dienst kann dessen Authentizität mit dem entsprechenden öffentlichen Schlüssel prüfen, ohne jemals Zugriff auf den privaten Schlüssel zu haben.
XChaCha20-Poly1305
XChaCha20-Poly1305 ist ein authentifiziertes Verschlüsselungsverfahren (AEAD), das die Stromverschlüsselung ChaCha20 (Variante mit erweitertem Nonce) mit dem Authentifizierungscode Poly1305 kombiniert. Es gewährleistet sowohl Vertraulichkeit (niemand kann die Daten lesen) als auch Integrität (jede Veränderung der verschlüsselten Datei wird erkannt).
Zero-Knowledge-Architektur
Eine „Zero-Knowledge“-Architektur (Nullwissen) garantiert, dass der Dienstanbieter technisch keine Möglichkeit hat, die Daten des Nutzers zu lesen. Die gesamte Verschlüsselung erfolgt clientseitig, vor dem Versand an den Server: Dieser verarbeitet nur unlesbare Inhalte, selbst bei einem Hack oder einer gerichtlichen Anordnung.
Zustandslose Authentifizierung (stateless)
Im Gegensatz zur klassischen sitzungsbasierten Authentifizierung (bei der der Server im Speicher merkt, wer angemeldet ist) speichert eine zustandslose Architektur nichts serverseitig. Jede Anfrage trägt ihr eigenes signiertes Token (JWT), das der Server sofort prüft — das vereinfacht die Skalierung und verringert die Angriffsfläche.