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

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

Einstieg

Wer hätte gedacht, eine zufällige Zahl zu generieren, wäre ein solches Chaos, es soll genauso einfach sein wie eine Zahl zwischen einem bestimmten Bereich zu erraten. Aber es ist nicht so einfach, wie es scheint, und bis jetzt ist es nachweislich nicht in der Lage, eine echte zufällige Zahl selbst zu generieren.

Warum Maschinen selbst keine echte Zufallszahl erzeugen können?

Maschinen sind jedoch nur angewiesen. Und deshalb haben wir bis jetzt und weiter die Natur oder Menschen mit Maschinen einbezogen, um eine echte zufällige Zahl zu erzeugen. Wir werden hier nicht diskutieren, wie man eine echte Zufallszahl generiert, aber wir werden über die bereits implementierten Zufallszahlengeneratoren sowie ihre Arbeit und Schwächen diskutieren.

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

Die Frage stellt sich, warum die Erzeugung wahrer zufälliger Zahlen wichtig ist, und die Antwort darauf ist auf Sicherheitsbedenken hinweg beträgt. Die meisten kryptografischen Algorithmen basieren auf der Erzeugung von Zufallszahlen, da diese Zufallszahlen zum Erstellen kryptografischer Schlüssel verwendet werden. Wenn die generierten Zufallszahlen nicht wirklich zufällig sind, machen diese alle kryptografischen Techniken schwächer und diese Schlüssel können relativ einfacher vorhergesagt werden Verwenden des Algorithmus, mit dem diese zufälligen Schlüssel generiert wurden. Dies ist der wichtigste Grund für echte Zufallszahlen, außer Anwendungen wie Glücksspiel.

Zufallszahlengenerator in Linux -Kerneln:

Das Thema unserer heutigen Diskussion basiert auf dem Linux -Zufallszahlengenerator, auf welchen Faktoren dieser Generator basiert und es wirklich zufällig ist oder nur eine andere typisch unzuverlässige Zufallszahl.

Linux verwendet Pseudo -Zufallszahlengenerator (PRNG) oder kryptografisch sicherer Pseudo -Zufallszahlengenerator (CSPRNG), was bedeutet, dass komplexe mathematische Formeln und Umgebungseigenschaften verwendet werden, um maximale Zufälligkeit zu erreichen. Linux war das erste Betriebssystem, das PRNG in seinen Kernelraum enthielt. Dies wurde 1994 von Theodore Ts'o umgesetzt.

Linux hat drei Kategorien von Zufallszahlengeneratoren, /dev /random, /dev /urandom, /dev /arandom. Alle drei sind die Dateien, in denen Linux Zufallszahlen speichert. Die Zufallszahlen in diesen Dateien werden mit dem Umgebungsgeräusch der Geräte -Treiber und anderer Quellen generiert. Um die Zufälligkeit in den Zufallszahlen zu gewährleisten, verwendet Linux Entropie, was das Ausmaß der Unsicherheit oder Störung zwischen ihnen ist. Hier finden Sie auch die manuelle Seite für Linux Random Number Generator (RNG):

http: // Man7.org/linux/mannseiten/man4/random.4.html

/dev/random versus /dev /urandom gegen /dev /arandom:

Die Hauptunterschiede zwischen /dev /random, /dev /urandom und /dev /arandom besteht darin ist nicht vollständig ausgesät, wenn sie boot. Kurz gesagt, /dev /random ist das sicherste von allen, kommt dann /dev /arandom und der am wenigsten sicherste ist /dev /urandom. Normalerweise werden /dev /random und /dev /urandom verwendet, weil /dev /arandom in vielen Begriffen ähnlich wie /dev /urandom ist. Die Entropieschätzung für den Zufallszahlenpool kurz wird verwendet, um die Zufälligkeit der generierten Zahlen zu bestimmen. Je mehr Entropie ist, desto mehr Zufälligkeit wird erreicht und besser ist es. Die derzeitige Entropie und Größe seines Entropiepools ist bei/proc/sys/kernel/random/namens als entropy_avail bzw. pool_size erhältlich, die mithilfe von Befehlen in Terminal angezeigt werden können:

CAT/Proc/Sys/Kernel/Random/Entropy_AVAIL

Und:

CAT/Proc/Sys/Kernel/Random/Pool_Size

Sowohl Urandom als auch zufällig werden in verschiedenen Szenarien verwendet. "Urandom" wird verwendet, wenn ein ständiges Bedürfnis nach Zufallszahlen erforderlich ist und seine Zufälligkeit nicht viel wichtig ist, wenn "Zufall" verwendet wird, wenn ein Sicherheitsbedenken besteht und seine Zufälligkeit zuverlässig sein sollte die Note. Obwohl die Entropie für Urandom (unbegrenzt zufällig) nicht viel schwächer ist, es wird jedoch empfohlen, zufällig zu verwenden, wenn mehr Sicherheit erforderlich ist.

Schwächen bei Linux -Zufallszahlengeneratoren

Für nichtflüchtige Speicherhardware:

Für Linux -Kernel ist der Zufallszahlengenerator nicht gut für eingebettete Hardware wie Router, in denen der bootfähige Zustand vorhersehbar ist und die Quelle für ausreichend Entropie begrenzt ist. Für diese Art von Hardware wird empfohlen, vor dem Abschalten Zufallszahlengenerator (RNG) zu speichern und zu verwenden, der im nächsten Start verwendet wird. In solchen Fällen von Routern können die Angreifer die generierten Zufallszahlen nur gefährden und vorhersagen, wenn sie Zugriff auf alle Routerverbindungen haben und ihre Kommunikationsverbindungen abhören oder wenn sie direkt auf den gespeicherten RNG -Zustand vom Router selbst zugegriffen haben.

Für diesen Fehler von RNG bei Hardware kommen Entropie -Generatoren von Drittanbietern zur Rettung. Diese Entropiegeneratoren wie "HABED" verwenden das Timing des Prozessor -Cache, externe Audio- und Videoeingabegeräte, um die Entropie auf ein akzeptables Ausmaß 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 gezeigt.

Obwohl es im Linux -Zufallszahlengenerator einige Schwächen gibt, ist es im Vergleich zu anderen RNGs jedoch weitaus bessere Option, um die laufenden Patches nicht zu vergessen, die von Linux -Mitwirkenden und Entwicklern bereitgestellt werden.

Abschluss:

Dies war alles von meiner Seite um den Zufallszahlengenerator im Linux -Kernel. Ich hatte eine gute Zeit darin, dieses Wissen mit Ihnen zu verbreiten. Ich hoffe, Sie haben durch es etwas Neues gelernt und dass Sie das Wissen weiter der Welt teilen werden. Zuletzt danke für die Investitionszeit in diesen Artikel.