Thomas: MD5-Verschlüsselung

Hallo Forum,
ich habe eine Frage zur MD5-Verschlüsselung.
Auf devmag.net habe ich einen Artikel zur MD5-Verschlüsselung gefunden. U.a. heißt es, dass ein einfacher Vergleich der verschlüsselten Werte nicht der sicherste Weg sei:

"
Eine mögliche Methode wäre diese:
if($gespeichertes_Passwort == $eingegebenes_Passwort){
echo 'Passwort ist Richtig.';
}else{
echo 'Passwort ist Falsch.';
}
Dies ist in keiner Weise die sicherste Variante, es soll nur die Vorgehensweise dargestellt werden.
"

Quelle:http://www.devmag.net/webprog/php_verschluesselung.htm

Welche Methode wäre den sicherer?
Gruß
Thomas

  1. Hallo Thomas,

    [...md5()-Summe bilden und vergleichen ...]
    Welche Methode wäre den sicherer?

    Och. Eine Frage des Aufwands. Man koennte z. B.
    ueber einen cryptographisch als sicher eingestuften
    Algorithmus ein Einmal-Passwort erstellen, dass
    alle 5 Minuten oder so wechselt (die Credit Suisse
    macht das AFAIK so). Oder man koennte das
    TAN-Verfahren nutzen, dass bei deutschem
    Online-Banking so gern benutzt wird. Bei beiden
    Methoden nutzt es einem eventuellen Mitleser
    nichts, wenn er mitliest -- die Passwoerter sind
    nur begrenzt gueltig.

    Gruesse,
     CK

    --
    If God had a beard, he'd be a UNIX programmer.
    1. Achso, das war's. *LOL*.

      OK,ok,ok.
      Für einen Admin-Bereich in einem Guestbook oder Forum wäre das sicherlich overdone.

      Danke
      Thomas

      1. Sup!

        Wenn Du kein SSL hast, nützt die MD5-Verschlüsselung vom Passwort nicht allzu viel, denn wer das gecryptete Passwort hat, kann sich dennoch einloggen.

        Sicherer ist dann ein Challenge-Response-Verfahren.

        Der Server sendet einen Zufallswert, der Client xor-t den mit dem Passwort und schickt Usernamen (unverschlüsselt) und Passwort-Hash (Zufallswert XOR Passwort, MD5-verschlüsselt) zurück.

        Auf diese Weise führt auch ein Belauschen der Übertragung nicht zum Bekanntwerden des Passworts. Problem ist nur, dass der Server das Passwort ggf. unverschlüsselt gespeichert haben muss.

        Gruesse,

        Bio

        1. Problem ist nur, dass der Server das Passwort ggf. unverschlüsselt gespeichert haben muss.

          Kann ich mit Javascript auch MD5-Verschlüsseln?
          Dann könnte ich das Passwort zunächst Verschlüsseln, xor'n und dann das Formular absenden.

          Somit bräuchte es nicht unverschlüsselt abgespeichert zu werden.
          Muss es immer in einer Datenbank gespeichert werden?
          Oder ist eine Datei in einem mit .htaccess geschützten Verzeichnis auch möglich.
          Wenn diese Datei z.B. durch eine login.php erzeugt wird, ist diese auch Besitzer. Man könnte somit auch nur der login.php Lese/Schreibrechte geben.

          Gruß
          Thomas

          1. Sup!

            Kann ich mit Javascript auch MD5-Verschlüsseln?
            Dann könnte ich das Passwort zunächst Verschlüsseln, xor'n und dann das Formular absenden.

            Tja, nur dann kann man das verschluesselte Passwort ganz einfach wieder rausbekommen, indem man das verschluesselte Passwort mit der Zufallszahl XORt. Kleiner Unterschied im Algorithmus, grosser Sicherheitsunterschied.

            Somit bräuchte es nicht unverschlüsselt abgespeichert zu werden.

            Es ist sicherer, wenn man unverschluesselte Passwoerter lokal gespeichert hat, als wenn man sie unverschluesselt ueber das Netz uebertraegt.

            Muss es immer in einer Datenbank gespeichert werden?

            Nein. Es kann auch jemand am Server sitzen und manuell Logins zulassen oder nicht ;-)

            Gruesse,

            Bio

            --
            Besucht den Adventskalender!
            http://selfcommunity.teamone.de/advent/2003/
          2. Hallo Thomas,

            Kann ich mit Javascript auch MD5-Verschlüsseln?

            http://aktuell.de.selfhtml.org/artikel/javascript/md5/

            Dann könnte ich das Passwort zunächst Verschlüsseln, xor'n und dann das Formular absenden.

            Dazu hat Bio schon etwas erzählt.

            Viele Grüße,
            Christian

      2. Hello,

        BTW:
        aber Artikel, die base64_encode() zu den Verschlüsselungsverfahren zählen, sind sowieso krank. Hierbei handelt es sich nur um eine Transformation in einen anderen Zeichsatz. Die Regeln liegen fest, sind öffentlich bekannt (das ist der Sinn), sind jederzeit ohne Hilfe weiterer Elemente (Schlüssel) umkehrbar.

        Sowas gehört bestenfalls zu den Verschleierungstechniken.

        Wobei der Sinn hier ja nicht in der "Nichtlesbarkeit" steckt, sondern in der reduzierung auf einen kleineren Zeichvorrat zu Lasten der Zeichenmenge.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen