.\" -*- coding: UTF-8 -*-
.\" Copyright (c) 1997 John S. Kallal (kallal@voicenet.com)
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA)
.\" 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.
.\" %%%LICENSE_END
.\"
.\" 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 <linux@horizon.com>,
.\"             Matt Mackall <mpm@selenic.com>
.\"     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 "15. März 2013" Linux Linux\-Programmierhandbuch
.SH BEZEICHNUNG
random, urandom \- Kernel\-Geräte zur Erzeugung von Zufallszahlen
.SH ÜBERSICHT
#include <linux/random.h>
.sp
\fBint ioctl(\fP\fIfd\fP\fB, RND\fP\fIrequest\fP\fB, \fP\fIparam\fP\fB);\fP
.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.
.LP
Writing to \fI/dev/random\fP or \fI/dev/urandom\fP will update the entropy pool
with the data written, but this will not result in a higher entropy count.
This means that it will impact the contents read from both files, but it
will not make reads from \fI/dev/random\fP faster.
.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 Seed (»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 Seed 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 Seed 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 Seed 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
    # Seed ü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
    # Seed über einen Neustart hinweg sichern
    # den gesamten Entropie\-Pool sichern
    echo "Seed 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.
.SS ioctl(2)\-Schnittstelle
The following \fBioctl\fP(2)  requests are defined on file descriptors
connected to either \fI/dev/random\fP or \fI/dev/urandom\fP.  All requests
performed will interact with the input entropy pool impacting both
\fI/dev/random\fP and \fI/dev/urandom\fP.  The \fBCAP_SYS_ADMIN\fP capability is
required for all requests except \fBRNDGETENTCNT\fP.
.TP 
\fBRNDGETENTCNT\fP
Retrieve the entropy count of the input pool, the contents will be the same
as the \fIentropy_avail\fP file under proc.  The result will be stored in the
int pointed to by the argument.
.TP 
\fBRNDADDTOENTCNT\fP
Increment or decrement the entropy count of the input pool by the value
pointed to by the argument.
.TP 
\fBRNDGETPOOL\fP
Entfernt in Linux 2.6.9
.TP 
\fBRNDADDENTROPY\fP
Add some additional entropy to the input pool, incrementing the entropy
count.  This differs from writing to \fI/dev/random\fP or \fI/dev/urandom\fP,
which only adds some data but does not increment the entropy count.  The
following structure is used:
.IP
.nf
    struct rand_pool_info {
        int    entropy_count;
        int    buf_size;
        __u32  buf[0];
    };
.fi
.IP
Here \fIentropy_count\fP is the value added to (or subtracted from) the entropy
count, and \fIbuf\fP is the buffer of size \fIbuf_size\fP which gets added to the
entropy pool.
.TP 
\fBRNDZAPENTCNT\fP, \fBRNDCLEARPOOL\fP
Zero the entropy count of all pools and add some system data (such as wall
clock) to the pools.
.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"
\fBmknod\fP(1)
.br
RFC\ 1750, »Randomness Recommendations for Security«
.SH KOLOPHON
Diese Seite ist Teil der Veröffentlichung 3.74 des Projekts
Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie
Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
sich unter \%http://www.kernel.org/doc/man\-pages/.

.SH ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von
Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>
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 <debian-l10n-german@lists.debian.org>.