Hallo mensen,

Lang geleden heb ik ook ooit zoiets gevraagd, en toen had SanThe er volgens mij een tooltje voor gemaakt, maar ik kan het helaas niet meer terugvinden.

Anyhow ... mijn vraag is de volgende. Ik ben benieuwd hoeveel tekens er nodig zijn voordat een wachtwoord of (encryptie)sleutel (relatief) veilig is, waarbij ik de veiligheid in dit geval enkel laat afhangen van de tijd die het kost om een wachtwoord of sleutel te "raden". Tegenwoordig zijn computers veel sneller dan vroeger, speelt dat nog een rol?

Stel je encrypt een bestand met een sleutel. De (zelf te verzinnen) encryptiesleutel moet minimaal 8 en maximaal 20 tekens zijn. Stel nu dat Pietje een sleutel van 8 tekens invoert, en Jantje een sleutel van 20 tekens. Een kwaadwillende hacker weet ook dat de sleutel minimaal 8 en maximaal 20 tekens is. Hij hoeft dus niet te zoeken naar sleutels kleiner dan 8 of groter dan 20 tekens. Hoe lang is hij dan bezig om de sleutel van Pietje (8 tekens) en van Jantje (20 tekens) te vinden? Waarbij de hacker dus niet weet uit hoeveel tekens beide sleutels bestaan. Ik ga er vanuit dat ie eerst alle combinaties met 8 tekens zal proberen, en dat ie het wachtwoord van Pietje dus eerder te pakken zal hebben dan het wachtwoord van Jantje.

Oh ja, alle tekens op het toetsenbord kunnen gebruikt worden, dus (hoofd)letters, getallen en vreemde tekens als ! @ # $ enzovoorts.

Wie kan en vooral DURFT hier iets over te zeggen? Ik ben erg benieuwd namelijk! Zelf heb ik geen idee :)
Via het toetsenbord kun je 52 letters, 10 cijfers en 32 rare tekens (op een eenvoudige manier) invoeren. Laten we dus uitgaan van 94 mogelijke tekens voor een wachtwoord, maar als je nog raardere tekens gaat gebruiken (letters met accentjes en dergelijke) dan wordt het nog gekker.

Voor een wachtwoord met exact 8 tekens zijn dan 94^8 = 6095689385410816 combinaties mogelijk, voor een wachtwoord met exact 20 tekens zijn dat 94^20 = 2901062411314618233730627546741369470976 combinaties.

Stel dat je een miljoen combinaties per seconde kunt checken. Om alle mogelijkheden te proberen ben je dan voor een wachtwoord met 8 tekens 6095689385 seconden kwijt, oftewel 70552 dagen, oftewel ruim 193 jaar.

Heb je een wachtwoord van 20 tekens, dan duurt ben je met het checken van alle mogelijkheden 2901062411314618233730627546741369 seconden kwijt, oftewel 33577111242067340668178559568 dagen, oftewel ruim 91929120443716196216779081 jaar.

Statistisch gezien zul je slechts de helft van alle combinaties hoeven te proberen, maar dat is dan evengoed bijna 46 triljard jaar.

[size=xsmall]Toevoeging op 13/04/2015 19:02:14:[/size]

Stel nu dat je er een botnetje van maakt dat 1 miljard computers infecteert (die elk 1 miljoen combinaties per seconde kunnen checken).

Een wachtwoord van 8 tekens is dan in iets meer dan 6 seconden gekraakt (worst case). Voor een wachtwoord van 20 tekens heb je in het slechtste geval nog steeds 91929120443716196 (bijna 92 biljoen) jaar nodig.
Thanks Willem :-)

Dat zijn interessante berekeningen. Je kunt dus eigenlijk zeggen dat een wachtwoord van 8 tekens al wel veilig is, maar het kan geen kwaad om er nog een paar tekens bij te stoppen dus :)

Met zo'n botnet wordt het wel even een ander verhaal, maar ja ... ik acht de kans dat iemand een botnet maakt om mijn wachtwoord te kraken niet zo heel groot :-)

Overigens ben ik wel benieuwd. Een wachtwoord van 8 tekens doe je dus 193 jaar over, maar zou er ooit een tijd komen, bijv. over 10 jaar, dat computers dusdanig snel zijn dat het ineens minutenwerk wordt, of zijn zulke snelheden voor een enkele processor onhaalbaar?
Bij bovenstaande voorbeelden ben ik uitgegaan van een vaste lengte. Voor de totale tijdsduur van de scan maakt het ongeveer een procent uit of je wachtwoord precies 20 of maximaal 20 tekens is.

Als het wachtwoord elke lengte tussen 8 en 20 tekens kan zijn, heb je 2932256630791119505061064336537627364096 combinaties, wat bij een miljoen combinaties per seconde uitkomt op ongeveer 92917605609777660692228316 jaar. Niet echt een noemenswaardig verschil dus. ;-)

> of zijn zulke snelheden voor een enkele processor onhaalbaar?

Nou, het schijnt dat een kwantumcomputer wel raad weet met dat soort wachtwoorden. Tegen de tijd dat die computers gemeengoed gaan worden, zullen we moeten gaan nadenken over een andere manier van beveiligen.
>> Tegen de tijd dat die computers gemeengoed gaan worden, zullen we moeten gaan nadenken over een andere manier van beveiligen.

Maar praten we dan over tientallen jaren denk je? Of zit over 5 jaar zo'n chip al in iedere smartphone? Ik ben overigens wel benieuwd wat voor andere manieren er dan overblijven om te beveiligen. Pasjes / fysieke kenmerken / onderhuidse chips ... het lijkt me allemaal niet echt ideaal. En het nadeel blijft dat het allemaal digitaal is, en dat het dus op de een of andere manier weer te kraken valt als de computers sneller worden. Best heel irritant eigenlijk.
Het gaat niet om het wachtwoord (of de wachtwoordhash) op zich, maar om het systeem als geheel.
Als je nú een hash van een wachtwoord opslaat, weet je inderdaad niet of die 180 jaar of maar 90 dagen meegaat. Je systeem moet dus ingesteld zijn op variabele wachtwoordhashes én wachtwoorden met een variabele uiterste houdbaarheidsdatum.
>> Je systeem moet dus ingesteld zijn op variabele wachtwoordhashes

Je bedoelt dan variabel in de zin van een variabele lengte?
> Maar praten we dan over tientallen jaren denk je? Of zit over 5 jaar zo'n chip al in iedere smartphone?

Tsja, moeilijk te zeggen. De ontwikkeling staat nog in de kinderschoenen, maar je weet nooit wanneer er een groeispurt komt.

> Ik ben overigens wel benieuwd wat voor andere manieren er dan overblijven om te beveiligen.

Nou, om te beginnen zullen de password-hashes moeten worden gegenereerd met andere algoritmes. Momenteel is de encryptie gebaseerd op grote priemgetallen, maar dat moet je opzij schuiven. Er zijn algoritmes die wél bestand zijn tegen een aanval door kwantumcomputers.

Verder zou je naar een meerstaps-autorisatiemechanisme moeten overstappen, zodat je ook niet zomaar iets kan wanneer je het wachtwoord hebt. Dus bijvoorbeeld na het invoeren van je wachtwoord een code per SMS/IM sturen die je moet invoeren om het inlogproces af te ronden.
>> Verder zou je naar een meerstaps-autorisatiemechanisme moeten overstappen ...

Daar zat ik dus ook inderdaad aan te denken, maar dat wordt toch wel iets raars dan. Want dat wordt dus een extra stap waarop de luie consument niet echt zit te wachten. Zou je het nog zo kunnen maken dat je gewoon in plaats van een wachtwoord je e-mailadres moet invullen, en dat je dan een wachtwoord krijgt toegemaild wat maar een minuut geldig is of zo? Zou dat een oplossing zijn? Dan hoef je ook geen wachtwoord meer te onthouden ...
Waarom heeft de lengte enige invloed, aannemende dat ze gehashed worden en deze hashes dezelfde lengte hebben (of in elk geval, geen lengte die afhangt van de input)?
De hash is als het goed is uniek. Ieder wachtwoord heeft een unieke hash. Als je een wachtwoord van maar 2 tekens hebt, dan heb je veel minder mogelijkheden dan wanneer het wachtwoord bijvoorbeeld 10 tekens heeft. Een wachtwoord van 2 tekens heb je dus veel sneller "geraden" dan een wachtwoord van 10 tekens.

Reageren