Ist zwar OT, aber naja
So wird es meines Wissens auch bei Passwörtern gemacht (oder kann gemacht werden, wenn es nicht in Klartext gespeichert werden soll und es nur dem Ersteller bekannt sein sollte). Es wird ein Hash erzeugt, für das Passwort. Dieser wird gespeichert und nicht das Passwort. Gibt man ein Passwort ein, muss der dazu errechnete hash mit dem gespeicherten übereinstimmen. Ich weiß nun nicht, wie hoch die Chance ist, ein zweites Passwort zu finden, was den gleichen errechneten Hash hat.So habe ich mir das mal erklären lassen.
Das passt soweit schon ganz gut. Ergeben zwei verschiedene Ausgangsdaten einen identischen Hash, so spricht man von einer Kollision. Je nachdem, welcher Hash-Algorithmus verwendet wird, sind solche Kollisionen sogar schon bekannt: MD5 Kollision Aus diesem Grund sollte MD5 schon seit Jahren nicht mehr zur Generierung von Passworthashes verwendet werden. Es spricht jedoch noch ein weiterer Grund gegen MD5: es gibt gigantisch große "Rainbow-Tables". In diesen Tabellen werden Zeichenfolgen und deren Hashes abgespeichert. Erbeuten Hacker nun die Passwort-Hashes, so können sie die Hashes mittels Rainbow-Tables ganz einfach zurück ins Passwort übersetzen. MD5 ist hier problematisch, da dieser Algorithmus (für heutige Computer) sehr schnell durchläuft -> man kann pro Sekunde etliche Tausend Einträge in die Rainbow-Table generieren.
Dagegen gibt es allerdings ein wirksames Mittel: Salz
Also auf englisch "salt". Dies ist eine Zeichenkette, die dem Passwort zusätzlich angehanden wird. Aus dem Passwort "passwort123" wird dann nicht direkt der Hash erzeugt, sondern es wird z.B. "5z62wxc28r1" angehangen. Der Hash wird also für "passwort1235z62wxc28r1" generiert -> diese Zeichenfolge ist länger und daher ist die Wahrscheinlichkeit ihrer Existenz in einer Rainbow-Table geringer. Der Salt kann dem Hacker ruhig bekannt sein - denn er nützt ihm nichts ![]()
