Mein derzeitiges Verständnis eines Entropiepools ist, dass er wirklich zufällige Datenbits mit einer langsamen Geschwindigkeit sammelt . Ich würde gerne wissen, wie Unix & Linux Entropie sammeln und wie diese Entropie von / dev / random verwendet wird.
Ich habe (allgemein) von Entropie-Erfassungsmethoden wie dem Status der Grafikkarten-CPU gehört, wenn ein "zufällig" ausgewähltes Netzwerkpaket eintrifft, das mit dem Rauschfaktor im Digital-Analog-Wandler verglichen wird, und anderen noch stumpferen Methoden.
Ich glaube, dass der Entropie- "Pool" nach Bedarf abgegriffen wird und verwendet wird, um einen Pseudo-Zufallsgenerator zu erzeugen ....
Ich bin nicht auf der Suche nach einer eingehenden Antwort, aber ich bin interessiert zu wissen, ob dies der allgemeine Ansatz von Unix / Linux ist? .. und vielleicht einige Hinweise darauf, was tatsächlich auf der Entropy-Collection-Kohlefläche vor sich geht. .. und in was wird dann die Entropie eingespeist .. Ist es eine AES Rijndael Chiffre?
Die Hintergrundinformationen für meine obigen Kommentare stammen von Steve Gibsons Security Now! Podcast: Episode # 301 Going Random, Teil 2 von 2 ... Er sprach nur generisch (aber wie sein Stil, mit genügend Details und Klarheit, so dass selbst ich ihn verstehen konnte. Das Anhören der vorhergehenden 300 Folgen hilft :), ... und ich würde gerne wissen, ob Unix / Linux das so macht ...
Antworten:
Linux hat zwei Zufallszahlen - Generatoren zur Verfügung User - Space,
/dev/random
und/dev/urandom
./dev/random
ist eine Quelle "wahrer" Zufälligkeit - dh sie wird nicht von einem Pseudozufallszahlengenerator erzeugt. Die Entropie wird vom Eingabetreiber und vom Interrupt-Handler über die Funktionenadd_input_randomness
und eingespeistadd_interrupt_randomness
. Prozesse, die dieses Gerät lesen, werden blockiert, wenn die Entropie aufgebraucht ist./dev/urandom
ist ein Pseudozufallszahlengenerator. Es wird von demselben Entropiepool gespeist wie/dev/random
, aber wenn dieser aufgebraucht ist, schaltet es auf einen kryptografisch starken Generator um.Userspace-Anwendungen können durch Schreiben an in den Entropiepool eingespeist werden
/dev/{,u}random
.Lesen Sie die zufällige (4) Handbuchseite und die Datei
drivers/char/random.c
im Kernel-Quellbaum. Es ist gut kommentiert und das meiste, was Sie fragen, wird dort erklärt.FreeBSDs sind
/dev/random
standardmäßig ein Pseudozufallszahlengenerator, der den Yarrow-Algorithmus verwendet (kann jedoch auf ein Hardware-RNG verweisen, wenn eines angeschlossen ist). Der Softwaregenerator nimmt Entropie von Ethernet- und seriellen Verbindungen und Hardware-Interrupts (austauschbar durchsysctl kern.random
). Es wird angenommen, dass der Yarrow-Algorithmus sicher ist, solange der interne Status unbekannt ist. Daher/dev/random
sollte er immer qualitativ hochwertige Daten ausgeben, ohne sie zu blockieren. Siehe zufällig (4) .Stellt unter NetBSD
/dev/random
zufällige Daten bereit, die nur auf der gesammelten Entropie basieren (von Festplatten, Netzwerk, Eingabegeräten und / oder Bandlaufwerken; mit rndctl einstellbar ), während/dev/urandom
bei leerem Entropiepool auf PRNG zurückgegriffen wird, ähnlich wie bei Linux. Siehe zufällig (4) , rndctl (8) , rnd (9) .OpenBSD hat vier Generatoren:
/dev/random
ist ein Hardware-Generator,/dev/srandom
ist ein sicherer Zufallsdatengenerator (unter Verwendung von MD5 im Entropiepool: "Interrupts von Festplatten und Netzwerkgeräten und dergleichen"),/dev/urandom
ist ähnlich, greift jedoch auf einen PRNG zurück, wenn der Entropiepool leer ist. Das vierte/dev/arandom
ist ebenfalls ein PRNG, verwendet jedoch RC4 . Siehe zufällig (4) , arc4 zufällig (3) .Mac OS X verwendet ebenfalls den Yarrow-Algorithmus für
/dev/random
, arbeitet jedoch/dev/urandom
aus Kompatibilitätsgründen identisch . "Der SecurityServer-Daemon speist dem Generator regelmäßig zusätzliche Entropie aus zufälligen Jitter-Messungen des Kernels." Siehe zufällig (4) .quelle
cat /dev/random
und mich immer gefragt, warum mein Stream nach so vielen Zeichen gestoppt wurde