Wachtwoord-ideeën: waarom die van jou niet werken

Gepubliceerd op door David Carrero

Er is een zoekopdracht die eindeloos terugkomt: wachtwoord-ideeën. En dat is begrijpelijk, want het formulier staat te wachten, je moet iets verzinnen en niemand heeft ooit uitgelegd hoe dat hoort.

Het probleem is dat het woord ideeën al de fout is. Een goed wachtwoord is geen goed idee. Het is een wachtwoord waar helemaal geen idee achter zit.

Dat is geen mooie openingszin. Zo werkt een aanval letterlijk.

Het lijstje invallen dat jij krijgt, is de lijst die hij als eerste afwerkt

Een woordenboekaanval begint niet bij aaaaaaaa om vervolgens op te tellen. Hij begint bij de wachtwoorden die al miljoenen keren zijn uitgelekt, gaat verder met voornamen, gewone zelfstandige naamwoorden, steden, voetbalclubs en jaartallen van vier cijfers. En over die basis heen legt hij regels: hoofdletter vooraan, cijfer of ! achteraan, a als @, e als 3, o als 0, het woord achterstevoren, het woord twee keer.

Die regels zijn geen geheim en niet nieuw. Ze staan al decennia opgeschreven en zitten standaard in elk aanvalsgereedschap. Anders gezegd: de catalogus van invallen die jij “wachtwoord-ideeën” zou noemen, is min of meer op volgorde het configuratiebestand van degene die je aanvalt.

Vanaf hier komen alle cijfers uit de checker van dit huis, die uitgaat van een offline aanval met 10¹² pogingen per seconde tegen een snelle hash. Dat staat onder het resultaat, en zonder dat gegeven betekent geen enkele tijdsduur iets. Je kunt elk getal zelf reproduceren: typ het voorbeeld en kijk.

Idee één: je naam en het jaar waarin je geboren bent

Sanne1985. Negen tekens, een hoofdletter, vier cijfers. Het voldoet aan wat het halve internet eist.

De checker knipt het in één oogopslag in tweeën: “Het staat in onze woordenboeken” voor Sanne, “Lijkt op een jaartal of datum” voor 1985. Resultaat: 58.000 pogingen, in dat tempo dus minder dan een seconde.

En let op waaróm het 58.000 is en geen astronomisch getal. Het ligt niet aan de lengte. Het zijn geen negen beslissingen, het zijn er twee: welke naam en welk jaar. Veelvoorkomende voornamen tel je in duizenden; de jaartallen die mensen werkelijk in een wachtwoord zetten, in tientallen. Vermenigvuldigen en klaar: je hebt negen tekens getypt en gekozen uit minder dan zestigduizend mogelijke wachtwoorden.

Idee twee: de a vervangen door een apenstaartje

Dit is de truc waar iedereen in gelooft, en die het slechtst veroudert.

S@nne1985 levert 106.000 pogingen op. Het is gestegen, ja: precies naar het dubbele. En het dubbele van niets blijft niets — de checker meet het nog steeds in minder dan een seconde — want de substitutie heeft geen nieuw wachtwoord gemaakt. Ze heeft één ja-nee-vraag toegevoegd die de aanvaller allang had ingecalculeerd: heeft deze persoon de a vervangen of niet?

Kijk goed: de checker verandert zijn oordeel niet eens. Hij zegt nog steeds “Het staat in onze woordenboeken”, nu met de toevoeging met cijfers in plaats van letters. Hij heeft het woord toch gevonden.

Wil je zien hoe ver dit gaat, probeer dan het klassieke voorbeeld. P@ssw0rd — hoofdletter, apenstaartje, nul en die hele uitstraling van doordacht te zijn — valt in 17 pogingen. Zeventien. Dat tel je op de vingers van twee handen, met een beetje geduld.

Idee drie: het achterstevoren schrijven

ennas1985 levert 58.000 pogingen op. Hetzelfde getal, tot het laatste cijfer, als Sanne1985.

Het is niet zo dat omdraaien weinig helpt. Het verandert helemaal niets. Het woord omdraaien is een van de regels die het woordenboek standaard meebrengt, dus de checker vindt het net zo goed en labelt het net zo, ditmaal met de toevoeging achterstevoren geschreven.

Hetzelfde geldt voor verdubbelen: SanneSanne zakt naar 963 pogingen — twee keer zoveel letters typen laat je slechter achter dan daarvoor, want “het herhaalt een stuk” is ook een patroon met een eigen naam.

Idee vier: met je vingers over het toetsenbord lopen

Wie niet wil nadenken, kijkt naar het toetsenbord en volgt een vorm. Daar komt qwerty123 uit, of 1qaz2wsx, of 1q2w3e4r, of asdfghjkl.

Het voelt willekeurig omdat het niets betekent. Maar een toetsenbord heeft een vaste en heel kleine meetkunde, en die aflopen is precies wat een programma beter kan dan jij:

  • qwerty123273 pogingen.
  • 1qaz2wsx29 pogingen.

Negenentwintig. Deze wachtwoorden zijn zo afgesleten dat de toetsenbordregels niet eens nodig zijn: ze staan letterlijk in de lijsten met uitgelekte wachtwoorden, en de checker wijst ze af met een kort “Het staat in onze woordenboeken”.

Idee vijf: de hond, en de datum die je nooit vergeet

Toby2015! is een wachtwoord met een biografie: de naam van de hond, het jaar dat hij in huis kwam en een uitroepteken om het formulier tevreden te stellen. Het levert 1,0 × 10⁸ pogingen op, en dat is nog altijd minder dan een seconde.

De meest voorkomende huisdiernamen tel je in enkele duizenden, en ze staan in dezelfde lijsten als de mensennamen. De ! op het eind draagt bij wat elke regel bijdraagt die iedereen toepast: niets.

Met de bijzondere datum wordt het nog ongemakkelijker. 24121985 — een dag, een maand, een jaar — leest als acht cijfers, maar de checker labelt het “Bevat een datum” en klaart het in 14.966 pogingen. De reden staat in de kalender: er zijn 31 dagen, 12 maanden en een ruime eeuw aan plausibele jaartallen. Acht cijfers die op tien miljoen combinaties lijken, zijn er in werkelijkheid zo’n vijftienduizend.

Dat is de val van een datum: hij geeft je lengte zonder je onzekerheid te geven, en onzekerheid is het enige waarvoor betaald wordt.

Idee zes: het kenteken, en wat de checker niet kan zien

4521KDR is een ander geval, en het loont om even stil te staan.

Hier zegt de checker “We vonden geen bekend patroon” en rekent 3,9 × 10¹⁰ pogingen uit. Maar hij markeert dat getal als een plafond, en dat woord is het belangrijke deel: hij heeft jouw patroon niet gevonden, wat niet bewijst dat je er geen hebt. Zelfs zo, en ruimhartig gerekend, blijft de tijd minder dan een seconde.

En daar zit het gat dat je moet begrijpen. De checker weet niet in welke auto je rijdt. Wie je kent, wie je Instagram voor zich heeft of wie een datadump kocht waarin je kenteken staat, heeft geen 3,9 × 10¹⁰ pogingen nodig: hij heeft er één nodig. Het getal dat je ziet als er geen patroon is, meet de onwetendheid van een vreemde, niet die van iemand die naar jou op zoek is gegaan.

Hetzelfde geldt voor je huisnummer, je BSN, je telefoonnummer en je trouwdatum.

Wat die zes gemeen hebben

Geen van deze ideeën faalt omdat ze “te weinig complex” zouden zijn. Ze falen allemaal om dezelfde reden: het is autobiografie, en autobiografie laat zich raden. Je naam, je jaartal, je hond, je auto, jouw manier om het toetsenbord af te lopen. Elk van die beslissingen voelt persoonlijk en eigen, en juist daarom hoort ze thuis in een kort lijstje dat iemand allang heeft opgeschreven.

Er complexiteit bij doen lost niets op, want de complexiteit die jij toepast is ook een beslissing van jou en staat ook op de lijst. Daarom wint S@nne1985 een schamele factor twee en ennas1985 niet eens dat.

Wil je het argument in getallen, dan staat het bij de entropie-bits: wat telt is niet hoeveel wachtwoorden je had kunnen schrijven, maar hoeveel er overblijven als alles wat men over jouw smaak weet eraf is getrokken.

De uitweg is geen beter idee: het is helemaal geen idee

De enige manier om van die lijst af te komen, is dat het wachtwoord niet uit jouw hoofd komt.

Dat is precies wat Diceware doet: je gooit vijf dobbelstenen, zoekt het getal op in een lijst van 7.776 woorden en schrijft op wat eruit komt. Elke worp is 12,9 bit waard, en het zijn echte 12,9, want dobbelstenen hebben geen voorkeuren, geen geheugen en geen weet van je geboortejaar. Zes woorden komen op ongeveer 77 bit.

Zet er zo een in de checker en kijk wat er verandert: zes doodgewone, gedobbelde woorden gaan van “Zeer Zwak” naar “Zeer Sterk”, en de tijd wordt niet meer in seconden gemeten. Niet omdat ze gezocht zijn — dat zijn ze niet, het zijn zes normale woorden — maar omdat het het enige deel van je wachtwoord is dat jij niet hebt beslist. Laat je de browser liever gooien, dan doet de generator dezelfde trekking en laat hij je ondertussen de bits zien.

Het eerlijke antwoord op “geef me wachtwoord-ideeën” is dus dat je ze niet nodig hebt, en dat je er zelfs te veel hebt. Wat je mist, is een dobbelsteen.


Bronnen: alle cijfers in dit artikel komen uit de checker van password.es, die zijn model onder het resultaat vermeldt — 10¹² pogingen per seconde, offline aanval, snelle hash — en ze zijn reproduceerbaar door elk voorbeeld in te typen op /nl/wachtwoord-checker/ · de patroonanalyse draait op zxcvbn van Daniel Lowe Wheeler (Dropbox), gepresenteerd op USENIX Security 2016 als “zxcvbn: Low-Budget Password Strength Estimation” · de aangehaalde substitutie-, omkeer- en herhalingsregels zijn de regels die woordenboekaanvalsgereedschap standaard meebrengt · Arnold G. Reinhold, “The Diceware Passphrase Home Page” (1995), voor de 7.776 woorden en de 12,9 bit per worp.

Foto van RDNE Stock project · Pexels

← Terug naar de blog