Quali fonti entropiche sono utilizzate dal kernel Linux?


14

man 4 random ha una descrizione molto vaga delle fonti di entropia del kernel Linux:

Il generatore di numeri casuali raccoglie il rumore ambientale da driver di dispositivo e altre fonti in un pool di entropia.

Il trasferimento di Entropy su carta nel generatore di numeri casuali di Linux non è neanche molto più specifico. Elenca:

  • add_disk_randomness(),
  • add_input_randomness(), e
  • add_interrupt_randomness().

Questi funzioni provengono da random.c, che include i seguenti commenti:

Le fonti di casualità dall'ambiente includono i tempi di inter-tastiera, i tempi di interrupt di alcuni interrupt e altri eventi che sono entrambi (a) non deterministici e (b) difficili da misurare per un osservatore esterno.

Più in basso, c'è una funzione che add_hwgenerator_randomness(...)indica 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 capire). Quali sono le effettive fonti di entropia utilizzate e il kernel Linux supporta immediatamente qualsiasi generatore di numeri casuali di hardware?

Risposte:


4

Oggigiorno la maggior parte dei prodotti hardware per PC ha un generatore di numeri casuali. VIA Semiconductor li ha messi nei loro processori per molti anni; il kernel Linux ha il driver via-rng per questo. Conto 34 moduli sorgente nella drivers/char/hw_random/directory nella struttura dei sorgenti più recente, inclusi i driver per hardware Intel e AMD e per i sistemi che dispongono di un dispositivo TPM. È possibile eseguire il demone rng (rngd) per inviare dati casuali al pool di entropia del kernel.


Questa sembra una grande parte della risposta che stavo cercando. Avrò uno sguardo più approfondito a ciò che è contenuto non appena mi muoverò per farlo. Insieme alle informazioni già contenute nella domanda, questo sembra un elenco completo di fonti entropiche.
Jens Erat,

E per vedere cosa è disponibile su un PC specifico cat /sys/devices/virtual/misc/hw_random/rng_available.
hlovdal

0

Sì, supporta immediatamente generatori di entropia hardware. Ciò è necessario per server SSL ad alto carico con molte connessioni simultanee avviate al secondo (Gmail, Facebook, Microsoft, ecc.). Non è davvero necessario per server domestici o server di piccole organizzazioni. Tieni presente che i generatori di entropia hardware di solito usano interfacce PCI, niente di speciale lì, quindi può essere facilmente supportato. Non sono sicuro se ci siano generatori di entropia hardware propietari che richiedono driver a sorgente chiuso, probabilmente no, poiché non è molto difficile e non è un settore molto redditizio (diversamente dalle schede grafiche altrimenti).

http://en.wikipedia.org/wiki/Hardware_random_number_generator


2
I server ad alto volume non richiedono un RNG hardware più dei server a basso volume. Una volta che la macchina è stata seminata con sufficiente entropia, può continuare a funzionare su un PRNG per sempre (o almeno per miliardi di anni, che è lo stesso nella pratica). Il tipo di computer che ha davvero bisogno di un RNG hardware sono dispositivi incorporati che non possono salvare in modo sicuro il loro stato RNG corrente quando si spengono.
Gilles 'SO- smetti di essere cattivo' il

@Gilles: è valido per sistemi diversi da Linux? So che Linux lo fa, ma non ho mai sentito parlare di * BSD incluso OS X (né Windwos).
Jens Erat,

1
@JensErat Non lo so. È facile da implementare e molto utile, quindi sarei sorpreso se il BSD non lo avesse fatto.
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.