Provided by: manpages-it_2.80-3_all bug

NOME

       random, urandom - dispositivi kernel che producono numeri aleatori

DESCRIZIONE

       I  file  speciali  a  caratteri  /dev/random e /dev/urandom (presenti sin da Linux 1.3.30)
       forniscono un'interfaccia al generatore del kernel di numeri aleatori. Il file /dev/random
       ha  numero  primario  1 e numero secondario 8. Il file /dev/urandom ha numero primario 1 e
       numero secondario 9.

       Il generatore di numeri aleatori raccoglie rumore di fondo dai device driver  e  da  altre
       sorgenti nel pozzo d'entropia. Il generatore mantiene anche una stima del numero di bit di
       rumore nel pozzo di entropia.  Da  questo  pozzo  di  entropia  vengono  creati  i  numeri
       aleatori.

       Quando  viene  letto,  /dev/random restituisce solo un numero di byte aleatori compatibili
       con la stima dei bit di rumore nel pozzo d'entropia. /dev/random dovrebbe essere adatto ad
       usi  che richiedono un alto grado di aleatorietà, come la generazione di chiavi. Quando il
       pozzo d'entropia è vuoto, le letture di /dev/random  vengono  bloccate  finché  non  viene
       raccolto abbastanza rumore ambientale.

       Quando viene letto, /dev/urandom restituisce tanti byte quanti ne sono stati richiesti. Di
       conseguenza, se non c'è abbastanza entropia nel pozzo d'entropia, i valori restituiti sono
       teoricamente vulnerabili ad un attacco criptografico sull'algoritmo usato dal dispositivo.
       Nella letteratura (non coperta da segreto militare) non c'è conoscenza di  un  metodo  per
       fare  ciò,  ma  è  in  teoria  possibile che esista un simile metodo. Se questo è fonte di
       problemi per il proprio programma, si usi invece /dev/random.

   Configurazione
       Se il sistema non comprende già /dev/random/dev/urandom, li si può creare coi seguenti
       comandi:

               mknod -m 644 /dev/random c 1 8
               mknod -m 644 /dev/urandom c 1 9
               chown root:root /dev/random /dev/urandom

       Quando  un  sistema  Linux viene avviato senza molta interazione da parte di un utente, il
       pozzo d'entropia potrebbe essere in una condizione tutto sommato prevedibile. Questo porta
       a  sovrastimare  la  quantità  di  rumore  realmente  presente  nel  pozzo d'entropia. Per
       contrastare questo effetto, può aiutare riportare le informazioni nel pozzo d'entropia fra
       un  arresto  e  un  riavvio.  Per  farlo,  si  aggiunga  le  righe  seguenti ad uno script
       appropriato che venga eseguito durante le procedure di avvio di un sistema Linux:

            echo "Inizializzazione del generatore di numeri aleatori..."
            random_seed=/var/run/random-seed
            # Porta il seme aleatorio da un avvio al successivo
            # Carica e successivamente salva l'intero pozzo di entropia
            if [ -f $random_seed ]; then
                cat $random_seed >/dev/urandom
            else
                touch $random_seed
            fi
            chmod 600 $random_seed
            poolfile=/proc/sys/kernel/random/poolsize
            [ -r $poolfile ] && bytes=`cat $poolfile` || bytes=512
            dd if=/dev/urandom of=$random_seed count=1 bs=$bytes

       Inoltre, si aggiungano le righe seguenti ad uno  script  appropriato  che  venga  eseguito
       durante le procedure di arresto di un sistema Linux:

            # Riporta un seme aleatorio dall'arresto al riavvio.
            # Salva l'intero pozzo di entropia
            echo "Salvataggio del seme aleatorio..."
            random_seed=/var/run/random-seed
            touch $random_seed
            chmod 600 $random_seed
            poolfile=/proc/sys/kernel/random/poolsize
            [ -r $poolfile ] && bytes=`cat $poolfile` || bytes=512
            dd if=/dev/urandom of=$random_seed count=1 bs=$bytes

   Interfaccia /proc
       I   file   nella   directory   /proc/sys/kernel/random  (presente  da  2.3.16)  forniscono
       un'interfaccia aggiuntiva al dispositivo /dev/random.

       Il file in sola lettura entropy_avail fornisce l'entropia disponibile.  Normalmente questo
       sarà 4096 (bit), un pozzo di entropia pieno.

       Il  file  poolsize  fornisce  la dimensione del pozzo di entropia.  La semantica di questo
       file è diversa a seconda della versione del kernel:

              Linux 2.4:  Questo file indica  la  dimensione  del  posso  di  entropia  in  byte.
                          Normalmente  questo  file  ha  valore 512, ma è scrivibile e può essere
                          cambiato in qualunque valore per il quale sia disponibile un algoritmo.
                          Le scelte sono: 32, 64, 128, 256, 512, 1024 o 2048.

              Linux 2.6:  Questo  file  è  di  sola  lettura, e indica la dimensione del pozzo di
                          entropia in bit.  Contiene il valore 4096.

       Il file read_wakeup_threshold  contiene  il  numero  di  bit  di  entropia  richiesti  per
       svegliare  i  processi  che  dormono  in  attesa  dell'entropia da /dev/random.  Il valore
       predefinito è 64.  Il file write_wakeup_threshold contiene il numero di  bit  di  entropia
       sotto  i  quali  svegliamo  i  processi  che eseguono un select() o poll() per accedere in
       scrittura a /dev/random.  Questi valori possono venire cambiati scrivendo sui file.

       I  file  in   sola   lettura   uuid   e   boot_id   contengono   stringhe   casuali   come
       6fd5a44b-35f4-4ad4-a9b9-6b9be13e1fe9.   Il  più  vecchio  è  generato  di nuovo a ciascuna
       lettura, l'ultimo viene generato una volta.

FILE

       /dev/random
       /dev/urandom

AUTORE

       Il generatore di numeri aleatori è stato scritto da Theodore Ts'o (tytso@athena.mit.edu).

VEDERE ANCHE

       mknod (1)
       RFC 1750, "Randomness Recommendations for Security"

COLOPHON

       Questa pagina fa parte del rilascio 2.76 del progetto man-pages di Linux.  Si può  trovare
       una   descrizione   del   progetto,   e  informazioni  su  come  riportare  bachi,  presso
       http://www.kernel.org/doc/man-pages/.   Per  la  traduzione  in  italiano  si   può   fare
       riferimento a http://www.pluto.it/ildp/collaborare/