Frage zu crypt() und dem "Salz in der Suppe"
Siechfred
- perl
Hallo Forum,
ich experimentiere ein wenig mit der Funktion crypt() herum. Nun habe ich gelesen, dass die ersten zwei Zeichen des verschlüsselten Passworts wohl immer das "Salz" sind. Bei SelfHTML gibt es einen Verschlüsseler (http://selfhtml.teamone.de/diverses/htaccess.htm#verzeichnisschutz), der Passwörter liefert, die immer mit "IN" beginnen. Mein Script baut sich das Salz selber (Beispiel: http://www.rt211.de/cgi-bin/functions.pl?do=pwd&str=siechfred). Ist es egal, welches Salz man verwendet, oder hat es mit dem "IN" eine bestimmte Bewandtnis?
mfg Siechfred
Moin Moin !
ich experimentiere ein wenig mit der Funktion crypt() herum. Nun habe ich gelesen, dass die ersten zwei Zeichen des verschlüsselten Passworts wohl immer das "Salz" sind. Bei SelfHTML gibt es einen Verschlüsseler (http://selfhtml.teamone.de/diverses/htaccess.htm#verzeichnisschutz), der Passwörter liefert, die immer mit "IN" beginnen. Mein Script baut sich das Salz selber (Beispiel: http://www.rt211.de/cgi-bin/functions.pl?do=pwd&str=siechfred). Ist es egal, welches Salz man verwendet, oder hat es mit dem "IN" eine bestimmte Bewandtnis?
Das "Salz in der Suppe" findest Du in perlfunc: http://www.perldoc.com/perl5.8.0/pod/func/crypt.html, es variiert die Ausgabe, so daß ein Password mit unterschiedlichem "Salt" unterschiedliche Ergebnisse liefert.
Du willst crypt() aber nicht wirklich benutzen: crypt nimmt nur max. 8 Zeichen des Passwords, und auch nur die unteren sieben Bit.
Nimm MD5, SHA1 oder ähnliche.
Alexander
Guten Abend,
Das "Salz in der Suppe" findest Du in perlfunc [...] es variiert die Ausgabe, so daß ein Password mit unterschiedlichem "Salt" unterschiedliche Ergebnisse liefert.
Soweit so klar, aber was hat es nun mit diesem "IN" auf sich? Oder benutzt das SelfHTML-Script die crypt-Funktion gar nicht?
Du willst crypt() aber nicht wirklich benutzen: crypt nimmt nur max. 8 Zeichen des Passwords, und auch nur die unteren sieben Bit.
War doch nur ein Experiment, da ich mich im Moment mit Perl noch am Anfang befinde. Wäre das Modul Digest::MD5 sinnvoller?
mfg Siechfred
Moin Moin !
Guten Abend,
http://www.foken.de/alexander/moinmoin.html
Soweit so klar, aber was hat es nun mit diesem "IN" auf sich? Oder benutzt das SelfHTML-Script die crypt-Funktion gar nicht?
Laut SelfHTML liefert die Seite den crypt-Hash des Passwords. Wahrscheinlich ist das "SALT" festgelegt, was wirklich ungeschickt wäre.
War doch nur ein Experiment, da ich mich im Moment mit Perl noch am Anfang befinde. Wäre das Modul Digest::MD5 sinnvoller?
Ja. Allerdings ist das MD5-Ergebnis für identische Passworte auch identisch, weil der primitive SALT-Schutz (?t=44964&m=245242) fehlt. Die MD5-Passworte sollten also gut geschützt abgelegt sein.
Alexander
Moin,
Ist es egal, welches Salz man verwendet, oder hat es mit dem "IN" eine bestimmte Bewandtnis?
Es ist egal. Naja fast: Man sollte einen zufälligen Wert als Salt verwenden und so überhaupt möglich auch nicht den gleichen Wert bei zwei verschiedenen Usern.
Das ist als primitiver Schutz gedacht: Wenn das Salt bei allen Usern gleich ist, kann man einfach durch Vergleich der gecrypteten Werte feststellen welche User das gleiche Passwort verwenden. Ausserdem muß eine Brute Force-Attacke andernfalls mehr Werte berechnen (nämlich einmal für alle verwendeten Salts) wenn man eine ganze Passwortdatei angreift. Nicht zuletzt erschwert es auch den Aufbau eines Wörterbuchs welches cryptwerte auf Passwörter abbildet, weil man ein Wörterbuch für jeden der 4096 möglichen Saltwerte braucht.
Wenn der Generator immer das gleiche Salt ausspuckt, würde ich dazu tendieren das als Bug zu betrachten.
Hallo Forum,
http://www.rt211.de/cgi-bin/functions.pl?do=pwd&str=selfforum.
Noch eine Frage hierzu: Wie lautet der Fachbegriff für die zwei letzten Verschlüsselungsmethoden (hier habe ich das Modul Digest::MD5 verwendet)? Kann ich derart verschlüsselte Passwörter auch in .htusers-Dateien speichern?
mfg Siechfred
Moin,
Noch eine Frage hierzu: Wie lautet der Fachbegriff für die zwei letzten Verschlüsselungsmethoden (hier habe ich das Modul Digest::MD5 verwendet)?
MD5-Summe. Aber das ist keine Verschlüsselung (crypt eigentlich auch nicht, aber das war wenigstens mal eine) sondern eine Prüfsumme oder auch Hash. (Der allerdings kryptographisch recht stark ist.)
N'abend,
MD5-Summe. Aber das ist keine Verschlüsselung (crypt eigentlich auch nicht, aber das war wenigstens mal eine) sondern eine Prüfsumme oder auch Hash. (Der allerdings kryptographisch recht stark ist.)
Noch zwei (dumme?) Fragen: Worin unterscheiden sich die beiden Methoden und was wäre denn eine (mit Perl realisierbare) Verschlüsselung im eigentlichen Sinne (abgesehen von crypt)?
mfg
Siech*mich_dürstet_nach_Wissen*fred
Moin,
Noch zwei (dumme?) Fragen: Worin unterscheiden sich die beiden Methoden
Ich würde sagen einmal wird die MD5-Summe als Hexadezimalzahl ausgegeben (das ist eigentlich die gebräuchliche Methode) und einmal als Base64-codierte Binärzahl (das habe ich bisher noch nie gesehen).
und was wäre denn eine (mit Perl realisierbare) Verschlüsselung im eigentlichen Sinne (abgesehen von crypt)?
DES, AES, blowfish, IDEA... (da gibt es bestimmt für jedes mindestens ein Modul für)
Moin Moin !
Ich würde sagen einmal wird die MD5-Summe als Hexadezimalzahl ausgegeben (das ist eigentlich die gebräuchliche Methode) und einmal als Base64-codierte Binärzahl (das habe ich bisher noch nie gesehen).
Nee. Beide Algorithmen liefern einen binären String, der bei crypt nach einem anderen Algortihmus in ASCII repräsentiert wird als bei MD5 oder Base64 üblich. MD5 und SHA-1 kann man prinzipiell beliebig darstellen (z.B. uuencoded oder dezimal), auch wenn Hex wohl am gebräuchlichsten ist.
Etwas mehr Doku: http://www.perldoc.com/perl5.8.0/lib/Digest.html und die dort verlinkten Seiten
Alexander
Moin,
Nee. Beide Algorithmen liefern einen binären String, der bei crypt nach einem anderen Algortihmus in ASCII repräsentiert wird als bei MD5 oder Base64 üblich.
Zur Klarstellung: Ich hatte Siechfried so verstanden, dass er wissen wollte was der Unterschied zwischen dem ist was ihm sein Script als "Digest::MD5 OO-Style" gegenüber "Digest::MD5 base64" ausgibt.
Hello again,
DES, AES, blowfish, IDEA... (da gibt es bestimmt für jedes mindestens ein Modul für)
Habe gerade die Seite für Crypt::Blowfish gefunden. Da es kein Standard-Modul ist, müsste ich es sicherlich irgendwie auf meinen Webspace bekommen, um es verwenden zu können. Genügt es, das Modul einfach mit ins cgi-bin Verzeichnis zu packen?
mfg Torsten
Moin Moin !
Noch zwei (dumme?) Fragen: Worin unterscheiden sich die beiden Methoden und was wäre denn eine (mit Perl realisierbare) Verschlüsselung im eigentlichen Sinne (abgesehen von crypt)?
MD5, SHA-1 und crypt sind "one-way hash functions", d.h. Du bekommst das Original nicht wieder. (Die Perl-Doku vergleicht das mit dem Zerbrechen von Eiern für ein Omlett.)
XOR, ROT13 und (viele) andere sind umkehrbar, zweimal den selben Algorithmus mit den selben Parametern und Du hast wieder das Original. (Shared Secret)
Hallo ---rot13--> Unyyb ---rot13--> Hallo
PGP benutzt asymetrische Verfahren, bei denen Du ein Verfahren zum Einpacken und eines zum Auspacken hast. Die Parametersätze sind paarweise für Einpacken und Auspacken. Was einmal mit einem Paarelement eingepackt wurde, kann nur mit dem jeweils anderen Paarelement wieder ausgepackt werden. (Private und Public Keys)
Alexander
Moin Moin !
Kann ich derart verschlüsselte Passwörter auch in .htusers-Dateien speichern?
Klar kannst Du. Aber ob der Webserver damit etwas anfangen kann ... ;-)
Naja, der Apache sollte es eigentlich können, mußt halt mal in der Doku lesen. (http://httpd.apache.org/)
Alexander
N'abend,
Kann ich derart verschlüsselte Passwörter auch in .htusers-Dateien speichern?
Klar kannst Du. Aber ob der Webserver damit etwas anfangen kann ... ;-)
Du meintest, dass verschlüsselte Passwörter gut gesichert abgelegt werden sollten ([pref:t=44964&m=245300]). Ist dann die logische Schlussfolgerung daraus, dass gecryptete Passwörter für die Verwendung in .htusers-Dateien die bessere Wahl sind?
mfg Siechfred AKA Torsten
Moin,
Du meintest, dass verschlüsselte Passwörter gut gesichert abgelegt werden sollten ([pref:t=44964&m=245300]). Ist dann die logische Schlussfolgerung daraus, dass gecryptete Passwörter für die Verwendung in .htusers-Dateien die bessere Wahl sind?
Also eigentlich ist ja .htdigest zusammen mit Digest Auth die bessere Wahl, aber da ist der IE ja leider kaputt.
Und ja, man kann MD5-Passwörter in der .htpasswd verwenden (Option -m für htpasswd) und ja, da wird auch ein Salt verwendet, sodass man sie problemlos statt crypt-Passwörtern einsetzen kann. Aus den genannten Gründen (crypt nimmt nur die unteren 7 Bits der ersten 8 Zeichen) ist es sogar deutlich sinnvoller, falls der Webserver damit umgehen kann.
Moin Moin !
N'abend,
Kann ich derart verschlüsselte Passwörter auch in .htusers-Dateien speichern?
Klar kannst Du. Aber ob der Webserver damit etwas anfangen kann ... ;-)Du meintest, dass verschlüsselte Passwörter gut gesichert abgelegt werden sollten ([pref:t=44964&m=245300]).
Ja. Zumindest so gut, daß kein Angreifer dran kommt. Obwohl ein MD5-Password wahrscheinlich etwas schwieriger zu cracken ist als crypt. Für Crypt brauchst Du bei bekanntem Hash ("INblablabla") nur alle Kombinationen von 1 bis 8 Zeichen durch crypt jagen (SALT sind die ersten zwei Zeichen des Hash), um ein passendes Password zu bekommen (nicht unbedingt das Original). ASCII 0 ist nicht zulässig (Stringende). Für eine erste Schätzung mußt Du max. 128^8 Kombinationen ausprobieren, von denen einige redundant sind, das sind 7,2*10^16 Kombinationen. Es wird natürlich noch weniger, wenn Du Dich auf direkt eingebbare Zeichen beschränkst.
Ist dann die logische Schlussfolgerung daraus, dass gecryptete Passwörter für die Verwendung in .htusers-Dateien die bessere Wahl sind?
Nicht unbedingt. Wenn außer Dir, dem Webserver und root niemand die .htusers-Datei lesen kann und der Webserver die Datei auf keinen Fall ausliefert, kannst Du auch MD5 nehmen. Das gilt genauso für crypt. Und so sollte es normalerweise auch eingestellt sein.
MD5 ist außerdem wesentlich schwerer anzugreifen (Beweis: Google, sorry, kein Bock zum suchen), weil Du einen viel größeren Eingabebereich durchspielen mußt.
Der beste Password-Schutz nützt Dir sowieso gar nichts bei schlechten Passworten und/oder Social Engeneering: http://www.theregister.co.uk/content/55/30324.html - Titel: "Office workers give away passwords for a cheap pen"
Fazit: MD5 oder crypt, es ist relativ egal. Sorge für gute und regelmäßig geänderte Passworte. Schütze die Password-Datei.
Alexander
Hallo,
vielen Dank für die aufschlussreichen Antworten an Alexander und Henryk.
mfg Torsten