De zin en onzin van een wachtwoordbeleid

We hebben er allemaal wel is mee te maken gehad, het wachtwoordbeleid van een website. Overal is het beleid anders, te makkelijk, te lastig, te onduidelijk, je kan nooit het wachtwoord in voeren wat je zou willen invoeren.

In deze blog post wordt het wachtwoordbeleid onder de loep genomen dat kan gelden voor een registratiesysteem van een website. Het uiteindelijke doel is een veilig en gebruiksvriendelijk wachtwoordbeleid samen te kunnen stellen dat toch enige vrijheid geeft aan de gebruiker. Maar allereerst is het belangrijk om te weten wat een veilig wachtwoord precies is.

Wat is een veilig wachtwoord?

Een veilig wachtwoord is een wachtwoord dat moeilijk te raden is door zowel een mens als een computer. De mens zal wachtwoorden proberen te raden door bijvoorbeeld namen, geboortedata, huisdieren, woonplaats, leeftijden of combinaties daarvan uit te proberen. Een computer daarentegen gebruikt een lijst van veelvoorkomende wachtwoorden of probeert domweg alle mogelijke combinaties uit, tot het wachtwoord gevonden is.

Size matters

Het is dus van belang een wachtwoord te kiezen dat lastig te raden is voor de mens en uit verschillende soorten of een aanzienlijk aantal karakters bestaat, zodat er een groot aantal combinaties door de computer geprobeerd moeten worden om het wachtwoord te vinden.

Bijvoorbeeld een wachtwoord:

  • Met alleen maar cijfers (10 verschillende karakters) met een lengte van 5, geeft 105 = 100.000 combinaties.
  • Met alleen kleine letter (26 verschillende karakters) met een lengte van 5, geeft 265 = 11.881.376 combinaties.
  • Met kleine en hoofd letters (26 + 26 = 52 verschillende karakters) met een lengte van 5, geeft 525 = 380.204.032 combinaties.
  • Met kleine en hoofd letters en cijfers (26 + 26  + 10 = 62 verschillende karakters) met een lengte van 5, geeft 625 = 916.132.832 combinaties.
  • Met alleen kleine letters (26 verschillende karakters) met een lengte van 10, geeft 2610 =  141.167.095.653.376 combinaties.
  • Met kleine letters en hoofd letters (26 + 26 = 52 verschillende karakters) met een lengte van 10, geeft 5210 =  144.555.105.949.057.024 combinaties.

Zoals je ziet geeft niet alleen het gebruik van veel verschillende soorten karakters een groot aantal combinaties, maar nog veel belangrijker is de lengte van het wachtwoord.

Een leuke manier om te om te achterhalen hoe lang het duurt om je wachtwoord te kraken is door deze in te voeren op de site: howsecureismypassword.net, de duur geeft een indicatie hoe lang in het meest ideale geval een desktop pc er over doet om het wachtwoord te kraken1.

Bijvoorbeeld het wachtwoord:

  • “67890” geeft 0,01 seconde.
  • “abcde” geeft 1 seconde.
  • “abcDE” geeft 38 seconden.
  • “abCD12” geeft 1 uur.
  • “abcdefghij” geeft 163 dagen.
  • “abcdeFGHIJ” geeft 458 jaar.

Zoals te verwachten is het aantal combinaties rechtevenredig met de tijd die er nodig is om het wachtwoord te kraken.

Eisen aan wachtwoord niet per definitie veiliger

Het wachtwoordbeleid van registratiesystemen van websites wordt over het algemeen bepaald door de eisen, minimale/maximale lengte en/of een aantal verplichte karakter soorten (kleine-/hoofdletters, cijfers, symbolen). Maar is het verplicht opstellen van deze eisen wel zo gebruiksvriendelijk en per definitie veiliger?

Nee, dat is het niet. Een wachtwoord met alleen hoofd- en kleine letters met een lengte van 10 karakters kan bij de meeste websites niet opgevoerd worden, omdat er bijvoorbeeld een cijfer of symbool vereist is. Maar in de praktijk is zo’n wachtwoord veel veiliger dan een wachtwoord met 5 karakters dat wel aan de eisen voldoet.

Maar waarom wordt er eigenlijk een wachtwoordbeleid toegepast? Is het niet veel gebruiksvriendelijker om een gebruiker niet zelf zijn wachtwoord te laten kiezen?
Gebruiksvriendelijker is het waarschijnlijk wel, maar zonder wachtwoordbeleid kiezen de meeste gebruikers een onveilig wachtwoord. Dit is goed te zien door 2 hacks van vorig jaar. Bij Gawker.com zijn +/- 1 miljoen wachtwoorden buit gemaakt en bij Rockyou.com 32 miljoen wachtwoorden.

Verrassend genoeg is de top 10 van meest gebruikte wachtwoorden nagenoeg hetzelfde:

Gawker.com Rockyou.com
1 123456 123456
2 password 12345
3 12345678 123456789
4 lifehack Password
5 qwerty iloveyou
6 111111 princess
7 monkey rockyou
8 consumer 1234567
9 12345 12345678
10 0 abc123

Hierboven is dus te zien dat het niet toepassen van een goed wachtwoordbeleid leidt tot onveilige wachtwoorden. Gebruikers prefereren een makkelijk wachtwoord vaak boven een veilig wachtwoord.

De mooiste oplossing is een wachtwoordbeleid, waarbij de gebruiker advies krijgt over de veiligheid van het vrij te kiezen wachtwoord, zonder vast te zitten aan eisen met betrekking tot lengte of karaktersoorten.

Enkele praktijkvoorbeelden

Het is interessant om te zien welk wachtwoordbeleid een aantal Nederlandse websites uit de website van het jaar verkiezing 2010 hanteert.

Yunoo.nl

Yunoo is een online huishoudboekje en verkozen tot website van het jaar 2010. Yunoo heeft een eigen registratie- en inlogsysteem:

screenshot.100

Zoals je kan zien worden rechts tips gegeven hoe je een veilig wachtwoord kan samenstellen. ook wordt er aangegeven door middel van tekst of het ingevoerde wachtwoord veilig is.
Maar hoe zit deze check technisch in elkaar? Yunoo maakt gebruik van een puntentelling en die werkt als volgt:

  • Gebruik van één of meerdere kleine letters geeft 1 punt.
  • Gebruik van één of meerdere hoofd letters geeft 5 punten.
  • Gebruik van één of meerder cijfers geeft 5 punten.
  • Gebruik van één of meerdere symbolen2 geeft 5 punten.
  • Gebruik van twee of meerdere symbolen geeft 5 extra punten.
  • Gebruik van zowel kleine- als hoofdletters geeft 2 extra punten.
  • Gebruik van zowel cijfers als niet cijfers geeft 2 extra punten.
  • Gebruik van zowel klein- als hoofdletter, cijfers en symbolen geeft 2 extra punten.

De punten met bijbehorende feedback is:

  • Een punten aantal van <6 geeft “Je wachtwoord is niet veilig genoeg”.
  • Een punten aantal van 6-9 geeft “We raden een veiliger wachtwoord aan”.
  • Een punten aantal van >9 geeft “Dit is een veilig wachtwoord”.

Hieronder het verschil in punten aantal tussen 2 voorbeeld wachtwoorden:

  1. Een wachtwoord als “ab12!” geeft 1+ 5 + 5 + 2 = 13 punten (volgens Yunoo een “veilig wachtwoord”).
  2. Een wachtwoord als “abcdefghij123” geeft 1 + 5 + 2 = 8 punten (volgens Yunoo “We raden een veiliger wachtwoord aan”).

Dit is een beetje krom, want wachtwoord 1 zou binnen 28 seconden3 gekraakt kunnen worden en wachtwoord 2 binnen 540 duizend jaar3. De “foutieve” feedback komt doordat de lengte van het wachtwoord niet wordt meegenomen in de puntentelling. Wel wordt een lengte van minimaal 5 karakters afgedwongen en pas bij een punten aantal van 6 of groter kan worden geregistreerd.

Marktplaats.nl

Marktplaats, de grootste advertentiesite van Nederland, heeft ook een aanmeldpagina. Marktplaats noemt het “Maak wachtwoord aan”. Dit klinkt veel belovend met betrekking tot het wachtwoordbeleid:

screenshot.102

Maar helaas, alleen een minimum van 6 karakters is verplicht. Dit geeft de gebruiker veel vrijheid, maar is weinig sturend in het maken van een veilig wachtwoord.

Nationalevacaturebank.nl

De nationale vacature bank de grootste banensite van Nederland heeft een functie om je aan te melden:

screenshot.103

Net zoals bij marktplaats is de enige restrictie het aantal karakters, in dit geval 4. Dit is veel te weinig om in welke vorm dan ook een veilig wachtwoord samen te stellen. Ter indicatie het meest “veilige” wachtwoord dat met 4 karakters te maken is, is binnen 3 seconden(!) te kraken.

Hyves.nl

Hyves de grootste profielensite van Nederland heeft uiteraard ook een aanmeldpagina, want daar draait het tenslotte om. Hieronder het aanmeldscherm:

screenshot.104

Hyves maak net zoals Yunoo gebruik van een puntentelling met een minimumlengte van 6 karakters. De puntentelling bij Hyves is als volgt:

  • Een wachtwoord lengte van de 6 t/m 8 geeft 6 punten.
  • Een wachtwoord lengte van de 9 t/m 10 geeft 12 punten.
  • Een wachtwoord lengte van de 11 of groter geeft 18 punten.
  • Gebruik van één of meerdere kleine letters geeft 1 punt.
  • Gebruik van één of meerdere hoofd letters geeft 5 punten.
  • Gebruik van één of meerder cijfers geeft 5 punten.
  • Gebruik van drie of meerder cijfers geeft 7 extra punten.
  • Gebruik van één of meerdere symbolen2 geeft 5 punten.
  • Gebruik van één of meerdere symbolen geeft 7 extra punten.
  • Gebruik van zowel kleine- als hoofdletters geeft 2 extra punten.
  • Gebruik van zowel klein- of hoofdletter en cijfers geeft 3 extra punten.
  • Gebruik van zowel klein- of hoofdletter of cijfers en symbolen geeft 3 extra punten.

De punten aantal met bij behorende feedback is:

  • Een punten aantal van <= 10 geeft “Simpel”.
  • Een punten aantal van >10 en <= 15 geeft “Redelijk”.
  • Een punten aantal van >15 en <= 30 geeft “Goed”.
  • Een punten aantal van >30 en <= 40 geeft “Sterk”.
  • Een punten aantal van >40 geeft “Erg Sterk”.

Voor de vergelijking nemen we ongeveer dezelfde voorbeeld wachtwoorden als bij Yunoo:

  1. Een wachtwoord als “ab123!” geeft 6 + 1 + 5 + 7 + 5 + 3 + 3 = 30 punten (volgens Hyves een “Goed”).
  2. Een wachtwoord als “abcdefghij123” geeft 18 + 1 + 5 + 7 + 3 = 34 punten (Volgens Hyves “Sterk”).

Dit is al een iets betere methode, mede omdat er punten worden gegeven voor de lengte van het wachtwoord. Hyves maakt ook nog gebruik van een lijst van veel voorkomende wachtwoorden. Er is geen verplichte aantal punten, bij elk puntenaantal kan geregistreerd worden, dus ook met een wachtwoord dat volgens Hyves “simpel” is.

Ikea.nl

Ikea een groot bedrijf in doehetzelf-meubels heeft ook een registratiesysteem, waar een gebruiker een profiel kan aanmaken:

screenshot.106

In de helptekst bij het wachtwoordveld is al gelijk te zien hoe lang het wachtwoord maximaal moet zijn en dat het wachtwoord moet bestaan uit zowel cijfers als letters, maar geen leestekens. Na het testen van het wachtwoord “1234567” kwam de volgende melding:

screenshot.107

Dat zijn toch wel meer regels dan dat er in eerste instantie in de helptekst stond. De regels zijn als volgt:

  • Het wachtwoord moet een lengte hebben van min. 7 en max. 10 karakters.
  • Het wachtwoord moet min. 1 cijfer bevatten.
  • Het wachtwoord moet min. 1 letter bevatten.
  • Het wachtwoord mag niet hetzelfde zijn als de gebruikers naam.
  • Het wachtwoord mag niet bestaan uit 3 opeenvolgende karakters.
  • Het wachtwoord mag niet bestaan uit 4 dezelfde karakters achter elkaar.

Blijkbaar mogen er nu ook leestekens (symbolen) gebruikt worden. Een test met het wachtwoord als “aaa123,” wordt geaccepteerd. De laatste 2 regels zijn onduidelijk, wat er nou precies mee bedoeld wordt, maar er wordt meer duidelijk als we het wachtwoord proberen te wijzingen:

screenshot.108

De laatste 2 eisen zijn veranderd in:

  • Het wachtwoord mag niet bestaan uit 4 identieke karakters.
  • Het wachtwoord mag niet bestaan uit 3 opeenvolgende identieke karakters.

Dit is al weer iets duidelijker dus wachtwoorden als “a1a2a3a4” en “aaa1234” mogen niet. Kortom geen eenduidige eis aan de samenstelling van het wachtwoord. Ook de maximale lengte van 10 draagt niet bij aan de gebruiksvriendelijkheid en veiligheid.

Tweakers.net

Tweakers is een informatica-nieuwssite. Ook hier kan je een profiel aan maken. De verwachting is groot, want je mag van een dergelijke site verwachten dat ze een veilig en gebruiksvriendelijk wachtwoord beleid hebben:

screenshot.110

In de helptekst wordt duidelijk aangegeven waar een veilig wachtwoord uit moet bestaan.

  • Minimaal 8 karakters.
  • Mix van letters, cijfers en symbolen (speciale karakters).

Maar hoe precies bepaald wat de kwaliteit is, in dit geval “redelijk” voor het wachtwoord “abcd1234”. Dit wordt zoals we al eerder gezien hebben met een puntentelling gedaan, het puntentelling bij Tweakers is als volgt:

  • De lengte van het wachtwoord geeft een evenredig aantal punten.
  • Elke onderstaande regel krijgt 1 punt wordt, totale aantal wordt eerst verminderd met 1 en daarna vermenigvuldigd met 3.
    • Gebruik van één of meerdere kleine letters.
    • Gebruik van één of meerdere hoofd letters.
    • Gebruik van één of meerdere cijfers.
    • Gebruik van een karakter anders dan kleine-, hoofdletter en cijfers.
  • Elke unieke karakter geeft 1 punt.
  • Uit eindelijk wordt het punten aantal nog verminderd met 1.

Dit punten systeem houdt t.o.v. de andere punten systemen rekening met de uniekheid van karakters. Ook wordt bij Tweakers feedback gegeven d.m.v. tekst en kleur:

  • Een punten aantal van <= 10 geeft “zeer zwak” met de kleur “grijs”.
  • Een punten aantal van >10 en <= 15 geeft “zwak” met de kleur “rood”.
  • Een punten aantal van >15 en <= 20 geeft “redelijk” met de kleur “geel”.
  • Een punten aantal van >20 en <= 25 geeft “vrij sterk” met de kleur “lime”.
  • Een punten aantal van >25 en <= 30 geeft “sterk” met de kleur “groen”.
  • Een punten aantal van >30 geeft “supersterk” met de kleur “groen”.

Voor de vergelijking nemen we ongeveer dezelfde voorbeeld wachtwoorden als bij Hyves:

  1. Een wachtwoord als “ab123!” geeft 6 + ( 3 – 1 x 3) + 6 – 1 = 17 punten (volgens Tweakers een “zwak”).
  2. Een wachtwoord als “abcdefghij123” geeft 13 + (2 – 1 x 3) + 13 – 1= 28 punten (Volgens Tweakers “sterk”).

Na het in voeren van een “zeer zwak” wachtwoord (“aaaaaaaa”) kan gewoon geregistreerd worden, dus er is geen verplichting op een minimum aantal punten.

Wat is een goed wachtwoord beleid?

Na het wachtwoord beleid van een aantal sites te hebben geanalyseerd is de vraag wat is nu precies het “beste” wachtwoordbeleid is. Volgens mij is dat een wachtwoordbeleid op basis van het onderstaande puntensysteem. Het sluit goed aan op veiligheid en houdt toch rekening met gebruiksvriendelijkheid.

In dit systeem worden punten gegeven voor:

  • De lengte van het wachtwoord.
  • Het gebruik van kleine letters.
  • Het gebruik van hoofdletters.
  • Het gebruik van cijfers.
  • Het gebruik van symbolen.
  • Het gebruik van een combinatie van minimaal 2 van de onderstaande:
    • Kleine letters.
    • Hoofd letters.
    • Cijfers.
    • Karakters anders dan letters4 en cijfers.

En puntenaftrek wordt gegeven voor:

  • Het gebruik van alleen letters, cijfers of een ander karakter dan letters en cijfers.
  • Het gebruik van herhalende letters, cijfers of een ander karakter dan letters en cijfers.

Het volgende is optioneel, maar zeker aan te raden:

  • Minimum van 6 aantal karakters (maximum van 50 of groter, i.v.m het gebruik van password generators en wachtwoordzinnen).
  • Het wachtwoord mag niet gelijk zijn aan username en/of email adres.
  • Het systeem wachtwoorden te laten accepteren op basis van een bepaald aantal punten en niet op basis van een vast aantal eisen.
  • Het checken op een lijst van veel voorkomende wachtwoorden (niet nodig als de bovenste regel is toegepast, omdat deze wachtwoorden vaak te zwak zijn om het minimum aantal punten te behalen.)

Daarnaast moet er gebruik worden gemaakt van feedback naar de gebruiker toe over de sterkte van zijn wachtwoord dit kan gedaan worden d.m.v. van tekst, kleur of icon. Drie niveaus van feedback is voldoende bijvoorbeeld “te zwak”, “voldoende” en “sterk”. Bij “te zwak” zou het wachtwoord niet geaccepteerd moeten worden. Met dit beleid is de gebruiker vrij om te kiezen hoe hij/zij op een gebruiksvriendelijke manier een veilig wachtwoord samenstelt.

Kortom met het bovenstaande wachtwoordbeleid wordt de gebruiker geadviseerd over zijn wachtwoord, maar heeft toch alle vrijheid om zelf een veilig wachtwoord samen te stellen.

Let wel op: een wachtwoordbeleid heeft alleen maar zin wanneer er gebruik wordt gemaakt van SSL en wachtwoordencryptie!

Referenties:

1 Bij de site howsecureismypassword.net wordt uit gegaan van 10 miljoen pogingen per seconden wat tegenwoordig afhankelijk van de encryptie gemakkelijk gehaald kan worden door een normale desktop computer. Een voorwaarde hier voor is dat de wachtwoord hash (het gecodeerde wachtwoord) lokaal beschikbaar is, want vaak is het zo dat er een restrictie zit op het aantal foute inlog pogingen op een site en de snelheid waarmee pogingen gedaan kunnen worden.

2 De mogelijke symbolen zijn: !,@#$%^&*?_~

3 Volgens de site howsecureismypassword.net, dit is ter indicatie, de tijd die nodig is om een wachtwoord te kraken is afhankelijk van veel factoren.

4 Met letters worden de 26 letters van alfabet bedoeld (“abcdefghijklmnopqrstuvwxyz”).

Erwin Griekspoor

Erwin Griekspoor

Senior Technical Consultant