Wachtwoordtool Terug naar generator

Beveiligingsgids

Waarom Math.random niet veilig is voor wachtwoorden

Ontdek waarom Math.random geschikt is voor UI-effecten, maar niet voor wachtwoorden, resetcodes, tokens of andere beveiligingsgevoelige geheimen.

Samenvatting

Math.random() is een algemene JavaScript pseudo-willekeurige functie. Het is nuttig voor animaties, gerandomiseerd UI-gedrag, voorbeelden, games en simulaties. Het is niet gespecificeerd voor cryptografische beveiliging en mag niet worden gebruikt om wachtwoorden, resetcodes, API-geheimen, ondertekeningssleutels of hersteltokens te genereren.

Het probleem

Een wachtwoordgenerator heeft onvoorspelbaarheid nodig tegen een aanvaller, niet alleen waarden die er gevarieerd uitzien voor een gebruiker. Math.random() biedt geen browserstandaard cryptografische beveiligingsgarantie, en implementaties kunnen verschillen tussen engines.

De veiligere browseroptie

Moderne browsers bieden crypto.getRandomValues() via de Web Crypto API. PwdGen gebruikt die interface en rejectiesampling, wat bevooroordeelde karakterselectie vermijdt. Als die API niet beschikbaar is, is het veilige gedrag om te stoppen met genereren en de compatibiliteitsvereiste uit te leggen.

Hoe een generator te beoordelen

Zoek in de broncode naar Math.random. Een serieuze wachtwoordgenerator mag dit niet gebruiken voor wachtwoordkarakters. Het kan voorkomen in documentatie die uitlegt waarom het onveilig is, maar niet in het generatiepad.

Gedetailleerde richtlijnen

Deze gids richt zich op waarom Math.random ongeschikt is voor wachtwoorden en geheimen. Het is geschreven voor ontwikkelaars, studenten en toolgebruikers die controleren of een generator veilige willekeur gebruikt, dus het praktische doel is niet om een dramatische beveiligingsclaim te creëren. Het doel is om een wachtwoordgewoonte te kiezen die dagelijks gebruik kan overleven: inlogformulieren, wachtwoordmanagers, mobiele toetsenborden, accountherstel, gedeelde apparaten en de occasionele dienst met vreemde validatieregels. Een veilige aanbeveling is alleen nuttig als een echt persoon deze consistent kan volgen.

Het veiligste startpunt is willekeur plus uniciteit. Willekeur betekent dat de waarde is geselecteerd uit een grote ruimte door een cryptografisch geschikte willekeurige bron, niet verzonnen uit een verjaardag, een huisdiernaam, een toetsenbordpatroon of een favoriete quote. Uniciteit betekent dat hetzelfde wachtwoord nergens anders wordt gebruikt. Een wachtwoord dat lang is maar hergebruikt, kan snel falen na één niet-gerelateerd datalek, terwijl een uniek willekeurig wachtwoord de schade beperkt tot het enkele account waar het werd gebruikt.

Voor dit onderwerp is een praktische preset crypto.getRandomValues met rejectiesampling in plaats van Math.random. U kunt die preset toepassen met de Web Crypto API-gids en vervolgens de uiteindelijke waarde opslaan in een vertrouwde wachtwoordmanager. PwdGen genereert waarden lokaal in de browser met Web Crypto; het gegenereerde wachtwoord wordt niet naar een PwdGen-server gestuurd. Dat lokale ontwerp vermindert blootstelling aan de serverzijde, maar beschermt niet tegen elke dreiging. Een kwaadaardige browserextensie, een gecompromitteerd apparaat, een phishingpagina of onveilig klembordbeheer kunnen nog steeds een geheim blootleggen nadat het is gegenereerd.

De meest voorkomende problemen om te vermijden zijn voorspelbare pseudo-willekeurige reeksen, modulo-bias, aangepaste willekeurige functies en democode die naar productie is gekopieerd. Deze problemen zijn belangrijk omdat aanvallers zelden elk mogelijk wachtwoord hoeven te brute-forcen wanneer menselijke gewoonten hen een shortcut geven. Credential stuffing, phishing, gelekte wachtwoordlijsten en misbruik van accountherstel zijn vaak realistischer dan een pure wiskundige zoektocht. Daarom combineert het beste advies wachtwoordkwaliteit met accountniveaucontroles zoals MFA, passkeys, herstelcodeopslag en regelmatige controle van herstel-e-mail- of telefooninstellingen.

Gebruik deze checklist bij het toepassen van de aanbeveling:

Als een website de ideale instelling afwijst, forceer het wachtwoord dan niet handmatig in een zwakker patroon. Pas één variabele tegelijk aan. Als symbolen worden afgewezen, houd dan hoofdletters, kleine letters en cijfers ingeschakeld en verhoog de lengte. Als een maximale lengte laag is, gebruik dan de grootste geaccepteerde lengte en zorg dat de waarde uniek is. Als een wachtwoord hardop moet worden voorgelezen, afgedrukt of getypt op een tv- of routerscherm, overweeg dan om verwarrende tekens uit te sluiten en de lengte te verhogen om het kleinere alfabet te compenseren.

Vergeet ten slotte de grens van wachtwoordadvies. Een sterk wachtwoord is één verdedigingslaag, geen garantie. Het kan een phishingpagina niet veilig maken, malware niet repareren of compenseren voor een dienst die inloggegevens slecht opslaat. De nuttige gewoonte is saai maar duurzaam: genereer een unieke waarde, sla deze veilig op, bescherm het herstelpad en vervang deze snel als u blootstelling vermoedt.

Een veilige volgende stap

Doe na het lezen van deze gids één kleine accountaudit in plaats van alles tegelijk te proberen te repareren. Kies het account dat de meeste problemen zou veroorzaken als het zou worden overgenomen, bevestig dat het wachtwoord uniek is en controleer het herstel-e-mailadres, hersteltelefoonnummer, MFA-methode en back-upcodeopslag. Als een deel van die keten zwak is, verbeter dat deel dan voordat u naar accounts met een lager risico gaat. Deze volgorde houdt het werk beheersbaar en beschermt de accounts die aanvallers het meest waarschijnlijk als opstapje gebruiken. Voor waarom Math.random niet veilig is voor wachtwoorden, is het beste resultaat een herhaalbare gewoonte: lokaal genereren, zorgvuldig opslaan en hergebruik vermijden.

Veelgestelde vragen

Is Math.random ooit oké?

Ja, voor visuele effecten, simulaties en gewone UI-willekeur, maar niet voor inloggegevens of beveiligingstokens.

Wat moeten wachtwoordgeneratoren in plaats daarvan gebruiken?

Ze moeten een cryptografische willekeurige bron gebruiken zoals crypto.getRandomValues() in de browser.

Valt PwdGen terug op Math.random?

Nee. Als Web Crypto niet beschikbaar is, toont PwdGen een compatibiliteitswaarschuwing en genereert geen wachtwoorden met Math.random().

Bronnen