/dev/random: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
LauBot (discussione | contributi)
m Bot: passaggio degli url da HTTP a HTTPS
Funzionalità collegamenti suggeriti: 2 collegamenti inseriti.
 
(3 versioni intermedie di 3 utenti non mostrate)
Riga 1:
Nei sistemi operativi [[Unix]] e [[Unix-like]], '''/dev/random''' (random device, dispositivo casuale) è un [[dispositivo virtuale]] (ossia non fisicamente presente su [[memoria di massa]]) con la caratteristica di restituire un [[numero casuale|valore numerico casuale]] o [[Numeri pseudo-casuali|pseudo-casuale]] ogni volta che vi si accede. Consente di accedere al rumore ambientale raccolto dai [[periferica|dispositivi]] collegati e da altre sorgenti. /dev/random viene utilizzato per esempio per il test di [[applicazioni]] che operano su numeri casuali, o come sistema per individuare errori di programmazione ([[bug]]) su [[input]] casuali. Può essere impiegato anche per simulare il "rumore" (vale a dire la presenza di dati non corretti) nelle sequenze di input verso i [[driver]] di [[periferica]]. Un diverso utilizzo si ha nel campo della [[crittografia]] dove /dev/random può essere utilizzato per generare chiavi crittografiche casuali sia ad uso del [[sistema operativo]] che delle applicazioni.
 
Non tutti i sistemi operativi implementano la stessa semantica per /dev/random. [[Linux]] è stato il primo sistema Unix-like a implementare /dev/random come generatore di numeri casuali. Implementazioni simili si trovano in [[FreeBSD]], [[Oracle Solaris (sistema operativo)|Solaris]], [[macOS]], [[NetBSD]], [[OpenBSD]], [[Tru64|Tru64 UNIX 5.1B]], [[AIX (sistema operativo)|AIX 5.2]], e [[HP-UX|HP-UX 11i v2]]. Nei sistemi [[Windows]] della famiglia NT funzioni simili vengono svolte dal file ksecdd.sys.
Riga 12:
È inoltre possibile scrivere su <code>/dev/random</code>. Questo consente ad ogni utente di mischiare i dati casuali all'interno del pool. L'attuale ammontare dell'entropia e la dimensione dell'entropy pool del kernel Linux è disponibile attraverso <code>/proc/sys/kernel/random/</code>.
 
Nel marzo 2006 Gutterman, Pinkas, & Reinman hanno pubblicato un'analisi dettagliata del generatore di numeri casuali di Linux<ref>{{Cita web|url=http://www.pinkas.net/PAPERS/gpr06.pdf |titolo=Analysis of the Linux Random Number Generator |autore=Zvi Gutterman |coautoriautore2=Benny Pinkas, Tzachy Reinman |data=6 marzo 2006 |formato=PDF |accesso=18 settembre 2008}}</ref> nel quale descrivono alcune debolezze. Probabilmente il problema più importante riportato è quello che si verifica con sistemi [[sistema embedded|embedded]] o con i [[Live CD]] nel quale lo stato di avvio del sistema è prevedibile e l'entropia disponibile dall'ambiente potrebbe essere limitata. Per i sistemi con [[memoria non volatile]], è raccomandato salvare qualche stato del generatore allo spegnimento in modo da poterlo usare come stato al successivo avvio. Nel caso dei [[router]] nei quali il traffico di rete rappresenta la sorgente primaria di entropia, gli autori notano che salvare lo stato tra riavvii "richiederebbe a un potenziale attaccante di spiare su tutto il traffico di rete" che passa per il router, e ottenere un accesso diretto allo stato interno del router. Questo problema è particolarmente critico nel caso di router wireless il cui traffico di rete può essere catturato a distanza, ed essere utilizzato per generare chiavi crittografiche.
 
==FreeBSD==
Riga 24:
 
== Altri sistemi operativi ==
<code>/dev/random</code> e <code>/dev/urandom</code> sono disponibili su [[Oracle Solaris (sistema operativo)|Solaris]], [[macOS]], [[NetBSD]], [[OpenBSD]], [[UNIX 5.1B]], [[AIX 5.2]] e [[HP-UX 11i v2]]. Come in FreeBSD, AIX implementa un proprio algoritmo Yarrow. Tuttavia AIX usa una quantità di entropia considerevolmente minore dello standard e smette di riempire il pool quando pensa che contenga abbastanza entropia..<ref>{{Cita web|url=https://lists.gnupg.org/pipermail/gnupg-devel/2003-April/019954.html |titolo=AIX 5.2 /dev/random and /dev/urandom devices |editore=Lists.gnupg.org |autore=Iain Roberts|data=25 aprile 2003 |accesso=18 settembre 2008}}</ref>
 
In [[Windows NT]], una funzione simile è fornita da <code>ksecdd.sys</code>, ma la lettura del file speciale <code>\Device\KsecDD</code> non funziona come in UNIX. I metodi documentati per generare bytes crittograficamente sicuri sono [[CryptGenRandom]] e [[RtlGenRandom]].
Riga 33:
Il software EGD (entropy gathering daemon) è un'alternativa comune per i sistemi Unix che non supportano <code>/dev/random</code>. È un [[Demone (informatica)|Demone]] che fornisce dati casuali di qualità crittografica. Alcuni software crittografici come [[OpenSSL]], [[GNU Privacy Guard]], e [[Apache HTTP Server]] usano EGD quando <code>/dev/random</code> non è disponibile.
 
EGD, o la compatibile alternativa prngd, raccolgono entropia pseudo-casuale da varie sorgenti, le processano per rimuovere distorsioni e migliorare la qualità crittografica e le rendono disponibili tramite un [[Unix ___domain socket]] (/dev/edg-pool è una scelta comune), o attraverso un [[Internet socket|TCP socket]]. L'accumulo dell'entropia di solito comporta [[fork (programmazione)|fork]] di sottoprocessi periodici per interrogare gli attributi del sistema che tipicamente cambiano frequentemente e sono impredicibili, come la [[CPU]], l'I/O, l'utilizzo della rete e il contenuto di vari file di log e [[directory]] temporanee.
 
== Note ==