[TYPO3-german] Password cracker/checker

Fabian Koenig koenig at bluhouse.de
Wed Aug 1 13:55:45 CEST 2007


Da ich mich zuuuuuufaelligerweise mal mit dem Thema beschaeftigt habe,
muss ich euch "leider" mitteilen, dass das ganze nicht wirklich spassig 
wird.

Ein bruteforce- / dictonary-attack stellt sich dahingehend als schwierig 
heraus, da einige Wortlisten gut und gerne (im simplen txt-format) an 
die 500MB umfassen. Klingt krass, ist aber so. :-P

Aber das ist ja noch nicht das Problem!
Wer mal z.B. einen bruteforce durchlaufen ließ weiß, dass soetwas gerne 
mal Stunden dauern kann, bei EINEM (!!!) Account.
(bruteforce, NICHT dictonary! dictonary geht natuerlich schneller.)


Beruecksichtigt man dann noch den zur Verfuegung stehenden Speicher (RAM 
@ Server), die Prozessorleistung (@Server), die Anzahl der zu pruefenden 
Accounts (@Datenbank) und die "lahmarschigkeit" von PHP und JavaScript 
(welches benoetigt wird, damit man nicht nach 30 Sekunden einen timeout 
bekommt), den Umfang der  dann stellt man ganz schnell fest, dass daraus 
gut und gerne bei 1000 Datensaetzen ein paar Tage fuer den Test draufgehen.

Checkt man allerdings lediglich gegen eine Wordlist und hat viele 
Accounts (mein kleinstes Projekt hat ~200 BE-User und TAUSENDE FE-User 
(welche wir mal außen vor lassen), kann man trotzdem mit stundenlangen 
Tests rechnen. Denn fuer jedes einzelne "wort" muessen ALLE BE-User 
gegengeprueft werden.

Das macht bei halbwegs umfangreichen Wortlisten (mind. 100.000 Woerter) 
und etwa 100 BE-Usern laut Grundschul-Mathematik (100.000 * 100) etwa, 
bzw. genau 10.000.000 (ZEHN MILLIONEN!!!) Checks.



Also dann, viel Spass dabei ;-)



Elmar Hinz schrieb:
>> Würdest du das Passwort direkt beim Speichern checken, dann müsstest du es
>> nachher nicht mehr versuchen zu rekonstruieren:
>>
>> 1) Hook schreiben, der nur noch gute Passwörter erlaubt:
>>
>> if (
>>     strlen($password) > 6) &&
>>     preg_match('/[A-Z]/', $password) &&
>>     preg_match('/[a-z]/', $password) &&
>>     preg_match('/[0-9]/', $password)
>> ) {
>>     $ok = true;
>> }
>>
>> 2) alle Passwörter resetten, so dass sich jeder neu anmelden muss
> 
> Hi Michael,
> 
> das ist natürlich die erste Option. Elmars Frage bezog sich jedoch auf die
> Prüfung der Sicherheit bestehender Passwörter insbesondere gegen Wörterbuch
> Angriffe. Alle Passwörter zu resetten, ist in der Praxis nicht immer
> angezeigt.
> 
> Grüße
> 
> Elmar
> 


More information about the TYPO3-german mailing list