Come posso determinare i valori iniziali del generatore di numeri pseudo-casuali se viene fornita la sequenza?


10

Supponiamo di sapere che una sequenza numerica casuale è stata generata da un generatore congruenziale lineare. Questo è,

Xn+1=(un'Xn+c)modm

un',c,mX0


X0mun'c

Risposte:


10

Vedi l'articolo Come rompere un generatore congruenziale lineare , Haldir ("Reverse Engineering Team", dicembre 2004):

In questo documento presenterò un metodo che risolverà tutti i valori dell'LCG incluso il modulo con sei o più numeri consecutivi di output PRNG.

Il documento include il codice sorgente "proof of concept" scritto in C, usando NTL di Victor Shoup per un'aritmetica di precisione estesa.


È stato un ottimo documento! :) Conosci un metodo più generale che potrebbe applicarsi ad altri generatori di numeri casuali, non solo congruenti lineari?
Paul

@Paul: Naturalmente si possono trovare RNG che sono facilmente "risolti" per i loro parametri da dati di output sufficienti (problema inverso), ma sembrerebbe che migliore sia l'RNG (più casuale l'aspetto dell'output), più difficile è l'inverso il problema sarebbe. La soluzione del caso LCG è correlata ad alcuni effetti di raggruppamento dimensionale che sono ben noti, rendendo le coppie di valori generati distribuiti in modo non uniforme. Per ulteriori informazioni, vedi Progettazione di un generatore crittograficamente forte trasformando sequenze generate in modo lineare
hardmath,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.