Provided by: manpages-de_1.11-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.

       When read, the /dev/random device will return  random  bytes  only  within  the  estimated
       number  of bits of noise in the entropy pool. /dev/random should be suitable for uses that
       need very high quality randomness such as one-time pad or key generation. When the entropy
       pool  is  empty, reads from /dev/random will block until additional environmental noise is
       gathered. If open(2)  is called for /dev/random with the  flag  O_NONBLOCK,  a  subsequent
       read(2)   will  not  block if the requested number of bytes is not available. Instead, the
       available bytes are returned. If no byte is available, read(2)  will return -1  and  errno
       will be set to EAGAIN.

       A  read  from the /dev/urandom device will not block waiting for more entropy. If there is
       not sufficient entropy, a pseudorandom number generator is used to  create  the  requested
       bytes.  As  a  result,  in this case the returned values are theoretically vulnerable to a
       cryptographic attack on the algorithms used by the driver. Knowledge of how to do this  is
       not  available  in  the  current unclassified literature, but it is theoretically possible
       that such an attack may exist. If this is a concern in your application,  use  /dev/random
       instead. O_NONBLOCK has no effect when opening /dev/urandom. When calling read(2)  for the
       device /dev/urandom, signals will not be handled until after the  requested  random  bytes
       have been generated.

       Since  Linux 3.16, a read(2)  from /dev/urandom will return at most 32 MB. A read(2)  from
       /dev/random will return at most 512 bytes (340  bytes  on  Linux  kernels  before  version
       2.6.12).

       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 666 /dev/random c 1 8
           mknod -m 666 /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 die 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 ] && bits=$(cat $poolfile) || bits=4096
           bytes=$(expr $bits / 8)
           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 ] && bits=$(cat $poolfile) || bits=4096
           bytes=$(expr $bits / 8)
           dd if=/dev/urandom of=$random_seed count=1 bs=$bytes

       In    the    above    examples,    we    assume    Linux    2.6.0    or    later,    where
       /proc/sys/kernel/random/poolsize returns the size of the entropy pool in bits (see below).

   /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
       Die  folgenden  ioctl(2)-Anfragen  sind  in  mit  entweder  /dev/random  oder /dev/urandom
       verbundenen Datei-Deskriptoren  definiert.  Alle  ausgeführten  Anfragen  werden  mit  dem
       Eingabe-Entropie-Pool  wechselwirken und damit auf /dev/random und /dev/urandom auswirken.
       Die Capability CAP_SYS_ADMIN wird für alle Anfragen außer RNDGETENTCNT benötigt.

       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

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

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.04  des  Projekts  Linux-man-pages. 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/.

ÜBERSETZUNG

       Die   deutsche   Übersetzung  dieser  Handbuchseite  wurde  von  Martin  Eberhard  Schauer
       <Martin.E.Schauer@gmx.de> und Helge Kreutzmann <debian@helgefjell.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>.