salve.
oggi volevo esporvi l'algoritmo Blum Blum Shub, uno dei pochi generatore di numeri pseudocasuali crittograficamente sicuri.
Innanzitutto si scelgono due numeri primi molto grandi, p e q, tali che, se divisi per 4 abbiano un resto 3, ovvero
p ≡ q ≡ 3(mod 4)
ovvero
(p mod 4) = (q mod 4) = 3
per esempio, i numeri primi 7 e 11 soddisfano la relazione 7 ≡ 11 ≡ 3(mod 4)
poi definisco n come
n = p * q
poi si sceglie un numero casuale s tale che
MCD(s,n) = 1
ovvero s ed n devono essere coprimi, o per meglio dire nè p nè q devono essere fattori di s
quindi il generatore BBS produce una seguenza di bit B_i sulla base del seguente algoritmo:
X_0 = s^2 mod n
for i=1 to ∞ {
X_i = (X_i-1)^2 mod n
B_i = X_i mod 2
}
fare il modulo di due indica in pratica: prendi 1 se il numero è dispari, 0 se è pari. in pratica prendo il bit meno significativo del numero generato.
L'algoritmo BBS è un generatore di bit pseudocasuali sicuro dal punto di vista crittografico.
un algoritmo di questo tipo deve passare il cosiddetto "test del prossimp bit":
in pratica, dati i primi k it della seguenza, non esiste un algoritmo realistico in grado di stabilire che il prossimo bit sarà 1 (o 0) con una probabilità maggiore di ½. Ai fini pratici, la sequenza risulta imprevedibile.
tuttavia, posso trovare l' X_esimo numero della sequenza, senza generarla tutta:
che vi sia utile
oggi volevo esporvi l'algoritmo Blum Blum Shub, uno dei pochi generatore di numeri pseudocasuali crittograficamente sicuri.
Innanzitutto si scelgono due numeri primi molto grandi, p e q, tali che, se divisi per 4 abbiano un resto 3, ovvero
p ≡ q ≡ 3(mod 4)
ovvero
(p mod 4) = (q mod 4) = 3
per esempio, i numeri primi 7 e 11 soddisfano la relazione 7 ≡ 11 ≡ 3(mod 4)
poi definisco n come
n = p * q
poi si sceglie un numero casuale s tale che
MCD(s,n) = 1
ovvero s ed n devono essere coprimi, o per meglio dire nè p nè q devono essere fattori di s
quindi il generatore BBS produce una seguenza di bit B_i sulla base del seguente algoritmo:
X_0 = s^2 mod n
for i=1 to ∞ {
X_i = (X_i-1)^2 mod n
B_i = X_i mod 2
}
fare il modulo di due indica in pratica: prendi 1 se il numero è dispari, 0 se è pari. in pratica prendo il bit meno significativo del numero generato.
L'algoritmo BBS è un generatore di bit pseudocasuali sicuro dal punto di vista crittografico.
un algoritmo di questo tipo deve passare il cosiddetto "test del prossimp bit":
in pratica, dati i primi k it della seguenza, non esiste un algoritmo realistico in grado di stabilire che il prossimo bit sarà 1 (o 0) con una probabilità maggiore di ½. Ai fini pratici, la sequenza risulta imprevedibile.
tuttavia, posso trovare l' X_esimo numero della sequenza, senza generarla tutta:
che vi sia utile