Worin unterscheidet sich Hashing von Verschlüsselung, und wann würdest du das eine dem anderen vorziehen?
Kurzantwort
Verschlüsselung ist umkehrbar – mit dem Schlüssel erhältst du den Klartext zurück; sie schützt die Vertraulichkeit. Hashing ist eine Einwegfunktion, die einen Digest fester Größe erzeugt, den man nicht umkehren kann; es verifiziert Integrität und Identität. Passwörter sollten mit einem langsamen, gesalzenen Algorithmus wie bcrypt oder Argon2 gehasht, niemals verschlüsselt werden.
Diese beiden werden ständig vermischt, doch sie lösen unterschiedliche Probleme und verhalten sich gegensätzlich.
Verschlüsselung ist umkehrbar
Verschlüsselung wandelt Klartext mithilfe eines Schlüssels in Chiffretext um, und entscheidend ist, dass diese Umwandlung umkehrbar ist: Wer den richtigen Schlüssel hat, kann die Originaldaten wiederherstellen. Ihre Aufgabe ist Vertraulichkeit – Daten vor Personen geheim zu halten, denen der Schlüssel fehlt. Wenn du den ursprünglichen Wert jemals zurückbrauchst, willst du Verschlüsselung.
Hashing ist einwegig
Eine kryptografische Hashfunktion nimmt eine Eingabe beliebiger Größe und erzeugt einen Digest fester Größe. Sie ist bewusst einwegig: Es gibt keinen Schlüssel, und du kannst den Digest nicht praktikabel umkehren, um die Eingabe wiederherzustellen. Gute Hashfunktionen sind außerdem kollisionsresistent (es ist schwer, zwei Eingaben mit demselben Digest zu finden) und zeigen den Lawineneffekt (eine Ein-Bit-Änderung verwürfelt die gesamte Ausgabe).
Hashing beantwortet Fragen wie »Ist diese Datei unverändert?« oder »Stimmt dieses Passwort überein?«, ohne die Originaldaten jemals zu speichern oder preiszugeben.
Warum Passwörter gehasht, nicht verschlüsselt werden
Würdest du Passwörter verschlüsseln, könnte jeder, der den Schlüssel stiehlt, alle Passwörter auf einmal entschlüsseln. Hashing bewirkt, dass selbst der Datenbankbetreiber sie nicht wiederherstellen kann. Aber du musst es richtig machen:
- Salze jedes Passwort mit einem eindeutigen Zufallswert, damit identische Passwörter unterschiedliche Digests ergeben und vorberechnete Rainbow Tables nutzlos werden.
- Verwende einen langsamen, mit Arbeitsfaktor versehenen Algorithmus – bcrypt, scrypt oder Argon2 – und keinen schnellen Allzweck-Hash wie SHA-256. Langsamkeit ist ein Feature: Sie drosselt Brute-Force-Versuche.
Worauf Interviewer achten
Der zentrale Test ist »umkehrbar vs. einwegig« und die Zuordnung von jeweils Vertraulichkeit vs. Integrität. Die nach Senior klingende Antwort ergänzt, dass Passwörter Salting und einen bewusst langsamen Algorithmus benötigen, nicht einfaches SHA-256.
Wahrscheinliche Anschlussfragen
- Warum salzen wir Passwort-Hashes?
- Warum ist ein schneller Hash wie SHA-256 eine schlechte Wahl zum Speichern von Passwörtern?
- Was ist eine Kollision und warum ist sie von Bedeutung?