Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Random für Verschlüsselungen (https://www.delphipraxis.net/146258-random-fuer-verschluesselungen.html)

Z4ppy 16. Jan 2010 19:42


Random für Verschlüsselungen
 
Ich habe nun ein altes Projekt wiederaufgenommen, zu dem ich vor längerer Zeit bereits einmal so eine Frage gestellt hatte: http://www.delphipraxis.net/internal...t.php?t=141424
Inzwischen habe ich mich etwas weiterentwickelt bezüglich Codingkenntnissen und mir ist aufgefallen, was für idiotische Fragen ich da in dem Thread zum Teil gestellt hatte :mrgreen:

Ich benötige Zufallszahlen. Da ich mit Verschlüsselung arbeite, reicht das in Delphi integrierte Random nicht aus, daher habe ich nun das im Post von gammatester (in dem oben erwähnten Thread) verlinkte ISAAC verwendet. Ich habe dann auch den in diesem Thread erklärten Weg des generierens von Bits usw. genommen.

Mein Problem ist nun, dass ich da natürlich bei jeder Programmausführung die gleichen Zahlen erhalte, was zwar der Sinn von ISAAC, nicht aber in meinem Sinne ist ^^

Ist es nun sicher, wenn ich über ISAAC Zufallszahlen generiere, diese in einem Array of integer zwischenspeichere und dann (mittels Random) eine davon auswähle?
Oder sollte ich eher Random mal die Isaac-Function des TIsaac-Objekts ausführen und anschliessend normal über val einen Wert holen?
Oder einen Seed wählen, in dem die Elemente über Random generiert wurden? ^^

MfG Z4ppy

himitsu 16. Jan 2010 20:03

Re: Random für Verschlüsselungen
 
Zitat:

Zitat von Z4ppy
Ist es nun sicher, wenn ich über ISAAC Zufallszahlen generiere, diese in einem Array of integer zwischenspeichere und dann (mittels Random) eine davon auswähle?

Dann hast du ja auch nur 2 "Pseudo"-Zufallsgeneratoren gekoppelt und hast damit keinenerlei Mehrgewinn.

Dann kannst du auch gleich den ISAAC direkt initialisieren ... so wie man es mit Delphi-Referenz durchsuchenRandomize beim Delphi-Referenz durchsuchenRandom machen soll.

Z4ppy 16. Jan 2010 20:06

Re: Random für Verschlüsselungen
 
Zitat:

Zitat von himitsu
Dann kannst du auch gleich den ISAAC direkt initialisieren ... so wie man es mit Delphi-Referenz durchsuchenRandomize beim Delphi-Referenz durchsuchenRandom machen soll.

Und wie wäre das dann umzusetzen?

MfG Z4ppy

Z4ppy 24. Jan 2010 17:43

Re: Random für Verschlüsselungen
 
Ich hab mir jetzt auch nochmal den Code von ISAAC angesehen und da absolut nichts entdecken können, was nach so etwas ähnlichem wie Randomize aussieht...

Mittels Random ein array of integer zu bilden und das als Seed für ISAAC zu verwenden, dürfte ja wohl auch nicht sehr sicher sein...

MfG Z4ppy

gammatester 24. Jan 2010 18:38

Re: Random für Verschlüsselungen
 
Zitat:

Zitat von Z4ppy
Ich hab mir jetzt auch nochmal den Code von ISAAC angesehen und da absolut nichts entdecken können, was nach so etwas ähnlichem wie Randomize aussieht...

Mittels Random ein array of integer zu bilden und das als Seed für ISAAC zu verwenden, dürfte ja wohl auch nicht sehr sicher sein...

MfG Z4ppy

Benutze einfach meine von der ISAAC-Seite referenzierte PRNG-Bibliothek, die hat gleich drei Prozeduren zur ISAAC-Initialisierung:
Delphi-Quellcode:
procedure isaac_init (var ctx: isaac_ctx; seed: longint);
  {-Init context from randrsl[0]=seed, randrsl[i]=0 otherwise}

procedure isaac_init0(var ctx: isaac_ctx);
  {-Init context from randseed}

procedure isaac_inita(var ctx: isaac_ctx; const key: array of longint; klen: integer);
  {-Init all context variables with separate seeds, klen: number of seeds}
Gruß Gammatester

Z4ppy 25. Jan 2010 16:23

Re: Random für Verschlüsselungen
 
Da benutzt du aber intern auch wieder Random, um einen Seed zu generieren. Das kann ja wohl auch nicht sicher sein...

MfG Z4ppy

sirius 25. Jan 2010 16:46

Re: Random für Verschlüsselungen
 
hatte nicht das DEC auch einen Zufallsgenerator?

gammatester 25. Jan 2010 18:35

Re: Random für Verschlüsselungen
 
Zitat:

Zitat von Z4ppy
Da benutzt du aber intern auch wieder Random, um einen Seed zu generieren. Das kann ja wohl auch nicht sicher sein...

MfG Z4ppy

random/randseed wird nur bei init0 verwendet, und es zwingt Dich doch keiner das zu verwenden, es war halt eine Anwort auf Deine Frage nach Randomize und ISAAC. Selbstverständlich ist isaac_inita mit einem echt zufälligen array of longint die beste Methode. Das Problem ist nur, daß es keine wirklich Compiler- und/oder Betriebssystem-unabhängige Methode gibt, um an wirkliche Zufallszahlen zukommen.

Nährungsweise habe ich in Beispielprogrammen einen Hash über Datum, Zeit, randseed und TSC benutzt. Dec benutzt zB auch Timer, hat aber das gleiche Problem: "initalize a non-repeatable Seed based on Timers, ATTENTION! this way isn't secure inpredictable, the user should call RandomSeed(Data, SizeOf(Data)) instead, where Date contains as example collected informations based on Human inputs."

Ohne Systemunterstützung oder echten Zufallsgenerator (notfalls Maus/Tastatur) kommt man an sowas halt nicht ran. Unter Windows kannst Du (wenn Du Micro$oft vertraust!) die Funktion CryptGenRandom des Crypto-API benutzen, unter Linux von /dev/random lesen etc.

Z4ppy 25. Jan 2010 19:12

Re: Random für Verschlüsselungen
 
Dann werd ich mir mal überlegen, wie ich da echte Zufallszahlen generieren kann ^^ Vielleicht wirklich über Mausbewegungen...

Die Funktion von M$ ist für mich keine Option, warum, kannste dir wohl vorstellen ;)

MfG Z4ppy

Klaus01 25. Jan 2010 20:23

Re: Random für Verschlüsselungen
 
.. hier noch etwas Lesestoff zum Thema.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz