IUP3 - Module M64/RISC - TD : Gordon
I Attaque des g´en´erateurs congruentiels lin´eaires
Un g´en´erateur congruentiel lin´eaire est une suite de la forme
(X0
Xn+1 ≡aXn+c[m]
pour X0,a,c,mquelconques. Le g´en´erateur est dit multiplicatif si c= 0.
1. Si mest premier, quelle est la p´eriode maximale d’un MLCG ? En particulier, Fishman-
Moore ont ´etudi´e en 1986 les g´en´erateurs modulo 231 −1 = 950706376 et ont d´etermin´e
que celui pour a= 2147483647 est de p´eriode maximale et pr´esente de bonnes propri´et´es
statistiques. Que pouvez-vous dire de 2147483647 ?
2. Pour m=peavec ppremier impair, quelle est la p´eriode maximale d’un MLCG ?
Enfin, il est possible de d´emontrer (cf. [Knuth, TAOCP, vol.2]) que si λ(m) est la
p´eriode maximale d’un MLCG modulo m, alors λ(2e) = 2e−2pour e > 2 et que λ(m) =
ppcm(λ(pe1
1)...λ(pek
k)) si m=pe1
1...pek
kavec p1...pkpremiers distincts.
3. En supposant que mest connu, comment r´ecup´erer aet cdans un LCG ?
4. Maintenant mest inconnu et l’on supposera tout d’abord que c= 0. Comment casser
le MLCG ? Indication : on pourra ´etudier xn+1 −xn. Que se passe-t-il si c6= 0 ?
II Nombres premiers robustes
Afin de resister aux factorisations diverses, les nombres premiers utilis´es pour fabriquer le
modulo de RSA doivent v´erifier un certain nombre de propri´et´es :
•Pour r´esister `a la factorisation par courbes elliptiques, pet qdoivent ˆetre de tailles
similaires et suffisamment grands. Par exemple, pour travailler sur 1024 bits ils devraient
tous les deux ˆetre de taille environ 512 bits.
•Pour r´esister `a la factorisation par racines carr´ees de Fermat, p−qdoit ˆetre relativement
grand.
•Pour r´esister aux algorithmes p−1 et p+ 1 de Pollard, ainsi que pour r´esister `a une
attaque cyclique, pet qdoivent ˆetre des nombres premiers robustes (strong primes),
c’est `a dire qu’ils doivent chacun v´erifier :
–p−1 poss`ede un grand facteur, not´e r.
–p+ 1 poss`ede un grand facteur.
–r−1 poss`ede un grand facteur.
Ainsi, l’algorithme de Gordon ci-dessous, permet de g´en´erer des nombres premiers robustes :
Algorithme de Gordon
1. G´en´erer deux nombres premiers set tde bbits.
2. Chercher rpremier de la forme 2kt + 1.
3. Calculer m= (2sr−2mod r)s−1.
4. Retourner ple plus petit premier de la forme m+ 2hrs.
1. Montrer que la sortie de l’algorithme de Gordon est un nombre premier robuste.
2. En servant de la section pr´ec´edente, ´ecrire une proc´edure fournissant un nombre premier
robuste. De quelle autre routine avez-vous besoin ? Qu’en d´eduisez-vous sur les nombres
premiers g´en´er´es ?
1