Passordverktøy Tilbake til generator

Sikkerhetsveiledning

Passordgenerering på klientsiden med Web Crypto og avvisningssampling

Et teknisk whitepaper som forklarer PwdGens nettleserbaserte passordgenereringsmodell, entropigrenser, avvisningssampling og personvernbegrensninger.

Sammendrag

PwdGen bruker en referansegenereringsmetode på klientsiden: nettleseren eller kjøretidens Web Crypto leverer tilfeldige byte, avvisningssampling kartlegger disse bytene til objektive avgrensede indekser, og en Fisher-Yates-stokking fordeler nødvendige tegnklasser over det endelige passordet. Metoden er bevisst liten, reviderbar og reproduserbar på tvers av nettappen, API-adapteren, CLI-en og den forberedte pwdgen-core-pakken.

Dette dokumentet beskriver den tekniske modellen. Det er ikke en påstand om en ny kryptografisk primitiv, en formell standard eller en uavhengig tredjepartsrevisjon.

Tilfeldighetskilde

Generatoren ber om kryptografisk sterke tilfeldige verdier gjennom crypto.getRandomValues(). Web Crypto-implementeringer forventes å bruke en kryptografisk sikker pseudo-tilfeldig tallgenerator (CSPRNG) seedet med høy kvalitet entropi fra vertsmiljøet. I praksis delegerer nettlesere dette ansvaret til operativsystemets fasiliteter og plattformens kryptografiske leverandører.

PwdGen påstår ikke at hvert passordgenereringskall direkte sampler en støykilde fra maskinvaren. Den tryggere og mer nøyaktige påstanden er at nettleseren leverer CSPRNG-utdata gjennom Web Crypto API, og at PwdGen unngår ikke-kryptografiske pseudo-tilfeldige grensesnitt.

Hvorfor ikke Math.random()

Math.random() er ikke spesifisert for sikkerhetskritiske formål. Den er egnet for simuleringer, visuelle effekter og vanlig randomisert UI-atferd, men den gir ikke garantiene som forventes for passord, tilbakestillingskoder, signeringsnøkler eller andre legitimasjoner.

PwdGen behandler usikre pseudo-tilfeldige fallback-løsninger som en feiltilstand. Hvis Web Crypto ikke er tilgjengelig, bør generatoren vise en kompatibilitetsfeil i stedet for å stille produsere svake legitimasjoner.

Avvisningssampling

Tilfeldige byte og heltall trekkes vanligvis fra et potens-av-to-område. Passordalfabeter har sjelden en størrelse som deler dette området nøyaktig. En direkte modulo-operasjon kan gjøre noen tegn litt mer sannsynlige enn andre.

PwdGen bruker avvisningssampling:

  1. Trekk et 32-bits usignert heltall.
  2. Beregn det største multiplumet av alfabetstørrelsen som får plass innenfor 32-bits-området.
  3. Avvis verdier over denne grensen.
  4. Bruk modulo bare på det gjenværende komplette området.

Dette holder avgrenset tegnvalg uniformt uten å introdusere målbar modulo-skjevhet.

Tegndekning og entropi

For konfigurerte passordpolicyer velger generatoren først ett tegn fra hver aktivert klasse, fyller resten fra det kombinerte alfabetet, og stokker deretter resultatet. Dette hjelper med å oppfylle destinasjonens passordregler uten å plassere en forutsigbar klasse på en forutsigbar posisjon.

Det teoretiske entropiestimatet er:

bits = length × log2(uniqueAlphabetSize)

Denne verdien er en øvre grense for uniformt tilfeldige valg fra det konfigurerte alfabetet. Den tar ikke hensyn til passordgjenbruk, brukerredigerte utdata, kompromitterte enheter, lekkede passord eller svak lagring hos destinasjonstjenesten.

Personverngrense

I nettleserverktøyene forblir genererte verdier i sidens minne og synlige resultatfelt inntil brukeren kopierer eller eksporterer dem. De lokale generatorene sender ikke genererte passord til PwdGen-servere, legger dem i URL-er eller skriver dem inn i analysehendelser.

Denne grensen beskytter ikke mot ondsinnede nettleserutvidelser, utklippstavlebehandlere, kompromittering av operativsystemet, skjermopptak, phishing-sider eller en bruker som limer inn et generert passord i et usikkert mål.

Reproduserbar implementering

Den offentlige pwdgen-cli-pakken og den forberedte pwdgen-core-pakken finnes for å holde genereringsmodellen inspiserbar utenfor nettsiden. Enhetstester dekker tegnklasseinkludering, ekskluderte tegn, ugyldige konfigurasjoner, entropiformler og fraværet av usikre pseudo-tilfeldige fallback-kodeveier.

Målet er ikke å gjøre PwdGen til en privat standard. Målet er å gjøre implementeringen liten nok til at utviklere kan lese, teste og erstatte den når deres miljø krever en annen tillitsgrense.

Kilder