Wachtwoordtool Terug naar generator

Beveiligingsgids

Wachtwoordgeneratie aan clientzijde met Web Crypto en rejectiesampling

Een technische whitepaper die het wachtwoordgeneratiemodel aan browserzijde van PwdGen uitlegt, inclusief entropiegrenzen, rejectiesampling en privacybeperkingen.

Samenvatting

PwdGen gebruikt een referentiegeneratiemethode aan clientzijde: de browser of runtime Web Crypto levert willekeurige bytes, rejectiesampling zet die bytes om in onbevooroordeelde begrensde indices, en een Fisher-Yates-shuffle verdeelt de vereiste karakterklassen over het uiteindelijke wachtwoord. De methode is bewust klein, controleerbaar en reproduceerbaar in de webapp, API-adapter, CLI en de voorbereide pwdgen-core-package.

Dit document beschrijft het technische model. Het is geen claim van een nieuw cryptografisch primitief, een formele standaard of een onafhankelijke audit door derden.

Bron van willekeurigheid

De generator vraagt cryptografisch sterke willekeurige waarden via crypto.getRandomValues(). Web Crypto-implementaties worden geacht een cryptografisch veilige pseudo-willekeurige getallengenerator te gebruiken, gevoed met hoogwaardige entropie van de hostomgeving. In de praktijk delegeren browsers deze verantwoordelijkheid aan besturingssysteemfaciliteiten en cryptografische providers van het platform.

PwdGen beweert niet dat elke wachtwoordgeneratie-aanroep direct een hardware-ruisbron bemonstert. De veiligere en nauwkeurigere uitspraak is dat de browser CSPRNG-output levert via de Web Crypto API, en dat PwdGen niet-cryptografische pseudo-willekeurige interfaces vermijdt.

Waarom niet Math.random()

Math.random() is niet gespecificeerd voor beveiligingsgevoelig gebruik. Het is geschikt voor simulaties, visuele effecten en gewoon gerandomiseerd UI-gedrag, maar het biedt niet de garanties die worden verwacht voor wachtwoorden, resetcodes, ondertekeningssleutels of andere inloggegevens.

PwdGen behandelt onveilige pseudo-willekeurige fallbacks als een fouttoestand. Als Web Crypto niet beschikbaar is, moet de generator een compatibiliteitsfout tonen in plaats van stilletjes zwakke inloggegevens te produceren.

Rejectiesampling

Willekeurige bytes en gehele getallen worden meestal uit een machten-van-twee-bereik getrokken. Wachtwoordalfabetten hebben zelden een grootte dat dat bereik exact deelt. Een directe modulo-bewerking kan sommige karakters iets waarschijnlijker maken dan andere.

PwdGen gebruikt rejectiesampling:

  1. Trek een 32-bits unsigned integer.
  2. Bereken het grootste veelvoud van de alfabetgrootte dat binnen het 32-bits bereik past.
  3. Verwerp waarden boven die grens.
  4. Pas modulo alleen toe op het resterende volledige bereik.

Dit houdt de begrensde karakterselectie uniform zonder meetbare modulo-vertekening te introduceren.

Karakterdekking en entropie

Voor geconfigureerde wachtwoordbeleidsregels selecteert de generator eerst één karakter uit elke ingeschakelde klasse, vult de rest uit het gecombineerde alfabet en schudt vervolgens het resultaat. Dit helpt om te voldoen aan de wachtwoordregels van de bestemming zonder een voorspelbare klasse op een voorspelbare positie te plaatsen.

De theoretische entropieschatting is:

bits = length × log2(uniqueAlphabetSize)

Die waarde is een bovengrens voor uniform willekeurige keuzes uit het geconfigureerde alfabet. Het houdt geen rekening met wachtwoordhergebruik, door de gebruiker bewerkte uitvoer, gecompromitteerde apparaten, gelekke wachtwoorden of zwakke opslag door de bestemmingsdienst.

Privacygrens

In de browsertools blijven gegenereerde waarden in het pagina-geheugen en zichtbare resultaatvelden totdat de gebruiker ze kopieert of exporteert. De lokale generatoren sturen gegenereerde wachtwoorden niet naar PwdGen-servers, plaatsen ze niet in URL’s of schrijven ze niet naar analytics-gebeurtenissen.

Deze grens beschermt niet tegen kwaadaardige browserextensies, klembordmanagers, compromittering van het besturingssysteem, schermopname, phishingpagina’s of een gebruiker die een gegenereerd wachtwoord in een onveilige bestemming plakt.

Reproduceerbare implementatie

De openbare pwdgen-cli-package en de voorbereide pwdgen-core-package bestaan om het generatiemodel buiten de webpagina inspecteerbaar te houden. Unittests dekken karakterklasse-inclusie, uitgesloten karakters, ongeldige configuraties, entropieformules en de afwezigheid van onveilige pseudo-willekeurige fallback-code-paden.

Het doel is niet om PwdGen een privéstandaard te maken. Het doel is om de implementatie klein genoeg te maken zodat ontwikkelaars deze kunnen lezen, testen en vervangen wanneer hun omgeving een andere vertrouwensgrens vereist.

Bronnen