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.

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