wachtwoord combinaties
Pagina: « vorige 1 2 3 volgende »
http://www.nieuwsblad.be/article/detail.aspx?articleid=G0J3E5PVC&utm_source=nieuwsblad&utm_medium=newsletter&utm_campaign=klik-en-win (met dank aan onze vrienden van sitemasters :p)
Toevallig dat dit artikel vandaag verscheen: Maarten Buijs op 18/08/2011 18:54:20:
Waarop SanThe laat weten dat dat niet goed is. Dus vandaar mijn vraag hoe het wél moet.
Toevoeging op 18/08/2011 19:11:31:
Wouter J op 18/08/2011 19:04:56:
Toevallig dat dit artikel vandaag verscheen: http://www.nieuwsblad.be/article/detail.aspx?articleid=G0J3E5PVC&utm_source=nieuwsblad&utm_medium=newsletter&utm_campaign=klik-en-win (met dank aan onze vrienden van sitemasters :p)
Ik geloof niet dat we bang hoeven te zijn:
"Als je duizend miljard computers tegelijk aan het werk zou kunnen zetten, die elk een miljard sleutels per seconde zouden kunnen uitproberen (duizend keer meer dan een normale hedendaagse computer), dan werd tot nu toe gedacht dat het acht miljard jaar zou duren om een typische AES-sleutel te kraken.
Dankzij de slimme vondst van Bogdanov blijkt nu dat dezelfde computers het in twee miljard jaar zouden kunnen."
Ozzie PHP op 18/08/2011 19:09:11:
Waarop SanThe laat weten dat dat niet goed is. Dus vandaar mijn vraag hoe het wél moet.
Als je goed kijkt zit er een klein verschil voor de mensheid, maar een groot verschil voor de computer in:
Ozzie PHP op 18/08/2011 19:09:11:
Ik geloof niet dat we bang hoeven te zijn:
Dat zou ik ook niet doen, maar zo lang kunnen meerdere computers dus bezig zijn om een wachtwoord te kraken. 2 * 2 = 4 miljard jaar voor gebruikersnaam en wachtwoord. Meteen antwoord op je vraag.
Ozzie PHP op 18/08/2011 19:09:11:
Waarop SanThe laat weten dat dat niet goed is. Dus vandaar mijn vraag hoe het wél moet.
Goed kijken Ozzie: $i > $piece; is niet hetzelfde als $i <= $piece;
"Dat zou ik ook niet doen, maar zo lang kunnen meerdere computers dus bezig zijn om een wachtwoord te kraken. 2 * 2 = 4 miljard jaar voor gebruikersnaam en wachtwoord. Meteen antwoord op je vraag."
Dat niet... want dit ging over AES beveiliging... da's weer wat anders :)
Ozzie PHP op 18/08/2011 20:21:35:
Ah, oké... dat had ik niet gezien :)
"Dat zou ik ook niet doen, maar zo lang kunnen meerdere computers dus bezig zijn om een wachtwoord te kraken. 2 * 2 = 4 miljard jaar voor gebruikersnaam en wachtwoord. Meteen antwoord op je vraag."
Dat niet... want dit ging over AES beveiliging... da's weer wat anders :)
"Dat zou ik ook niet doen, maar zo lang kunnen meerdere computers dus bezig zijn om een wachtwoord te kraken. 2 * 2 = 4 miljard jaar voor gebruikersnaam en wachtwoord. Meteen antwoord op je vraag."
Dat niet... want dit ging over AES beveiliging... da's weer wat anders :)
Sinds wanneer is 2 * 2 gelijk aan 4 miljard? 2 * 2 = 4 != 2*2 = 4 000 000 000
Dus als je wilt weten hoe lang het zou duren om een wachtwoord EN gebruikersnaam te kraken is dat 2 miljard * 2 miljard = 2 miljard ^ 2 = 4.0 × 10^18. Dus een 4 met 18 nullen i.p.v. 9.
Dit is een groot verschil. (1 miljard keer zo groot...)
Dus dat ziet er zo uit:
Ik neem aan dat tegen die tijd er wel 'veiligere' cryptografische manieren gevonden zijn...
Gewijzigd op 19/08/2011 10:38:01 door Mark L
Ah oké, maar dit gaat nog steeds over AES beveiliging en heeft niks met mijn originele vraag te maken ;)
gebruikersnaam en wachtwoord zijn allebei X tekens, bestaande uit Y tekens.
De formule om het aantal combinaties uit te rekenen is, met C als het aantal combinaties.
C = YX
Cuser = YuserXuser
Cpass = YpassXpass
Totale Combinaties = Cuser*Cpass = YuserXuser * YpassXpass
Code (php)
1
2
3
4
2
3
4
Letters/cijfers (zonder hoofdletter): 36
Letters/cijfers (met hoofdletters): 62
Aantal ASCII karakters: 256
Aantal Unicode karakters: 100000 (en meer...)
Letters/cijfers (met hoofdletters): 62
Aantal ASCII karakters: 256
Aantal Unicode karakters: 100000 (en meer...)
gebruikersnaam en wachtwoord zijn alleen letters (zonder hoofdletter) en cijfers: 4, 6, 8 tekens
aantal mogelijke combinaties:
4: 364 * 364 = 2 821 109 907 456
6: 366 * 366 = 4.73838134 × 1018
8: 368 * 368 = 7.95866111 × 1024
computer tijdsduur om alle combinaties te berekenen:
Aangenomen dat een computer er 1/10 milliseconde erover doet (dus 0.0001sec) om een combinatie te proberen, dan zal hij er dus 8.93955785 jaar over doen om alleen maar alle combinaties user/pass uit te rekenen van lengte 4.
Nu heb ik geen idee hoe snel een computer dat werkelijk doet, maar .1 milliseconde lijkt me redelijk. Misschien zelfs te snel.
De rest ga ik voor de fun dus NIET uitrekenen.
gebruikersnaam en wachtwoord zijn alle ASCII tekens: 4, 6, 8 tekens
aantal mogelijke combinaties:
4: 2564 * 2564 = 1.84467441 × 1019
6: 2566 * 2566 = 7.92281625 × 1028
8: 2568 * 2568 = 3.40282367 × 1038
computer tijdsduur om alle combinaties te berekenen:
De laatste zou er 1.07828975 × 1027 jaar over doen bij een snelheid van .1ms/combinatie. Dit ziet er zo uit:
Dit is dus - zoals je kunt zien - meer dan een quadriljard jaar!
Het leuke is: het natuurlijke logaritme van dit immense getal is slechts 62.2451737. Dit betekend dat we het ook kunnen schrijven als e62.2451737
Gewijzigd op 19/08/2011 13:59:21 door Mark L
Maar weet je zeker dat die berekening met een gebruikersnaam en wachtwoord met lengte 4 en alleen letters en cijfers klopt? Daar is ie dus al ruim 8 jaar mee bezig? Wow... da's wel erg veel!!! Moet je inderdaad nagaan als je 6 of 8 tekens gebruikt... Dat is dus eigenlijk gewoon niet te kraken dan.
Je moet alleen wel nagaan dat een hacker de zekerheid van de gebruikersnaam neemt. Want als het gebruikersnaam bekend is, dan hoef je slechts Cpass = YpassXpass = 1 679 616 combinaties te doen.
Dit komt neer op 2.79936 minuten bij een snelheid van .1ms
Maar bij een wachtwoord van 8 tekens is dit WEL 8.93955785 jaar.
Want 364 * 364 = 368
Gewijzigd op 19/08/2011 14:06:51 door Mark L
(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?)
Dit komt dus overeen als één reeks van 8 tekens.
Het punt is: 368 is 1 679 616 maal zo groot als 364 (want 364 = 1 679 616 en 364 * 364 = 368)
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*364 = 436 700 160
De tijd dat dit kost is dan 12.13056 uur, bij een snelheid van .1ms per combinatie
Toevoeging op 19/08/2011 14:24:01:
Omdat ik weet dat dit verschil nogal groot lijkt, kan ik je vertellen dat bij 367 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.
Gewijzigd op 19/08/2011 14:27:31 door Mark L
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?
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.
Toevoeging op 19/08/2011 14:41:36:
Ah, met hoofdletters meegerekend: 626 = 56 800 235 584 combinaties.
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)
Toevoeging op 19/08/2011 14:47:32:
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...
Gewijzigd op 19/08/2011 14:43:49 door Mark L
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...
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 :+
Toevoeging op 19/08/2011 16:35:06:
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...
Toevoeging op 19/08/2011 16:37:46:
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... :-)
Toevoeging op 19/08/2011 17:15:11:
Echt een vette tool SanThe :D
Gewoon een stevig wachtwoord verplichten, anti brute force systeem maken, en als admin je wachtwoord zelf is veranderen...
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