/dev/random: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Funzionalità collegamenti suggeriti: 2 collegamenti inseriti. |
|||
(10 versioni intermedie di 8 utenti non mostrate) | |||
Riga 1:
Nei sistemi operativi [[Unix]] e [[Unix-like]], '''/dev/random''' (random device, dispositivo casuale) è un [[
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.
==Linux==
La generazione di numeri casuali dal [[kernel]] è stata implementata per la prima volta in [[Linux]]<ref>{{Cita web|url=
In questa implementazione, il generatore mantiene una stima del numero di [[bit]] di rumore nella [[entropy pool]]. Da questa entropy pool i numeri casuali sono creati. Quando viene letto, <code>/dev/random</code> restituisce solo byte casuali all'interno della stima del numero di bit di rumore nell'entropy pool. <code>/dev/random</code> può essere adatto per gli utenti che necessitano di una casualità di ottima qualità come per la creazione di [[one time pad]] o [[chiave pubblica|chiavi pubbliche]]. Quando l'entropy pool è vuota, la lettura di <code>/dev/random</code> si interrompe fino a quando non viene accumulato nuovo rumore ambientale. Il motivo è di fornire un [[generatore di numeri pseudocasuale crittograficamente sicuro]], fornendo un output con un'entropia il più grande possibile.
Una controparte di <code>/dev/random</code> è '''/dev/urandom''' (sorgente causale non bloccata "unlocked"<ref>[
È 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 |
==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
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 ==
Riga 40:
== Voci correlate ==
* [[Standard streams]]
* <
* <
* <
* <
* [[Generatore hardware di numeri casuali]]
* [[Generatore di numeri pseudocasuali crittograficamente sicuro]]
Riga 52:
* {{cita web|http://msdn2.microsoft.com/en-us/library/aa379942.aspx|CryptGenRandom}}
* {{cita web|http://msdn2.microsoft.com/en-us/library/aa387694.aspx|RtlGenRandom}}
* [https://web.archive.org/web/20110614015324/http://www.suse.de/~thomas/papers/random-analysis.pdf Biege, Thomas; Analysis of a strong Random Number Generator] [https://web.archive.org/web/20110614015344/http://www.suse.de/~thomas/papers/23c3-random-analysis.pdf Slides]
{{Portale|Informatica}}
|