Ik kan niet goed rekenen, maar misschien iemand anders hier op het forum wel. Ik ben erg benieuwd hoeveel combinaties er mogelijk zijn van een gebruikersnaam en wachtwoord met dezelfde lengte, en hoelang een computer er over zou doen om alle combinaties te berekenen. Ik ben benieuwd hoe dat zit als je alleen letters en cijfers mag gebruiken... en wanneer je alle tekens mag gebruiken. Ik zet hier een schemaatje neer en ben benieuwd of iemand er iets van kan invullen. Wie durft? :-)
gebruikersnaam en wachtwoord zijn allebei 4 tekens, alleen letters en cijfers
aantal mogelijke combinaties:
computer tijdsduur om alle combinaties te berekenen:
gebruikersnaam en wachtwoord zijn allebei 6 tekens, alleen letters en cijfers
aantal mogelijke combinaties:
computer tijdsduur om alle combinaties te berekenen:
gebruikersnaam en wachtwoord zijn allebei 8 tekens, alleen letters en cijfers
aantal mogelijke combinaties:
computer tijdsduur om alle combinaties te berekenen:
gebruikersnaam en wachtwoord zijn allebei 4 tekens, alle tekens
aantal mogelijke combinaties:
computer tijdsduur om alle combinaties te berekenen:
gebruikersnaam en wachtwoord zijn allebei 6 tekens, alle tekens
aantal mogelijke combinaties:
computer tijdsduur om alle combinaties te berekenen:
gebruikersnaam en wachtwoord zijn allebei 8 tekens, alle tekens
aantal mogelijke combinaties:
computer tijdsduur om alle combinaties te berekenen:
Huh? Dus als je niks weet duurt het (bij een lengte van 4 tekens en alleen letters en cijfers) 8 jaar, maar als je een van beide al weer duurt het nog maar 2 minuten? :-s
(Kun jij nog eens uitrekenen als het niet heel veel werk is, hoe lang dit dan duurt bij een lengte van 6 tekens en alleen letters en cijfers?)
Ja dat klopt. Want je moet van aaaa+aaaa, aaaa+aaab, ..., 9999+9999
Dit komt dus overeen als één reeks van 8 tekens.
Het punt is: 36[sup]8[/sup] is 1 679 616 maal zo groot als 36[sup]4[/sup] (want 36[sup]4[/sup] = 1 679 616 en 36[sup]4[/sup] * 36[sup]4[/sup] = 36[sup]8[/sup])
Eigenlijk is het gewoon: 1 679 616 * 2 minuten... en dat zijn nogal veel minuten dan...
Wat je tegenwoordig vaak ziet op fora/websites: verplicht 1 cijfer en 1 letter, minimaal 6 tekens lang.
Dit betekend dus dat er één cijfer en één letter in moet zitten.
Hierdoor slinkt het aantal combinaties, want er MOET een van allebei in zitten. Je mag niet alleen cijfers en ook niet alleen letters.
Dit betekent dat het er zo uit ziet: [abxxxx]
Hierin is a enkel een letter, b enkel een cijfer en x een cijfer of een letter.
a en b kunnen overal zitten, maar dat maakt in de berekening niet uit.
Het aantal mogelijkheden zijn nu dus:
a*b*x*x*x*x = 26*10*36[sup]4[/sup] = 436 700 160
De tijd dat dit kost is dan 12.13056 uur, bij een snelheid van .1ms per combinatie
[size=xsmall]Toevoeging op 19/08/2011 14:24:01:[/size]
Omdat ik weet dat dit verschil nogal groot lijkt, kan ik je vertellen dat bij 36[sup]7[/sup] de tijd 90.699264 dagen is (bij de snelheid van .1ms/combinatie)
Zoals je zit is dit dus exponentieel. Dit is ook logisch, want de formule is exponentieel.
Klinkt ingewikkeld allemaal...
Ik kan je nauwelijks volgens... wiskunde is al weer even geleden :)
Maar wat ik net vroeg... gebruikersnaam en wachtwoord moeten 6 tekens zijn (lengte) en mogen alleen letters (ook hoofdletters) en cijfers bevatten. Als de hacker niks weet (dus geen gebruikersnaam en geen wachtwoord) hoe lang zou het dan duren om alle mogelijke combinaties te testen?
Nu moet je er rekening mee houden dat veel mensen dus een ding, een woord of een naam gebruiken. Hierdoor zit de letter e dus vaker in het password en minder vaak de letter q. Bij een compleet willekeurig wachtwoord heb je dit probleem niet en daarom zijn deze sterker, omdat een hacker natuurlijk eerst zonder q probeert en al helemaal zonder 2 q's...
Dit scheelt natuurlijk ook in de tijd, omdat de wachtwoorden met de meeste kans voorop liggen.
Hiervoor is echter geen tijdsberekening te maken, omdat dit natuurlijk van techniek en instellingen af hangt. Instellingen zoals welke letters vaker voorkomen in de nederlandse/engelse taal en in welke volgorde ze verschijnen. Dit is natuurlijk allemaal te analyseren, maar hier besteed ik liever mijn vrijdag niet aan.
[size=xsmall]Toevoeging op 19/08/2011 14:41:36:[/size]
Dit staat gelijk aan 65,7410134 dagen, bij een snelheid van .1ms
Ik weet niet of de .1ms correct is. Dit is een schatting. Het kan meer zijn, het kan minder zijn. Als het .2ms zou duren, dan is de tijd verdubbeld en word het 131,482027 dagen.
Zo kun je de tijd dus aanpassen aan de werkelijke tijd (als iemand deze heeft gevonden). Dit doe je dus: (Jouw tijd in ms / 0.1) * de gegeven tijd (in dit geval 65,7410134 dagen)
[size=xsmall]Toevoeging op 19/08/2011 14:47:32:[/size]
Je moet ook nog meerekenen dat als je het wachtwoord zoekt, dat deze - volgens de verwachte waarde - middenin zit. De ene keer zit deze aan het begin en de andere keer aan het eind. Gemiddeld ben je de maar de helft van de tijd van het zoeken kwijt, als je op zoek gaat naar een wachtwoord i.p.v. voor de lol alle combinaties wilt proberen...
Maar eigenlijk is dus 8 tekens het veiligst (nou ja, 20 is nog veiliger maar dat wil je een gebruiker niet aan doen) en dat je dan alle tekens toestaat. Dat is haast onmogelijk om te kraken...
Ik denk dat die milliseconden niet echt reëel is. Ik denk persoonlijk eerder aan microseconden (Waarschijnlijk nog veel sneller). Dus niet 0.001 maar 0.000001 seconden.
[size=xsmall]Toevoeging op 19/08/2011 16:25:14:[/size]
Ik denk ook inderdaad dat 1ms wat te traag is. Als je gaat kijken naar de snelheid van een processor. 1000Hz zou betekenen 1000 berekeningen / seconde. En 1000Hz = 10^-6 GHz. Een CPU van 1GHz zou dus 1000000000 berekening per seconden halen. In mijn geval, een overgeclockte Inte I7 2600K haalt in turbomodus 4,4GHz, of dus 4400000000 berekeningen / seconde.
Dus ik denk dat het heus wat sneller moet gaan. Tot daar het theoretische.
Als jij nu bv voor je site zegt dat een wachtwoord minimaal 8 tekens moet zijn en maximaal 12, dan klopt de berekening ook al niet meer, wat dus ook weeral minder tijd kost. Verder zijn er weinig sites waarbij je de iets meer "exotische tekens mag gebruiken". Dus ook weeral pak minder mogelijkheden.
Dus toch maar een anti brute force inbouwen :+
[size=xsmall]Toevoeging op 19/08/2011 16:35:06:[/size]
Even terug naar mijn CPU voorbeeldje. Neem nu 8 tekens (gebruikersnaam is geweten), stel dat we SanThe zijn waarde aannemen, 1µs, een botnet van 1000 computers, volgens SanThe is dat dan: Berekende tijdsduur: 0 jaar, 2 dagen, 12 uren, 39 minuten en 0 seconden
En volgens mij is 1µs nog vrij traag...
[size=xsmall]Toevoeging op 19/08/2011 16:37:46:[/size]
En nog een aanvulling!
Voorbeeldje uit de praktijk, een WEP beveiliging hacken van een router. Op mijn laptop neemt dit ongeveer een 5 tal minuten in.(en dat zijn ook 8 tekens fzo?)
@SanThe... wow, thanks voor de tool :D Da's very nice :-)))))
Als ik jouw tool gebruik dan is dit wel heel gaaf om te zien... bij alleen gebruik van letters (kleine letters en hoofdletters):
Gebruikersnaam en wachtwoord allebei lengte 1:
Berekende tijdsduur: 0 jaar, 0 dagen, 0 uren, 0 minuten en 0 seconden
Gebruikersnaam en wachtwoord allebei lengte 2:
Berekende tijdsduur: 0 jaar, 0 dagen, 0 uren, 0 minuten en 7 seconden
Gebruikersnaam en wachtwoord allebei lengte 3:
Berekende tijdsduur: 0 jaar, 0 dagen, 5 uren, 29 minuten en 30 seconden
Gebruikersnaam en wachtwoord allebei lengte 4:
Berekende tijdsduur: 1 jaar, 253 dagen, 17 uren, 55 minuten en 28 seconden
Gebruikersnaam en wachtwoord allebei lengte 8:
Berekende tijdsduur: 90.624.764.543.918 jaar, 24 dagen, 0 uren, 0 minuten en 0 seconden
Vooral gaaf om het verschil tussen lengte 3 en lengte 4 te zien... WOW, ik kan het haast niet geloven! Met 3 tekens in 5,5 uur gekraakt... en met 4 tekens bijna 1 driekwart jaar bezig!!! Ogelofelijk wat een verschil! En dan te bedenken dat dit maar met 4 tekens is en met alleen maar letters!
En dan die laatste met lengte 8.... hoe groot is dat wel niet? 90 biljoen?????? Wow... :-)
[size=xsmall]Toevoeging op 19/08/2011 17:15:11:[/size]
In werkelijkheid gaat het verschil kleiner zijn, want volgens mij is één 1µs nog vrij ruim. Reken ook dat wanneer ik jouw account zou willen hacken dat niet met één computer ga doen. Ik ga dat ofwel met meerdere computers doen / servers / of een botnetje? Dus dat is allemaal nog vrij relatief.
Gewoon een stevig wachtwoord verplichten, anti brute force systeem maken, en als admin je wachtwoord zelf is veranderen...
Oké, thanks voor de tip :)
Wat is precies een botnetje?
Zo'n anti bruteforce systeem... waar bestaat dat eigenlijk uit?
Ik kan me voorstellen dat je een bepaald IP blockt na 3 foutieve inlogpogingen... maar is het bijvoorbeeld een idee om als er bijvoorbeeld in 5 seconden meer dan 3 foutieve pogingen worden gedaan, om dan alle inlogs gedurende 10 minuten niet meer te verwerken of zoiets? ...alleen kan dan niemand meer inloggen :-s