Benutzerpasswörter (bzw. Hashes davon) werden zweimal in der Datenbank gehalten; beide Male unzureichend gesichert.
Die Crypt-Hashes (auf quasi alles Systemen ein Single-DES) haben zwar ein Salt, dies ist jedoch für alle Benutzer das gleiche. Damit dauert ein Bruteforce-Angriff immer gleichlang, unabhängig von der Anzahl der Accounts. Mein alter EeePC 901 kann ca. eine Millionen Passwörter pro Sekunde erraten. Da crypt (immer in der Singel-DES-Variante) auch nur die ersten acht Zeichen des Passworts und die ersten zwei Zeichen des Salts benutzt, hebelt man hier gleich noch die Sicherheits längeres Passwörter aus.
Davon abgesehen gibt's imho keinen Grund, überhaupt noch crypt() einzusetzen. Im Code steht in den Kommentaren was von .htpasswd, aber ich wüsste keinen Webserver, der nicht auch MD5 oder SHA1 akzeptiert.
Die MD5-Hashes haben gar kein Salt. Damit können diese prima mittels Rainbowtables durchprobiert werden.
Das sind jetzt auch keine theoretischen Überlegungen; mein o.g. Netbook hat schon ein paar Passwörter rausgespuckt.
Guten Tag
Die crypt() Passwörter werden nur verwendet um Dateien zu speichern, da dies nicht per MD5 geht (via http auth).
MD5 ist sicher überholfähig, allerdings müssen wir dies für Abwärtskompatibilität noch so stehen lassen. Wir arbeiten aber an einer Weiterentwicklung.
Vielen Dank für Ihre Hinweise.
It looks like you're new here. If you want to get involved, click one of these buttons!