Clever: Ist md5() wirklich sicher?

Tagchen!

Ist die md5() Verschlüsselungsmethode von PHP eigentlich wirklich sicher? Immerhin wird da ja immer gleich verschlüsselt, das müsste dann doch einfach zu knacken sein, oder?

  1. Tagchen!

    Hi

    Ist die md5() Verschlüsselungsmethode von PHP eigentlich wirklich sicher? Immerhin wird da ja immer gleich verschlüsselt, das müsste dann doch einfach zu knacken sein, oder?

    Im Leben ist nie was Sicher! Hat jemand was sicheres erfunden, so weiss er auch wie er es gemacht hat, und kennt eventuell einen Weg um es zu hintergehen. md5 ist schon relativ sehr sicher. Du kannst glaube ich kaum md5 zurückverfolgen!

    Gruß Christoph

    --
    Ich bin ein spezialisz!
    (Zitat von VENGA JO)
    sh:) fo:) rl:° br:& ie:| mo:) va:) fl:) ss:| ls:< js:|
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
    1. Danke für eure Erklärungen. Ganz habe ich das mit dem Fingerabdruck zwar nicht verstanden, aber egal.

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

      1. 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

  2. Hallo,

    Ist die md5() Verschlüsselungsmethode von PHP eigentlich wirklich sicher? Immerhin wird da ja immer gleich verschlüsselt, das müsste dann doch einfach zu knacken sein, oder?

    md5() ist keine Verschlüsselung im eigentlichen Sinn. Die Funktion erzeugt einen eindeutigen 'Fingerabdruck' aus einem Eingabestring. Es existiert keine Möglichkeit, um aus dem Fingerabdruck den Orginalstring zurückzuberechnen.
    Man kann höchstens die 'Fingerabdrücke' mit einer langen Liste aus irgendwelchen Passwörtern und den dazugehörigen md5-Checksummen vergleichen und so bei einem Treffer das eigentliche Passwort finden. Deshalb sollte man nie zu einfache Passwörter benutzen.

    Gruß, Jan