Karlheinz Toni: Passwortabfrage

Hi,

kennt jemand von euch ein JavaApplet, das eine Passwortabfrage durchführt und je nach eingegebenen Passwort/Login an eine andere Adresse verzweigt?

thx
CHalry

  1. Hallo,

    kennt jemand von euch ein JavaApplet, das eine Passwortabfrage durchführt und je nach eingegebenen Passwort/Login an eine andere Adresse verzweigt?

    Die Passwort-Abfrage über Client-seitige Script-Anwendungen ist prinzipiell nicht möglich, da der Besucher ja - wenn er sich auskennt - das Script auslesen und dort das Passwort finden kann.

    Einzige Möglichkeit: zufälligen Text generieren und das erwartete Passwort zum Verschlüsseln dieses Textes verwenden. Bei Eingabe eines Passworts wird der Text entschlüsselt und mit dem Ursprungstext verglichen. Nur wenn der ver- und wieder entschlüsselte Text übereinstimmen, war das Passwort richtig. Dabei muss das Passwort selbst nicht in das Script übernommen werden.
    Nachteil:

    • extreeeeeem umständlich. Über Server-Anwendungen wäre es viel einfacher

    Robert
    http://www.designauswahl.here.de

    1. Hi,
      danke mal für die Antwort :)...

      • extreeeeeem umständlich. Über Server-Anwendungen wäre es viel einfacher

      hast du einen link parat?`

      thx
      Charly

      1. Hallo,

        • extreeeeeem umständlich. Über Server-Anwendungen wäre es viel einfacher

        hast du einen link parat?`

        Zu Kryptographie oder zu Server-Anwendungen?

        Ich kenn' mich in der Kryptographie eigentlich selbst nicht so gut aus. Henryk Plötz scheint da eher "zu Hause" zu sein.

        Zu Server-Anwendungen ist zum Einstieg sicher http://selfhtml.teamone.de/cgiperl/index.htm zu empfehlen.

        Robert
        http://www.designauswahl.here.de

    2. Moin

      Die Passwort-Abfrage über Client-seitige Script-Anwendungen ist prinzipiell nicht möglich, da der Besucher ja - wenn er sich auskennt - das Script auslesen und dort das Passwort finden kann.

      Nicht die volle Wahrheit, aber im Prinzip auch nicht ganz falsch

      Einzige Möglichkeit: zufälligen Text generieren und das erwartete Passwort zum Verschlüsseln dieses Textes verwenden. Bei Eingabe eines Passworts wird der Text entschlüsselt und mit dem Ursprungstext verglichen. Nur wenn der ver- und wieder entschlüsselte Text übereinstimmen, war das Passwort richtig. Dabei muss das Passwort selbst nicht in das Script übernommen werden.

      Naja, nur das so ziemlich jeder symmetrische Verschlüsselungsalgorithmus einfache Angriffe erlaubt, wenn Klartext und Geheimtext bekannt sind, noch dazu in voller Länge.

      Evt. besser ist es da das Passwort mit sich selbst zu verschlüsseln(bitte kein XOR! ;), evt. noch mit etwas Salz zu würzen und voila, du hast die Standard-crypt()-Funktion. Das ist aber auch nicht mehr das Gelbe vom Ei.

      Die richtige Lösung wäre dann einen Hashing-Algorithmus wie MD5 zu benutzen und das Passwort und eine kräftige Portion Salz damit zu Hashen und den Hash und das Salz zu speichern. Damit hast du gute Chancen auch der NSA zu widerstehen.

      Also: Zufällige Zeichenkette generieren, ruhig etwas länger als das Passwort. Dann die Zeichenkette _hinter_ das Passwort hängen, durch MD5() jagen und den entstehenden Hash zusammen mit der zufälligen Zeichenkette irgendwo speichern. Bei der Passwortüberprüfung einfach nochmal die gespeicherte Zeichenkette (das 'Salz') hinter das eingegebene Passwort hängen und MD5() machen. Den nun entstehenden Hash mit dem gespeicherten Hash vergleichen und schauen ob sie übereinstimmen.

      Die MD5()-Funktion liefert dir so ziemlich jede serverbasierte Sprache fertig mit (z.B. http://www.php.net/manual/de/function.md5.php) und für JavaScript gibt es einen Feature-Artikel (sehr nützlich, imho): http://aktuell.de.selfhtml.org/artikel/javascript/md5/index.htm.

      --
      Henryk Plötz
      Grüße aus Berlin

    3. Hallo

      Die Passwort-Abfrage über Client-seitige Script-Anwendungen ist prinzipiell nicht möglich, da der Besucher ja - wenn er sich auskennt - das Script auslesen und dort das Passwort finden kann.

      Falsch! Ich möcht mal Henryks Ausführungen auf nen Punkt bringen,
      "Asymetrische Verschlüsselungs-Algorithmen", d.h. der Aufwand um aus
      dem verschlüsselten Text wieder Klartext zu generieren ist weit komplexer
      als die Verschlüsselung selbst.

      Beispiel: Primzahlen zu multiplizieren ist weit einfacher als das Produkt
      in Primfaktoren zu zerlegen. Auf diesem Prinzip fußt RSA also auch PGP.

      Also wenn du dass Passwort so verschlüssel hinterlegst kann dir keiner was.

      (früher waren die Passwortdateien in Unix deswegen auch öffentlich lesbar!)

      @Henryk: AFAIK können bei MD5 doch 2 verschiedene Passwoerter den gleichen
      Hashwert haben, oder? Mir ist aber klar dass die Wahrscheinlichkeit dafür
      verschwindend ist.

      Tschau

      Rolf

      1. Moin

        @Henryk: AFAIK können bei MD5 doch 2 verschiedene Passwoerter den gleichen
        Hashwert haben, oder? Mir ist aber klar dass die Wahrscheinlichkeit dafür
        verschwindend ist.

        Ja, das ist sogar garantiert so. MD5 erzeugt 128 Bit-Hashcodes, sobald du also 2^128+1 verschiedene Strings durch md5 jagst, hast du garantiert mindestens eine Kollision dabei. Die gängigen Crackprogramme für md5 sagen auch dass sie nicht das Passwort suchen (das ist nicht mehr wiederherstellbar), sonder nur eine Kollision, also einen String der zufällig den selben MD5-Wert hat.

        Aber wie gesagt: 128 Bit sind 16 Byte, du brauchst also 16,125 Byte lange Strings um garantierte Kollisionen zu finden. Da die meisten Passwörter keine 16 Byte lang sind, ist es wahrscheinlich dass du zuerst da eigentlich verwendetete Passwort findest und dann irgendwann später bei viel größeren Passwortlängen eine Kollision.

        --
        Henryk Plötz
        Grüße aus Berlin