Kryptografischen Zufallszahlen


Erklärung mit Dephi Quellcode Generieren von Zufallszahlen mit richtigen Quellen der Entropie und Hash-Funktionen erläutert.
[Kryptografischen Zufallszahlen]
Quelle Code Balg
Einfach Randomize aufrufen und verwenden das Random()-Verfahren ist eine schwere Sicherheitslücke in Anwendung, die versucht, Pretect Daten mit Zufallszahlen. Ein Zufallsgenerator erhält ist der 'Zufall' von Entropie. Borlands Random() Prozedur einen 32-Bit-Samen als Entropie verwendet und dass Saatgut durch die Randomize-Prozedur generiert wird, die bekommt seine Entropie System-Uhrzeit und Datum, die sind sehr probabilistische und können getestet werden für schnell.
Um Zufallszahlen zu generieren, die von reinen Chaos unterschieden werden kann nicht ist eine sehr schwierige Aufgabe auf einem Computer, vor allem, weil Sie sich auf die internen Zustände verlassen, die oft allzu vorhersehbar sind. Die Idee ist Entropie aus den am wenigsten vorhersagbaren Staaten des Systems und Dillute, dass Entropie innerhalb eines viel größeren Pool zu sammeln. Der Pool beziehe ich mich auf ist der interne Zustand des Zufallszahlen-Generators.
WAS IST DAS:
Es gibt wichtige Eigenschaften, die müssen respektiert werden, beim Generieren von Zufallszahlen. Genauer gesagt, Zufallszahlen bestimmt
für die Verschlüsselung. Die Eigenschaften, die in dieses zufällige Zahl Gerenartors Design verwickelt basieren stark auf Bruce Schneiers Schafgarbe (als www.counterpane.com).
Die erste Eigenschaft ist die Sicherstellung, dass immer Anought Entropie in den Pool, bevor Zufallszahlen bestens damit Pool nie einen geschwächten Zustand übergeht, wo die nächsten zufälligen Zahlen, die ausgegeben werden predictible Informationen haben.
Die nächste Eigenschaft ist nützlich, wenn du gehst, den Generator zu verwenden, um Sitzungsschlüssel zu machen, die mehrere Male während eines Chats verändern wird. Es ist wichtig, dass dieser einen kompromittierte Schlüssel nicht verraten wird, den früheren beeinflussen noch irgendwelche der nächste Schlüssel, die verwendet wird. Dazu müssen wir beseitigen die mathematische Beziehung zwischen der Zufallszahlen, die ausgegeben werden und den Zustand des Pools.
Die dritte gewünschte Eigenschaft impliziert, dass Enven, wenn die Entropie von Ihren Quellen gesammelt von schlechter Qualität (ziemlich vorhersehbar) der Pool ist nicht, für die niedrige Entropie leiden muss und die Ausgabe-Zufallszahlen nicht keine Beweise dafür zeigen müssen.
Ich habe dieses Gerät ausgiebig getestet. Der letzte und wichtigste Test, zentriert um die dritte Eigenschaft. Um einen Extremfall zu machen, ich begann den Pool mit nichts, sondern Nullen im IT- und generierten '12MB (100.000.000 Bit). Ich habe die eingefleischte Testbatterie (die https://stat.fsu.edu/ 'geo/diehard.html) und übergeben alle 15 mit Bravour... ohne jede Entropie zu sammeln. Mit diesem ich bin zufrieden den Zufallszahlengenerator Performance und legt ihn Sie verwenden als eine sichere Alternative zu was in Programmen häufig gesehen wird.

ZUR FUNKTIONSWEISE:
-zwei Entropie-Sammler werden erstellt:
[1] ein Thread, der Mausbewegung nach dem Zufallsprinzip Intervallen unter 4bits Entropie von der Maus Position und den Zustand des hochauflösenden Zeitgeber das System verfolgt.
[2] eine Latenz-Rechner, der ruft 4bits der Entropie aus den hochauflösenden Zeitgeber beim Aufruf durch die Hauptanwendung (von Alling verwendet
TKeyGenerator.AddLatency das OnKeyDown-Ereignis des ein Bearbeitungsfeld Harddrive Latenz oder Irq Wartezeit zählen)
Wenn entweder die Entropie-Sammler 32bits angesammelt hat, sendet er es an der Entropie-Pool.
-Der Entroyp-Pool nimmt in Entropie 32bits gleichzeitig und wird verwendet, um ein Entropie-Puffer von 256bits, füllen wenn der Puffer voll ist, wird eine primäre Seeding ausgeführt.
-Die primäre Seeding aktualisiert den primären Pool (einen Hash-Kontext: internen Zustand einer Hash-Funktion) mit der Entropie und XORs es mit den Pool-Samen (Saatgut dient ähnlich wie Randomisieren Randseed generiert). Nach jeder primäre Reseed können die Samen (mit jetzt 256bits Entropie) Zufallszahlen ausgegeben werden, wenn die aufrufende Anwendung dies es wünscht, aber es weiterhin wird Seeding und sammeln Entropie ungeachtet dessen ungeachtet. Nachdem 8 primäre Reseeds stattgefunden haben, wird eine sekundäre Seeding ausgeführt.
-Die sekundären Seeding aktualisiert den sekundären Pool mit dem Inhalt des primären Pools und dann leert den Inhalt des primären Pools in einen Zustand mit keine Entropie. Der sekundäre Pool ist persistenter, es nie geleert wird und Entropie Bits aus verschiedenen Reseeds durchführen wird. Ein völlig neues Saatgut aus der sekundären Seeding generiert wird (wo wie die primäre auf es mit Entropie ändert). Diese sekundären Seeding verhindert backtracking Eigenschaften (Gessing früheren Staaten des Pools) und stellt sicher, dass die Entropie gibt es in den Pool auch unter Bedingungen, wo neue Entropie von schlechter Qualität ist.
-Wenn die aufrufende Anwendung einen Schlüssel generiert muss, nennt es SafeGetKey, die sicherstellt, dass nicht mehr als 8 Sätze 256bits von Zufallszahlen aus einer einzigen Seeding erzeugt werden können. Ist dazu einen wichtige Reserve-Zähler erhöht jede primäre Seeding, nicht übersteigen und 8. Wenn eine Sie generieren eine Reihe von Zufallszahlen wird die zentrale Reserve verringert und die Funktion gibt Fasle zurück, wenn die zentrale Reserve bei 0 ist. Hinweis: eine Anwendung kann ignorieren die zentrale Reserve und rufen Sie ForceGetKey. Dies ist sehr riskant Praxis und ich ernsthaft davon abgeraten, Sie mit dieser Funktion.
-Die von GetKey zufällige Ausgabe ist eine generierte mit der Entropie-Pool Samen. Das Saatgut ist als einen Verschlüsselungsschlüssel verwendet und dann permutierte (mit einer Erweiterung-Kompression). Die neue Saat dient als Daten verschlüsselt werden. Es werden verschlüsselt mit dem vorherigen Saatgut in 64 runden erweitert-komprimiert. Diese runden sicherzustellen, dass es unmöglich ist, den Zustand der Samen, der primäre Pool, sekundäre Pool oder der Entorpy-Puffer zu bestimmen; Wer verhindert wiederum finden die nächsten oder vorherigen Ausgaben.
HINWEISE:
-Weisen Sie eine Variable vom Typ TKeyGenerator und nennen es die. Erstellen. Dadurch wird den Prozess gestartet. Wenn Sie fertig sind, aufrufen. Destropy.
-Sie können. KeyCount um herauszufinden, den Zustand der wichtigsten Reserve (wieviele GetKey Anrufe vor der nächsten Seeding erfolgen können). Ich dulden stark erhöhen den Wert der MAX_KEY_RESERVE.
-Sie können die Geschwindigkeit verändern, mit der Entropie von der Maus gesammelt werden, durch Festlegen der MOUSE_INTERVAL-Konstante (in Millisekunden). Ein Wert kleiner als 10 ist unrecommended.
-Keine Fehlerüberprüfung wird getan um sicherzustellen, gibt es ein Hochfrequenz-Zähler auf dem System, sollte dies von der aufrufenden Anwendung überprüft werden. Existiert kein solcher Zähler, der Zufallszahlengenerator funktioniert aber nicht zufällige Zahlen ausgegeben werden.
-Der Antrag muss 32 Byte Speicherplatz in einer Variablen übergeben an die GetKey-Funktionen bereitstellen. Keine Fehlerüberprüfung erfolgt hier.
-Sie können KEY_BUILD_ROUNDS auf einen Wert größer als oder gleich 32 ändern, aber größer als 64 ist ziemlich nutzlos.

/*********************************************************************
/*********************************************************************
-WICHTIGER HINWEIS-
Die Quelle unten ist Teil einer Bibliothek in Fortschritt Cummulating 3 Jahre meiner Forschung.








Kryptografischen Zufallszahlen


Kryptografischen Zufallszahlen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Erklärung mit Dephi Quellcode Generieren von Zufallszahlen mit richtigen Quellen der Entropie und Hash-Funktionen erläutert.
[Kryptografischen Zufallszahlen]
Quelle Code Balg
Einfach Randomize aufrufen und verwenden das Random()-Verfahren ist eine schwere Sicherheitslücke in Anwendung, die versucht, Pretect Daten mit Zufallszahlen. Ein Zufallsgenerator erhält ist der 'Zufall' von Entropie. Borlands Random() Prozedur einen 32-Bit-Samen als Entropie verwendet und dass Saatgut durch die Randomize-Prozedur generiert wird, die bekommt seine Entropie System-Uhrzeit und Datum, die sind sehr probabilistische und können getestet werden für schnell.
Um Zufallszahlen zu generieren, die von reinen Chaos unterschieden werden kann nicht ist eine sehr schwierige Aufgabe auf einem Computer, vor allem, weil Sie sich auf die internen Zustände verlassen, die oft allzu vorhersehbar sind. Die Idee ist Entropie aus den am wenigsten vorhersagbaren Staaten des Systems und Dillute, dass Entropie innerhalb eines viel größeren Pool zu sammeln. Der Pool beziehe ich mich auf ist der interne Zustand des Zufallszahlen-Generators.
WAS IST DAS:
Es gibt wichtige Eigenschaften, die müssen respektiert werden, beim Generieren von Zufallszahlen. Genauer gesagt, Zufallszahlen bestimmt
für die Verschlüsselung. Die Eigenschaften, die in dieses zufällige Zahl Gerenartors Design verwickelt basieren stark auf Bruce Schneiers Schafgarbe (als www.counterpane.com).
Die erste Eigenschaft ist die Sicherstellung, dass immer Anought Entropie in den Pool, bevor Zufallszahlen bestens damit Pool nie einen geschwächten Zustand übergeht, wo die nächsten zufälligen Zahlen, die ausgegeben werden predictible Informationen haben.
Die nächste Eigenschaft ist nützlich, wenn du gehst, den Generator zu verwenden, um Sitzungsschlüssel zu machen, die mehrere Male während eines Chats verändern wird. Es ist wichtig, dass dieser einen kompromittierte Schlüssel nicht verraten wird, den früheren beeinflussen noch irgendwelche der nächste Schlüssel, die verwendet wird. Dazu müssen wir beseitigen die mathematische Beziehung zwischen der Zufallszahlen, die ausgegeben werden und den Zustand des Pools.
Die dritte gewünschte Eigenschaft impliziert, dass Enven, wenn die Entropie von Ihren Quellen gesammelt von schlechter Qualität (ziemlich vorhersehbar) der Pool ist nicht, für die niedrige Entropie leiden muss und die Ausgabe-Zufallszahlen nicht keine Beweise dafür zeigen müssen.
Ich habe dieses Gerät ausgiebig getestet. Der letzte und wichtigste Test, zentriert um die dritte Eigenschaft. Um einen Extremfall zu machen, ich begann den Pool mit nichts, sondern Nullen im IT- und generierten '12MB (100.000.000 Bit). Ich habe die eingefleischte Testbatterie (die https://stat.fsu.edu/ 'geo/diehard.html) und übergeben alle 15 mit Bravour... ohne jede Entropie zu sammeln. Mit diesem ich bin zufrieden den Zufallszahlengenerator Performance und legt ihn Sie verwenden als eine sichere Alternative zu was in Programmen häufig gesehen wird.

ZUR FUNKTIONSWEISE:
-zwei Entropie-Sammler werden erstellt:
[1] ein Thread, der Mausbewegung nach dem Zufallsprinzip Intervallen unter 4bits Entropie von der Maus Position und den Zustand des hochauflösenden Zeitgeber das System verfolgt.
[2] eine Latenz-Rechner, der ruft 4bits der Entropie aus den hochauflösenden Zeitgeber beim Aufruf durch die Hauptanwendung (von Alling verwendet
TKeyGenerator.AddLatency das OnKeyDown-Ereignis des ein Bearbeitungsfeld Harddrive Latenz oder Irq Wartezeit zählen)
Wenn entweder die Entropie-Sammler 32bits angesammelt hat, sendet er es an der Entropie-Pool.
-Der Entroyp-Pool nimmt in Entropie 32bits gleichzeitig und wird verwendet, um ein Entropie-Puffer von 256bits, füllen wenn der Puffer voll ist, wird eine primäre Seeding ausgeführt.
-Die primäre Seeding aktualisiert den primären Pool (einen Hash-Kontext: internen Zustand einer Hash-Funktion) mit der Entropie und XORs es mit den Pool-Samen (Saatgut dient ähnlich wie Randomisieren Randseed generiert). Nach jeder primäre Reseed können die Samen (mit jetzt 256bits Entropie) Zufallszahlen ausgegeben werden, wenn die aufrufende Anwendung dies es wünscht, aber es weiterhin wird Seeding und sammeln Entropie ungeachtet dessen ungeachtet. Nachdem 8 primäre Reseeds stattgefunden haben, wird eine sekundäre Seeding ausgeführt.
-Die sekundären Seeding aktualisiert den sekundären Pool mit dem Inhalt des primären Pools und dann leert den Inhalt des primären Pools in einen Zustand mit keine Entropie. Der sekundäre Pool ist persistenter, es nie geleert wird und Entropie Bits aus verschiedenen Reseeds durchführen wird. Ein völlig neues Saatgut aus der sekundären Seeding generiert wird (wo wie die primäre auf es mit Entropie ändert). Diese sekundären Seeding verhindert backtracking Eigenschaften (Gessing früheren Staaten des Pools) und stellt sicher, dass die Entropie gibt es in den Pool auch unter Bedingungen, wo neue Entropie von schlechter Qualität ist.
-Wenn die aufrufende Anwendung einen Schlüssel generiert muss, nennt es SafeGetKey, die sicherstellt, dass nicht mehr als 8 Sätze 256bits von Zufallszahlen aus einer einzigen Seeding erzeugt werden können. Ist dazu einen wichtige Reserve-Zähler erhöht jede primäre Seeding, nicht übersteigen und 8. Wenn eine Sie generieren eine Reihe von Zufallszahlen wird die zentrale Reserve verringert und die Funktion gibt Fasle zurück, wenn die zentrale Reserve bei 0 ist. Hinweis: eine Anwendung kann ignorieren die zentrale Reserve und rufen Sie ForceGetKey. Dies ist sehr riskant Praxis und ich ernsthaft davon abgeraten, Sie mit dieser Funktion.
-Die von GetKey zufällige Ausgabe ist eine generierte mit der Entropie-Pool Samen. Das Saatgut ist als einen Verschlüsselungsschlüssel verwendet und dann permutierte (mit einer Erweiterung-Kompression). Die neue Saat dient als Daten verschlüsselt werden. Es werden verschlüsselt mit dem vorherigen Saatgut in 64 runden erweitert-komprimiert. Diese runden sicherzustellen, dass es unmöglich ist, den Zustand der Samen, der primäre Pool, sekundäre Pool oder der Entorpy-Puffer zu bestimmen; Wer verhindert wiederum finden die nächsten oder vorherigen Ausgaben.
HINWEISE:
-Weisen Sie eine Variable vom Typ TKeyGenerator und nennen es die. Erstellen. Dadurch wird den Prozess gestartet. Wenn Sie fertig sind, aufrufen. Destropy.
-Sie können. KeyCount um herauszufinden, den Zustand der wichtigsten Reserve (wieviele GetKey Anrufe vor der nächsten Seeding erfolgen können). Ich dulden stark erhöhen den Wert der MAX_KEY_RESERVE.
-Sie können die Geschwindigkeit verändern, mit der Entropie von der Maus gesammelt werden, durch Festlegen der MOUSE_INTERVAL-Konstante (in Millisekunden). Ein Wert kleiner als 10 ist unrecommended.
-Keine Fehlerüberprüfung wird getan um sicherzustellen, gibt es ein Hochfrequenz-Zähler auf dem System, sollte dies von der aufrufenden Anwendung überprüft werden. Existiert kein solcher Zähler, der Zufallszahlengenerator funktioniert aber nicht zufällige Zahlen ausgegeben werden.
-Der Antrag muss 32 Byte Speicherplatz in einer Variablen übergeben an die GetKey-Funktionen bereitstellen. Keine Fehlerüberprüfung erfolgt hier.
-Sie können KEY_BUILD_ROUNDS auf einen Wert größer als oder gleich 32 ändern, aber größer als 64 ist ziemlich nutzlos.

/*********************************************************************
/*********************************************************************
-WICHTIGER HINWEIS-
Die Quelle unten ist Teil einer Bibliothek in Fortschritt Cummulating 3 Jahre meiner Forschung.

Kryptografischen Zufallszahlen

Kryptografischen Zufallszahlen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Kryptografischen Zufallszahlen
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung