/dev/random
/dev/random ist unter vielen unixoiden Betriebssystemen ein zeichen-orientiertes (Pseudo)-Device, über das Programme auf einen systemweiten Zufallszahlengenerator von hoher Qualität (zum Unterschied von /dev/urandom, siehe unten) 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 zentrale 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. Von diesem Pool werden die Zufallszahlen generiert; der aktuelle Füllstand lässt sich unter Linux mit dem Befehl cat /proc/sys/kernel/random/entropy_avail
aus der Datei /proc/sys/kernel/random/entropy_avail
ermitteln. Beim Lesen gibt /dev/random nur solange Zufallszahlen zurück, bis die abgeschätzte Entropiemenge erschöpft ist. Wenn der Entropiepool leer 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-Pad 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).
/dev/urandom blockiert im Gegensatz zu /dev/random nicht, wenn eine definierte Entropieschwelle unterschritten wird. D. h. /dev/urandom ist für Anwendungen geeignet, die keine hohen Ansprüche an die Zufälligkeit der Zufallszahlen stellen oder schnell eine große Menge von Zufallszahlen benötigen, wie z. B. Spiele.
Standardisierung
/dev/random 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.[3] Der Linux-Kernel stellt die Schnittstelle /dev/random schon in Versionen vor 2002 bereit.[4] In FreeBSD findet ein auf dem Yarrow-Algorithmus basierender Generator Verwendung[5], /dev/random wird seit Juni 2000 (FreeBSD 2.2) unterstützt.[6] AIX verwendet seit AIX 5.2 ebenfalls eine Yarrow-Implementation.[7]
Verbesserung der Entropie
Über Software wie timer_entropyd
, rng-tools
, haveged
, randomsound
etc. lässt sich die Entropie verbessern sowie der Entropie-Pool vergrößern, sodass mehr Zufallszahlen zur Verfügung stehen. Mit dieharder
steht ein Testprogramm für Zufallszahlengeneratoren zur Verfügung.[8][9]
Siehe auch
Einzelnachweise
- ↑ Linux manpage random(4)
- ↑ Solaris 10 manpage random(7d)
- ↑ http://blogs.sun.com/yenduri/entry/dev_random_in_solaris
- ↑ http://www.cosy.sbg.ac.at/~andi/SUNrand/
- ↑ random(4) BSD Kernel Interfaces Manual. Abgerufen am 21. April 2013 (englisch).
- ↑ http://svn.freebsd.org/viewvc/base/head/sys/dev/random/randomdev.c?view=log
- ↑ AIX 5.2 /dev/random and /dev/urandom devices. Abgerufen am 21. April 2013 (englisch).
- ↑ http://www.vanheusden.com/te/timer_entropyd-0.1.tgz
- ↑ https://code.google.com/p/dieharder/