ChrisB: password_verify Passwortabfrage mit Datenbank

Beitrag lesen

Hi,

Ein direkter Vergleich ist in der Datenbank also nicht möglich.

Doch, ist er – wenn die Datenbank ebenfalls eine derartige Funktion implementiert hat.

Außerdem Sicherheit. Ich habe oben 5 mögliche Hashes und sogar weitaus mehr für ein und das selbe Passwort. Abzüglich der ersten 7 Zeichen die immer gleich sind, ist das eine Länge von 53 Zeichen. Und diese Zeichen können öfter das gleiche Passwort repräsentieren, obwohl sie verschieden sind. Ist dann nicht die Wahrscheinlichkeit höher, das Passwort zu knacken, weil man mehr Möglichkeiten hat?

Nein, man hat nicht „mehr Möglichkeiten” – es liegt ja jeweils nur einer dieser Werte vor für einen Nutzer, und nicht mehrere. Und es geht beim „Passwort knacken“ schließlich nicht darum, den von dir gespeicherten Wert zu „finden“ (der kann als schon gefunden betrachtet werden, wenn deine Datenbank kompromitiert wurde) – sondern den Original-Wert, aus dem dieser Hash gebildet wurde.

sha256 gilt als "unsicher", hat aber 11 Zeichen mehr.

Löse dich davon, irgendeine Länge in „Zeichen“ als Maß für Sicherheit zu betrachten.

Das, was du hier vorliegen hast, enthält neben einem Kennzeichen des verwendeten Hash-Verfahrens (ja, es gibt mehrere zur Auswahl), auch einen „Kostenfaktor“. Die Berechnung des Hashes wird mathematisch aufwendiger gestaltet und damit verzögert – was die Kosten zum Knacken per Brute Force in die Höhe treibt, und damit das ganze sicherer macht. Außerdem enthält es ein zufälliges Salt (und deshalb hast du für ein Passwort nicht nur mehrere Möglichkeiten, sondern „unendlich viele“ – jeder erneute Vorgang der Erzeugung eines Hashes mit password_hash() würde wieder einen anderen Wert ergeben) – so dass selbst wenn ein Passwort von mehreren User verwendet wird, das erfolgreiche „Knacken“ des Passwortes für einen Nutzer immer noch nicht die anderen Accounts kompromitiert.

Lies mal http://www.phpgangsta.de/schoener-hashen-mit-bcrypt, dann wird dir das ganze vielleicht ein bisschen klarer.

MfG ChrisB

--
Kids these days just don’t get ASCII art any more – it’s all UTF-this and Unicode-that with those youngsters …