it-swarm-eu.dev

Fütterung / Entwicklung / zufälliger Entropiepool?

Welche Art der zusätzlichen Fütterung /dev/random Entropiepool würden Sie vorschlagen, um zufällige Passwörter zu erstellen? Oder gibt es vielleicht eine bessere Möglichkeit, lokal vollständig zufällige Passwörter lokal zu erstellen?

51
pootzko

Sie können es mit weißem Rauschen von Ihrem Soundchip füttern, falls vorhanden. Siehe diesen Artikel: http://www.linuxfromscratch.org/hints/downloads/files/entropy.txt

24
Henri

Sie sollten /dev/urandom Verwenden, nicht /dev/random. Die beiden Unterschiede zwischen /dev/random Und /dev/urandom Sind (ich spreche hier von Linux):

  • /dev/random Könnte theoretisch besser sein im Kontext eines informationstheoretisch sicheren Algorithmus. Dies ist die Art von Algorithmus, die gegen die Technologie von heute und auch gegen die Technologie von morgen und die von Außerirdischen verwendete Technologie sowie gegen Gottes eigenes iPad sicher ist. Informationstheoretisch sichere Algorithmen sind gegen unendliche Rechenleistung geschützt. Es ist unnötig zu erwähnen, dass solche Algorithmen ziemlich selten sind und wenn Sie einen verwenden würden, würden Sie es wissen. Dies ist auch ein "könnte": intern verwendet /dev/random Konventionelle Hash-Funktionen, sodass die Wahrscheinlichkeit besteht, dass es ohnehin Schwächen hätte, wenn es mit unendlicher Kraft angegriffen würde (für die Erde kein Grund zur Sorge) -basierte Angreifer).

  • /dev/urandom Wird nicht blockiert, während /dev/random Dies möglicherweise tut. /dev/random Behält einen Zähler für "wie viel Entropie es noch hat" unter der Annahme bei, dass alle von ihm erzeugten Bits ein verlorenes Entropiebit sind. Das Blockieren führt zu sehr realen Problemen, z. Ein Server, der nach einer automatisierten Installation nicht gestartet werden kann, weil er bei der Erstellung des SSH-Serverschlüssels blockiert (ja, das habe ich gesehen). /dev/urandom Verwendet einen kryptografisch starken Pseudozufallszahlengenerator, damit er niemals blockiert.

Sie möchten also /dev/urandom Verwenden und sich keine Gedanken mehr über dieses Entropiegeschäft machen.

Jetzt möchten Sie sich vielleicht Gedanken über die Entropie machen, wenn Sie das Linux-Installationsprogramm schreiben. Der Trick ist, dass /dev/urandom Niemals blockiert, selbst wenn es sollte: /dev/urandom Ist sicher, solange es seit dem letzten Start genügend Bytes "Anfangsentropie" empfangen hat (32 zufällige Bytes) genug). Bei einer normalen Linux-Installation wird bei der Installation ein zufälliger Startwert (aus /dev/random) Erstellt und auf der Festplatte gespeichert. Bei jedem Neustart wird der Startwert gelesen, in /dev/urandom Eingegeben und sofort ein neuer Startwert generiert (aus /dev/urandom), Um ihn zu ersetzen. Dies garantiert somit, dass /dev/urandom Immer genügend Anfangsentropie hat, um kryptografisch starke Alea zu erzeugen, die für jeden alltäglichen kryptografischen Job, einschließlich der Kennworterzeugung, vollkommen ausreicht. Der einzige kritische Punkt ist während der Installation: Das Installationsprogramm muss eine Entropie von /dev/random Erhalten, die blockieren kann. Dieses Problem tritt auch bei Live-CDs und anderen Varianten ohne permanenten Lese-/Schreibbereich auf. In diesen Situationen möchten Sie möglicherweise eine Entropiequelle finden, um sicherzustellen, dass /dev/random Gut gespeist wird und nicht blockiert.

Das Betriebssystem selbst und genauer gesagt der Kernel sind am richtigen Ort, um Entropie aus Hardwareereignissen zu erfassen, da es die Hardware verarbeitet. Es gibt also relativ wenig, das Sie für die Entropie verwenden können, das der Kernel noch nicht verwendet. Eine dieser verbleibenden Quellen sind Webcam-Daten: Eine Webcam, die sogar einer leeren Wand zugewandt ist, gibt Daten mit thermischem Rauschen aus, und da sie viele Daten ausgibt, ist sie ein guter Entropiesammler. Nehmen Sie einfach ein paar Frames von der Webcam, hashen Sie sie mit einer sicheren Hash-Funktion (SHA-256) und schreiben Sie diese in /dev/urandom. Das ist immer noch ein großer Overkill.

50
Thomas Pornin

Ich kenne Audio-Entropie-Daemon und Havege , die von Haveged-Daemon verwendet werden. Probieren Sie sie aus.

13
krempita

Der beste Wert, den ich in einem HW-Zufallsgerät gesehen habe, ist simtec entropy key.
Verfügt über eine Reihe integrierter Schutzmaßnahmen zum Schutz vor Fehlern und Angriffen. Zum Beispiel werden die FIPS 140-2-Zufälligkeitstests für jede Charge von 20 KB ausgeführt), die sich selbst ausschalten, wenn eine statistisch signifikante Anzahl von Tests fehlschlägt. Ich habe einen erhalten, als ich viele Schlüssel ausgeführt habe Generierung für DNSSEC-Forschung, und es hat meine Arbeit erheblich beschleunigt. Es besteht alle Dieharder-Tests. (Beachten Sie, testen Sie Ihre Zufallsströme immer regelmäßig, unabhängig davon, was der Anbieter Ihnen sagt ;-)

7
spinkham

1) Sie müssen /dev/random Keine weitere Entropie hinzufügen, um sie für Passwörter zu verwenden. Das System erledigt das bereits für Sie.

2) Um ein zufälliges Passwort zu generieren, ist es besser, /dev/urandom Zu verwenden, nicht /dev/random. (/dev/random Hat einige Probleme: Es blockiert, es erschöpft den Entropiepool auf eine Weise, die dazu führen kann, dass andere Benutzer von /dev/random Blockieren. /dev/urandom Ist die bessere Allzweckschnittstelle .)

3) Hier ist ein einfaches Skript, mit dem ich ein zufälliges Passwort generiere. Sie können es gerne benutzen.

#!/bin/sh
# Make a 48-bit password (8 characters, 6 bits per char)
dd if=/dev/urandom count=1 2>/dev/null | base64 | head -1 | cut -c4-11 
7
D.W.

Ich verwende eine Kombination aus Datenquellen und einem guten Hashing-Algorithmus, um zufällige Daten zu generieren.

Auf einem Webserver können Sie Serverdaten (HW, SW, Leistung), Clientdaten (Benutzeragent, Anforderungszeit, Cookie, URL-Variablen, was auch immer Sie sammeln können), einige externe Daten (wie random.org), kombinieren. Mischen Sie alles mit sha1 (gemischte_Daten + Zeit + einige_Sekret_Schlüssel) und Sie erhalten ziemlich unvorhersehbare zufällige Daten.

Sie können auch P2PEG verwenden, um Entropie von Clients und Servern einfach zu erfassen.

2
DUzun

Passwörter, wenn sie kurz sind, können immer mit brutaler Gewalt geknackt werden, wenn die Geschwindigkeit oder Anzahl der Versuche nicht begrenzt ist. Wenn andererseits die Anzahl der Versuche begrenzt ist (z. B. interaktive Anmeldung), ist selbst eine geringe Menge an Entropie im Grunde genommen nicht zu knacken - die Anzahl der erforderlichen Versuche wird sehr bald unerschwinglich.

Es sollte also keine Fälle geben, in denen es wichtig wäre, eine wirklich gute Entropie für Passwörter zu erhalten.

Verwenden Sie einfach/dev/urandom, es ist mehr als gut genug.

Die anderen hier gegebenen Antworten sind gute Kommentare dazu, wie Sie Ihr/dev/random bei Bedarf mit genügend Entropie versorgen können.

1
Nakedible