Das ist ein Körnchen Wahrheit, tatsächlich mehr Wahrheit als Mythos, aber dennoch spiegelt die Aussage ein grundlegendes Missverständnis dessen wider, was vor sich geht. Ja, das Bewegen der Maus beim Generieren eines Schlüssels mit GPG kann eine gute Idee sein. Ja, das Bewegen der Maus trägt zu einer Entropie bei, die Zufallszahlen zufällig macht. Nein, durch Bewegen der Maus wird der Schlüssel nicht sicherer.
Alle guten Zufallsgeneratoren, die für die Kryptografie geeignet sind, und Linux-Generatoren in dieser Kategorie, bestehen aus zwei Komponenten:
- Eine Entropiequelle , die nicht deterministisch ist. Der Zweck der Entropie besteht darin, den Zufallszahlengenerator mit unvorhersehbaren Daten zu booten. Die Entropiequelle darf nicht deterministisch sein. Andernfalls könnte ein Gegner dieselbe Berechnung reproduzieren.
- Ein Pseudozufallszahlengenerator , der aus einem sich ändernden internen Zustand deterministisch unvorhersehbare Zufallszahlen erzeugt.
Die Entropie muss von einer Quelle stammen, die sich außerhalb des Computers befindet. Der Benutzer ist eine Entropiequelle. Was der Benutzer tut, ist meistens nicht zufällig, aber das feine Timing von Tastenanschlägen und Mausbewegungen ist so unvorhersehbar, dass es leicht zufällig ist - nicht sehr zufällig, aber nach und nach sammelt es sich an. Andere mögliche Entropiequellen sind das Timing von Netzwerkpaketen und weißem Rauschen von Kamera oder Mikrofon. Unterschiedliche Kernelversionen und -konfigurationen verwenden möglicherweise unterschiedliche Quellen. Einige Computer verfügen über dedizierte Hardware-RNG-Schaltkreise, die auf radioaktivem Zerfall oder weniger eindrucksvoll auf instabilen elektronischen Schaltkreisen basieren. Diese dedizierten Quellen sind besonders nützlich bei eingebetteten Geräten und Servern, die beim ersten Start ein ziemlich vorhersehbares Verhalten aufweisen können, ohne dass ein Benutzer seltsame Dinge tun muss.
Linux stellt Programmen Zufallszahlen über zwei Geräte zur Verfügung: /dev/random
und/dev/urandom
. Das Lesen von beiden Geräten gibt eine kryptografische Qualität zurück. Beide Geräte verwenden denselben internen RNG-Status und denselben Algorithmus, um den Status zu transformieren und zufällige Bytes zu erzeugen. Sie haben besondere Einschränkungen, die keinen von ihnen zum richtigen machen:
/dev/urandom
kann vorhersagbare Daten zurückgeben, wenn das System noch keine ausreichende Entropie angesammelt hat.
/dev/random
berechnet die Menge der verfügbaren Entropie und Blöcke, wenn nicht genug vorhanden ist. Dies hört sich gut an, außer dass die Berechnung auf theoretischen Überlegungen basiert, die dazu führen, dass die Menge der verfügbaren Entropie mit jedem Ausgangsbit linear abnimmt. Neigt daher /dev/random
dazu, sehr schnell zu blockieren.
Linux-Systeme speichern den internen RNG-Status auf der Festplatte und stellen ihn beim Start wieder her. Daher überträgt sich die Entropie von einem Schuh zum nächsten. Das einzige Mal, wenn einem Linux-System die Entropie fehlt, ist die Neuinstallation. Sobald das System eine ausreichende Entropie aufweist, nimmt die Entropie nicht ab. Nur die fehlerhafte Berechnung von Linux nimmt ab. Für weitere Erklärungen dieser Überlegung /dev/urandom
eignet sich read zum Generieren eines kryptografischen Schlüssels durch einen professionellen Kryptographen. Siehe aso Can erklären Sie sich die Entropie Schätzung in random.c verwendet .
Durch Bewegen der Maus wird dem System mehr Entropie hinzugefügt. Aber gpg kann nur aus lesen /dev/random
, nicht/dev/urandom
(einem Weg , um dieses Problem zu lösen ist , um /dev/random
das gleiche 1: 9 - Gerät wie /dev/urandom
), so dass es nie in Gefahr Aufnahme nicht-zufall genug Zufallszahlen ist. Wenn Sie die Maus nicht bewegen, ist die Taste so zufällig wie möglich. aber was passieren kann ist, dass gpg in einem Lesevorgang blockiert wird/dev/random
und darauf wartet, dass der Entropiezähler des Kernels steigt.