/dev/random: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
BetaBot (discussione | contributi)
m Bot: Sistemo note con collegamenti esterni senza titolo (documentazione)
Corretti numerosi refusi ortografici e di traduzione
Riga 6:
La generazione di numeri casuali dal [[kernel]] è stata implementata per la prima volta in [[Linux]]<ref>{{Cita web|url=http://www.randombit.net/bitbashing/security/syllable_dev_random.html |titolo=On Syllable's /dev/random |autore=Jack Lloyd |data=9 dicembre 2008 |accesso=27 aprile 2009|urlarchivio=http://www.webcitation.org/5gOzG0qvc|dataarchivio=29 aprile 2009|deadurl=no}}</ref> nel 1994 da [[Theodore Ts'o]].<ref>{{Cita web|url=http://everything2.com/title/%252Fdev%252Frandom |titolo=/dev/random |data=8 giugno 2003 |editore=everything2.com |accesso=27 aprile 2009|urlarchivio=http://www.webcitation.org/5gOzGLECz|dataarchivio=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 llall'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>[http://www.kernel.org/doc/man-pages/online/pages/man4/random.4.html random(4) - Linux manual page<!-- Titolo generato automaticamente -->]</ref>) che riusa il pool interno per produrre bitsbit pseudocasuali aggiuntivi. Questo significa che la richiesta non si blocca, ma il risultato potrebbe contenere meno entropia rispetto a <code>/dev/random</code>. Nonostante sia un generatore di numeri pseudocasuali adatto per la maggior parte delle applicazioni crittografiche, non è raccomandato per la generazione di chiavi crittografiche a lunga scadenza.
 
È 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 |coautori=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 [[sitemasistema embedded|embedded]] o con i [[Live CD]] nel quale lo stato di bootupavvio 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 "dovrebbe far richiererichiederebbe 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==
Il sistema operativo [[FreeBSD]] implementa una variante a 256 bit dell'[[algoritmo Yarrow]] che ha lo scopo di fornire un [[generatore di numeri pseudocasuale crittograficamente sicuro]] che sostituisce il dispositivo random di Linux. A differenza di <code>/dev/random</code> di Linux, <code>/dev/random</code> di FreeBSD non è bloccante. Il suo comportamento è simile a <code>/dev/urandom</code> di Linux e <code>/dev/urandom</code> è collegato a <code>/dev/random</code>.
 
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 potrebberepotrebbe 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>{{Cita web|titolo=How good is LavaRnd?: Detailed Description of Test Results and Conclusions |url=http://www.lavarnd.org/what/nist-test.html |data=22 settembre 2004 |opera=LavaRnd |editore=LavaRnd |accesso=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.