Logo

TobiasVoelzke.net

Wie funktioniert die Verschlüsselung?

Die Tools Verschlüsseln und Entschlüsseln nehmen einen Text und ein selbst gewähltes Passwort entgegen und verschlüsseln bzw. entschlüsseln damit. Das Passwort wird nirgends gespeichert oder protokolliert - es existiert nur für die Dauer der einzelnen Anfrage. Diese Seite erklärt offen, wie das genau funktioniert, warum das sicher ist, und wie Sie es unabhängig nachprüfen können.

Warum wird das Verfahren offen erklärt?

Ein Verschlüsselungsverfahren, dessen Sicherheit davon abhängt, dass niemand weiß, wie es funktioniert, ist keine echte Sicherheit - das nennt man "Security through obscurity" und gilt in der Kryptografie seit über 140 Jahren als fachlicher Fehler (Kerckhoffs'sches Prinzip, 1883). Ein gutes Verfahren muss sicher bleiben, selbst wenn ein Angreifer alles darüber weiß - außer Ihrem Passwort. Genau danach sind die hier verwendeten Bausteine (AES, Argon2id) gebaut und öffentlich standardisiert. Das einzige tatsächliche Geheimnis ist und bleibt Ihr Passwort. Offenheit schafft stattdessen etwas Wertvolles: Sie (oder jede technisch versierte Person Ihres Vertrauens) können das Verfahren unabhängig nachprüfen, statt es einfach glauben zu müssen.

Das Verfahren in einfachen Worten

Aus Ihrem Passwort wird über ein absichtlich "langsames" Verfahren (Argon2id) ein Schlüssel berechnet - absichtlich langsam, damit jemand, der nur den verschlüsselten Text besitzt, nicht in kurzer Zeit Millionen Passwörter durchprobieren kann. Mit diesem Schlüssel wird der Text dann mit AES-256 verschlüsselt - demselben Verfahren, das u. a. auch Banken, Behörden und VPN-Verbindungen einsetzen. Zusätzlich wird beim Verschlüsseln ein "Prüfsiegel" (Tag) erzeugt: wird der verschlüsselte Text nachträglich verändert oder wird das falsche Passwort eingegeben, schlägt das beim Entschlüsseln sofort und eindeutig fehl, statt stillschweigend falschen oder beschädigten Text anzuzeigen.

Das genaue Rezept (zum Nachbauen)

Der von "Verschlüsseln" ausgegebene Text ist Base64-kodiert und setzt sich so zusammen:

Base64( Salt(16 Byte) . Nonce(12 Byte) . Tag(16 Byte) . Chiffretext )

Zum Entschlüsseln in einem beliebigen anderen Programm (Python, Node, Java, ...):

  1. Den Text Base64-dekodieren.
  2. Die ersten 16 Byte sind der Salt.
  3. Die nächsten 12 Byte sind der Nonce (Einmalwert für AES-256-GCM).
  4. Die nächsten 16 Byte sind der Authentizitäts-Tag von AES-256-GCM.
  5. Alles danach ist der eigentliche Chiffretext.
  6. Schlüssel berechnen: Argon2id (Variante Argon2id v1.3) über das Passwort und den Salt, mit den Kostenparametern 64 MiB Speicher, 2 Runden, Parallelität 1, Ausgabelänge 32 Byte (= 256 Bit). Das entspricht libsodiums "INTERACTIVE"-Kostenstufe (OPSLIMIT_INTERACTIVE/MEMLIMIT_INTERACTIVE), falls die gewählte Bibliothek diese Stufen kennt.
  7. Mit diesem Schlüssel, dem Nonce und dem Tag den Chiffretext per AES-256-GCM entschlüsseln.

Was bedeutet das für die Passwortwahl?

Die Sicherheit hängt fast vollständig von der Stärke des gewählten Passworts ab - das Verfahren selbst schützt nicht vor einem schwachen, leicht zu erratenden Passwort. Je länger und zufälliger, desto besser. Da Sie das Passwort dem Empfänger ohnehin auf einem anderen Weg mitteilen müssen, können Sie ruhig ein langes, per Zufallsgenerator erzeugtes Passwort verwenden statt sich etwas Merkbares auszudenken.


Upgrade vom 30.08.2026: Längen-Auffüllung (Padding)

Warum dieses Upgrade? Bis dahin war der ausgegebene Text ungefähr so lang wie der eingegebene Text (genauer: Textlänge plus rund 60 Zeichen fester Vorspann). Bei kurzen Nachrichten konnte man also von außen erkennen, dass die Nachricht kurz war - die reine Länge des verschlüsselten Textes ist eine Information, die man eigentlich nicht preisgeben möchte. Ich verwende dasselbe Verfahren inzwischen auch in meinem Nachrichten-System TV-Mail, und dort sollen alle verschlüsselten Nachrichten gleich "gewichtig" aussehen, egal wie kurz sie sind. Deshalb dieses Upgrade - und damit die Tools hier und TV-Mail dasselbe Format sprechen.

Die neue Technik. Vor dem Verschlüsseln wird der Klartext auf ein festes Raster aufgefüllt:

[ 4 Byte: echte Länge N (Big-Endian) ] . [ N Byte Klartext ] . [ Zufalls-Füllmaterial ]

Die Gesamtlänge wird dabei auf das nächste Vielfache von 256 Byte aufgerundet (mindestens ein voller Block, also 256 Byte). Dieser aufgefüllte Block wird dann ganz normal nach dem Rezept oben verschlüsselt. Beim Entschlüsseln kommt zum Rezept oben ein letzter Schritt hinzu:

  1. Die ersten 4 Byte des entschlüsselten Blocks als Zahl lesen (Big-Endian, vorzeichenlos) - das ist die echte Länge N. Die folgenden N Byte sind der Klartext, alles dahinter ist Füllmaterial und wird verworfen. (Ob ein Text aufgefüllt wurde, erkennt man daran, dass der entschlüsselte Block eine glatte Länge - ein Vielfaches von 256 Byte - hat.)

Aus einer kurzen Nachricht wird so ein konstant rund 400 Zeichen langer Ausgabetext (vorher ca. 90); längere Nachrichten wachsen in 256-Byte-Schritten. Von außen ist die Länge dadurch nur noch grob auf einen 256-Byte-Block genau abschätzbar. An der eigentlichen Verschlüsselung (Argon2id + AES-256-GCM) ändert sich nichts - das Padding steckt innerhalb des verschlüsselten Blocks.

Abwärtskompatibel, ohne dass Sie etwas einstellen müssen. Neue Texte werden seit dem 30.08.2026 immer mit dieser Auffüllung verschlüsselt. Das Entschlüsseln-Tool erkennt von selbst, ob ein Text aufgefüllt ist, und entfernt die Auffüllung automatisch - ältere, ohne Auffüllung erzeugte Texte lassen sich unverändert weiter entschlüsseln.

Zum Verschlüsseln-Tool | Zum Entschlüsseln-Tool