I cervelli umani sono poveri RNG. Le persone sono cattive nel generare valori casuali nella privacy delle loro teste. Non riescono a pensare casualmente; anche se possono convincersi che lo fanno.
I processi fisici, d'altra parte, sono piuttosto buone fonti di entropia. Prendi i tuoi movimenti del mouse. Alcune decine di volte al secondo, il mouse misura quanto è stato spostato dall'ultimo tick e invia tali informazioni al server. Quando la mano scuote, tende a farlo in modo un po 'regolare, ma la biologia è tale che ogni movimento elementare sarà soggetto a qualche jitter, che risulta essere sostanzialmente più grande della precisione del mouse; anche con molto allenamento, è molto difficile per una mano umana fare esattamente la stessa mossa ripetutamente (altrimenti ci sarebbero molte più persone come Yehudi Menuhin ). Quindi la linea di fondo è che le misure di movimento del mouse contengono alcune entropia. (Ricordate che "entropia" è qui definita come "ciò che l'attaccante non sa", il mouse certamente sa quanto è stato spostato, dal momento che è quel mouse che effettivamente invia i valori su cui è costruito l'RNG.)
L'altra metà della risposta è aggregazione . Un RNG basato sul mouse utilizzerà centinaia o anche migliaia di misure, le accumulerà tutte e le condenserà in un seme appropriato che concentrerà tutta quell'entropia. Questo è abbastanza semplice: basta inserire tutti i valori in una funzione hash crittografica, ad es. SHA-256, e otterrai un seme a 256 bit che ha tutta l'entropia di origine, ovunque si nascondesse nei movimenti misurati del mouse. Le funzioni di hash sono buone per questo; riducono la dimensione ma mantengono l'entropia (fino alla dimensione dell'output della funzione hash, ma 256 bit è più che sufficiente per tutti gli scopi).
Un utente malintenzionato può indovinare che l'utente farà cerchi, ma avrà difficoltà a riprendere tutti i movimenti individuali, soprattutto perché la psicologia non lo aiuterà: l'utente umano stesso non ha idea di come i suoi movimenti della mano siano trasformati in numeri. Dato che stiamo parlando di centinaia di numeri, il numero di combinazioni possibili (ad esempio "entropia") aumenta esponenzialmente. Confrontalo con un utente umano che pensa a una nuova password: l'utente sceglierà le lettere seguendo una linea di pensiero interiore "spiritoso", che l'attaccante può indovinare più o meno brutalmente (ad esempio se le lettere sono tutte le prime lettere di alcune parole in una frase da un libro, l'attaccante può automaticamente provare tutte le frasi da tutti i libri che riesce a trovare in formato elettronico); e, cosa più importante, l'utente umano non si preoccuperà di produrre più di una dozzina di personaggi "apparentemente casuali".
Nelle password, la lunghezza non fa la forza, ma la mancanza di lunghezza può essere abbastanza efficace nel prevenire la forza.