Zum Inhalt springen

/dev/random: Unterschied zwischen den Versionen

Aus Foxwiki
Die 5 zuletzt angesehenen Seiten:  IP-Header » Domain Name System » Virtual Local Area Network » /dev/random
K Textersetzung - „„“ durch „"“
K Textersetzung - „http://“ durch „https://“
Zeile 9: Zeile 9:


; 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]] [http://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=http://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 (z.&nbsp;B.&nbsp;in [[OpenSSL]], [[Pretty Good Privacy|PGP]] und [[GnuPG]]).
* Aus Geschwindigkeitsgründen wird in der Praxis oft nur der "Seed" eines Pseudo-Zufallszahlengenerators von <code>/dev/random</code> gelesen (z.&nbsp;B.&nbsp;in [[OpenSSL]], [[Pretty Good Privacy|PGP]] und [[GnuPG]]).


Zeile 19: Zeile 19:


; <code>/dev/urandom</code> blockiert nicht, wenn eine definierte Entropieschwelle unterschritten wird
; <code>/dev/urandom</code> blockiert nicht, wenn eine definierte Entropieschwelle unterschritten wird
In diesem Fall kann nicht ganz ausgeschlossen werden, dass es einem Angreifer gelingt, die erzeugten [[Pseudozufall]]szahlen im Nachhinein zu berechnen.<ref>http://linux.die.net/man/4/urandom</ref>
In diesem Fall kann nicht ganz ausgeschlossen werden, dass es einem Angreifer gelingt, die erzeugten [[Pseudozufall]]szahlen im Nachhinein zu berechnen.<ref>https://linux.die.net/man/4/urandom</ref>


=== 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 – 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>http://svn.freebsd.org/viewvc/base/head/sys/dev/random/randomdev.c?view=log</ref> oder [[Solaris (Betriebssystem)|Solaris]] 9 ab 2002.<ref>{{Webarchiv |url=http://blogs.sun.com/yenduri/entry/dev_random_in_solaris |text=Archivlink |wayback=20090731171753}}</ref>
* 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 ===
In [[FreeBSD]] findet ein auf dem [[Yarrow (Algorithmus)|Yarrow-Algorithmus]] basierender Generator Verwendung<ref>{{Internetquelle |url=http://www.unix.com/man-page/FreeBSD/4/random/ |titel=random(4) BSD Kernel Interfaces Manual |sprache=en |zugriff=2013-04-21}}</ref>. [[AIX]] verwendet seit AIX 5.2 ebenfalls eine Yarrow-Implementation.<ref>{{Internetquelle |url=http://lists.gnupg.org/pipermail/gnupg-devel/2003-April/019954.html |titel=AIX 5.2 /dev/random and /dev/urandom devices |sprache=en |zugriff=2013-04-21}}</ref>
In [[FreeBSD]] findet ein auf dem [[Yarrow (Algorithmus)|Yarrow-Algorithmus]] basierender Generator Verwendung<ref>{{Internetquelle |url=https://www.unix.com/man-page/FreeBSD/4/random/ |titel=random(4) BSD Kernel Interfaces Manual |sprache=en |zugriff=2013-04-21}}</ref>. [[AIX]] verwendet seit AIX 5.2 ebenfalls eine Yarrow-Implementation.<ref>{{Internetquelle |url=https://lists.gnupg.org/pipermail/gnupg-devel/2003-April/019954.html |titel=AIX 5.2 /dev/random and /dev/urandom devices |sprache=en |zugriff=2013-04-21}}</ref>


In [[Linux]] verhält sich <code>/dev/random</code> seit 2020 wie <code>/dev/urandom</code>, da dessen Zufallszahlen mittlerweile als praktikabel selbst für kryptographische Zwecke angesehen werden.<ref>{{Internetquelle |autor=Jake Edge |url=https://lwn.net/Articles/808575/ |titel=Removing the Linux /dev/random blocking pool |werk=LWN.net |datum=2020-01-07 |sprache=en |abruf=2021-06-26}}</ref>
In [[Linux]] verhält sich <code>/dev/random</code> seit 2020 wie <code>/dev/urandom</code>, da dessen Zufallszahlen mittlerweile als praktikabel selbst für kryptographische Zwecke angesehen werden.<ref>{{Internetquelle |autor=Jake Edge |url=https://lwn.net/Articles/808575/ |titel=Removing the Linux /dev/random blocking pool |werk=LWN.net |datum=2020-01-07 |sprache=en |abruf=2021-06-26}}</ref>
Zeile 36: Zeile 36:
* [[randomsound]]
* [[randomsound]]


; Mit der [[GNU]]-Software <code>rng-tools</code> lassen sich unter Linux und ähnlichen Betriebssystemen [[Zufallszahlengenerator#Physikalischer Zufallszahlengenerator|physikalische Zufallszahlengeneratoren]] einbinden.<ref>{{Webarchiv|text=Archivlink |url=http://www.vanheusden.com/te/timer_entropyd-0.1.tgz |wayback=20130921054659}}</ref>
; Mit der [[GNU]]-Software <code>rng-tools</code> lassen sich unter Linux und ähnlichen Betriebssystemen [[Zufallszahlengenerator#Physikalischer Zufallszahlengenerator|physikalische Zufallszahlengeneratoren]] einbinden.<ref>{{Webarchiv|text=Archivlink |url=https://www.vanheusden.com/te/timer_entropyd-0.1.tgz |wayback=20130921054659}}</ref>


== Anwendung ==
== Anwendung ==

Version vom 7. April 2025, 14:42 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 (z. B. 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]

Anwendung

Siehe auch

  1. /dev/zero

Weblinks

  1. https://en.wikipedia.org/wiki//dev/random