Der-Orden-Xar schrieb:
Nein, eine Hashfunktion ist eine surjektive, aber keine bijektive Funktion.
Das heißt, dass es zu deinem Passwort noch ein Passwort2 geben kann 8und wird), so dass Hash(Passwort)=Hash(Pwasswort2).
Vergleich mal die Funktion f(x) = x^2, mit f(x) = Hash() und x dein Passwort.
Wenn du jetzt den Hash 4 siehst ist x entweder 2 oder -2
Na wenn das das Sicherheitskonzept einer (kryptographischen) Hashfunktion wäre, hätten wir aber ein Problem. Vielmehr ist es extrem unerwünscht, dass ein zweites Passwort den selben Hash erzeugt. Je unwahrscheinlicher, desto besser.
Man muss das Passwort auch überhaupt nicht kennen, es reicht ein Passwort zu kennen, das den selben Hash erzeugt. Facebook kennt das Passwort ja selbst nicht, sondern speichert (hoffentlich) nur den Hashwert. Ob du dich nun mit dem richtigen Passwort, oder einem auf Kollision beruhendem zweiten Passwort anmeldest, ist somit garnicht klar.
Die Sicherheit beim Hashen von Passwörtern beruht vielmehr darauf, dass die für Passwörter verwendeten kryptographischen Hashfunktionen nach heutigem Kenntnisstand Einwegfunktionen sind. Das heißt, es ist einfach den Hash eines Passworts zu bilden, aber es ist kein schneller weg bekannt, zu einem gegebenen Hash (irgendein) Passwort zu finden, das diesen Hash erzeugt.
Ein einfaches Beispiel für eine Einwegfunktion ist die Multiplikation zweier Zahlen. Gegeben das Produkt, so ist kein Algorithmus bekannt, der schnell zwei Zahlen findet, die dieses Produkt ergeben (den Shor-Algorithmus mal außen vor, Quantenalgorithmen zählen (noch) nicht
).
Ob Einwegfunktionen überhaupt existieren ist eigentlich garnicht sicher, bisher beruht ihre scheinbare Existenz nur darauf, dass keiner einen schnellen Algorithmus kennt, der die Funktion umkehrt. Man glaubt aber, dass er in vielen Fällen auch nicht existiert.
Der Sinn des Hashwerts bei Passwörtern besteht im Grunde darin, dass du selbst wenn du auf den gespeicherten Wert bei Facezubook Zugriff hättest, du dich nicht anmelden kannst, da nur das Hash bekannt ist. Du brauchst aber das Passwort und ein Algorthmus um dieses zu bestimmen ist nicht bekannt.