md5-Passwort entschlüsseln

Mich fragte mal jemand, wieso man mit md5 "verschlüsselte" Passwörter nicht wieder entschlüsseln kann. Im Blog Perfektes-PHP gibt es eine tolle vierteilige Serie, die dies genau erklärt und die ich nur jedem empfehlen kann. Ich gebe hier nur einen ganz kurzen Überblick; wer das Thema wirklich verstehen will, sollte sich die Erklärung wie der Hash md5 funktioniert dort anschauen.

Diese Unmöglichkeit liegt daran, dass md5 eine Einwegfunktion ist, d.h. eine Funktion, die sich nicht umkehren lässt. Es gibt unendlich viele Funktionsargumente, aber nur eine beschränkte (wenn auch sehr große) Anzahl an Funktionswerten bzw. Bildern. md5 verschlüsselt nämlich nicht, er bildet nur eine Prüfsumme.

Klingt vielleicht auf den ersten Blick verwirrend, ist aber eigentlich ganz einfach. Ich versuche im Folgenden, den Sachverhalt mit einem Beispiel zu verdeutlichen. (Mit der Thematik Vertraute finden sicherlich einige Dinge, die im Detail nicht ganz stimmen; für einen ersten Einstieg in die Materie halte ich es jedoch für verschmerzbar, wenn gewisse Details nicht 100%ig auf den realen Fall übertragbar sind.)

Man stelle sich vor, seine Bankkarten-PIN laute 4711 (entspricht dem Passwort eines Benutzers). Damit sich diese bei der Übertragung vom Geldautomat (entspricht dem Eingabeformular im Browser) zum zentralen Bankserver (entspricht dem Server einer Internetseite) nicht abfängen lässt, wird eine md5-Ähnliche Funktion auf die PIN angewandt, beispielsweise quersumme(4711) = 13. Der zentrale Server überprüft nun, ob die übertragene 13 gleich der Quersumme der gespeicherten PIN 4711 ist.

Wenn nun ein böser Bub die Übertragung anzapft und die Prüfsumme 13 abfängt, so ist es ihm möglich, diese Prüfesumme zu verwenden, um an diesem Automaten Geld abzuheben. Es ist ihm jedoch nicht möglich, daraus auf die geheime PIN zu schließen. Diese kann nämlich nicht nur 4711, sondern bspw. auch 9400 oder 1237 lauten. Es ist nicht möglich, aus der Quersumme auf die ursprüngliche Zahl zu schließen!

Ähnlich verhält es sich auch beim md5-Algorithmus, einmal angewandt kann die Eingabe nicht wieder entschlüsselt werden.

Es ist jedoch möglich, md5 zu knacken, bspw. mittels Brute-Force-Angriffs. Dies bedeutet, dass alle möglichen Eingaben durchprobiert werden, bis man Erfolg hat. Man erhält dadurch (nach einer unter Umständen sehr langen Zeit) ein Argument, für das md5 den selben Funktionswert zurück gibt wie beim "korrekten" Passwort. Abhängen vom gewählten Passwort ist die Chance mehr oder weniger klein, dass es sich dabei um das ursprüngliche Passwort handeln. Ohne weitere Informationen (bspw. Kontext-Informationen) ist es jedoch nicht möglich festzustellen, ob das erhaltende Argument tatsächlich das Passwort des Nutzers ist.

Mit einem kleinen Trick kann man die Sicherheit von md5 oder anderer Hashing-Algorithmen wie SHA-1 jedoch erhöhen: mit sogenannten Salts. Dies ist ein für jede Anwendung spezifischer Wert, der zusätzlich zum Argument übergeben wird. Dadurch ist es einem Angreifer, selbst wenn er einen Hash (Funktionswert) oder gar ein mögliches Argument besitzt, nicht möglich, auf mehr als eine Seite zuzugreifen.

Auf mein obiges Beispiels von Geldautomaten bezogen: Stellen wir uns vor, wir haben zwei Geldautomaten, Automat 1 und Automat 2 mit jeweils passendem Server dazu. Gebe ich meine PIN an Automat 1 ein, so berechnet dieser nicht quersumme(PIN), sondern quersumme(PIN+1); Automat 2 analog dazu quersumme(PIN+2). Lautet die PIN 4711, so berechnet Automat 1 quersumme(4712) = 14. Der böse Bub fängt nun die übertragene 14 ab und schließt, den quersumme-Algorithmus vor Augen, auf eine mögliche PIN 1238. Mit dieser versucht er nun, bei Automat 2 Geld abzuheben was jedoch scheitert, denn quersumme(1238+2) = 7, jedoch quersumme(4711+2) = 15. Der Angreifer muss nun also nicht nur Automat 1 belauschen, sondern zusätzlich rausfinden, welchen Salt Automat 1 verwendet, anschließend Automat 2 belauschen, dessen Salt herausfinden und anschließend versuchen, die gesammelten Ergebnisse so zu verwursten, dass er gültige PINs für die Automaten berechnen kann.

Während dies bei der Quersumme noch relativ einfach möglich ist wird es mit zunehmender Komplexität der Algorithmen immer schwieriger.

Je nach Anwendungsfall reicht md5, besser jedoch md5+Salt. Wer mehr Sicherheit benötigt, sollte SHA-1(+Salt) verwenden oder weitere Stufen, bspw. SHA-256(+Salt). 

..

32 Responses to “md5-Passwort entschlüsseln”

  1. Marian says:

    achso! ja dann :)

  2. Burgkirchen says:

    Nettes Beispiel, das mit der Bankkarte. Hast Du schon Hack-Erfahrung? ;-))

  3. dognose says:

    wow,

    eben verfasst und schon 2te Seite bei Google :-) scheinen sich ja viele Leute für das "hacken" von md5() zu interessieren :-P

    ganz nett erklärt. Da ich gerade selber meine Seite dadurch "sicherer" gemacht habe, bin ich auch hierher gestolpert.
    Ganz nettes anderes Beispiel das ich gelesen habe :

    Wären md5()codes umkehrbar, könnte man eine 1 gb grosse file zum code machen, diesen code verschicken und den computer am anderen ende einfach "umkehren lassen" – man hätte die Perfekte Komprimierung :P

    grüße, dognose

  4. Anonymous says:

    www . md5cracker . de/

  5. hendi says:

    Ich glaube du hast nicht verstanden, worum es in meinem obigen Artikel geht.

    Egal, der Dienst taugt sowie nichts:

    GDataOnline – Hash nicht gefunden
    TMTO – Wegen Arbeiten derzeit deaktiviert!
    Plain-Text – Hash nicht gefunden
    MD5encryption – Hash nicht gefunden
    […]

  6. Der Service nutzt nur Wortlisten für die ein MD5 generiert wurde, ist das Wort nicht in der Liste wird es auch nicht angezeigt.

  7. Anonymous says:

    =Der Service nutzt nur Wortlisten für die ein MD5 generiert wurde, ist das Wort =nicht in der Liste wird es auch nicht angezeigt.
    omfg, wer keine Ahnung hat sollte einfach mal die Fresse halten ;)..

    Der Service nutzt wohl was, nur bei Salted Hashes nicht!

  8. Wer hat keine Ahnung? says:

    He Anonymous… Du solltest die Fresse halten, da du keine Ahnung hast… hendi hat vollkommen recht. Es werden nur Listen benutzt… Ist der Eintrag nicht vorhanden, gibt es auch kein Ergebnis! Und dies war kein salted Hash

    Aktueller Cracker: Fertig!
    MD5Cracker.de – Hash nicht gefunden
    GDataOnline – Hash nicht gefunden
    Plain-Text – Hash nicht gefunden
    MD5encryption – Hash nicht gefunden
    Hashkiller – Hash nicht gefunden
    securitystats – Hash nicht gefunden
    astalavista – Hash nicht gefunden
    passcracking – Down!
    Hashreverse – Hash nicht gefunden
    Crysm – Hash nicht gefunden
    md5database – Hash nicht gefunden
    trex-online – Hash nicht gefunden
    tydal – Hash nicht gefunden
    md5decrypter – Hash nicht gefunden
    md5crack – Hash nicht gefunden
    deerme – Hash nicht gefunden
    rednoize – Hash nicht gefunden
    md5recover – Down!
    Benramsey – Hash nicht gefunden
    XPZone – Hash nicht gefunden

  9. Dan says:

    Sehr schön beschrieben. In dieser Art (Beschreibung) findet man leider nur sehr selten Informationen.

    Gefunden habe ich Deinen Blog via internetnotizen.de/blogosphaere.

  10. Frank says:

    Ich finde das Beispiel echt gut! Weiter so. ;-)

  11. Felix says:

    Diese ganzen web MD5-cracker verwenden sog. Rainbow Tables. Darin sind zigtausende Buchstabenkombinationen mit den MD5-Hashes vorhanden. Mittlerweile sind leider schon so gut wie alle 5-stelligen Kombinationen ohne Sonderzeichen vorhanden. Auch häufige Sätze oder Wörter (vgl. Wikipedia-Artikel MD5). Daher am besten SHA-256 mit Salt verwenden, wobei ich nicht genau weis, wie das auf Homepages funktioniert.

  12. fexbest says:

    Naja die Seite ist ehrlich gesagt ziemlich cool!
    Bei 3 von 8 Benutzern meines Forums hat es das Passwort geknackt!
    Klar, noch ein Grund bessere Passwörter zu verwenden!

  13. -LIMBURGER- says:

    weil er blöde ist

  14. Heidi says:

    das geht gar nicht

  15. […] > ACK – so lange die Leute Passwörter verwenden, die eine russische > Kriegswitwe in 3 Minuten erraten hat, kann man das Konzept > wegschmeißen. Noch dazu gibt es Seiten, wo man gar keine Passwörter > verwenden *kann*, die halbwegs lang genug wären. Was ist eigentlich lang genug…. Ernsthaft, was ist lang genug… Das einzige Finanzportal, dass ich kenne mit ausreichend PW platz ist die Diba. Die haben mal kein Problem mit 24Zeichen Für Pin und Identifier. > > Und wie war das noch mit der max erlaubten verschlüsselungsstärke in > > den Usa? > > Hmmm, das dürfte aber kein Problem sein, denn es handelt sich ja > nicht um eine Verschlüsselung. SHA-1 (160 Bit) wurde übrigens > ausgerechnet von der NSA entwickelt. Meine Rede. Würd mal gern wissen, ob sich nsa und konsorten an ihre eigenen Vorgaben halten. Wo wär eigentlich das Problem, jeden Kunden mit nem Rsa Token auszustatten? P.S.: MD5FB7F8B3AE8D887BBD7CE94A584AC3104 SHA-1A38772E9C53A45012AD0A1810D212D3A024D3575 20 sekunden ? *g Gruß, root […]

  16. erkekjetter says:

    Nimmt euch zusammen, kids. Lasst das ganze pseudo md5 cracken besser, man kann md5 nicht cracken (und schon gar nicht hacken, wtf). Um den string der hinter einem md5 hash “steckt” zu finden, hat man nur eine Chance mit hybriden rainbow tables, es sei denn der gehashte string ist in einer wörterbuch-md5 tabelle. Und wer md5 ohne salt benutzt ist selber schuld. Brute-Force attacken sind für kids und total sinnlos. Wartet auf die quanten computer …

  17. Ryo_Ohki says:

    super erklärt, danke!

  18. sascha says:

    ich komme aus russland und weiss wie mann passwörter in CComputer kanckt im Russland gibt ein Tschip und das stekt mann geheim in Computer dann nach 1 Stunde Nimmt mann den Tschip ab und in anderen Computer und kann mann ales lesen und alle PASSWÖRTER. ;-)

  19. v3rtico says:

    Ich arbeite gerade daran, ein entschlüsselungsverfahren für MD5 zu entwickeln denn ich hab da ne Theorie wie es gehen müsste.

    • soLaLA says:

      ich arbeite gerade daran nen Menschen zum Mond zu beamen. habe da auch ne Theorie wie es klappen könnte.

  20. […] einer der Fedora-Admins, teilte mir mit, dass die im Account-System gespeicherten Passwörter als MD5-Prüfsumme mit Salt gespeichert werden. Es besteht daher keine Gefahr, dass ein etwaiger Angreifer […]

  21. Aufschnürer says:

    Ein schöner Artikel, auch wenn der Vergleich mit den PIN-Automaten für die tägliche Web-Praxis mit PHP und MySQL vielleicht nicht so verständlich erscheint. In meinem Artikel (siehe Website dieses Kommentars) wird das ganze praxistauglich anhand eines Beispiels aufgezeigt.

  22. Aufschnürer says:

    Nachtrag: Da die Website in den Kommentaren anscheinend nicht angezeigt wird, hier die URL die zu meinem obigen Kommentar gehört:
    www . aufschnur.de/tutorials/sichere-passwort-hashes/

  23. Webagentur says:

    Was gibt es eigentlich an Bruteforce Programmen?

  24. Nordsee Fan says:

    Danke für die Erklärung. Hat mir geholfen und aufgezeigt, dass ich für mein Problem eine andere Lösung suchen muss.

  25. arnoldu says:

    Es gibt in der aktuellen CT (März 2009) einen gut gemachten Artikel mit einigen funktionierenden MD5-Bruteforce-Programmen. BarsWF nutzt z.B. eine ATI / NVIDIA-kompatible Grafikkarte und beschleunigt damit locker um den Faktor 15. Auf meinem Highend-System kann ich damit >1Milliarde Schlüssel pro Sekunden durchprobieren. Damit muss ein Passwort schon mindestens 11stellig sein, um nicht in einem Wochenende ermittelt zu sein.

  26. DhiDE says:

    doch is machbar. hashkiller.com da geht das

  27. Dan says:

    Danke für den aufschlussreichen Artikel, habe endlich MD5 und das Salt kapiert :)

  28. Peter says:

    Hi auf Webseiten von mir verschlüssel ich es immer so:

    sha1(md5($passwort))

    das ist sicher und kann nicht allzu schnell geknackt werden.

  29. harrys says:

    hi habe auch ein guten online cracker gefunden..
    der 14 der besten online cracker durchsucht..
    schaut mal vorbei..
    http://md5cracker.tk

  30. Mafia says:

    Es gibt aber immer noch Site Hacker wie geht das?
    Soweit ich weis wurde es früher dank MD5 gehackt oder gecrackt.

    Am leichstestens ist es mit KeyLoggern ^^

  31. Danke für den guten Tipp. Komme so gut mit meinem Vorhaben weiter. Beide Daumen hoch!

Leave a Reply