Passwörter speichern

Sie stellen sich ein Passwort vielleicht wie einen Schlüssel zu einer Tür vor:
Nur ein Schlüssel passt in das Schloss …

… doch ein System (Webseite, Netzwerk usw.) muss die Passwörter von vielen Nutzern speichern!

Wenn ein System alle Passwörter seiner Nutzer in ihrer ursprünglichen Form speichert, wie einen Schatz in einer Truhe,

… dann muss die Truhe nur geöffnet werden
und alle Passwörter sind sofort bekannt!
Der Schwachpunkt:

Sie haben bestimmt schon erkannt, dass das potenzielle Sicherheitsrisiko enorm ist,

und wenn Sie eine E-Mail bekommen, in der Ihr tatsächliches Passwort steht…
dann kennt das System, wie deren Administratoren, ihr vergebenes Passwort!
Mit nur einem Angriff könnte jemand also die Truhe öffnen und hätte sofort die Passwörter von allen Nutzern!
Das bedeutet für die Sicherheit eines solchen Systems genau eins:
Die Lösung:
Man möchte also prüfen, ob ein eingegebenes Passwort korrekt ist, muss aber viele Passwörter speichern, ohne sie zu verraten.
Dafür gibt es nur eine Lösung:

Statt Passwörter zu speichern, wird ein Schlüssel gespeichert, der sich aus dem Passwort ableitet: So kann der Benutzer authentifiziert werden, ohne dass sein tatsächliches Passwort gespeichert wird:
- das eingegebene Passwort nehmen
- den Schlüssel errechnen
- den erstellten Schlüssel mit dem Originalpasswort vergleichen
Ein bcrypt-erzeugter Schlüssel von „Passwort“ lautet zum Beispiel wie folgt: „$2a$10$3BY0wQ3rgzBf6VlG0YFLoekcGrrHKYdSUdSSrN37TqClNg7Oouzey“.
Dieser Schlüssel ist viel länger und in der Praxis ist es viel schwieriger, das ursprüngliche Passwort herauszufinden, aus dem der Schlüssel erzeugt wurde.
Warum verwendet man nicht einfach eine komplexe Hash-Funktion, um die Schlüssel abzuleiten?
Da solche Schlüssel-Ableitungsfunktionen (Key Derivation Functions) speziell entwickelt werden, um einen Angreifer davon abzuhalten, im Voraus eine Liste von Schlüsseln von allen Standard-Passwörtern zu erstellen, oder vielmehr eine gut organisierte Tabelle.
Fazit

Um das Risiko einer sofortigen und vollständigen Sicherheitslücke zu vermeiden, sollte man niemals Passwörter speichern, sondern nur abgeleitete Schlüssel, die durch spezielle Algorithmen erstellt wurden.

Diese Schlüssel werden mathematisch von den eingegebenen Passwörtern abgeleitet..

So bekommt man ein sehr starkes Authentifizierungssystem ohne eine anfällige Passwort-Liste.
Bei einem System mit mehreren Nutzern besteht ein sehr hohes Risiko, wenn Passwörter gespeichert werden!
In einem unserer nächsten Blog-Postings werden wir zeigen, wie dies die Windows-Sicherheit beeinträchtigen kann…








