Provided by: manpages-de_1.4-1_all bug

BEZEICHNUNG

       random, urandom - Kernel-Geräte zur Erzeugung von Zufallszahlen

ÜBERSICHT

       #include <linux/random.h>

       int ioctl(fd, RNDrequest, param);

BESCHREIBUNG

       Die  zeichenorientierten  Gerätedateien  /dev/random  und  /dev/urandom (seit Linux 1.3.30
       vorhanden) sind eine Schnittstelle zum kernelinternen  Zufallszahlengenerator.  Die  Datei
       /dev/random  hat  die  Major-Gerätenummer  1  und  die  Minor-Gerätenummer  8.  Die  Datei
       /dev/urandom hat die Major-Gerätenummer 1 und die Minor-Gerätenummer 9.

       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.

       Beim Lesen wird das Gerät /dev/random nur zufällige Bytes innerhalb der  geschätzten  Zahl
       der  Rausch-Bits im Entropie-Pool zurückgeben. /dev/random 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 /dev/random blockiert, bis weiteres Umgebungsrauschen gesammelt wurde.

       Ein Lesevorgang vom Gerät /dev/urandom 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 /dev/random.

       Writing to /dev/random or /dev/urandom 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 /dev/random faster.

   Verwendung
       Wenn  Sie  unsicher sind, ob Sie /dev/random oder /dev/urandom verwenden sollten, dann ist
       wahrscheinlich letzteres das Richtige für Sie. Als allgemeine  Regel  sollte  /dev/urandom
       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
       /dev/random 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 /dev/urandom (und
       /dev/random) 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 /dev/random 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
       ungeschickt implementiert ist.

   Konfiguration
       Wenn auf Ihrem System /dev/random und /dev/urandom nicht schon vorhanden sind, können  sie
       mit den folgenden Befehlen erzeugt werden:

           mknod -m 644 /dev/random c 1 8
           mknod -m 644 /dev/urandom c 1 9
           chown root:root /dev/random /dev/urandom

       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:

           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

       Fügen Sie ebenfalls in einem passenden Skript, das beim Herunterfahren  des  Linux-Systems
       ausgeführt wird, die folgenden Zeilen ein:

           # 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

   /proc-Schnittstelle
       Die  Dateien  im  Verzeichnis /proc/sys/kernel/random (verfügbar seit 2.3.16) stellen eine
       zusätzliche Schnittstelle zu /dev/random zur Verfügung.

       Die nur lesbare Datei entropy_avail gibt die verfügbare Entropie an. Normalerweise ist das
       4096 (Bits), ein voller Entropie-Pool.

       Die Datei poolsize gibt die Größe des Entropiepools an. Die Semantik dieser Datei variiert
       mit den Kernel-Versionen:

              Linux 2.4:  Diese  Datei  gibt  die  Größe  des   Entropie-Pools   in   Bytes   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.

              Linux 2.6:  Diese Datei ist nur lesbar und enthält die Größe des Entropie-Pools  in
                          Bits. Sie enthält den Wert 4096.

       Die  Datei  read_wakeup_threshold  gibt  die  erforderliche  Entropie  (in  Bits)  an,  um
       »schlafend« auf Entropie aus /dev/random wartende Prozesse zu »wecken«.  Der  Standardwert
       ist  64. Die Datei write_wakeup_threshold gibt die Entropie-Schwelle in Bits an, unterhalb
       derer Prozesse aufgeweckt werden, die ein select(2) oder ein poll(2) für den  schreibenden
       Zugriff  auf  /dev/random  ausführen.  Diese  Werte  können  geändert werden, indem in die
       Dateien geschrieben wird.

       Die nur lesbaren Dateien, die uuid  und  boot_id  enthalten  zufällige  Zeichenketten  wie
       6fd5a44b-35f4-4ad4-a9b9-6b9be13e1fe9.  Die erstere wird bei jedem Lesezugriff neu erzeugt,
       die letztere nur einmal.

   ioctl(2)-Schnittstelle
       The following ioctl(2)  requests are defined  on  file  descriptors  connected  to  either
       /dev/random  or  /dev/urandom. All requests performed will interact with the input entropy
       pool impacting both /dev/random and /dev/urandom. The CAP_SYS_ADMIN capability is required
       for all requests except RNDGETENTCNT.

       RNDGETENTCNT
              Retrieve  the entropy count of the input pool, the contents will be the same as the
              entropy_avail file under proc. The result will be stored in the int pointed  to  by
              the argument.

       RNDADDTOENTCNT
              Increment  or decrement the entropy count of the input pool by the value pointed to
              by the argument.

       RNDGETPOOL
              Entfernt in Linux 2.6.9

       RNDADDENTROPY
              Add some additional entropy to the input pool, incrementing the entropy count. This
              differs  from writing to /dev/random or /dev/urandom, which only adds some data but
              does not increment the entropy count. The following structure is used:

                  struct rand_pool_info {
                      int    entropy_count;
                      int    buf_size;
                      __u32  buf[0];
                  };

              Here entropy_count is the value added to (or subtracted from)  the  entropy  count,
              and buf is the buffer of size buf_size which gets added to the entropy pool.

       RNDZAPENTCNT, RNDCLEARPOOL
              Zero  the  entropy count of all pools and add some system data (such as wall clock)
              to the pools.

DATEIEN

       /dev/random
       /dev/urandom

SIEHE AUCH

       mknod(1)
       RFC 1750, »Randomness Recommendations for Security«

KOLOPHON

       This page is part of release 3.54 of the Linux man-pages project.  A  description  of  the
       project,     and    information    about    reporting    bugs,    can    be    found    at
       http://www.kernel.org/doc/man-pages/.

Ü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>.