Was ist der Unterschied zwischen Kodierung, Verschlüsselung und Hashing?
Kurzantwort
Kodierung wandelt Daten zur Kompatibilität in ein anderes Format um und ist von jedem ohne Schlüssel vollständig umkehrbar (z. B. Base64, URL-Kodierung) — sie bietet keine Vertraulichkeit. Verschlüsselung ist nur mit einem Schlüssel umkehrbar und sorgt für Vertraulichkeit. Hashing ist eine Einwegfunktion: Man kann die Eingabe nicht aus der Ausgabe wiederherstellen, weshalb es sich für Integritätsprüfungen und die Passwortspeicherung eignet (mit Salt und einer langsamen KDF).
Die Leute werfen diese drei Begriffe austauschbar umher, und genau dieser lockere Gebrauch ist es, worauf die Frage zielt. Base64 als „Verschlüsselung“ zu bezeichnen ist der schnellste Weg, einen Krypto-Test nicht zu bestehen.
Die drei Definitionen, die zählen
- Kodierung ändert die Darstellung von Daten, damit ein System sie verarbeiten kann — Base64, URL-Kodierung, Hex. Sie verwendet ein öffentliches, schlüsselloses Schema, sodass jeder sie sofort umkehren kann. Kodierung bietet null Vertraulichkeit; sie ist keine Sicherheit, sie ist Formatierung.
- Verschlüsselung wandelt Daten so um, dass nur der Inhaber des Schlüssels sie umkehren kann. Sie ist konstruktionsbedingt umkehrbar, aber nur für die berechtigte Partei. Das ist das Werkzeug, das Vertraulichkeit bietet.
- Hashing ist eine Einwegfunktion. Sie bildet beliebige Eingaben auf einen Digest fester Größe ab, ohne Schlüssel und ohne Umkehroperation. Man kann einen Hash nicht „entschlüsseln“. Er dient der Integrität (haben sich die Daten geändert?) und, mit einem Salt und einer langsamen KDF, der Passwortspeicherung.
Die Fallen-Ablenker
Jede falsche Wahl vertauscht eine Eigenschaft: zu behaupten, Kodierung brauche einen Schlüssel, zu behaupten, Hashing sei „mit einem Salt“ umkehrbar, oder zu behaupten, alle drei seien umkehrbar. Ein Salt kehrt einen Hash nicht um — Angreifer setzen auf Brute-Force oder Rainbow-Tables; sie „entschlüsseln“ ihn nie.
Schnelltest
Wenn jeder es ohne Geheimnis rückgängig machen kann, ist es Kodierung. Wenn ein Schlüssel erforderlich ist, ist es Verschlüsselung. Wenn es sich gar nicht rückgängig machen lässt, ist es Hashing.
Worauf Interviewer achten
Klare Definitionen, die mit den richtigen Eigenschaften verknüpft sind — Umkehrbarkeit, Schlüssel und Zweck — plus den Instinkt, den verbreiteten Fehler „Base64-Verschlüsselung“ zu korrigieren.
Wahrscheinliche Anschlussfragen
- Ist Base64 eine Form der Verschlüsselung? Warum oder warum nicht?
- Warum kann man einen Hash nicht „entschlüsseln“, und was tun Angreifer stattdessen?
- Wo würden Sie jeden der drei korrekt einsetzen?