.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1997 John S. Kallal (kallal@voicenet.com) .\" .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" Some changes by tytso and aeb. .\" .\" 2004-12-16, John V. Belmonte/mtk, Updated init and quit scripts .\" 2004-04-08, AEB, Improved description of read from /dev/urandom .\" 2008-06-20, George Spelvin , .\" Matt Mackall .\" Add a Usage subsection that recommends most users to use .\" /dev/urandom, and emphasizes parsimonious usage of /dev/random. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH RANDOM 4 "29. August 2010" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG random, urandom \- Kernel\-Geräte zur Erzeugung von Zufallszahlen .SH BESCHREIBUNG Die zeichenorientierten Gerätedateien \fI/dev/random\fP und \fI/dev/urandom\fP (seit Linux 1.3.30 vorhanden) sind eine Schnittstelle zum kernelinternen Zufallszahlengenerator. Die Datei \fI/dev/random\fP hat die Major\-Gerätenummer 1 und die Minor\-Gerätenummer 8. Die Datei \fI/dev/urandom\fP hat die Major\-Gerätenummer 1 und die Minor\-Gerätenummer 9. .LP Der Zufallszahlengenerator sammelt das Umgebungs\-»Rauschen« von Gerätetreibern und anderen Quellen in einem Entropie\-Pool. Der Generator merkt sich seine Schätzung der Anzahl der Rausch\-Bits im Entropie\-Pool. Aus diesem Entropie\-Pool von Zufallszahlen werden erzeugt. .LP Beim Lesen wird das Gerät \fI/dev/random\fP nur zufällige Bytes innerhalb der geschätzten Zahl der Rausch\-Bits im Entropie\-Pool zurückgeben. \fI/dev/random\fP sollte für Anwendungen geeignet sein, die einen hohen Grad von Zufälligkeit erfordern. Das sind beispielsweise die einmalige Erzeugung von Schlüsseln oder »Pads«. Wenn der Entropie\-Pool leer ist, werden Lesezugriffe auf \fI/dev/random\fP blockiert, bis weiteres Umgebungsrauschen gesammelt wurde. .LP Ein Lesevorgang vom Gerät \fI/dev/urandom\fP blockiert das Warten auf weitere Entropie nicht. Als Ergebnis sind bei unzureichender Entropie im Entropie\-Pool die zurückgegebenen Werte theoretisch anfällig für einen Angriff auf die kryptographischen Algorithmen, die der Treiber anwendet. In der verfügbaren (nicht geheimen) Literatur findet sich kein Wissen über solche Angriffe, aber deren Existenz ist theoretisch möglich. Wenn das für Ihre Anwendung problematisch ist, verwenden Sie stattdessen \fI/dev/random\fP. .SS Verwendung Wenn Sie unsicher sind, ob Sie \fI/dev/random\fP oder \fI/dev/urandom\fP verwenden sollten, dann ist wahrscheinlich letzteres das Richtige für Sie. Als allgemeine Regel sollte \fI/dev/urandom\fP für alles außer langlebige GPG/SSL/SSH\-Schlüssel verwendet werden. Es wird empfohlen, eine Seed\-Datei über Neustarts des Systems hinweg zu speichern. (Alle gängigen Linux\-Distributionen tun das seit spätestens dem Jahr 2000 ). Dann ist die Ausgabe des Zufallszahlengenerators kryptografisch sicher gegen Angreifer ohne lokalen Root\-Zugriff, sobald die Seed\-Datei während der Boot\-Sequenz neu geladen wird, und völlig ausreichend für Sitzungs\-Schlüssel bei Netzwerk\-Verschlüsselung. Da Lesezugriffe auf \fI/dev/random\fP blockieren können, werden die Nutzer in der Regel sie im nicht blockierenden Modus öffnen (oder für den Lesezugriff eine Zeitschranke setzen) und eine Art von Benachrichtigung des Benutzers realisieren wollen, wenn die gewünschte Entropie nicht sofort verfügbar ist. Der Kernel\-Zufallszahlen\-Generator wurde entwickelt, um eine kleine Menge von qualitativ hochwertigem »Saatgut« für die Initialisierung eines kryptographischen Pseudo\-Zufallszahlengenerators (CPRNG) zu erzeugen. Er ist auf Sicherheit und nicht auf Geschwindigkeit ausgelegt. Für die Erzeugung großer Mengen von Zufallsdaten ist er nicht geeignet. Anwender sollten sehr sparsam bei der Entnahme von »Saatgut« aus \fI/dev/urandom\fP (und \fI/dev/random\fP) sein; der Verbrauch unnötig großer Datenmengen von diesem Gerät wird eine negative Auswirkung auf die Mitbenutzer des Geräts haben. Die erforderliche Menge an Saatgut für die Erstellung eines kryptografischen Schlüssels entspricht der effektiven Größe des Schlüssels. Zum Beispiel hat eine 3072\-Bit\-RSA oder ein privater Diffie\-Hellman\-Schlüssel eine effektive Schlüssellänge von 128 Bit (es werden etwa 2^128 Operationen benötigt, um den Schlüssel zu knacken brechen). Somit muss ein Schlüsselgenerator nur 128 Bit (16 Byte) von Saatgut aus \fI/dev/random\fP entnehmen. Während ein Sicherheitszuschlag über dieses Minimum heraus sinnvoll ist, um sich gegen Mängel im CPRNG\-Algorithmus abzusichern, kann keine heute verfügbare kryptographische Primitive mehr als 256 Bit an Sicherheit. Wenn also ein Programm mehr als 256 Bit (32 Byte) pro Aufruf oder angemessenem Regenerierungsintervall (mindestens eine Minute) aus dem Entropiepool liest, sollte das als Zeichen genommen werden, dass seine Kryptographie \fIungeschickt\fP implementiert ist. .SS Konfiguration Wenn auf Ihrem System \fI/dev/random\fP und \fI/dev/urandom\fP nicht schon vorhanden sind, können sie mit den folgenden Befehlen erzeugt werden: .nf mknod \-m 644 /dev/random c 1 8 mknod \-m 644 /dev/urandom c 1 9 chown root:root /dev/random /dev/urandom .fi Wenn ein Linux\-System wenig Benutzerinteraktion während des Systemstarts hat, kann der Entropie\-Pool in einem ziemlich vorhersehbaren Zustand sein. Dadurch verringert sich die tatsächliche Höhe des Rauschens im Entropie\-Pool unter die Schätzung. Um diesem Effekt entgegenzuwirken, kann man Informationen über den Entropie\-Pool über Stillstandszeiten und Systemstarts hinweg zu übernehmen. Dazu fügen Sie folgende Zeilen in ein geeignetes Skript ein, das während das des Hochfahrens des Linux\-Systems ausgeführt wird: .nf echo "Initialisierung des Zufallszahlengenerators ..." random_seed=/var/run/random\-seed # Saatgut über einen Neustart hinweg sichern # den gesamten Entropie\-Pool laden und dann sichern if [ \-f $random_seed ]; then cat $random_seed >/dev/urandom else touch $random_seed fi chmod 600 $random_seed poolfile=/proc/sys/kernel/random/poolsize [ \-r $poolfile ] && bytes=\`cat $poolfile\` || bytes=512 dd if=/dev/urandom of=$random_seed count=1 bs=$bytes .fi Fügen Sie ebenfalls in einem passenden Skript, das beim Herunterfahren des Linux\-Systems ausgeführt wird, die folgenden Zeilen ein: .nf # Saatgut über einen Neustart hinweg sichern # den gesamten Entropie\-Pool sichern echo "Saatgut wird gesichert ..." random_seed=/var/run/random\-seed touch $random_seed chmod 600 $random_seed poolfile=/proc/sys/kernel/random/poolsize [ \-r $poolfile ] && bytes=\`cat $poolfile\` || bytes=512 dd if=/dev/urandom of=$random_seed count=1 bs=$bytes .fi .SS /proc\-Schnittstelle Die Dateien im Verzeichnis \fI/proc/sys/kernel/random\fP (verfügbar seit 2.3.16) stellen eine zusätzliche Schnittstelle zu \fI/dev/random\fP zur Verfügung. .LP Die nur lesbare Datei \fIentropy_avail\fP gibt die verfügbare Entropie an. Normalerweise ist das 4096 (Bits), ein voller Entropie\-Pool. .LP Die Datei \fIpoolsize\fP gibt die Größe des Entropiepools an. Die Semantik dieser Datei variiert mit den Kernel\-Versionen: .RS .TP 12 Linux 2.4: Diese Datei gibt die Größe des Entropie\-Pools in \fIBytes\fP an. Normalerweise wird diese Datei den Wert 512 haben. In sie kann aber geschrieben werden und auf jeden Wert geändert werden, für den ein Algorithmus verfügbar ist. Als möglichkeite Werte stehen 32, 64, 128, 256, 512, 1024 oder 2048 zur Verfügung. .TP Linux 2.6: Diese Datei ist nur lesbar und enthält die Größe des Entropie\-Pools in \fIBits\fP. Sie enthält den Wert 4096. .RE .LP Die Datei \fIread_wakeup_threshold\fP gibt die erforderliche Entropie (in Bits) an, um »schlafend« auf Entropie aus \fI/dev/random\fP wartende Prozesse zu »wecken«. Der Standardwert ist 64. Die Datei \fIwrite_wakeup_threshold\fP gibt die Entropie\-Schwelle in Bits an, unterhalb derer Prozesse aufgeweckt werden, die ein \fBselect\fP(2) oder ein \fBpoll\fP(2) für den schreibenden Zugriff auf \fI/dev/random\fP ausführen. Diese Werte können geändert werden, indem in die Dateien geschrieben wird. .LP Die nur lesbaren Dateien, die \fIuuid\fP und \fIboot_id\fP enthalten zufällige Zeichenketten wie 6fd5a44b\-35f4\-4ad4\-a9b9\-6b9be13e1fe9. Die erstere wird bei jedem Lesezugriff neu erzeugt, die letztere nur einmal. .SH DATEIEN /dev/random .br .\" .SH AUTHOR .\" The kernel's random number generator was written by .\" Theodore Ts'o (tytso@athena.mit.edu). /dev/urandom .SH "SIEHE AUCH" mknod (1) .br RFC\ 1750, "Randomness Recommendations for Security" .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts und Informationen, wie Fehler gemeldet werden können, finden sich unter http://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an .