Sicherheit

/dev/random vs /dev/urandom und sind sie sicher??

/dev/random vs /dev/urandom und sind sie sicher??

Einstieg

Wer hätte gedacht, dass das Generieren einer Zufallszahl so ein Durcheinander ist, es soll genauso einfach sein, wie eine Zahl irgendwo innerhalb eines bestimmten Bereichs zu erraten. Aber es ist nicht so einfach wie es scheint und auch bisher haben sich alle Automaten als nicht in der Lage bewiesen, alleine eine echte Zufallszahl zu generieren.

Warum Maschinen allein keine echte Zufallszahl erzeugen können?

Maschinen sind jedoch nur angewiesene Sätze von Mechanismen und Schaltungen, und daher können sie nicht ohne Hilfe angewiesen werden, sich eine Zufallszahl selbst auszudenken. Und deshalb haben wir bis heute und darüber hinaus die Natur oder den Menschen mit Maschinen involviert, um eine echte Zufallszahl zu generieren. Wir werden hier nicht diskutieren, wie man eine echte Zufallszahl erzeugt, sondern wir werden über die bereits implementierten Zufallszahlengeneratoren und deren Funktionsweise und Schwächen diskutieren.

Warum ist es so wichtig, eine echte Zufallszahl zu generieren??

Es stellt sich die Frage, warum die Generierung echter Zufallszahlen wichtig ist und die Antwort darauf aus Sicherheitsgründen besteht?. Die meisten kryptografischen Algorithmen basieren auf der Generierung von Zufallszahlen, da diese Zufallszahlen verwendet werden, um kryptografische Schlüssel zu erstellen, und wenn die generierten Zufallszahlen nicht wirklich zufällig sind, werden diese kryptografischen Techniken insgesamt schwächer und diese Schlüssel können relativ einfacher vorhergesagt werden Verwenden des Algorithmus, der verwendet wurde, um diese zufälligen Schlüssel zu generieren. Dies ist der wichtigste Grund für echte Zufallszahlen, abgesehen von Anwendungen wie Glücksspiel.

Zufallszahlengenerator in Linux-Kernels:

Das Thema für unsere heutige Diskussion basiert auf dem Linux-Zufallszahlengenerator, auf welchen Faktoren dieser Generator basiert und ist es wirklich so zufällig oder ist es nur eine andere typischerweise unzuverlässige Zufallszahl?.

Linux verwendet Pseudo Random Number Generator (PRNG) oder Cryptographically Secure Pseudo Random Number Generator (CSPRNG), was bedeutet, dass es komplexe mathematische Formeln und Umgebungseigenschaften verwendet, um maximale Zufälligkeit zu erreichen. Linux war das erste Betriebssystem, das PRNG in seinen Kernel-Bereich aufgenommen hat. Dies wurde 1994 von Theodore Ts'o implementiert.

Linux hat drei Kategorien von Zufallszahlengeneratoren: /dev/random, /dev/urandom, /dev/arandom. Das sind alle drei Dateien, in denen Linux Zufallszahlen speichert. Die Zufallszahlen in diesen Dateien werden unter Verwendung des Umgebungsrauschens von den Gerätetreibern und anderen Quellen generiert. Um die Zufälligkeit in seinen Zufallszahlen zu gewährleisten, verwendet Linux außerdem die Entropie, die das Ausmaß der Unsicherheit oder Unordnung zwischen ihnen ist. Sie können die Handbuchseite für Linux Random Number Generator (RNG) auch hier finden:

http://man7.org/linux/man-pages/man4/random.4.html

/dev/zufällig gegen /dev/urandom gegen /dev/arandom:

Der Hauptunterschied zwischen /dev/random, /dev/urandom und /dev/arandom besteht darin, dass /dev/random blockiert, wenn die Entropie keine ausreichende Zufälligkeit anzeigt, /dev/urandom nicht blockiert, selbst wenn der Pseudo-Zufallszahlengenerator wird beim Booten nicht vollständig gesetzt und /dev/arandom blockiert nur, wenn der Pseudo-Zufallszahlengenerator noch nicht vollständig gesetzt ist. Kurz gesagt, /dev/random ist das sicherste von allen, dann kommt /dev/arandom und das am wenigsten sicherste ist /dev/urandom. Normalerweise werden /dev/random und /dev/urandom verwendet, weil /dev/arandom in vielerlei Hinsicht ähnlich zu /dev/urandom ist. Die Entropieschätzung für den Zufallszahlenpool kurz gesagt wird verwendet, um die Zufälligkeit der erzeugten Zahlen zu bestimmen. Je mehr Entropie ist, desto mehr Zufälligkeit wird erreicht und besser ist es. Die aktuelle Entropiemenge und die Größe des Entropiepools sind unter /proc/sys/kernel/random/ mit den Namen entropy_avail bzw. pool_size verfügbar und können im Terminal mithilfe von Befehlen angezeigt werden:

cat /proc/sys/kernel/random/entropy_avail

Und:

cat /proc/sys/kernel/random/pool_size

Sowohl urandom als auch random werden in verschiedenen Szenarien verwendet. 'Urandom' wird verwendet, wenn ständig Zufallszahlen benötigt werden und seine Zufälligkeit nicht sehr wichtig ist, während 'Random' verwendet wird, wenn ein Sicherheitsbedenken besteht und seine Zufälligkeit zuverlässig sein sollte, da es die Ausgabe von Zufallszahlen blockiert, wenn die Entropie nicht so groß ist die Note. Obwohl die Entropie für Urandom (Unlimited Random) nicht viel schwächer ist, wird empfohlen, Random zu verwenden, wenn mehr Sicherheit erforderlich ist, da die Möglichkeit von Angriffen auf die durch Urandom generierte Zahl besteht.

Schwächen in Linux-Zufallszahlengeneratoren

Für nichtflüchtige Speicherhardware:

Für Linux-Kernel ist der Zufallszahlengenerator nicht gut für eingebettete Hardware wie Router, bei denen der bootfähige Zustand vorhersehbar ist und die Quelle für genügend Entropie begrenzt ist. Für diese Art von Hardware wird empfohlen, den Zustand des Random Number Generator (RNG) vor dem Herunterfahren zu speichern und zu verwenden, der beim nächsten Booten verwendet wird. In solchen Fällen von Routern können die Angreifer die generierten Zufallszahlen nur dann kompromittieren und vorhersagen, wenn sie Zugriff auf alle Router-Links haben und seine Kommunikationsverbindungen belauschen oder wenn sie direkt vom Router selbst auf den gespeicherten RNG-Zustand zugegriffen haben.

Für diesen Fehler von RNG im Falle von Hardware kommen Entropiegeneratoren von Drittanbietern zur Rettung. Diese Entropiegeneratoren wie 'haveged' verwenden Prozessor-Cache-Timing, externe Audio- und Video-Eingabegeräte, um die Entropie auf ein akzeptables Maß zu erhöhen.

Entropieschätzung:

Wie bereits erwähnt, bestimmt der Linux-Kernel die Zufälligkeit in Bezug auf die Entropie, berechnet jedoch nicht jedes Mal die Entropie und verwendet stattdessen Entropieschätzungen. Mehrere Untersuchungen haben auch ergeben, dass die in Linux verwendete Entropieschätzung von Zufallszahlen keine geeigneten oder genaueren Schätzungen sind, wodurch die Gesamtzufälligkeit der Zahlen schwächer wird.

Obwohl der Linux Random Number Generator einige Schwächen aufweist, ist er im Vergleich zu anderen RNGs eine weitaus bessere Option, nicht zu vergessen die laufenden Patches, die von Linux-Mitwirkenden und -Entwicklern bereitgestellt werden.

Fazit:

Das war von meiner Seite alles über den Zufallszahlengenerator im Linux-Kernel. Ich hatte eine gute Zeit, dieses Wissen mit Ihnen zu verbreiten. Ich hoffe, du hast dadurch etwas Neues gelernt und auch, dass du das Wissen weiter mit der Welt teilst. Abschließend noch vielen Dank, dass Sie Zeit in diesen Artikel investiert haben.

So ändern Sie Mauszeiger- und Cursorgröße, Farbe und Schema unter Windows 10
Der Mauszeiger und der Cursor in Windows 10 sind sehr wichtige Aspekte des Betriebssystems. Dies kann auch für andere Betriebssysteme gesagt werden, a...
Kostenlose und Open-Source-Spiele-Engines für die Entwicklung von Linux-Spielen
Dieser Artikel behandelt eine Liste von kostenlosen und Open-Source-Spiele-Engines, die für die Entwicklung von 2D- und 3D-Spielen unter Linux verwend...
Shadow of the Tomb Raider für Linux Tutorial
Shadow of the Tomb Raider ist die zwölfte Erweiterung der Tomb Raider-Reihe – ein Action-Adventure-Franchise von Eidos Montrealdos. Das Spiel wurde vo...