/dev/random: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Fix link
Atarubot (discussione | contributi)
m Cite (book, journal) -> Cita (libro, pubblicazione) using AWB
Riga 4:
 
==Linux==
La generazione di numeri casuali dal [[kernel]] è stata implementata per la prima volta in [[Linux]]<ref>{{citeCita web|url=http://www.randombit.net/bitbashing/security/syllable_dev_random.html |titletitolo=On Syllable's /dev/random |authorautore=Jack Lloyd |datedata=December 9, dicembre 2008 |accessdateaccesso=2009-04-27 aprile 2009|archiveurlurlarchivio=http://www.webcitation.org/5gOzG0qvc|archivedatedataarchivio=2009-04-29 aprile 2009|deadurl=no}}</ref> nel 1994 da [[Theodore Ts'o]].<ref>{{citeCita web|url=http://everything2.com/title/%252Fdev%252Frandom |titletitolo=/dev/random |datedata=June 8, giugno 2003 |publishereditore=everything2.com |accessdateaccesso=2009-04-27 aprile 2009|archiveurlurlarchivio=http://www.webcitation.org/5gOzGLECz|archivedatedataarchivio=2009-04-29 aprile 2009|deadurl=no}}</ref>. L'implementazione usa [[SHA-1|hash sicuri]] al posto di un [[cifrario]] per evitare problemi legali che erano presenti al momento del progetto. L'implementazione tiene anche conto del fatto che un certo hash o cifrario potrebbe essere scoperto essere debole, e quindi il progetto è durabile contro ogni tale debolezza. <!--Fast recovery from [[pool compromise]] is not considered a requirement, because the requirements for pool compromise are sufficient for much easier and more direct attacks on unrelated parts of the operating system.-->
 
In questa implementazione, il generatore mantiene una stima del numero di [[bit]]s di rumore nella [[entropy pool]]. Da questa entropy pool i numeri casuali sono creati. Quando viene letto, <code>/dev/random</code> ritorna solo byte casuali ll'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.
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>{{citeCita web|url=http://www.pinkas.net/PAPERS/gpr06.pdf |titletitolo=Analysis of the Linux Random Number Generator |authorautore=Zvi Gutterman |coauthorscoautori=Benny Pinkas, Tzachy Reinman |datedata=March 6, marzo 2006 |formatformato=PDF |accessdateaccesso=2008-09-18 settembre 2008}}</ref> nel quale descrivono alcune debolezze. Probabilmente il problema più importante riportato è quello che si verifica con sistemi [[sitema embedded|embedded]] o con i [[Live CD]] nel quale lo stato di bootup è 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 "dovrebbe far richiere 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, il quale può essere utilizzato per generare chiavi crittografiche.
 
==FreeBSD==
Riga 19:
L'algoritmo Yarrow è basato sull'assunzione che i moderni generatori di numeri pseudocasuali sono molto sicuri se il loro stato rimane sconosciuto all'attaccante. Mentre un metodo basato su una entropy pool è completamente sicuro se implementato correttamente, non rimane sicuro se la quantità di entropia viene sovrastimata ed è più debole di un generatore basato su un seme bel inizializzato. In alcuni casi un attaccante potrebbe avere un considerevole controllo sull'entropia, per esempio i server senza disco potrebbere prendere gran parte della propria entropia dalla rete e questo li rende vulnerabili a un attacco man-in-the-middle. Yarrow mette molta attenzione nell'evitare che un pool sia compromesso e sul suo rapido ripristino. Il seme dell'algoritmo è periodicamente rigenerato; nei sistemi con bassa attività di rete e di disco, questo viene fatto dopo una frazione di secondo.
 
Nel 2004 [[Landon Curt Noll]] testò <code>/dev/random</code> di FreeBSD 5.2.1 e concluse che non era crittograficamente sicuro perché il suo output aveva difetti multipli e uniformi.<ref>{{CiteCita web|titletitolo=How good is LavaRnd?: Detailed Description of Test Results and Conclusions |url=http://www.lavarnd.org/what/nist-test.html |datedata=22 Sepsettembre 2004 |workopera=LavaRnd |publishereditore=LavaRnd |accessdateaccesso=22 Dec. 2010}}</ref> Simili difetti furono trovati nell'implementazione di <code>/dev/random</code> di [[Linux]] 2.4.21-20, [[Solaris_(sistema_operativo)|Solaris]] patch 8 108528-18 e [[Mac OS X]] 10.3.5.
 
FreeBSD fornisce inoltre supporto per [[Generatore hardware di numeri casuali|generatore di numeri casuali hardware]].
 
== Altri sistemi operativi ==
<code>/dev/random</code> e <code>/dev/urandom</code> sono disponibili su [[Solaris]], [[Mac OS X]], [[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 allo standard e smette di riempire il pool quanto pensa che contenga abbastanza entropia..<ref>{{citeCita web|url=http://lists.gnupg.org/pipermail/gnupg-devel/2003-April/019954.html |titletitolo=AIX 5.2 /dev/random and /dev/urandom devices |publishereditore=Lists.gnupg.org |authorautore=Iain Roberts|datedata=April 25, aprile 2003 |accessdateaccesso=18 settembre 2008-09-18}}</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]].