man 4 random
ha una descrizione molto vaga delle fonti di entropia del kernel Linux:
Il generatore di numeri casuali raccoglie il rumore ambientale dai driver di dispositivo e da altre fonti in un pool di entropia.
Anche la carta che Entropy trasferisce nel generatore di numeri casuali di Linux non è molto più specifica. Elenca:
add_disk_randomness()
,add_input_randomness()
, eadd_interrupt_randomness()
.
Queste funzioni provengono da random.c
, che include il seguente commento:
Le fonti di casualità dall'ambiente includono i tempi inter-tastiera
, i tempi di interruzione di alcuni interrupt e altri
eventi che sono entrambi (a) non deterministici e (b) difficili per un
osservatore esterno da misurare.
Più in basso, c'è una funzione add_hwgenerator_randomness(...)
indicando il supporto per i generatori di numeri casuali hardware.
Tutte queste informazioni sono piuttosto vaghe (o, nel caso del codice sorgente, richiedono una profonda conoscenza del kernel Linux per essere comprese). Quali sono le effettive sorgenti di entropia utilizzate e il kernel Linux supporta eventuali generatori di numeri casuali hardware pronti all'uso?
Risposta accettata:
Al giorno d'oggi, la maggior parte dei prodotti hardware per PC ha un generatore di numeri casuali. VIA Semiconductor li ha inseriti nei loro processori per molti anni; il kernel Linux ha il driver via-rng per quello. Conto 34 moduli sorgente in drivers/char/hw_random/
directory nell'albero dei sorgenti più recente, inclusi i driver per l'hardware Intel e AMD e per i sistemi che dispongono di un dispositivo TPM. Puoi eseguire il demone rng (rngd) per inviare dati casuali al pool di entropia del kernel.