Cookies voor statistiek en advertenties
We gebruiken cookies voor statistiek en voor advertenties, allebei naar Google. Weigeren verandert niets aan wat je te zien krijgt.Lees de privacypagina
Een wachtwoord uit de cryptografische generator voor toevalsgetallen van je browser, met de lengte en de tekengroepen die je kiest. Het ontstaat op je eigen machine en gaat nergens heen — bij een wachtwoord is dat geen beleefdheid maar de hele zaak: eentje dat over het netwerk naar je toe kwam, is er eentje dat iemand anders heeft kunnen zien.
Laat l, I, 1, O en 0 weg. Handig als je het van het scherm moet overtypen, en het kost een paar bits.
Hoe het werkt
De tekens worden getrokken met `crypto.getRandomValues`, de cryptografische generator van de browser, gevoed uit de entropievoorraad van het besturingssysteem. Het alternatief, `Math.random`, zit in elke browser en valt hier af: het algoritme is openbaar, de interne toestand is klein, en die toestand terugrekenen uit een handvol uitkomsten is een opgelost probleem met gepubliceerde code. Een generator daarop levert wachtwoorden waarvan de werkelijke sleutelruimte zo groot is als die toestand, hoe lang het wachtwoord er ook uitziet.
Aan de uitkomst zie je het verschil niet. Juist daarom is het de moeite waard te zeggen welke wordt gebruikt, en daarom faalt er in dit project een test zodra `Math.random` in dat bestand opduikt.
Een willekeurige byte omzetten in een willekeurig teken schrijf je meestal als `byte % aantal`, en dat is subtiel fout zodra 256 niet deelbaar is door de omvang van het alfabet. Bij zesentwintig letters dekken de bytes 0 tot 255 `a` tot `v` elk tien keer en `w` tot `z` maar negen: de eerste tweeëntwintig komen ongeveer 11% vaker voor.
Het is een klein gebrek en het is echt, en het is verreweg het meest voorkomende in generatoren van dit soort. De oplossing is de waarden in die korte staart weggooien en opnieuw trekken, wat één lus kost en gemiddeld minder dan twee trekkingen per teken. Dat is wat hier gebeurt.
Entropie wordt in bits uitgedrukt en is de eerlijke manier om de sterkte van een wachtwoord te beschrijven: elke bit verdubbelt het aantal benodigde pogingen. Twintig tekens uit alle vier de groepen zijn ongeveer 130 bits, dus ruwweg 2^130 mogelijkheden — een getal zonder fysieke betekenis, en dat is precies de bedoeling.
Het maakt de afwegingen ook zichtbaar. Symbolen weglaten bij twintig tekens kost ongeveer 11 bits. Verwarrende tekens weglaten kost er ongeveer 3. Vier tekens erbij levert er ongeveer 26 op. Daarom wint lengte het altijd van complexiteit: die vier extra tekens zijn meer waard dan alle symbolen op het toetsenbord, en ze zijn makkelijker te accepteren bij een wachtwoord dat je toch nooit met de hand typt.
Vink je cijfers aan, dan zit er een cijfer in. Dat gaat niet vanzelf: twintig tekens willekeurig uit een gemengd alfabet trekken laat een reële kans dat er uit een van de groepen niets bij zit, en het resultaat is een wachtwoord dat een beleidsregel afwijst en dat je opnieuw moet maken.
De tekens die dat waarborgen worden eerst geplaatst en daarna wordt alles geschud, anders begon elk wachtwoord met een kleine letter, dan een hoofdletter, dan een cijfer, dan een symbool — een patroon dat de eerste tekens uit het raadwerk van een aanvaller haalt. De garantie kost een fractie van een bit, ruim onder de afronding van het getoonde getal.
Een sterk wachtwoord dat je hergebruikt is een zwak wachtwoord, want de sterkte doet er niet meer toe zodra een van de sites die het kent wordt gekraakt. De waarde van genereren zit erin dat elk account een eigen wachtwoord krijgt, en dat werkt alleen als iets ze voor je onthoudt.
Gebruik dus een wachtwoordmanager, welke dan ook, ook die al in je browser zit. De generator hier is voor het moment dat je voor een formulier staat; wat hem waardevol maakt is dat het resultaat ergens terechtkomt waar je het terugvindt.
Nee, en dit is het hulpmiddel op de site waar dat het meest telt. Het wordt door je eigen browser gemaakt en bestaat alleen in de pagina tot je het kopieert. Er wordt niets geüpload, niets vastgelegd en er is geen account nodig. Een wachtwoordgenerator die op een server draait, is een generator waarvan iemand anders de uitkomst heeft gezien.
Zestien is een verstandige ondergrens en twintig is beter. Voorbij een stuk of dertig valt er tegen geen enkele realistische aanvaller nog iets te winnen, dus de lengte wordt alleen begrensd door wat het systeem accepteert. Omdat je het zou moeten plakken en niet typen, kost lengte je niets.
Alleen als je het wachtwoord van een scherm moet aflezen om het elders in te typen: op een televisie, van een uitdraai, op een apparaat zonder klembord. Het verkleint het alfabet en kost een paar bits, wat het entropiegetal je laat zien zodra je het aanzet.
In geen zinnige betekenis. Met de standaardinstellingen zijn er ongeveer 2^130 mogelijke uitkomsten, dus een herhaling gebeurt niet, ook niet als ieder levend mens er elke seconde een maakte, de hele ouderdom van het heelal lang.
Ja, zonder account en zonder grens aan het aantal. Het draait op jouw machine, dus het kost ons niets om je nog eens op de knop te laten drukken.