Quello che stai dicendo è azzeccato, sì in teoria è possibile alimentare entropia in /dev/random
, ma è necessario controllare molte delle fonti di "rumore" del kernel per renderlo significativo. È possibile guardare la fonte per random.c, per vedere dove viene rilevato il rumore /dev/random
. Fondamentalmente, se controlli un numero significativo di fonti di rumore, puoi indovinare cosa stanno contribuendo gli altri al pool di entropia.
Dal /dev/urandom
è un Hash chain seminato da /dev/random
, quindi si potrebbe effettivamente prevedere i numeri successivi, se si conoscesse il seme. Se hai abbastanza controllo sul pool di entropia, allora dall'output di /dev/urandom
potresti riuscire a indovinare questo seme, che ti consentirebbe di prevedere tutti i numeri successivi da /dev/urandom
, ma solo se mantieni /dev/random
esaurito, altrimenti /dev/urandom
sarà riseminate.
Detto questo, non ho visto nessuno effettivamente farlo, nemmeno in un ambiente controllato. Ovviamente questa non è una garanzia, ma non mi preoccuperei.
Così Preferisco utilizzare /dev/urandom
e garantisco che il mio programma non blocca durante l'attesa per l'entropia, invece di utilizzare /dev/random
e chiede all'utente di fare cose stupide, come muovere il mouse o battere sulla tastiera.
Penso che dovresti leggere On entropy and randomness da LWN, si spera che possa calmare le tue preoccupazioni :-).
Se ti preoccupi ancora, prenditi un HRNG.
Modifica Ecco una piccola nota su entropia:
Credo che il concetto di entropia è generalmente difficile da afferrare. C'è un articolo con ulteriori informazioni su Wikipedia. Ma fondamentalmente, in questo caso, puoi leggere l'entropia come casualità.
Così come la vedo io, è che hai una grande sacca di palline colorate, maggiore è l'entropia in questa borsa, più difficile è predire il prossimo colore estratto dalla borsa.
In questo contesto, il pool di entropia è solo un gruppo di byte casuali, in cui uno non può essere derivato dal precedente o da nessuno degli altri. Ciò significa che hai un'alta entropia.
Imho è necessario sostituire uno dei tag di dire che questa domanda è specifico per Linux; in ogni caso, circa la seconda parte - no, solo root può farlo, gli utenti normali possono solo mescolare nuovi dati, il che è innocuo. – loreb