Frage

Sorry für dieses nicht eine "echte" Frage, aber Irgendwann zurück, ich erinnere mich an einen Beitrag hier über die Randomisierung randomizer zufällig zu erzeugen echte Zufallszahlen, nicht nur pseudo-Zufallszahlen.Ich dont sehen, wie es ist, wenn ich Suche für Sie.

Weiß jemand zu diesem Artikel?

War es hilfreich?

Lösung

Ich glaube, das war auf thedailywtf.com - ie.nicht etwas, das Sie tun möchten.

Es ist nicht möglich, um eine wirklich zufällige Zahl von Pseudo-zufälligen zahlen, egal wie viele Male Sie rufen Sie randomize().

Sie können Holen Sie sich "echte" Zufallszahlen aus speziellen hardware.Sie könnten auch sammeln Entropie von Maus-Bewegungen und Dinge wie, dass.

Andere Tipps

Ich bin nicht einverstanden mit eine Menge Antworten auf diese Frage.

Es ist möglich, sammeln, random, Daten auf einem computer.SSL, SSH, VPNs, wäre nicht sicher, wenn Sie es nicht konnte.

Die Art, wie software random number generator Arbeit ist, es ist eine pool zufällige Daten, die gesammelt werden, von vielen verschiedenen Orten, wie clock drift, unterbrechen, timings, etc.

Der trick, um diese Programme ist richtig, die Einschätzung der Entropie (dem noblen Namen für die Zufälligkeit).Es spielt keine Rolle, ob die Quelle bias, solange Sie eine Schätzung der Entropie richtig.

Um dies zu veranschaulichen, ist die chance, mich zu schlagen, der Brief e in diesem Kommentar ist viel höher als die von z also wenn ich die Taste unterbricht als Quelle der Entropie wäre es bias - aber es gibt noch einige Zufälligkeit zu sein in diesem Eingang.Sie können nicht genau Vorhersagen, welche Sequenz von Buchstaben als Nächstes kommen wird in diesem Absatz.Sie können extrahieren Sie die Entropie aus dieser Unsicherheit und verwenden Sie es, Teil von einem zufälligen byte.

Gute Qualität echt-random-Generatoren wie Schafgarbe haben ziemlich anspruchsvolle Entropie Einschätzung gebaut, um Sie und Strahlen nur so viele bytes, wie es kann zuverlässig sagen, es hat in seiner "Zufälligkeit pool."

Am Ende der post, ich werden die Antwort auf Ihre Frage, warum Sie möchten möglicherweise verwenden Sie mehrere Zufallszahlengeneratoren für "mehr Zufälligkeit".

Es gibt philosophischen Debatten darüber, was Zufälligkeit bedeutet.Hier werde ich meine "ununterscheidbar in jeder Hinsicht von einer uniform(0,1) iid Verteilung über die Proben gezogen," ich bin völlig ignoriert philosophische Fragen, was zufällig ist.

Knuth Band 2 ist eine Analyse, wo er versucht, erstellen Sie eine zufällige Anzahl generator, wie Sie vorschlagen, und dann analysiert, warum es fehlschlägt, und was wahr zufällige Prozesse sind.Band 2 untersucht RNGs im detail.

Die anderen empfehlen Ihnen, mit zufälligen physikalischen Prozesse, um Zufallszahlen zu generieren.Wie wir jedoch sehen können, in den Espo/vt-Interaktion, können diese Prozesse haben subtilen Elementen des Periodensystems und andere nicht-zufällige Elemente, zum Teil durch äußere Faktoren mit deterministischen Verhalten.Im Allgemeinen ist es am besten, niemals zu übernehmen Zufälligkeit, aber immer zu testen, und Sie können in der Regel die richtige für solche Artefakte, die, wenn Sie bewusst.

Es ist möglich, erstellen Sie ein "unendlich" Strom von bits, die scheint vollkommen zufällig zu sein, deterministisch.Leider, solche Konzepte wachsen im Speicher mit der Anzahl der bits, die verlangt (wie Sie müssten, um zu vermeiden, sich wiederholende Zyklen), so dass Ihre Reichweite begrenzt ist.

In der Praxis sind Sie fast immer besser dran, mit einem pseudo-Zufallszahlengenerator mit den bekannten Eigenschaften.Die wichtigsten zahlen zu suchen ist die phase-space dimension (die etwa ausgeglichen, zwischen Proben, Sie können immer noch verlassen sich darauf, gleichmässig verteilt) und die bit-Breite (die Anzahl der bits, die in jeder Probe, die gleichmässig zufällig mit Respekt zu jeder andere), und der Zyklus Größe (die Anzahl der Proben, die Sie nehmen können, bevor die Verteilung beginnt wiederholen).

Jedoch, da zufällige zahlen aus einem gegebenen generator sind deterministisch in eine bekannte Sequenz, Ihrer Verfahren ausgesetzt sein können, die von jemandem zu suchen, durch den generator und die Suche nach einer Angleichung der Sequenz.Daher können Sie wahrscheinlich vermeiden, Ihre Verteilung wird sofort erkannt, als käme es aus einer bestimmten random number generator, wenn Sie erhalten zwei Generatoren.Von der ersten, Sie Probe, die ich, und ordnen Sie diese gleichmässig über ein bis n, wobei n ist in den meisten der phase dimension.Dann, in der zweiten Probe, die ich Male, und Rückkehr der I-TEN Ergebnis.So senken Sie Ihre Zyklus-Größe (orginal-Zyklus-Größe/n) im schlimmsten Fall, aber für diesen Zyklus erzeugt weiterhin einheitliche Zufallszahlen, und dies in einer Weise tun, dass macht die Suche für die Ausrichtung exponentiell in n ist.Es wird auch reduzieren die unabhängige phase der Länge.Diese Methode nicht verwenden, es sei denn, Sie verstehen, was reduziert Zyklus und unabhängige phase mittlere Längen zu Ihre Anwendung.

Ein Algorithmus für wirklich zufällige zahlen nicht existieren, da die definition der Zufallszahlen:

Mit unvorhersehbaren Ergebnissen und der ideale Fall ist, werden alle Ergebnisse gleichermaßen wahrscheinlich;die sich aus solchen Auswahl;fehlen statistische Korrelation.

Gibt es besser oder schlechter Pseudo-zufälligen zahlengeneratoren (PRNGs), d.h.völlig vorhersagbare Sequenzen von zahlen, die sind schwer zu prognostizieren, ohne zu wissen, ein Stück von Informationen, genannt das seed.

Nun, PRNGs, für die ist es extrem schwer, daraus die Samen sind kryptografisch sichere.Möchten Sie vielleicht suchen Sie in Google, wenn es das ist, was Sie suchen.

Ein anderer Weg (ob das wirklich zufällig ist oder nicht, ist eine philosophische Frage) ist die Verwendung von zufälligen Quellen von Daten.Für Beispiel, unberechenbar physikalischen Größen, wie Lärm, oder die Messung radioaktiver Zerfall.

Diese sind immer noch Angriffen ausgesetzt, denn Sie können eigenständig gemessen werden, haben Neigungen, und so auf.Es ist also wirklich schwierig.Dies geschieht mit custom-hardware, die ist in der Regel ziemlich teuer.Ich habe keine Ahnung, wie gut /dev/random ist, aber ich würde Wetten, es ist nicht gut genug für die Kryptographie (die meisten Kryptographie-Programme kommen mit Ihren eigenen RNG und Linux sieht auch für ein hardware-RNG bei start-up).

Laut Wikipedia /dev/random, in Unix-ähnlichen Betriebssystemen eine spezielle Datei, die dient als eine wahre Zufallszahl generator.

Die /dev/random-Treiber sammelt Umgebungsrauschen von verschiedenen nicht-deterministische Quellen, einschließlich, aber nicht beschränkt auf, inter-Tastatur timings und inter-interrupt-timings, die auftreten innerhalb der Betriebssystem-Umgebung.Der Lärm Daten gesampelt und in Kombination mit einem CRC-wie die Misch-Funktion, die in ein laufend zu aktualisieren `Entropie-pool".- Random-bit-Zeichenfolgen erhalten, indem Sie einen MD5-hash des Inhalts dieses Pools.Der ein-Weg-hash-Funktion reduziert sich die wahr zufällige bits von pool-Daten und verbirgt den Zustand der pool von Gegnern.

Die /dev/random routine hält eine Schätzung der wahre Zufälligkeit in den pool und nimmt es jedes mal zufällige Zeichenfolgen sind angefordert für verwenden.Wenn die Schätzung geht auf null, die routine Schlösser und wartet auf das auftreten von nicht-deterministische Ereignisse zu aktualisieren pool.

Die /dev/random kernel-Modul bietet auch eine weitere Schnittstelle, /dev/urandom, das nicht warten, bis der Entropie-pool laden und gibt so viele bytes wie angefordert.Als Ergebnis /dev/urandom ist deutlich schneller an die generation im Vergleich zu /dev/random wird nur verwendet, wenn sehr hohe Qualität der Zufälligkeit gewünscht ist.

John von Neumann hat einmal gesagt etwas zum Effekt von "jedem, der versucht, um Zufallszahlen zu generieren, die über Algorithmische bedeutet, ist, natürlich, das Leben in Sünde."

Auch nicht /dev/random is random, in ein Mathematiker oder ein Physiker, der Sinn für das Wort.Nicht einmal radioaktiven Zerfall Messung ist zufällig.(Die decay-rate ist.Die Messung nicht.Geiger-Zähler haben eine kleine reset-Zeit nach jedem erkannten Ereignis, während welcher Zeit Sie sind nicht in der Lage zu erkennen, neue Ereignisse.Dies führt zu subtilen Verzerrungen.Es gibt Wege, die wesentlich mildern, aber nicht vollständig zu beseitigen.)

Stoppen Sie suchen für eine echte Zufälligkeit.Ein guter Pseudo-Zufallsgenerator ist wirklich das, was Sie suchen.

Wenn Sie glauben, in einem deterministischen Universum, eine echte Zufälligkeit nicht vorhanden.:-) Zum Beispiel, jemand hat vorgeschlagen, daß radioaktiver Zerfall ist wirklich zufällige, aber, IMHO, nur weil Wissenschaftler noch nicht geklappt das Muster, nicht bedeutet, dass es kein Muster gibt, erarbeitet werden.In der Regel, wenn Sie wollen "zufällige" zahlen, was Sie brauchen, sind zahlen für die Verschlüsselung, dass niemand anderes in der Lage sein, zu erraten.

Die nächstgelegene Sie bekommen können, um zufällige ist, um etwas zu Messen natürlichen, daß kein Feind würde auch in der Lage sein zu Messen.In der Regel schmeißt man Weg die wichtigsten bits, Messungen, verlassen zahlen mit eher gleichmäßig verteilt sind.Harten Kern zufällige Anzahl Benutzer erhalten Sie spezielle hardware, die Maßnahmen radioaktive Ereignisse, aber Sie können einige Zufälligkeit von der menschlichen Nutzung der computer aus Dinge wie keypress Abständen und Bewegungen der Maus, und wenn der computer keinen direkten Benutzer-von der CPU-Temperatur-sensoren sowie von den Netzwerk-Verkehr.Sie können auch Dinge wie web-Kameras und Mikrofone verbunden zu sound-Karten, aber ich weiß nicht, ob jemand tut.

Um zusammenzufassen, was gesagt wurde, unsere Arbeit definition dessen, was eine sichere Quelle der Zufälligkeit ist ähnlich zu unserer definition von kryptografisch sichere:es erscheint zufällig, wenn intelligente Leute haben es angeschaut und waren nicht in der Lage, um zu zeigen, dass es nicht völlig unvorhersehbar.

Es ist keine system zur Erzeugung von Zufallszahlen, die nicht denkbar vorhergesagt werden, so wie es keine cryptographic cipher, konnte nicht denkbar geknackt werden.Das Vertrauenswürdige Lösungen für wichtige arbeiten sind nur diejenigen, die nachweislich schwer zu besiegen und so weit.Wenn jemand Ihnen sagt, sonst, Sie verkaufen Sie etwas.

Klugheit ist selten geworden in der Kryptographie.Gehen Sie mit bewährten Lösungen.

Ein computer hat in der Regel viele leicht verfügbaren physischen Quellen von Rauschen:

  • Mikrofon (hoffentlich in einem lauten Ort)
  • Komprimiert video von einer webcam (wies auf etwas variabel, wie eine lava-Lampe oder einer Straße)
  • Tastatur & Maus timing
  • Netzwerk-Paket-Inhalt und timing (die ganze Welt trägt)

Und manchmal

  • Clock drift-basierte hardware
  • Geiger-Zähler und andere Detektoren der seltenen Ereignisse
  • Alle Arten von sensoren angeschlossen, um die A/D-Wandler

Was schwierig ist die Abschätzung der Entropie von diesen Quellen, die in den meisten Fällen gering, trotz der hohen Datenraten und sehr variabel;aber die Entropie kann geschätzt werden, mit konservativen Annahmen, oder zumindest nicht verschwendet, Sie zu füttern Systeme wie Schafgarbe oder Fortuna.

Es ist nicht möglich, um den 'wahren' Zufallszahlen, ein computer ist eine logische Konstruktion, die das nicht vielleicht "wirklich" zufällig etwas, nur pseudo-zufällig.Es gibt bessere und schlechtere pseudo-Zufalls-algorithmen gibt, aber.

Um ein "wirklich" zufällige Nummer, die Sie benötigen physischen random source, einige Spielautomaten haben tatsächlich diese bereits eingebaut - oft ist es eine radioaktive Quelle, die durch den radioaktiven Zerfall (was, soweit ich weiß, ist wirklich random) wird verwendet, um zu generieren, die zahlen.

Eines der besten Methode zum generieren einer Zufallszahl durch Clock Drift.Diese arbeitet in Erster Linie mit zwei Oszillatoren.

Eine Analogie, wie dies funktioniert, stellen Sie sich ein Rennwagen, der auf einer einfachen ovalen Kreis mit einer Linie, während am Anfang der Runde und auch eine Weile Linie auf einem der Reifen.Wenn das Auto abgeschlossen ist eine Runde, es wird eine Zahl erzeugt werden basierend auf der Differenz zwischen der position der weißen Linie auf der Straße und dem Reifen.

Sehr einfach zu erstellen und unmöglich vorherzusagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top