Wachtwoorden, we hebben er allemaal mee te maken. Maar wanneer is een wachtwoord eigenlijk veilig? En hoe kun je er voor zorgen dat je het iemand zo lastig mogelijk maakt om hem te achterhalen? We kijken daarom naar de belangrijke rol van cryptografie en geven je graag een aantal vuistregels voor sterke, veilige wachtwoorden!
Wat is de bedreiging?
Voordat we naar de veiligheid van wachtwoorden kunnen kijken, moeten we eerst bepalen waar we ons precies tegen willen beveiligen. In dit artikel ga ik ervan uit dat een aanval online plaatsvindt. Het scenario waar we in geïnteresseerd zijn, is er een waarin een ‘cracker’, een hacker met kwade intenties, probeert ons wachtwoord te achterhalen.
Tegenwoordig is er allerlei informatie over mensen te vinden op het internet. Social media staan bomvol met persoonlijke details, zoals geboortedatums en adresgegevens. De informatie kan ook uitlekken door hacks van andere websites. Denk aan de Yahoo! hack, waarbij gegevens van honderden miljoenen gebruikers gelekt zijn. Aangezien deze gegevens gemakkelijk te vinden zijn, wil je voorkomen dat ze hints bevatten over je wachtwoorden. Gebruik dus niet jouw geboortedatum in je wachtwoord.
Als jij je ergens online registreert, dan ben je voor de beveiliging van je gegevens afhankelijk van die website. Wordt daar een fout gemaakt of gaat men onzorgvuldig met de gegevens om, dan kan het zijn dat je wachtwoord op straat komt te liggen. Je kunt hier niet zo gek veel tegen doen, omdat van buitenaf vaak niet zichtbaar is of de beveiliging op orde is. Wat je wel kunt doen, is voor iedere website een uniek wachtwoord gebruiken. Zo zorg je ervoor dat je inloggegevens in ieder geval niet werken op andere websites die je bezoekt, mocht de website gehackt worden.
Eén optie is er altijd voor crackers: gewoon proberen. Hoe goed de beveiliging ook is, je kunt natuurlijk altijd inlogpogingen doen en op die manier verschillende wachtwoorden proberen. Als we écht een veilig wachtwoord willen, dan moeten we hier ook tegen opgewassen zijn.
Waar voldoet een veilig wachtwoord aan?
Als we kijken naar de bedreigingen, dan komen we tot een concreet lijstje van eisen waar een veilig wachtwoord aan moet voldoen:
- een uitgelekt wachtwoord biedt geen toegang tot andere websites;
- het wachtwoord is niet gebaseerd op persoonsgegevens;
- het wachtwoord is niet in een realistisch tijdsbestek te raden.
Aan de eerste eis is gemakkelijk te voldoen. Door voor iedere website een uniek wachtwoord te gebruiken, voorkom je dat een uitgelekt wachtwoord tot grotere problemen leidt. En dus ook dat je bij iedere dienst nieuwe wachtwoorden moet gaan instellen.
Door sterke willekeurige wachtwoorden te gebruiken, kunnen we in één keer aan de andere twee eisen voldoen. We gaan er dan wel vanuit dat de website de wachtwoorden veilig opslaat, met behulp van cryptografie. Zo moet een cracker veel moeite doen om ze te achterhalen. De gebruikte cryptografie moet eerst gekraakt worden, anders zijn de wachtwoorden niet bruikbaar. Zonder cryptografie heeft een goed wachtwoord weinig zin.
Wachtwoorden kraken
Er zijn verschillende manieren voor een cracker om wachtwoorden te achterhalen. De simpelste manier is om herhaaldelijk op de betreffende website proberen in te loggen. Dit is echter onpraktisch, omdat de website hier eenvoudig tegen kan worden beveiligd. Bovendien is het enorm traag. Daarom gaat de voorkeur vaak uit naar andere methoden.
In de volgende discussie ga ik van het ergste scenario uit. Een cracker heeft de complete database met gebruikersnamen en wachtwoorden gestolen, maar de wachtwoorden zijn wel veilig opgeslagen. Daardoor zijn ze niet direct leesbaar en zal de cracker alsnog moeite moeten doen om de daadwerkelijke wachtwoorden te achterhalen.
Het eerst wat vaak geprobeerd wordt, is om veelgebruikte wachtwoorden zoals ‘password’ te gebruiken. Als dat niet werkt, dan worden vaak typische ‘woordenboekwoorden’ geprobeerd. Als ook dat niet lukt én de aanvaller beschikt over persoonlijke details, dan is inzet daarvan ook een optie. Denk bijvoorbeeld aan de geboortedatum van jezelf, je partner of je kinderen.
Echter, de gemakkelijkste optie is om alle mogelijkheden te proberen. Dit heet een ‘brute force aanval’. Afhankelijk van hoe lang een wachtwoord is, kan dit erg lang duren. Zelfs zo lang, dat het niet realistisch is dat het wachtwoord ooit achterhaald wordt. Dit is eigenlijk precies wat je wilt: een wachtwoord dat zo onvoorspelbaar en ingewikkeld is dat het niet te raden valt. Dat krijg je voor elkaar door een uniek én sterk wachtwoord te gebruiken. Hoe sterk? Daar gaan we nu naar kijken!
Entropie
Bijna alle websites hanteren andere eisen aan wachtwoorden. Sommige websites dwingen je om een aantal leestekens en hoofdletters te mengen. Andere websites hanteren enkel een minimumlengte. De uiteenlopende eisen maken het lastig om wachtwoorden te vergelijken. Gelukkig is hier een handige methode voor, namelijk entropie.
Entropie is een begrip afkomstig uit de natuurkunde. In die context is entropie een maat voor chaos. Hoe hoger de entropie, hoe minder organisatie er is. Dit begrip kunnen we ook op wachtwoorden toepassen. Entropie betekent dan het totaal aantal wachtwoorden dat mogelijk is.
Stel, een website accepteert wachtwoorden van vier tekens, maar je kunt alleen hoofdletters gebruiken. Je kunt dan voor elke positie uit 26 tekens kiezen. Er zijn hierdoor 26 x 26 x 26 x 26 = 264 = 456.976 mogelijkheden. Oftewel, de entropie van een dergelijk wachtwoord is 456.976.
Logaritmes en bits
Deze getallen worden, zoals je hierboven kunt zien, erg snel erg groot. Daarom wordt de entropie van wachtwoorden vaak in bits uitgedrukt. De entropie in bits bereken je door de logaritme met grondtal 2 van het aantal wachtwoorden te nemen: log2(456.976) = 18 bits. In dit geval ronden we naar beneden af, omdat het beter is om de veiligheid iets lager in te schatten dan hij daadwerkelijk is.
Door de logaritme te nemen, krijgen we ook een andere mooie eigenschap: we hoeven geen machtsverheffing meer te doen! We kunnen de lengte van het wachtwoorden vermenigvuldigen met het aantal tekens dat mogelijk is voor elke positie (het alfabet). We krijgen dan de entropie in bits.
In formulevorm wordt dit: Entropie = c * log2(N). Hierbij is ‘c’ het aantal tekens in het wachtwoord en ‘N’ de lengte van het alfabet. In het eerdergenoemde voorbeeld hebben we een wachtwoord van 4 tekens en een alfabet van 26 tekens. Volgens de formule komt dat afgerond op 19 bits uit (entropie = 4 * log2(26) = 18.8).
Entropie per positie
Natuurlijk is het niet handig om elke keer die entropie per positie uit te rekenen. Daarom heb ik hier een tabel van gemaakt.
Wat hier misschien opvalt, is dat het vergroten van het alfabet maar weinig impact heeft op de entropie. Als je van alleen hoofdletters (26 tekens) naar hoofdletters én kleine letters gaat (52 tekens), dan gaat de entropie per positie slechts met één omhoog!
Hieruit kunnen we opmaken dat het veel handiger is om de lengte van het wachtwoord te vergroten. Om een wachtwoord veilig te maken, moet het dus lang genoeg zijn. Alleen, wat is lang genoeg? Daar gaan we nu naar kijken.
Sterke wachtwoorden
Hoeveel entropie genoeg is, is afhankelijk van de manier waarop de wachtwoorden opgeslagen zijn. We hebben geen controle over hoe websites van derden dat doen, daarom kun je beter een slag om de arm houden en een lang wachtwoord kiezen.
Als de wachtwoorden goed opgeslagen worden, dan betekent dit onder andere dat het relatief lang duurt om te controleren of een wachtwoord correct is ingevoerd. Je mag er van uitgaan dat één poging minstens 10 milliseconden in beslag neemt. Hoeveel pogingen moet je doen om een redelijke kans te hebben het goede wachtwoord te vinden? Om 50% kans te maken, moet je gemiddeld 50% van alle wachtwoorden proberen.
Stel, je hebt een wachtwoord met een entropie van 48 bits. Om 50% kans te maken om het juiste wachtwoord te vinden, moeten we de helft van de mogelijkheden proberen. In dit geval zijn dat 2ˆ47 = 140.737.488.355.328. Dat zijn er vrij veel, maar hoe lang duurt dat? Met de eerder genoemde 10 milliseconden zou dat meer dan 400 eeuw duren!
Benodigde tijd om een wachtwoord te achterhalen
In de tabel hieronder staat voor een aantal entropiewaarden hoe lang het ongeveer zou duren om het wachtwoord te achterhalen, uitgaande van diezelfde 10ms. Wederom zien we dat het snel toeneemt. Merk op dat de eerste kolom de entropie is en niet per se de lengte van het wachtwoord.
Laten we naar een voorbeeld kijken. Je wilt een wachtwoord dat minstens 240 dagen kost om te achterhalen. Dat betekent een entropie van 32 bits. Het is je toegestaan om hoofdletters, kleine letters en leestekens te gebruiken. Volgens de eerste tabel is dat 5 + 3 = 8 bits entropie per teken. In dit geval moet het wachtwoord dus 32 / 8 = 4 tekens lang zijn.
Er zit echter nog een addertje onder het gras. De tabel gaat er van uit dat de aanvaller één computer gebruikt om het wachtwoord te kraken. Dat zal in de meeste gevallen niet zo zijn, er kan in principe een heel datacenter met duizenden computers ingezet worden. De enige beperking is geld. Om veilig te zijn, is het beter om voor 48 bits entropie te kiezen. In ons voorbeeld hebben we dan een wachtwoord van 48 / 8 = 6 tekens nodig.
Vuistregels voor sterke wachtwoorden
We hebben nu genoeg informatie om een paar regels op te stellen voor wachtwoorden. Let wel, dit gaat er vanuit dat de wachtwoorden veilig opgeslagen worden. Als dat niet het geval is, dan is het nog steeds verstandig deze regels in acht te nemen, maar dan kloppen de bovengenoemde tijden niet meer. Als je deze checklist aanhoudt, dan doe je er in principe alles aan om je gegevens op internet veilig te houden:
- kies een willekeurig wachtwoord;
- gebruik voor iedere website een uniek wachtwoord;
- kies een wachtwoord met 48 bits of meer entropie;
- over het algemeen is acht tekens meer dan genoeg;
- wil je meer entropie? Maak je wachtwoord langer!
Je bent echter wel afhankelijk van de eigenaar van de website. Als die niet zorgvuldig te werk gaat, dan heeft het niet echt zin om een goed wachtwoord te kiezen. Wat wel heel belangrijk is, zeker in die gevallen, is om wachtwoorden niet te hergebruiken. Door voor elke website een uniek wachtwoord te gebruiken, voorkom je dat crackers je wachtwoord stelen van een slecht beveiligde website en vervolgens bij al je accounts kunnen.
Password managers
Als je voor elke website een uniek én sterk wachtwoord wilt gebruiken, dan wordt het lastig om die allemaal te onthouden. Er zijn verschillende oplossingen voor dit probleem. Een goede manier om hiermee om te gaan is om een ‘password manager’ te gebruiken. Dit is software, waarin je gebruikersnamen en wachtwoorden kunt opslaan
De manager gebruikt encryptie om de gegevens veilig te houden. Je hebt één sterk wachtwoord nodig om het te ontgrendelen, daarna kan de manager automatisch gebruikersnamen en wachtwoorden voor je invullen op inlogformulieren. Voorbeelden van veelgebruikte managers zijn LastPass, 1Password en KeePass.
Is een passwordmanager te vertrouwen? Dat is een goede vraag. Als je er één gebruikt, dan stop je wel al je eieren in hetzelfde mandje. Als de encryptie van de password manager gekraakt wordt, dan ben je in één keer al je gegevens kwijt. Of het voor jou de beste oplossing is, kun je daarom alleen zelf beslissen. Voor mij persoonlijk wegen de voordelen ruimschoots tegen de nadelen op.
Tot slot
Hopelijk heb je zo meer inzicht gekregen in de rol van cryptografie bij het veilig opslaan van wachtwoorden. Je kunt niet op alle factoren invloed uitoefenen, maar voor de veiligheid van je data is het erg belangrijk om dat absoluut te doen voor de factoren waar dat wél kan. Denk daarom nog eens terug aan deze vuistregels als je een nieuw wachtwoord moet verzinnen 🙂
Webhosting + Domein + Gratis SSL →
P.S. Blijf op de hoogte en volg ons via Facebook, X, Instagram, e-mail en RSS. Heb je vragen, tips of opmerkingen? Laat het achter als reactie. Vond je het artikel nuttig? Deel het dan met anderen!
Mooie uitleg van entropie. Waar ik het spoor echter bijster raak is als je bij “entropie per positie” schrijft dat bij een wachtwoord dat uit hoofdletters én cijfers bestaat (dus 26 + 10 = 36 tekens) en dat een lengte van 5 heeft, dit een entropie per positie van resp. 4 + 3 = &7 heeft, maal 5 (lengte) geeft 35.
Maar volgens de formule c*log2(N) –> 5*log2(36) zijn dat 60.466.176 mogelijkheden en een entropie van 35 (en niet 35 zoals berekend per positie).
Wat is nu dan de juiste entropie van het wachtwoord?
Groet,
Brenda Verhulst
Bedankt voor je feedback, Brenda! We hebben het nagekeken en snappen waar de verwarring vandaan komt. We hebben daarom de afbeelding met de tabel erop en de tekst geüpdatet.
Goed verhaal en duidelijke conclusie. Ik weet wat ik moet doen. Alleen het verhaal over de entropie bevat wel wat schoonheidsfoutjes. Bijvoorbeeld de regel “247 = 140.737.488.355.328”. Bedoeld wordt hier 2^47 (2 tot de macht 47). Dan meteen maar even uitleggen waar de 47 vandaan komt. Verderop met “minstens 240 jaar” wordt 240 dagen bedoeld. En de entropie van hoofdletters, kleine letters én 10 speciale tekens is 6 (5.95 onafgerond) en niet 8. Deze waarde zou ook in de eerste tabel kunnen staan. Het aantal dagen in de 2e tabel is ook gebaseerd op de 50% regel maar dat staat er niet bij. Het is ook maar de vraag of dat een goede aanname is; een cracker die op de helft van de kraaktijd zit gaat echt niet stoppen want hij (of zij) weet zeker dat hij na de 2e helft op 100% zit.
Desondanks mooi om dit gelezen te hebben! Nogmaals bedankt.