Ontwikkelaar Beveiliging

Wachtwoord generator

Trekken uit
Sterkte Uitstekend
129 bits entropie · geraden in ongeveer 977,802,379,118 eonen
Gebruiken

87 tekens om uit te kiezen

Gemaakt in je browser · nooit verstuurd, nooit bewaard

Lokaal · crypto.getRandomValues · nooit verstuurd

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

1 Kies waaruit je trekt: tekens, hele woorden, een pincode of een van de token-alfabetten.
2 Stel de lengte in. Twintig tekens is een verstandige standaard; zestien is het minimum voor alles wat ertoe doet, en vijf woorden is de prettige stand voor een zin.
3 Kies welke soorten tekens meedoen. De volledige set geeft de meeste entropie per teken; pincode is een eigen modus, van drie tot twaalf cijfers.
4 Tik op de waarde om hem te kopiëren en plak hem meteen in je wachtwoordmanager.
5 Vraag er tot twintig tegelijk als je meerdere accounts of omgevingen vult.

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.

NIST SP 800-63B rev 4, richtlijnen voor digitale identiteitMDN, Crypto.getRandomValues()
Was deze tool wat?
Alleen intern signaal · ik gebruik het om tools te vinden die beter moeten