La risposta di Ajedi32 è ottima. Volevo sottolineare un dettaglio che può aiutare a rispondere meglio alla tua domanda. La chiave per proteggere la generazione di password è assicurarsi che la tua password sia imprevedibile . Non "casuale". L'idea di casuale viene dopo. L'obiettivo è imprevedibile. Se ci pensate, la password più sicura esistente non è casuale, è qualunque sia l'ultima password che l'utente malintenzionato potrebbe indovinare. È quello che non potevano prevedere.
Ora, in pratica, c'è una partita di gatto e topo qui. Se si tenta di trovare la password più imprevedibile, proveranno a prevedere come si generano le password. Questo è il motivo per cui le password come qazxswedc appaiono casuali, ma una volta che hanno capito cosa stavi facendo per generare la password, la interromperanno facilmente.
È qui che entra in gioco la casualità. Per la crittografia moderna, ci sforziamo di utilizzare numeri che non sono solo imprevedibili per l'aggressore, ma imprevedibili per chiunque , incluso te stesso! I numeri casuali sono numeri che letteralmente non possono essere previsti in alcun modo. Puoi solo sapere quali numeri sono stati scelti se stavi guardando quando i numeri sono stati generati. Casualità significa che puoi fare affermazioni matematiche su quanto sia difficile predire una password, perché nemmeno tu stesso hai avuto il controllo della generazione.
Per migliaia di anni, i dadi sono stati una fonte "standard" di numeri casuali. Ce ne sono molti altri (la divinazione di I Ching, ad esempio, usava tradizionalmente un fascio di bastoncini di achillea), ma i dadi sono rimasti a lungo. Se proiettati correttamente (senza elicotteri!), Sono fonti di numeri casuali sufficientemente buone perché il rimbalzo del dado è altamente caotico e imprevedibile. Avresti bisogno della telecinesi per influenzare i risultati (pensa Star Wars: The Phantom Menace).
Se sei preoccupato per i dadi caricati, come indicato da alcuni nei commenti, puoi effettivamente fare analisi statistiche per determinare quanti bit di entropia per rotolo puoi effettivamente contare. La generazione di password è meno sensibile ai dadi caricati rispetto ai casinò (puoi sempre fare rotoli extra, moltiplicando il numero di possibilità.) Perché i casinò distribuiscono denaro, non si moltiplicano a turno, devono aggiungere. sensibile).
Quindi ora possiamo avvicinarci alla tua domanda, perché capiamo cosa stai cercando di realizzare. Simulare i dadi in realtà non funziona come potresti pensare, perché la simulazione farà la stessa cosa ogni volta, a meno che tu non abbia una fonte di casualità incorporata nella simulazione, che tipo di sconfigge il punto.
La domanda è: quale fonte casuale puoi fidarti? Qui è dove devi capire il tuo modello di minaccia. Cosa può fare il tuo aggressore? Il tuo aggressore può leggere le tue battute? Se è così, sei nei guai perché dovrai digitare la password. Quindi, in pratica, possiamo supporre che l'attaccante non abbia abbastanza controllo sulla tua macchina per poter leggere le sequenze di tasti.
Puoi continuare a lavorare da lì. La mia ipotesi è che il modello delle minacce presuma che il tuo computer sia integro, nel qual caso puoi contare su fonti di entropia testate nel tempo, come /dev/random
. In questo caso, la migliore risposta è trarre da quella fonte e usarla direttamente (non è richiesta la simulazione dei dadi).
Se sei più interessato alla sicurezza, puoi guardare ad altri aspetti. Alcuni algoritmi hanno problemi con gli attacchi di canale laterale che consentono a un utente malintenzionato di accedere al proprio stato in alcune circostanze specializzate, pertanto è possibile rafforzare l'algoritmo rispetto a quelli. Potresti decidere di non fidarti delle normali fonti di entropia su un computer (come il tempo tra le sequenze di tasti e l'attività di rete), quindi potresti investire in una fonte hardware di casualità (spesso costruita attorno al rumore in una rete di resistori). / p>
Ma non importa dove tu vada, ricorda che la chiave è essere imprevedibile, e il modo standard per assicurarti che il tuo avversario non possa prevederti è di essere così casuale da non poterti prevedere.