/dev/random: Unterschied zwischen den Versionen
K Textersetzung - „http://“ durch „https://“ |
K Textersetzung - „–“ durch „-“ |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 10: | Zeile 10: | ||
; Beim Lesen gibt <code>/dev/random</code> nur solange Zufallszahlen zurück, bis die abgeschätzte Entropiemenge erschöpft ist | ; Beim Lesen gibt <code>/dev/random</code> nur solange Zufallszahlen zurück, bis die abgeschätzte Entropiemenge erschöpft ist | ||
* dann blockieren Lesezugriffe auf <code>/dev/random</code>, bis zusätzliches Umgebungsrauschen erhalten wurde.<ref>[[Linux]] [[manpage]] [https://www.kernel.org/doc/man-pages/online/pages/man4/random.4.html random(4)]</ref><ref>[[Solaris (Betriebssystem)|Solaris]] 10 manpage {{Webarchiv|text=random(7d) |url=https://docs.sun.com/app/docs/doc/816-5177/random-7d |wayback=20090216185131}}</ref> <code>/dev/random</code> 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]]s oder [[Public Key|Schlüsselerzeugung]]) | * dann blockieren Lesezugriffe auf <code>/dev/random</code>, bis zusätzliches Umgebungsrauschen erhalten wurde.<ref>[[Linux]] [[manpage]] [https://www.kernel.org/doc/man-pages/online/pages/man4/random.4.html random(4)]</ref><ref>[[Solaris (Betriebssystem)|Solaris]] 10 manpage {{Webarchiv|text=random(7d) |url=https://docs.sun.com/app/docs/doc/816-5177/random-7d |wayback=20090216185131}}</ref> <code>/dev/random</code> 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]]s oder [[Public Key|Schlüsselerzeugung]]) | ||
* Aus Geschwindigkeitsgründen wird in der Praxis oft nur der "Seed" eines Pseudo-Zufallszahlengenerators von <code>/dev/random</code> gelesen ( | * Aus Geschwindigkeitsgründen wird in der Praxis oft nur der "Seed" eines Pseudo-Zufallszahlengenerators von <code>/dev/random</code> gelesen (beispielsweise in [[OpenSSL]], [[Pretty Good Privacy|PGP]] und [[GnuPG]]). | ||
; Der aktuelle Füllstand des Entropie-Pools lässt sich unter [[Linux (Kernel)|Linux]] aus der Datei <code>/proc/sys/kernel/random/entropy_avail</code> ermitteln. | ; Der aktuelle Füllstand des Entropie-Pools lässt sich unter [[Linux (Kernel)|Linux]] aus der Datei <code>/proc/sys/kernel/random/entropy_avail</code> ermitteln. | ||
Zeile 23: | Zeile 23: | ||
=== Standardisierung === | === Standardisierung === | ||
; <code>/dev/random</code> (wie auch <code>/dev/urandom</code>) ist weder im [[Filesystem Hierarchy Standard]] 2.3 noch in der [[Single UNIX Specification]] 3.0 spezifiziert. | ; <code>/dev/random</code> (wie auch <code>/dev/urandom</code>) ist weder im [[Filesystem Hierarchy Standard]] 2.3 noch in der [[Single UNIX Specification]] 3.0 spezifiziert. | ||
* Der [[Linux]]-[[Kernel (Betriebssystem)|Kernel]] stellte 1994 als erstes Betriebssystem ein <code>/dev/random</code>-Gerät bereit, woraufhin andere unixoide Betriebssysteme nachzogen,<ref>{{Internetquelle |url=https://everything2.com/title/%252Fdev%252Frandom |titel=/dev/random | * Der [[Linux]]-[[Kernel (Betriebssystem)|Kernel]] stellte 1994 als erstes Betriebssystem ein <code>/dev/random</code>-Gerät bereit, woraufhin andere unixoide Betriebssysteme nachzogen,<ref>{{Internetquelle |url=https://everything2.com/title/%252Fdev%252Frandom |titel=/dev/random - Everything2.com |abruf=2021-09-11}}</ref><ref>{{Internetquelle |autor=Jack Lloyd |url=https://randombit.net/bitbashing/posts/syllable_dev_random.html |titel=On Syllable's /dev/random |datum=2008-12-09 |sprache=en |abruf=2021-09-11}}</ref> so zum Beispiel FreeBSD 2.2 ab Juni 2000<ref>https://svn.freebsd.org/viewvc/base/head/sys/dev/random/randomdev.c?view=log</ref> oder [[Solaris (Betriebssystem)|Solaris]] 9 ab 2002.<ref>{{Webarchiv |url=https://blogs.sun.com/yenduri/entry/dev_random_in_solaris |text=Archivlink |wayback=20090731171753}}</ref> | ||
=== Implementierungen === | === Implementierungen === |
Aktuelle Version vom 11. Mai 2025, 20:53 Uhr
/dev/random - Zeichenorientierte virtuelle Gerätedatei die Zufallszahlen hoher Qualität liefert
Beschreibung
Da für netzwerkorientierte Systeme wie Unix Kryptographie-Dienste und damit Zufallszahlen eine bedeutende Rolle spielen, kommt dieser Datei und dem dahinterstehenden Treiber eine wichtige Bedeutung zu.
- Zufallsgenerator sammelt Umgebungsrauschen von Gerätetreibern und anderen Quellen in einem Entropie-"Pool"
- Der Generator speichert auch eine Abschätzung über die Anzahl der Bits im Entropie-Pool
- 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
- dann 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 Geschwindigkeitsgründen wird in der Praxis oft nur der "Seed" eines Pseudo-Zufallszahlengenerators von
/dev/random
gelesen (beispielsweise in OpenSSL, PGP und GnuPG).
- Der aktuelle Füllstand des Entropie-Pools 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 "Pool" entspricht.
/dev/urandom
Aus /dev/urandom
(unlimited random) können wie aus /dev/random
Zufallszahlen gelesen werden.
/dev/urandom
blockiert nicht, wenn eine definierte Entropieschwelle unterschritten wird
In diesem Fall kann nicht ganz ausgeschlossen werden, dass es einem Angreifer gelingt, die erzeugten Pseudozufallszahlen im Nachhinein zu berechnen.[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.
- Der Linux-Kernel stellte 1994 als erstes Betriebssystem ein
/dev/random
-Gerät bereit, woraufhin andere unixoide Betriebssysteme nachzogen,[4][5] so zum Beispiel FreeBSD 2.2 ab Juni 2000[6] oder Solaris 9 ab 2002.[7]
Implementierungen
In FreeBSD findet ein auf dem Yarrow-Algorithmus basierender Generator Verwendung[8]. AIX verwendet seit AIX 5.2 ebenfalls eine Yarrow-Implementation.[9]
In Linux verhält sich /dev/random
seit 2020 wie /dev/urandom
, da dessen Zufallszahlen mittlerweile als praktikabel selbst für kryptographische Zwecke angesehen werden.[10]
Verbesserung der Entropie
- Über Software lässt sich die Entropie verbessern sowie der Entropie-Pool vergrößern, damit mehr Zufallszahlen zur Verfügung stehen
- Mit der GNU-Software
rng-tools
lassen sich unter Linux und ähnlichen Betriebssystemen physikalische Zufallszahlengeneratoren einbinden.[11]