Wie wird die Entropie für / dev / random in Precise erfasst?

7

Mit einer Standardinstallation von Ubuntu 12.04, wie ist die Entropie für /dev/randomgesammelt.

Ist die Installation intelligent genug, um eine verfügbare Hardwaregenerierung einzurichten? Werden standardmäßig benutzerbasierte Quellen wie Tastaturinterrupts verwendet?

Bearbeiten: Um ganz klar zu sein, ich suche nach der spezifischen Konfiguration, die mit der Installation geliefert wird (oder wie man sie findet), ich suche nicht, wie es theoretisch gemacht werden könnte.

Lucas
quelle

Antworten:

2

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 randomQuellen, 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/randomaber standardmäßig für die meisten Aufgaben ausreichen.

Lesen Sie auch diese Frage zum Stackoverflow

c0rp
quelle
2

Wahre Zufälligkeit kommt aus der physischen Welt, nicht von deterministischen Pseudozufallszahlengeneratoren. Der Linux-Kernel sammelt zufällige Timings und fügt seinem Entropiepool Informationen hinzu. Ich würde empfehlen, in die Kernelquellen zu gehen

Die Eingabeentropie bezieht sich auf die Handler des Funktionsaufrufs: add_interrupt_randomness (irq) registrierte SA_SAMPLE_RANDOM, das Timing zwischen Interrupts ist die Rauschquelle, add_keyboard_randomness (scancode) und add_mouse_randomness (mouse_data) ===> alle diese Funktionen rufen add_timer_randomness () auf

Ausgabeentropie: Kernelraum: [get_random_bytes (buf, number)] (Siehe LXR => linux / drivers / char / random.c ) Benutzerraum: / dev / random / dev / urandom

Siehe LXR => linux / drivers / char / random.c

askb
quelle
Ich habe dies getan, seit ich diese Frage gestellt habe. Ich habe eine verwandte Frage zu Unix und Linux zu einigen Besonderheiten gestellt, wenn Sie interessiert sind.
Lucas