opi: Verschlüsselung mit MD5

Hallo,

ich möchte gerne bestimmte Bereiche auf meinem Webserver durch Zugriffskontrolle schützen. Nun habe ich schon einiges über MD5 gelesen und dem hierzu passenden Perlmodul Digest::MD5.

Nun meine Frage: ist MD5 im Moment der "modernste" Verschlüsselungsalgorithmus oder einfach nur der Gängiste? Vielleicht auch beides?

Ausserdem mache ich mir gerade Gedanken darüber, ob ich die Zugriffskontrolle über den Apache Server abwickeln oder den Passwortvergleich selber vornehmen soll. Hat das schon mal jemand versucht, allerdings ohne Datenbank und ein kleines Beispielskript?

Da ich auch noch nicht so ganz weiß, wie der Vergleich von statten geht... wenn ich nun beispielsweise eine Passwortdatei mit dem Aufbau Name:verschlüsseltes_Passwort habe und ein Benutzer sein Passwort über den Browser eingibt, wie müsste ich dann die Passwörter vergleichen? Muss ich entweder das Passwort in der Datei enkodieren oder das Passwort kodieren, welches der Benutzer über den Browser eingibt, um dann einen Vergleich durchzuführen?

Greez,
opi

Für Syntaxfehler bitte ich um Entschuldigung!

  1. Hallo opi!

    Nun meine Frage: ist MD5 im Moment der "modernste"
    Verschlüsselungsalgorithmus oder einfach nur der Gängiste?
    Vielleicht auch beides?

    Nein, keines von beidem. MD5 ist dient nicht der Verschlüsselung, es
    wird lediglich eine Prüfsumme (zumeist ein 128-Bit-Hash) ermittelt.
    Wenn jemand diese Prüfsumme nicht kennt, wird es sehr schwierig,
    und nur über eine Brute-Force-Methode möglich, den ursprünglichen
    Inhalt wiederherzustellen.

    Ausserdem mache ich mir gerade Gedanken darüber, ob ich die
    Zugriffskontrolle über den Apache Server abwickeln oder den
    Passwortvergleich selber vornehmen soll. Hat das schon mal jemand
    versucht, allerdings ohne Datenbank und ein kleines Beispielskript?

    Inwiefern über den Apache? Via HTTP-Auth?

    Da ich auch noch nicht so ganz weiß, wie der Vergleich von statten
    geht... wenn ich nun beispielsweise eine Passwortdatei mit dem
    Aufbau Name:verschlüsseltes_Passwort habe und ein Benutzer sein
    Passwort über den Browser eingibt, wie müsste ich dann die
    Passwörter vergleichen? Muss ich entweder das Passwort in der Datei
    enkodieren

    Wenn das ginge, wäre es ein äußerst leicht "knackbarer" Schutz...

    oder das Passwort kodieren, welches der Benutzer über den Browser
    eingibt, um dann einen Vergleich durchzuführen?

    Wohl eher so.

    Für Syntaxfehler bitte ich um Entschuldigung!

    Oh, das habe ich zu spät gelesen ... ;-)

    ℆, ℒacℎgas

    --
    Bei der intendierten Realisierung der linguistischen Simplifizierung
    des regionalen Idioms resultiert die Evidenz der Opportunität extrem
    apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
    milierter Xenologien konsequent zu eliminieren!
    1. Hallo,

      Ausserdem mache ich mir gerade Gedanken darüber, ob ich die
      Zugriffskontrolle über den Apache Server abwickeln oder den
      Passwortvergleich selber vornehmen soll. Hat das schon mal jemand
      versucht, allerdings ohne Datenbank und ein kleines Beispielskript?

      Inwiefern über den Apache? Via HTTP-Auth?

      Ja genau. Irgendwie gefällt mir das nicht! Ich möchte gerne die Benutzerverwaltung über den Browser ermöglichen. Ich fahre auf einem Linux Server Apache2, wozu ja bekanntlich das htpasswd2 gehört. Jetzt weiß ich leider nicht aus dem Stehgreif, ob htpasswd2 auch vom wwwrun ausgeführt werden darf, denn wenn nicht, dann hätte ich bei der Benutzerverwaltung über den Browser wohl leichte Probleme, Benutzer mit Passwort einzurichten oder auch zu ändern oder gar zu löschen. Natürlich sollen Benutzer auch selber die Möglichkeit haben, Ihr eigenes Passwort zu ändern.

      Kannst du mir einen Tipp geben, der in beide Richtungen geht? Also mit oder ohne HTTP-Auth...

      Wenn das ginge, wäre es ein äußerst leicht "knackbarer" Schutz...

      Ja, du hast Recht! Dumme Frage von mir! Sry!

      oder das Passwort kodieren, welches der Benutzer über den Browser
      eingibt, um dann einen Vergleich durchzuführen?

      Wohl eher so.

      s.o.

      Für Syntaxfehler bitte ich um Entschuldigung!

      Oh, das habe ich zu spät gelesen ... ;-)

      Hab ich denn was falsch gemacht? :o)

      Greez,
      opi

      Für Syntaxfehler bitte ich um Entschuldigung!

  2. Nun meine Frage: ist MD5 im Moment der "modernste" Verschlüsselungsalgorithmus oder einfach nur der Gängiste? Vielleicht auch beides?

    Weder noch. MD5 ist ein kryptographisch als sicher eingestufter Hashing-Algorithmus. Es wird nur eine Prüfsumme berechnet, nichts verschlüsselt.

    Da ich auch noch nicht so ganz weiß, wie der Vergleich von statten geht... wenn ich nun beispielsweise eine Passwortdatei mit dem Aufbau Name:verschlüsseltes_Passwort habe und ein Benutzer sein Passwort über den Browser eingibt, wie müsste ich dann die Passwörter vergleichen? Muss ich entweder das Passwort in der Datei enkodieren oder das Passwort kodieren, welches der Benutzer über den Browser eingibt, um dann einen Vergleich durchzuführen?

    Du musst das Passwort, dass der Benutzer eingibt, durch denselben Prüfsummen-Algorithmus jagen, durch den du das Orginal-Passwort geschickt hast. Das Ergebnis musst du dann mit dem Vergleichen, dass in deiner Passwort-Datei steht. Stimmt beides überein, ist das Passwort korrekt.

    1. Hallo,

      Du musst das Passwort, dass der Benutzer eingibt, durch denselben Prüfsummen-Algorithmus jagen, durch den du das Orginal-Passwort geschickt hast. Das Ergebnis musst du dann mit dem Vergleichen, dass in deiner Passwort-Datei steht. Stimmt beides überein, ist das Passwort korrekt.

      Vielen dank für die Info, genau das wollte ich wissen!

      Greez,
      opi

      Für Syntaxfehler bitte ich um Entschuldigung!

  3. Moin,

    Nun meine Frage: ist MD5 im Moment der "modernste" Verschlüsselungsalgorithmus oder einfach nur der Gängiste? Vielleicht auch beides?

    MD5 ist _kein_ Verschlüsselungsalgorithmus. Und nein, MD5 ist nicht der Modernste, nur der Gängigste. MD5 ist in der Tat sogar schon recht schlecht geworden, da es bereits gebrochen ist. Etwas besser als MD5 ist SHA-1, aber da das auch nur eine leichte Modifikation von MD5 ist hat es auch bereits stark gelitten. Wenn man was neues baut, sollte man sich von beiden fernhalten und etwas aus der SHA-2-Familie (das sind SHA-224, SHA-256, SHA-384 und SHA-512) nehmen.

    --
    Henryk Plötz
    Grüße aus Berlin
    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
    1. Hallo,

      MD5 ist in der Tat sogar schon recht schlecht geworden, da es bereits gebrochen ist.

      Nicht, dass ich dir nicht glauben würde, aber hast du das Schwarz auf Weiß? Hast du darüber irgendwo einen Bericht gelesen und wenn ja, wo? Das würde mich brennend interessieren!

      Vielen Dank für die Info!

      Greez,
      opi

      Für Syntaxfehler bitte ich um Entschuldigung!

      1. Hi,

        MD5 ist in der Tat sogar schon recht schlecht geworden, da es bereits gebrochen ist.

        Nicht, dass ich dir nicht glauben würde,

        noee, dem darf man gelegentlich schon mal den Glauben verweigern.

        aber hast du das Schwarz auf Weiß?

        Es kommt ein 128 Bit Hash-Wert raus, den koennte man eventuell brute force meassig angehen, zudem koennte man "Kollisionen" geben.

        Hast du darüber irgendwo einen Bericht gelesen und wenn ja, wo? Das würde mich brennend interessieren!

        Google weiss Bescheid: http://www.google.de/search?hl=de&q=md5+schluessellaenge&meta= oder auch http://www.google.de/search?hl=de&q=md5+key+length&spell=1

        Gruss,
        Ludger

        1. hi,

          Nicht, dass ich dir nicht glauben würde,

          noee, dem darf man gelegentlich schon mal den Glauben verweigern.

          bei dir ist's umgekehrt - da ist erst mal pauschal skepsis angebracht :-)

          aber hast du das Schwarz auf Weiß?

          Es kommt ein 128 Bit Hash-Wert raus, den koennte man eventuell brute force meassig angehen, zudem koennte man "Kollisionen" geben.

          eben, kollisionen sind das stichwort.

          http://de.wikipedia.org/wiki/MD5#Die_Analyse-Methode:

          "Im August 2004 fand ein chinesisches Wissenschaftlerteam die erste Kollision in der vollständigen MD5-Funktion [1]. Auf einem IBM P690-Cluster benötigte ihr erster Angriff eine Stunde, davon ausgehend ließen sich weitere Kollisionen innerhalb von maximal fünf Minuten finden."

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Hallo!

            eben, kollisionen sind das stichwort.

            http://de.wikipedia.org/wiki/MD5#Die_Analyse-Methode:

            "Im August 2004 fand ein chinesisches Wissenschaftlerteam die erste Kollision in der vollständigen MD5-Funktion [1]. Auf einem IBM P690-Cluster benötigte ihr erster Angriff eine Stunde, davon ausgehend ließen sich weitere Kollisionen innerhalb von maximal fünf Minuten finden."

            Relevanter (zumindest für Signatur und Passwort-Hashes) sind AFAIK aber Pre-Image Angriffe, das heißt zu einem vorgegebenen Hash-Wert einen Text zu erzeugen, der denselben Hash-Wert hat. Kollision heißt ja lediglich, dass man irgendwelche 2 Texte mit gleichem Hash-Wert erzeugt.
            Bei MD5 sind inzwischen bereits Pre-Image Angriffe gelungen (es wurden 2 X.509-Zertifikate mit gleichem MD5-Hash erzeugt), allerdings immer noch eher theoretischer Natur, da es nur funktioniert, wenn der Angreifer sowohl Original als auch Fälschung selber erstellen kann. Bei SHA-1 sind AFAIK solche Angriffe noch nicht bekannt, und auch die kürzlich bekannt gewordenen Möglichkeiten bei der Kollision haben AFAIK keine Auswirkungen auf Pre-Image Angriffe.

            Daher würde ich heute durchaus SHA-1 noch vertrauen, aber auf MD5 nach Möglichkeit verzichten.

            Grüße
            Andreas

            --
            SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
      2. Hallo opi!

        Für Syntaxfehler bitte ich um Entschuldigung!

        Wenn du diese Phrase als deine Signatur verwenden willst, zeichne
        sie bitte auch als solche aus:

        --BREAK, CARRIAGE RETURN, NEW LINE
        (zwei Striche, Leerzeichen, Neue Zeile)

        ℆, ℒacℎgas

        --
        Bei der intendierten Realisierung der linguistischen Simplifizierung
        des regionalen Idioms resultiert die Evidenz der Opportunität extrem
        apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
        milierter Xenologien konsequent zu eliminieren!
        1. Hallo,

          Wenn du diese Phrase als deine Signatur verwenden willst, zeichne
          sie bitte auch als solche aus:

          etwa so? - hoffe ja das es klappt!

          Greez,
          opi

          --
          Für Syntaxfehler bitte ich um Entschuldigung!
          1. Hallo opi!

            etwa so? - hoffe ja das es klappt!

            Genau -- und wenn du dir das Eingeben ersparen möchtest, kannst du dich
            auch registrieren.

            ℆, ℒacℎgas

            --
            Bei der intendierten Realisierung der linguistischen Simplifizierung
            des regionalen Idioms resultiert die Evidenz der Opportunität extrem
            apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
            milierter Xenologien konsequent zu eliminieren!
            1. Hallo,

              registrieren.

              das bin ich schon längst unter dem Namen opi. Habe es auch schon in meiner Signatur eingegeben. :)

              Dennoch danke für den Tipp!

              Hast du meine Frage ganz unten schon gelesen?

              Greez,
              opi

              --
              Für Syntaxfehler bitte ich um Entschuldigung!
      3. Hallo!

        Nicht, dass ich dir nicht glauben würde, aber hast du das Schwarz auf Weiß? Hast du darüber irgendwo einen Bericht gelesen und wenn ja, wo? Das würde mich brennend interessieren!

        Gibt sicher noch bessere Sachen, aber das finde ich für den Anfang ganz interessant:

        http://www.heise.de/security/artikel/56555
        http://www.doxpara.com/md5_someday.pdf
        http://www.schneier.com/essay-074.html
        http://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html
        http://it.slashdot.org/article.pl?sid=05/02/19/1424201&from=rss (DESCracker)
        http://www.heise.de/newsticker/meldung/57038...

        Wobei es stark vom Einsatzzweck abhängt. Bei gehashten Passwörtern sehe ich noch nicht wirklich eine vorhandene Gefahr bei sha-1.

        Für Syntaxfehler bitte ich um Entschuldigung!

        hä?

        Grüße
        Andreas

        --
        SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/
        1. Hallo Andreas!

          Für Syntaxfehler bitte ich um Entschuldigung!
          hä?

          Ich glaube, er meint seine lingustische Syntax, nicht die informatische.

          ℆, ℒacℎgas

          --
          Bei der intendierten Realisierung der linguistischen Simplifizierung
          des regionalen Idioms resultiert die Evidenz der Opportunität extrem
          apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
          milierter Xenologien konsequent zu eliminieren!
      4. Moin,

        MD5 ist in der Tat sogar schon recht schlecht geworden, da es bereits gebrochen ist.

        Nicht, dass ich dir nicht glauben würde, aber hast du das Schwarz auf Weiß? Hast du darüber irgendwo einen Bericht gelesen und wenn ja, wo? Das würde mich brennend interessieren!

        Hmm, spontan beziehe ich meine Informationen von http://www.informatik.hu-berlin.de/~ploetz/openssl/
        Ansonsten: http://eprint.iacr.org/2004/199.pdf

        --
        Henryk Plötz
        Grüße aus Berlin
        ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
        ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
        1. Hallo Henryk,

          die vielen anderen Antworten mit Links zu diversen Berichten haben mich schon vollends überzeugt :)

          Aber ich denke, dass ich trotzdem MD5 benutzen werde.

          Vielen Dank!

          Greez,
          opi

          --
          Für Syntaxfehler bitte ich um Entschuldigung!
    2. Hallo!

      Wenn man was neues baut, sollte man sich von beiden fernhalten und etwas aus der SHA-2-Familie (das sind SHA-224, SHA-256, SHA-384 und SHA-512) nehmen.

      Aber bauen die nicht auch alle auf SHA-1 auf? Ich denke für Passwort-Hashes etc. ist SHA-1 durchaus noch zu gebrauchen, da es ja eines Pre-Image Angriffes bedarf um etwas erreichen zu können. Und da gibt es AFAIK bisher noch keine Angriffe (im Gegensatz zu MD5!). Abgesehen davon ist vermutlich jede noch so verhunzte Hash-Funktion besser als die Passwörter selber ;-)

      Grüße
      Andreas

      --
      SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
      1. Moin,

        Aber bauen die nicht auch alle auf SHA-1 auf?

        Also SHA-1 baut auf MD5 auf (der widerum nur eine aufgemotzte MD4-Version ist). Aber wenn ich mich richtig erinnere(!) dann war die SHA-2-Familie anders als SHA-1 (wobei sie natürlich eh durch die Hashlänge gewinnt).

        --
        Henryk Plötz
        Grüße aus Berlin
        ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
        ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
  4. Hallo,

    eine weitere Frage hätte ich da!

    Was wäre zu empfehlen?

    md5($data);     #Erzeugt eine binäre Prüfsumme.
    md5_hex($data); #Erzeugt eine Prüfsumme, die als hexadezimale Zahl zurückgeben wird.
    md5_base64      #Erzeugt eine Prüfsumme, die BASE64-kodiert zurückgegeben wird.

    Oder ist das im Grunde genommen egal?

    Greez,
    opi

    Für Syntaxfehler bitte ich um Entschuldigung!

    Greez,
    opi

    Für Syntaxfehler bitte ich um Entschuldigung!