Wachtwoord generator
87 tekens om uit te kiezen
Gemaakt in je browser · nooit verstuurd, nooit bewaard
Een sterk wachtwoord is een lang wachtwoord dat willekeurig is getrokken. Twintig tekens uit de volledige set van 87 is ongeveer 129 bits entropie; acht tekens met een @ in plaats van een a en een uitroepteken aan het eind volgen precies het patroon dat kraaksoftware als eerste probeert. Dezelfde trekking maakt een wachtzin van vijf woorden, een pincode, of een token in hex, Base32, Base58, Base62 of als UUID.
Zo maak je een wachtwoord
Het getal onder de meter is entropie in bits, en het meet de generator, niet de tekenreeks die eruit kwam. Dat onderscheid doet ertoe: deze tool weet dat het wachtwoord gelijkmatig willekeurig is getrokken uit een set van bekende grootte, dus log2(set^lengte) klopt precies. Een checker die kijkt naar een wachtwoord dat iemand heeft bedacht, kan alleen gissen, en geeft ‘Zomer2024!’ vrolijk een score die het niet verdient. De geschatte kraaktijd gaat uit van een offline aanval met tien miljard pogingen per seconde, ruwweg één moderne GPU tegen een slecht gehashte database, bewust pessimistisch.
De tekensets laten één formulier het werk van meerdere doen, en de pincodemodus is hetzelfde idee expliciet gemaakt: alleen cijfers, drie tot twaalf, voorloopnullen behouden. Dat laatste telt meer dan het klinkt, want een generator die stilletjes een voorloopnul laat vallen, haalt een tiende van de mogelijke waarden weg uit een pincode van vier cijfers. Menselijke pincodes klonteren sterk samen (1234, 1111, 0000 en jaartallen die met 19 beginnen dekken een verbluffend deel van alle pincodes die echt worden gebruikt), dus er een trekken is die twee klikken waard. Een pincode is hoe dan ook zwak: vier cijfers zijn tienduizend mogelijkheden, prima waar iets het aantal pogingen beperkt en nutteloos waar een aanvaller vrij kan gokken.
Aan de andere kant kan een geheim dat alleen een machine hoeft te lezen zo lang en lelijk zijn als je wilt. Het gebruikelijke doel voor een API-sleutel of sessietoken is 128 bits, en twintig tekens uit de volledige set halen dat met wat ruimte. Alleen letters en cijfers als de waarde een URL of een shell zonder escapen moet overleven; de symbolen zijn wat onderweg problemen geeft. De benoemde alfabetten doen dat werk expliciet: hex draagt vier bits per teken, base32 vijf, base58 en base62 net onder de zes, en een UUID versie 4 vaste 122. Tweeëndertig hextekens is het doel van 128 bits zoals de meeste API’s het willen ontvangen, en base58 is de keuze als iemand de waarde moet voorlezen, omdat 0, O, I en l ontbreken.
Woorden zijn dezelfde rekensom een niveau hoger, en ze zijn de modus voor die paar wachtwoorden die je met de hand typt in plaats van plakt. Elk woord is log2 van de lijstgrootte: deze pagina trekt uit ongeveer 48.500 Engelse woorden van vier letters en langer, wat 15,5 bits per woord is, dus vijf woorden is ongeveer 78 bits en zes 93. De lijst is Engels omdat het de woordenlijst is die deze site al meelevert; voor de entropie maakt de taal niets uit, alleen voor hoe makkelijk je de zin onthoudt. Wat een zin oplevert, is onthouden, geen sterkte: 78 bits uit vijf woorden is 78 bits, niet beter dan dertien willekeurige tekens. Het scheidingsteken en de hoofdletters voegen niets toe wat een aanvaller niet al aanneemt; het getal aan het eind wel, omdat het willekeurig wordt getrokken uit 10 tot 99, een echte log2(90) van ongeveer 6,5 bits.
Lengte is bijna altijd de goedkopere hefboom. Van 62 naar 87 tekens in de set levert ongeveer een halve bit per teken op, terwijl vier extra tekens bijna vierentwintig opleveren. Daarom verhoogt de huidige NIST-richtlijn de minimumlengte en schrapt ze samenstellingsregels, en niet andersom.
Waar mensen het voor gebruiken
- Een wachtwoord vervangen dat in een datalek opdook
- Een pincode van vier of zes cijfers trekken
- Een wachtzin van vijf woorden trekken voor het ene wachtwoord dat je met de hand typt
- Een API-sleutel van 32 hextekens of een base58-token maken dat iemand kan voorlezen
- Een item in je wachtwoordmanager vullen voor een nieuw account
- Voldoen aan een sitebeleid dat een symbool en een hoofdletter eist
Vragen
Geen van beide. Het wordt door je browser getrokken met crypto.getRandomValues, de eigen cryptografische generator van het besturingssysteem, en het staat in een variabele tot de volgende trekking hem vervangt. Er wordt niets naar schijf, een cookie of lokale opslag geschreven.
Zestien tekens is een redelijk minimum en twintig is ruim. Boven ongeveer dertig ben je voorbij het punt waarop lengte de zwakke schakel is.
Ze helpen, maar minder dan mensen denken. Vier tekens lengte erbij levert meer entropie op dan de symbolen toevoegen. Gebruik ze waar een site erom vraagt.
Nee. Het hele punt van een gegenereerd wachtwoord is dat het uniek is voor één account, zodat een lek bij de ene site geen andere opent. Daar is een wachtwoordmanager voor.
Ja, en dat geldt voor woorden net zo goed als voor tekens. Mensen die ‘willekeurig’ kiezen, grijpen naar dezelfde vormen: een hoofdletter vooraan, een cijfer achteraan, een klein vocabulaire van verwante woorden. Kraaktools zijn precies rond die gewoonten gebouwd.
Bij dezelfde entropie precies even sterk: de wiskunde maakt geen onderscheid. Het voordeel van woorden is dat je ze kunt onthouden, en dat telt alleen voor de twee of drie wachtwoorden die je met de hand typt.
Vier is het praktische minimum, vijf is ruim, zes voor een hoofdwachtwoord of een schijfsleutel. Elk woord uit deze lijst draagt 15,5 bits, dus vijf is ongeveer 78.
Omdat het de woordenlijst is die deze site al meelevert voor zijn woordtools, gefilterd op vier letters en langer. De entropie hangt alleen af van de grootte van de lijst; de taal bepaalt hoe makkelijk je de zin onthoudt.
Ja. Kies de modus Pincode en stel vier of zes cijfers in. Voorloopnullen blijven staan, dus 0042 is een mogelijke uitkomst.
Zes in plaats van vier waar het systeem dat toestaat: dat vermenigvuldigt het aantal benodigde pogingen met honderd, voor twee extra toetsen.
Ja. Mik op minstens 128 bits, wat twintig tekens uit de volledige set halen. Laat de symbolen weg als de waarde een URL of een shell moet overleven.
Base32 of base58. Beide laten de paren weg die verkeerd worden gelezen; base58 schrapt 0, O, I en l juist daarom.
log2(set ^ lengte): het aantal even waarschijnlijke wachtwoorden dat de instellingen toelaten. 60 bits is een werkbaar minimum, 80 zet een offline aanval buiten praktisch bereik.
Omdat ze in veel lettertypen moeilijk uit elkaar te houden zijn. Het haalt ook leestekens weg die makkelijk verkeerd worden getypt of bij kopiëren wegvallen, achttien tekens in totaal. Zet het aan voor een wachtwoord dat je voorleest of van papier overtypt, uit voor een dat in een wachtwoordmanager woont.
Meestal een lengtelimiet of een verboden symbool. Maak het korter of zet de symbolen uit, in plaats van terug te vallen op iets wat je zelf bedenkt.