Das ist eine komplizierte Frage. Ich werde antworten, indem ich aus wenigen Quellen zitiere.
Von der Linux-Manpage
Die Zeichenspezialdateien / dev / random und / dev / urandom (seit Linux 1.3.30 vorhanden) bieten eine Schnittstelle zum Zufallszahlengenerator des Kernels. Datei / dev / random hat Hauptgerät Nummer 1 und Nebengerät Nummer 8. Datei / dev / urandom hat Hauptgerät Nummer 1 und Nebengerät Nummer 9.
Der Zufallszahlengenerator sammelt Umgebungsgeräusche von Gerätetreibern und anderen Quellen in einem Entropiepool. Der Generator hält auch eine Schätzung der Anzahl von Rauschbits im Entropiepool. Aus diesem Entropiepool werden Zufallszahlen erstellt.
In Ubuntu 12.04 ist der Standardkernel 3.11 .
Aus dem Wiki
Der Linux-Kernel generiert Entropie aus Tastatur-Timings, Mausbewegungen und IDE-Timings und stellt die zufälligen Zeichendaten über die speziellen Dateien / dev / random und / dev / urandom anderen Betriebssystemprozessen zur Verfügung. Diese Funktion wurde in Linux Version 1.3.30 eingeführt.
Von der Linux- Manpage
Beim Lesen gibt das Gerät / dev / random nur zufällige Bytes innerhalb der geschätzten Anzahl von Rauschbits im Entropiepool zurück. / dev / random sollte für Anwendungen geeignet sein, die eine Zufälligkeit von sehr hoher Qualität erfordern, wie z. B. einmaliges Pad oder Schlüsselgenerierung. Wenn der Entropiepool leer ist, werden Lesevorgänge aus / dev / random blockiert, bis zusätzliches Umgebungsgeräusch erfasst wird.
Zitat aus random
Quellen, aus Kernel 3.11.10.10
* Theory of operation
* ===================
*
* Computers are very predictable devices. Hence it is extremely hard
* to produce truly random numbers on a computer --- as opposed to
* pseudo-random numbers, which can easily generated by using a
* algorithm. Unfortunately, it is very easy for attackers to guess
* the sequence of pseudo-random number generators, and for some
* applications this is not acceptable. So instead, we must try to
* gather "environmental noise" from the computer's environment, which
* must be hard for outside attackers to observe, and use that to
* generate random numbers. In a Unix environment, this is best done
* from inside the kernel.
*
* Sources of randomness from the environment include inter-keyboard
* timings, inter-interrupt timings from some interrupts, and other
* events which are both (a) non-deterministic and (b) hard for an
* outside observer to measure. Randomness from these sources are
* added to an "entropy pool", which is mixed using a CRC-like function.
* This is not cryptographically strong, but it is adequate assuming
* the randomness is not chosen maliciously, and it is fast enough that
* the overhead of doing it on every interrupt is very reasonable.
* As random bytes are mixed into the entropy pool, the routines keep
* an *estimate* of how many bits of randomness have been stored into
* the random number generator's internal state.
Ja, es ist klug genug, benutzerbasierte Quellen zu verwenden , aber Sie können mehr konfigurieren, wenn Sie möchten.
Es gibt Kernel mit Zufallsgeneratoren, die mehr Entropiequellen haben, wie z. B. Rauschen an Audioeingängen und andere wie Video, Kühlerzensoren usw. Schauen Sie hier, wenn Sie sich für Audioentropie interessieren. Ich hoffe, Sie finden selbst andere Kernel.
Sollte /dev/random
aber standardmäßig für die meisten Aufgaben ausreichen.
Lesen Sie auch diese Frage zum Stackoverflow