Random array > challenge response
-
hallo
Reicht dieser Code um eine (vernünftige) 128 byte random array zu erzeugen.
Ist für eine challenge response routine gedacht.int j ,rc; /* Start Wert für rand() initialisieren */ srand((unsigned int)time(NULL)); printf("\nRandom Challenge:"); /* Create random challenge 128 byte number */ for(j=0;(j<128); j++) { rc=rand()%10; printf("%i", rc); sprintf(&chall_var.randomstr[j] ,"%i" ,rc); }
timo
-
Hi
Ich würde sage das reicht völlig.
Doch solte dir bewusst sein das gerade die challenge-response methode gut implementiert sein sollte. Da ansonnsten reflection-attack's,replay-attack's und weiteres möglich sind.lowbyte
-
Wozu brauchst Du 128 Byte? Damit den Inhalt keiner raten kann?
Dein Zufall hier bewegt sich hier höchstens im Rahmen von 25 Bit.
-
Hallo
Welcher Bereich würdest den du empfehlen ?
Ich dachte halt 128Byte sein zu viele mögliche Kombinationen. Aber da rand() nicht ganz random ist lässt sich dass sicher genau durch diese Funktion knacken.
Oder bin ich da falsch ?Timo
-
Genau. Da srand maximal 2^32 verschiedene seeds fressen kann, kann deine Funktion auch nur maximal 2^32 verschiedene Arrays basteln.
Ich empfehle, mehr Dinge als nur time() un den Zufall reinzutun. Vielleicht ein wenig rdtsc, und vielleicht eine Zufallsdatei mit zum Beispiel 1024Bit haben, die Zufall sammelt, auch über Programmläufe hinweg.
-
Hi
Genau, oder du verwendest die Daten die deine Maus hinterlässt.
@Volkert
Sind es nicht 128 * 2^32 die man rein teoretisch brechen müsste?
lowbyte
-
Hi
Theoretisch müsste der Angreifer immer noch das Password wissen.
lowbyte
-
Hi
Die ganze kommunikation wird hoffentlich verschlüsselt übertragen.!?
lowbyte
-
#include <time.h> #include <windows.h> #include <process.h> int RandomArray(unsigned char *randombuf ,unsigned long len) { unsigned int a ,b ,c ,d ,r ,j; int pid; POINT mPos; srand((unsigned int)time(NULL)); GetCursorPos(&mPos); pid = _getpid(); for(j=0;(j<len); j++) { a = rand(); b = rand(); c = rand(); d = rand(); r = a<< 24 | b<< 16 | c<< 8 | d; randombuf[j] = (((r / mPos.x) ^ pid) + mPos.y) % 256; } return 0; }