/dev/random

eine Datei-Schnittstelle auf UNIX-System für den systemweiten Zufallsgenerator
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 22. September 2014 um 12:47 Uhr durch 2001:4dd0:f908:1::1 (Diskussion) (Änderung 134254310 von 2001:4DD0:F908:1:0:0:0:1 rückgängig gemacht;). Sie kann sich erheblich von der aktuellen Version unterscheiden.

/dev/random ist unter vielen unixoiden Betriebssystemen eine zeichen-orientierte virtuelle Gerätedatei, über das Programme auf einen systemweiten Zufallszahlengenerator von hoher Qualität zugreifen können. Da für netzwerk-orientierte Systeme wie Unix Kryptographie-Dienste und damit Zufallszahlen eine bedeutende Rolle spielen, kommt dieser Datei und dem dahinterstehenden Treiber eine wichtige Bedeutung zu.

Der Zufallsgenerator sammelt Umgebungsrauschen von Gerätetreibern und anderen Quellen in einem Entropiepool. Der Generator speichert auch eine Abschätzung über die Anzahl der Bits im Entropiepool. Aus diesem Pool werden die Zufallszahlen generiert. Beim Lesen gibt /dev/random nur solange Zufallszahlen zurück, bis die abgeschätzte Entropiemenge erschöpft ist. Wenn der Entropiepool erschöpft ist, blockieren Lesezugriffe auf /dev/random, bis zusätzliches Umgebungsrauschen erhalten wurde.[1][2] /dev/random sollte ausreichend sein für Anwendungszwecke, die auf eine sehr hohe Qualität der Zufälligkeit angewiesen sind, wie etwa Verschlüsselung (beispielsweise One-Time-Pads oder Schlüsselerzeugung). Aus Performancegründen wird in der Praxis oft nur der Seed eines Pseudo-Zufallszahlengenerators von /dev/random gelesen (z. B. in OpenSSL, PGP und GnuPG).

Der aktuelle Füllstand des Entropiepools lässt sich unter Linux aus der Datei /proc/sys/kernel/random/entropy_avail ermitteln. Eine Ausgabe der Datei liefert die verfügbare Entropie in bit, wobei das Maximum von 4096 bit einem vollständig gefüllten Entropiepool entspricht.

/dev/urandom

Aus /dev/urandom (von engl. unlimited random(ness)) können wie aus /dev/random Zufallszahlen gelesen werden. Im Gegensatz zu letzterem blockiert es jedoch nicht, wenn eine definierte Entropieschwelle unterschritten wird. In diesem Fall ist es theoretisch möglich, dass die erzeugten Pseudozufallszahlen im Nachhinein von einem Angreifer berechnet werden können. Im Zweifelsfall sollte bei hohen Anforderungen, z. B. bei One-Time-Pads, auf /dev/random zurückgegriffen werden.[3]

Standardisierung

/dev/random (wie auch /dev/urandom) ist weder im Filesystem Hierarchy Standard 2.3 noch in der Single Unix Specification 3.0 spezifiziert.

Implementationen

/dev/random ist unter Solaris seit Solaris 9 (2002) Bestandteil des Kernels.[4] Der Linux-Kernel stellt ein /dev/random-Device mindestens seit 2002 bereit.[5] In FreeBSD findet ein auf dem Yarrow-Algorithmus basierender Generator Verwendung[6], /dev/random wird seit Juni 2000 (FreeBSD 2.2) unterstützt.[7] AIX verfügt sowohl über /dev/random als auch /dev/urandom und verwendet seit AIX 5.2 ebenfalls eine Yarrow-Implementation.[8]

Verbesserung der Entropie

Über Software, wie z. B. timer_entropyd, haveged, randomsound, lässt sich die Entropie verbessern sowie bzw. der Entropie-Pool vergrößern, sodass mehr Zufallszahlen zur Verfügung stehen. Mit der GNU-Software rng-tools lassen sich unter Linux und ähnlichen Betriebssystemen physikalische Zufallszahlengeneratoren einbinden.[9]

Siehe auch

Literatur

Dokumentation und Analyse des Linux-Pseudozufallszahlengenerators Eine Studie im Auftrag des Bundesamtes für Sicherheit in der Informationstechnik (BSI); Dezember 2013

Einzelnachweise

  1. Linux manpage random(4)
  2. Solaris 10 manpage random(7d)
  3. http://linux.die.net/man/4/urandom
  4. http://blogs.sun.com/yenduri/entry/dev_random_in_solaris
  5. http://www.cosy.sbg.ac.at/~andi/SUNrand/
  6. random(4) BSD Kernel Interfaces Manual. Abgerufen am 21. April 2013 (englisch).
  7. http://svn.freebsd.org/viewvc/base/head/sys/dev/random/randomdev.c?view=log
  8. AIX 5.2 /dev/random and /dev/urandom devices. Abgerufen am 21. April 2013 (englisch).
  9. http://www.vanheusden.com/te/timer_entropyd-0.1.tgz