Angenommen, ich möchte ein Gigabyte oder so zufälliger Daten aus / dev / random, die für ein einmaliges Pad geeignet sind (also ist / dev / urandom out.) Wie setze ich mein / dev / random mit genügend Entropie, um dies zu tun? Ich suche dafür spezielle Befehle und Programme. Ich möchte nichts kaufen. Ich benutze Arch Linux, wenn das einen Unterschied macht.
arch-linux
random
PyRulez
quelle
quelle
Here — type something:
und dann die Zeitdeltas zwischen den Tastenanschlägen mit einer höheren Genauigkeit misst, als ein Mensch steuern kann?Antworten:
Zwei Programme, die den Entropiepool ohne zusätzliche Hardware erhöhen können, sind
rng-tools
undhaveged
.rng-tools
Verwendet RNGs, die in modernen CPUs und Chipsätzen verfügbar sind,haveged
verwendet moderne CPU-Zufälligkeit (Cache-Verhalten usw.). Beide sind in Arch verfügbar und im Arch-Wiki finden Sie auf einer interessanten Seite. Ich habe nicht versucht, damit ein Gigabyte an Daten zu generieren, aber es sollte in vernünftiger Zeit möglich sein.Sie schließen den Kauf von allem ausdrücklich aus, aber der Vollständigkeit halber gibt es in LWN einen interessanten Artikel über Entropie mit NeuG , der die Diskussion
haveged
und verschiedene andere Ansätze enthält. Sie können ein STM8S-Board für NeuG für weniger als 10 US-Dollar oder ein FST-01 für 35 US-Dollar kaufen.quelle
Leider ist / dev / random auch nicht für die Verwendung in einem einmaligen Pad geeignet, zumindest nicht für die Art von einmaligem Pad (mit nachweisbaren Sicherheitsgarantien), die sich die meisten Menschen vorstellen, wenn sie an einmalige Pads denken oder diese implementieren. Die meisten der folgenden Informationen sind aus dem (sehr langen) Artikel unter http://www.2uo.de/myths-about-urandom/ zusammengefasst.
Das Problem ist, dass / dev / random nicht wirklich zufällig ist; Es verwendet ein CSPRNG, um seine Ausgabe zu generieren. Tatsächlich verwendet / dev / random genau das gleiche CSPRNG wie / dev / urandom. Der einzige Unterschied besteht darin, dass / dev / random blockiert, wenn die interne Entropieschätzung nicht ausreicht.
Das Wort "Schätzung" im vorherigen Satz ist der Schlüssel. Die meisten Leute denken, dass diese Schätzung immer genau und perfekt ist, aber in Wirklichkeit ist sie überhaupt nicht genau. In dem Moment, in dem die Schätzung falsch ist, verlieren Sie alle nachweisbaren Sicherheitsgarantien des einmaligen Pads, und alles, was Sie übrig haben, ist Computersicherheit - nicht besser als wenn Sie / dev / urandom verwendet hätten!
Wenn Sie die Entropieschätzung nur ein wenig falsch machen, wird Ihr einmaliges Pad nicht nur ein bisschen unsicher. Die nachweisbare Sicherheitsgarantie eines einmaligen Pads ist alles oder nichts.
Die Prämisse dieser Frage ist, dass die Probleme mit / dev / random durch Hinzufügen von mehr Entropie "behoben" werden können. Leider ist diese Prämisse falsch. Eine böswillige Entropiequelle ist viel schlimmer als gar keine Entropie, da Entropiequellen häufig Zugriff auf interne Daten haben und diese Daten mithilfe der RNG-Ausgabe verdeckt exportieren können - siehe http://blog.cr.yp.to/20140205-entropy .html für eine vollständige Diskussion (zu lang, um sie hier zusammenzufassen). Insbesondere eine Hardware-Entropiequelle (wie von mehreren anderen Antworten empfohlen) ist aus Sicherheitsgründen eine sehr schlechte Wahl, da diese Hardware in der besten Position ist, um böswillige Dinge zu tun, und im Wesentlichen nicht zu prüfen ist.
quelle
Eine HW-Komponente scheint die beste Idee zu sein. Es gibt einige HW-Generator-ICs, aber Sie müssen ihnen vertrauen, wenn sie kommen.
Zwei wahrscheinlich gute Lösungen bestehen darin, Komponenten dazu zu bringen, Rauschen zu erzeugen. Zwei Hauptlösungen scheinen die Temperaturverschiebung und das mit einer Diode erzeugte Avanche-Rauschen zu sein (siehe http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html ).
Da die Komponenten wie Kreisel und Beschleunigungsmesser sinnvoller geworden sind, kann es auch eine gute Lösung sein, sie mit höchster Empfindlichkeit arbeiten zu lassen und ihren LSB-Wert zu verwenden, aber AFAIK niemand hat sie geprüft.
Ist lustig, da es viel Papier über NOT do RNG gibt, aber keine offene und verifizierte HW-Implementierung
quelle
Sie könnten pycsprng.py verwenden . Kryptografisch sicher? Ich bin mir nicht ganz sicher, aber ich hätte gerne ein Peer-Review.
python pycsprng.py | pv | dd of=data.file bs=1024 count=1000
Die Pipe to
pv
ist optional und hilft Ihnen nur zu wissen, wie viele Daten übertragen wurden.Möglicherweise stellen Sie fest, dass größere Blockgrößen (bs) die Leistung erhöhen. Sie müssen die Anzahl anpassen, um keine zu große Datei zu generieren, wenn Sie die Blockgröße erhöhen.
quelle
/dev/urandom
...pycsprng.py
ist buchstäblich ein 10-SLOC-Skript, von dem Zufälligkeit herrührtos.urandom
. Die Ärzte sagen, dass "die zurückgegebenen Daten für kryptografische Anwendungen unvorhersehbar genug sein sollten [...] Auf einem UNIX-ähnlichen System wird dies abgefragt/dev/urandom
" . Es funktioniert tatsächlich (es ist jedoch eine veraltete Quelle) und Security.SE sagt, dass es für Krypto in Ordnung ist .Was Sie von einem analogen Mikrofonkanal erhalten, wenn Sie kein Mikrofon anschließen, ist normalerweise nur statisch. Pipe das durch bzip2, zum Beispiel zum Aufhellen, mische es mit einer anderen Zufallsquelle (urandom oder einer anderen Mikrofonbuchse), leite das Ergebnis vielleicht für ein gutes Maß durch openssl und was du bekommst, sollte ziemlich zufällig sein.
Es wäre jedoch schwierig, harte und schnelle Sicherheitseigenschaften über die Zufälligkeit des Ergebnisses nachzuweisen.
quelle
Wenn Sie den Linux-Kernel 2.6.9 oder neuer in einem amd64 / x86_64-Prozessor, einer virtuellen oder physischen Umgebung verwenden, können Sie ncomputers.org/pandom als echten Zufallszahlengenerator ausprobieren, der eine Entropie von 8 KiB / s von 64 Ubits / 64 Bit bietet
/dev/random
quelle
Um 100 MB von Hardware generierter Zufallsdaten zu generieren, können Sie:
Nehmen Sie mit dem eingebauten Mikrofon Ihres Computers (verfügbar auf einem Laptop) 20 Minuten Audio (96 kHz, 16 Bit, Mono) auf. Sie erhalten eine ~ 220 MB WAV-Datei.
Verwerfen Sie die nicht nützlichen Bits und mischen Sie die Bits der Binärdaten (viele Möglichkeiten, dies zu tun) mit etwas Mathematik
Exportieren Sie die gemischten Bits als ~ 100 MB Binärdatei
Hier ist ein Artikel dazu: Ein Versuch, mit Audio (und dem eingebauten Mikrofon Ihres Computers) echte Entropie und zufällige Daten zu erzeugen .
quelle