Zufällige Entropie in Bash
- 4455
- 330
- Phoebe Jeorga
Bei der Verwendung von Zufallszahlen in Bash wird die Frage der zufälligen Entropie früher oder später auftauchen. Dieser Artikel hilft Ihnen, zu verstehen, was Entropie ist, wie er in Bash geändert und optimiert werden kann und wie sich dies auf die Zufallszahlenerzeugung auswirkt.
In diesem Tutorial lernen Sie:
- So generieren Sie zufällige Entropie in Bash
- So haben Sie den Zufallszahlengenerator in Bash vorbereitet
- Beispiele, die eine zufällige Entropieerzeugung in Bash zeigen
Softwareanforderungen und Konventionen verwendet
Kategorie | Anforderungen, Konventionen oder Softwareversion verwendet |
---|---|
System | Linux-Verteilungsunabhängige |
Software | BASH -Befehlszeile, Linux -basiertes System |
Konventionen | # - Erfordert, dass Linux -Commands mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden sudo Befehl$-erfordert, dass Linux-Commands als regulärer nicht privilegierter Benutzer ausgeführt werden |
Beispiel 1: zufällig oder nicht so zufällig?
Wir können leicht eine Zufallszahl in Bash erstellen:
$ echo $ random 13
Obwohl diese Zahl zufällig aussieht, ist sie tatsächlich nicht oder bestenfalls Pseudo-Random. Dies liegt daran $ Zufällig
Variable/Funktion.
Lassen Sie uns den Zufallszahlengenerator auf verschiedene Arten vorbereiten. Wir beginnen, indem wir den Zufallsgenerator mit Samen '1' vor dem Setzen vorbereiten WILLKÜRLICH
Zu 1
:
$ echo $ random 25552 $ random = 1 $ echo $ random 16807 $ random = 1 $ echo $ random 16807 $ echo $ random 15089 $ random = 1 $ echo $ random 16807 $ echo $ random 15089 $ random = a $ echo $ random 20034
Notiere dass der 16807
und sekundärer Anstieg 15089
Die Ergebnisse bleiben gleich, während der Zufallsgenerator mit vorbereiteten 1
. Es ändert sich, wenn es vor dem Samen mit A
.
Während der $ Zufällig
Variable in Bash liefert immer eine Zufallszahl, die vom Bash-Zufallszahlengenerator generiert wird. Es handelt sich auch um eine Variable, die beim Einstellen den Zufallsgenerator vorbereitet. Die Herausforderung besteht darin, dass das Ergebnis (und die Sequenz der Samen gleich ist!) wird auch das gleiche sein, wie Sie das obige Beispiel untersuchen können.
Wie der Zufallsgenerator in Ihrem System initialisiert wird. Lassen Sie uns sofort zu, dass es keine sehr sichere Möglichkeit ist, eine echte/reale Zufallszahl zu generieren, daher die Begriffe Pseudo-Random Und Pseudo-Randomness. Trotzdem kann viel getan werden, um es (viel) besser zu machen.
Beispiel 2: unser eigener zufälliger Entropiegenerator
Der einzige Eingang, der dem Zufallsgenerator zur Verfügung steht Zufällig =
. Wie können wir also einen wirklich zufälligen Samen finden, um den zufälligen Generator zu säen und eine echte zufällige Entropie zu erzeugen (Entropie: Die Qualität des Mangels an Vorhersehbarkeit)? Zufällige Entropie ist wichtig, insbesondere im Bereich der Computersicherheit.
Denken Sie über diese Frage nach; Wie können Sie die zufällige Eingabe als Samen für die zufällige Entropieerzeugung anbieten (um zu verprügeln)?
Ich glaube, ich habe eine Lösung im folgenden Code gefunden:
$ Datum +%s%n 1593785871313595555 # | ---------- | < Selected part indicated $ date +%s%N | cut -b10-19 4418322030 $ date +%s%N | cut -b10-19 4914627208 $ date +%s%N | cut -b10-19 5282934388 $ date +%s%N | cut -b10-19 5635463163 $ date +%s%N | cut -b10-19 5967700148 $ date +%s%N | cut -b10-19 6322917009 $ RANDOM=$(date +%s%N | cut -b10-19) $ echo $RANDOM 16349 $ RANDOM=$(date +%s%N | cut -b10-19) $ echo $RANDOM 9713
Das endgültige 9713
Ergebnis ist fast wirklich zufällig.
Datum +%s%n
ist eine Kombination von %S
Welches sind die Sekunden seitdem 1970-01-01 00:00:00 UTC - Eine einzigartige Zahl, aber immer noch etwas, das möglicherweise neu berechnet werden könnte. Und %N
ist Nanosekunden. Dann schneiden wir die Eingabe, um nur die letzten 10 Ziffern zu schnappen.
Dies bedeutet, dass wir am zweiten (letztes 0-9
Ziffer) + die vollständige Nanosekunde 000000000-999999999
zum zufälligen Generator als Samen. Dies wäre so gut wie unmöglich zu rekonstruieren, es sei denn, Sie erfassen den Wert, der vor dem Zuweisen erzeugt wird. Fast wirklich zufällig.
Dies bedeutet auch, dass Sie eine semi-random-Anzahl von x-Ziffern erhalten können, indem Sie einfach den körnigsten Teil der Mikrosekunde auswählen:
Datum +%S%N | Cut -b19-19 Datum +%s%n | Cut -b18-19 Datum +%s%n | Schnitt -b17-19
Der erste Befehl erzeugt 1 Ziffer, die zweiten 2 Ziffern usw.
Je länger Ihre schneiden
Slice wird (durch Erhöhen der Erhöhung der schneiden
Länge), desto weniger Pseudo-Random ist die Zahl, insbesondere wenn Sie in den Sekundenteil in Scheiben schneiden. Sie könnten auch die vom %S
, und reduzieren Sie die Schnittgröße, um einen weniger intensiven Systemanruf zu erhalten. Während es für einen einzigen Anruf von möglicherweise keine Rolle spielt $ Zufällig
, Es würde eine Rolle spielen, wenn es Hunderttausende Male genannt würde.
Abschluss
In diesem Artikel haben wir gesehen, wie man zufällig zufällige Entropie generiert. Während kein zufälliger Entropiegenerator perfekt ist (und daher eine zufällige Zahl, die daraus resultiert), kamen wir in die Nanosekundenzeit in die Nähe der Zeit. Wir haben auch festgestellt $ Zufällig
Variable.
Aktualisieren Sie Ihre Skripte mit unserem zufälligen Entropie -Initializer oder teilen Sie uns mit, ob Sie in den Kommentaren unten eine bessere entdeckt haben. Wer sonst ist an einer besseren Entropie interessiert?!
Genießen!
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Mastering -Bash -Skriptschleifen beherrschen
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- So richten Sie einen OpenVPN -Server auf Ubuntu 20 ein.04
- Mint 20: Besser als Ubuntu und Microsoft Windows?
- Linux -Konfigurationsdateien: Top 30 am wichtigsten
- Verschachtelte Schleifen in Bash -Skripten
- Linux -Download
- Kann Linux Viren bekommen?? Erforschung der Verwundbarkeit von Linux…