Strumenti di testo e di uso quotidiano · Generatore di password
PRNG vs CSPRNG: da dove provengono effettivamente i numeri casuali del tuo browser
· Sfondo
password web-criptovaluta cspng
Spiega la differenza tra generatori pseudo-casuali e crittograficamente sicuri, come i sistemi operativi raccolgono entropia da eventi hardware e come tale casualità raggiunge una pagina Web attraverso Web Crypto API.
I computer sono deterministici, quindi da dove viene la casualità? - il puzzle di base dietro ogni generatore
JavaScript in esecuzione in ToolAcre inizia al limite API. Può richiedere byte da `crypto.getRandomValues`, osservare se la chiamata ha esito positivo e utilizzare l'array restituito. Non può ispezionare ogni evento fisico, pool di kernel o componente hardware che una particolare piattaforma potrebbe utilizzare al di sotto. La storia delle origini del libro di esercizi per casualità supera quindi le prove locali.
Una spiegazione tecnicamente onesta inizia dove inizia l’osservazione. L'app sonda Web Crypto, il motore lo esegue il wrapper e tutte le selezioni consumano quella fonte. I componenti interni specifici della piattaforma necessitano di documentazione e controlli della piattaforma, non di una dichiarazione generica dedotta dal nome del metodo del browser.
Il repository inizia dal browser API; non controlla le fonti fisiche di entropia
I generatori pseudo-casuali sono spesso descritti da seed e stati riproducibili, ma questo repository non richiede che i motori JavaScript condividano un design Math.random. ToolAcre evita l'ambiguità vietando completamente API nella produzione di credenziali. Le scansioni della fonte rafforzano questa garanzia negativa.
I test necessitano ancora di byte deterministici, quindi inseriscono oggetti che espongono `getRandomValues` tramite un parametro interno. Questi falsi vivono nel supporto dei test e non vengono esportati come modalità di produzione seminata. La testabilità non crea un'opzione utente nascosta per le password ripetibili.
Math.random è vietato qui, senza rivendicare un design PRNG universale
Il prodotto utilizza la "crittografia" in modo mirato: l'interfaccia del browser richiesta è Web Crypto e la generazione non viene chiusa quando è assente o inutilizzabile. L'app chiama il metodo durante il rilevamento invece di controllarne solo il tipo, rilevando ambienti limitati in cui vengono lanciate le chiamate.
Tale contratto non promette resistenza ad ogni ipotetica compromissione statale né certifica l'implementazione di un browser. Dimostra quale API la pagina richiede e che accanto ad essa non è collegato alcun fallback più debole. L'integrità del dispositivo rimane all'esterno del generatore.
La proprietà crittografica verificata è l'origine Web Crypto e il percorso di rifiuto richiesti
Eventi di temporizzazione, istruzioni dedicate del processore, pianificazioni di reseeding e pool di entropia del sistema operativo sono tutti sotto la superficie Web API. Non ne viene affermato nessuno qui perché l'origine del pacchetto non può verificarli. Un futuro articolo specifico per la piattaforma necessiterebbe di documentazione primaria per ogni ambiente che descrive.
L’omissione rafforza piuttosto che indebolire l’attuale affermazione. ToolAcre può dire esattamente cosa chiede di fare al browser e come tratta i byte. Non è necessario fingere che JavaScript possa controllare l'intera catena entropica per giustificare il rifiuto di Math.random.
I dettagli degli eventi hardware e del pool del sistema operativo sono affermazioni di implementazione che questa fonte non dimostra
`getRandomValues` riempie una dimensione `Uint8Array` dal limite esclusivo richiesto. `secureRandomInt` assembla questi byte come un numero big-endian senza segno, calcola la finestra di accettazione divisibile più grande e scarta i valori nel resto. Il valore accettato viene quindi ridotto a un indice.
Parole, delimitatori, caratteri e scambi casuali riutilizzano questo percorso. Un singolo punto di strozzatura rende rivedibile la catena dal browser alla scelta e garantisce che la correzione della riduzione limitata influisca su ogni modalità di generazione anziché su un chiamante dimenticato.
Da getRandomValues a secureRandomInt: il percorso visibile dal browser all'indice
Per un pool di parole 7,776, la funzione seleziona un numero di byte sufficiente per rappresentare ogni indice valido. Forma un numero intero, rifiuta qualsiasi valore pari o superiore al limite calcolato e restituisce il resto solo dopo l'accettazione. `secureRandomChoice` utilizza quel risultato per leggere una parola dall'array idoneo.
Il particolare indice di produzione è privato e non deve essere riprodotto in documentazione. I test deterministici alimentano invece byte di coda e nell'intervallo noti per dimostrare il flusso di controllo. Questo traccia una selezione senza trasformare una frase generata in un esempio pubblico.
Esempio realizzato: tracciare i byte attraverso il campionamento del rifiuto su un indice di elenco
La progettazione del generatore hardware di numeri casuali e le prove crittografiche formali non sono coperte dal pacchetto. Né lo sono i runtime del server o le applicazioni native. L'implementazione è un generatore di browser e le sue garanzie non dovrebbero essere copiate su sistemi non correlati.
Inoltre, non riguarda la conservazione o l'uso successivo. Un valore selezionato tramite Web Crypto può comunque essere esposto a riutilizzo, phishing, cronologia degli appunti o malware. La scelta CSPRNG risolve il problema dell'origine, non tutti i problemi di gestione delle credenziali.
Il punto è che Password Generator chiede al generatore crittografico del browser, che è la fonte giusta per un segreto
La catena attuabile è breve: testare che Web Crypto funzioni, rifiutare la generazione quando non funziona, riempire byte, rifiutare una coda irregolare e mappare il valore accettato su un indice. ToolAcre rende ogni passaggio visibile e mette alla prova i limiti difficili.
Rivedi quella catena invece di fare affidamento su una vaga etichetta “casuale”. Quindi esamina l'endpoint e la destinazione separatamente. Il codice crittografico del browser API è la fonte corretta di questo prodotto, ma il repository non pretende di certificare ciò che si trova sotto di esso o tutto ciò che segue.