Skip to content

Wie sollte man Benutzerpasswörter speichern?

Kurzantwort

Speichere Passwörter niemals im Klartext oder umkehrbar verschlüsselt und niemals mit schnellen Allzweck-Hashes wie MD5 oder SHA-256. Verwende eine langsame, speicherintensive Passwort-Hashfunktion — Argon2id (bevorzugt) oder bcrypt — mit einem eindeutigen Zufalls-Salt pro Passwort und einem abgestimmten Arbeitsfaktor, sodass ein Angreifer, der die Datenbank stiehlt, die Hashes nicht realistisch knacken kann.

Passwörter müssen so gespeichert werden, dass selbst ein Angreifer, der die gesamte Datenbank stiehlt, sie nicht wiederherstellen kann. Diese einzige Anforderung schließt Klartext aus und schließt umkehrbare Verschlüsselung aus — wenn dein Server sie entschlüsseln kann, kann es auch ein Angreifer, der deinen Schlüssel erbeutet. Die Antwort lautet Einweg-Passwort-Hashing, aber mit der richtigen Art von Hash.

Warum nicht ein schneller Hash wie SHA-256?

Allzweck-Hashes sind auf Geschwindigkeit ausgelegt, was hier genau falsch ist. Moderne GPUs berechnen Milliarden von SHA-256-Hashes pro Sekunde, sodass eine gestohlene Datenbank mit SHA-256-Passwort-Hashes in großem Maßstab geknackt werden kann, besonders bei gängigen Passwörtern. Du willst eine Funktion, die bewusst langsam und ressourcenintensiv ist.

Verwende eine Passwort-Hashfunktion

  • Argon2id — der moderne Gewinner der Password Hashing Competition; speicherintensiv, was GPU-/ASIC-Knacken erschwert, mit einstellbaren Parametern für Speicher, Zeit und Parallelität. Bevorzugt für neue Systeme.
  • bcrypt — kampferprobt, mit einem konfigurierbaren Kostenfaktor, den du im Laufe der Zeit erhöhst, wenn die Hardware besser wird. Eine solide Wahl.
  • scrypt / PBKDF2 — akzeptabel, wo die obigen nicht verfügbar sind (PBKDF2 braucht eine hohe Iterationszahl und ist FIPS-kompatibel).

Salts (und Peppers)

Ein Salt ist ein eindeutiger Zufallswert, der neben jedem Hash gespeichert wird. Er stellt sicher, dass zwei Nutzer mit demselben Passwort unterschiedliche Hashes erhalten, was vorberechnete Rainbow Tables zunichtemacht und verhindert, dass ein Angreifer viele Konten auf einmal knackt. (bcrypt/Argon2 erzeugen und betten den Salt für dich ein.) Ein optionaler Pepper ist ein Geheimnis, das allen Passwörtern hinzugefügt und außerhalb der Datenbank aufbewahrt wird — z. B. in einem HSM oder in der App-Konfiguration —, sodass ein reines Datenbankleck nicht ausreicht.

Abstimmen und migrieren

Stelle den Arbeitsfaktor so ein, dass ein einzelner Hash auf deiner Hardware einen merklichen Bruchteil einer Sekunde dauert, und erhöhe ihn mit der Zeit. Plane, beim nächsten Login neu zu hashen, wenn du die Parameter anhebst.

Prüfer achten auf langsames, gesalzenes Hashing, auf die Nennung von Argon2id oder bcrypt, auf die Ablehnung von Verschlüsselung und schnellen Hashes sowie auf die Erklärung, warum der Salt wichtig ist (Rainbow Tables / identische Passwörter).

Wahrscheinliche Anschlussfragen

  • Warum ist ein zufälliger Salt pro Nutzer selbst bei einem starken Hash notwendig?
  • Was ist ein Pepper und wo wird er anders als ein Salt gespeichert?
  • Warum sind MD5 und SHA-256 schlechte Wahl für die Passwortspeicherung?

Quellen

Erhalte 100 Cybersecurity-Interviewfragen + Antworten

Gib deine E-Mail-Adresse ein und wir senden dir das kostenlose PDF-Paket und das Flashcard-Deck.

Kein Spam. Jederzeit abbestellbar.