Sönke Tesch: Ist md5() wirklich sicher?

Beitrag lesen

Danke für eure Erklärungen. Ganz habe ich das mit dem Fingerabdruck zwar nicht verstanden, aber egal.

Fingerabdruck ist auch ein eher unglücklicher Ausdruck, Prüfsumme ist besser. Daten bestehen in der Regel aus einzelnen Bytes, jedes Byte hat einen Wert zwischen 0 und 255. Eine einfache Prüfsumme kannst Du errechnen, indem Du alle Bytewerte addierst; die Prüfsumme für die Zahlen-/Bytereihe 1, 2 und 3 wäre dann 6. Das Problem an diesem extrem simplen Beispielverfahren ist nur, daß es eine ganze Menge Möglichkeiten gibt, auf die Prüfsumme 6 zu kommen - und genau da liegt der Vorteil vom md5-Algorythmus: Beim Additionsverfahren bräuchte man in einem beliebig langen Datenblock lediglich zwei Bytes ändern, um auf dieselbe Prüfsumme zu kommen; bei md5 hingegen ist garantiert, daß _jede_ Änderung sich auch in einer geänderten Prüfsumme niederschlägt.

Das Beispiel zeigt aber trotzdem noch den zweiten Vorteil vom md5 & Co: Aus der Prüfsumme lassen sich die Originaldaten nicht mehr zurückrechnen - schließlich gibt es viele Wege, um auf die Summe 6 zu kommen.

Beim Einsatz vom md5 (oder ähnlichen Verfahren) bekommt man also für jedes Passwort einerseits einen nahezu einzigartigen Ersatzwert (die Prüfsumme), auf dem aber andererseits nicht auf das Passwort geschlossen werden; sozusagen eine Dateneinbahnstraße.

Dieser Ersatzwert kann also weitesgehend gefahrlos gespeichert werden. Bei einem Verschlüsselungsverfahren hätte man hingegen das Problem, daß sich das gespeicherte Passwort wieder entschlüsseln ließe.

Eine Frage ist mir aber noch eingefallen: wie verschlüsselt (bzw. verfingerabdruckt) PASSWORD() von MySQL? Auch mit md5()? Oder anders?

Schon einen Blick in die Anleitung geworfen?

Gruß,
  soenk.e