´
Ecole normale sup´erieure 2015-2016
epartement d’informatique
Introduction `a la cryptologie
TD n5 : Primalit´e et factorisation
Exercice 1 (Nombres de Fermat et test de primalit´e de P´epin).
1. Soit kun entier positif. Montrer que si l’entier 2k+ 1 est un nombre premier alors kest une
puissance de 2.
On appelle n-`eme nombre de Fermat le nombre Fn= 22n+ 1 pour n > 0.
2. Montrer que si Fnest premier, alors un entier gest un g´en´erateur de Z
Fnsi et seulement si
g
Fn=1.
En d´eduire que si Fnest premier alors 3 est un g´en´erateur de Z
Fn.
3. Montrer que si 3(Fn1)/2≡ −1 (mod Fn) alors Fnest premier.
Exercice 2 (Division euclidienne rapide par la m´ethode de Newton).Soit Aun anneau commutatif
unitaire (en pratique nous consid´ererons A=Zou A=ZN). Soient S, T A[X] avec deg(S) = n,
deg(T) = mavec mnet Tunitaire.
1. Montrer que l’algorithme classique de division euclienne de Spar Ta une complexit´e arithm´etique
en O(nm) (i.e. le nombre d’op´erations n´ecessaires dans l’anneau Aest en O(nm)).
2. Pour PA[X] et k= deg(P), nous notons Rec(P(X)) = XkP(1/X) le polynˆome r´eciproque de
P. Montrer que
Rec(Q) = Rec(S)Rec(T)1mod Xnm+1,
o`u Qest le quotient de la division euclidienne de Spar T.
3. Soit FA[X] avec F(0) = 1. Consid´erons la suite de polynˆomes GiA[X] d´efinie par G0= 1 et
Gi+1 = 2GiF·G2
imod X2i+1
pour i0. Montrer que pour tour entier i0, nous avons
F·Gi1 mod X2i.
4. En d´eduire un algorithme pour calculer Qet le reste Rde la division euclidienne de Spar T.
5. Montrer que la complexit´e arithm´etique de cet algorithme de division euclidienne appliqu´e `a deux
polynˆomes de degr´es < n est en O(M(n)) o`u M(n) est la complexit´e arithm´etique du produit de
deux polynˆomes de degr´e < n de A[X] (avec M(n1+n2)M(n1) + M(n2) pour n1, n2N).
Exercice 3 (Multi-´evaluation d’un polynˆome univari´e).Soit Aun anneau commutatif unitaire (en pra-
tique nous consid´ererons A=Zou A=ZN). Soient a1, . . . , adA. Nous notons M(d) la complexit´e
arithm´etique du produit et de la division euclidienne de deux polynˆomes de degr´e < d de A[X] (avec
M(d1+d2)M(d1) + M(d2) pour d1, d2N).
1. Supposons que d= 2kest une puissance de 2 et consid´erons l’arbre binaire complet T`a dfeuilles
d´efini par :
chacune des dfeuilles est associ´ee `a un polynˆome Xajpour j∈ {1, . . . , d};
pour chaque nœud interne uayant les fils vet wassoci´es aux polynˆomes Mv(X) et Mw(X)
respectivement, uest associ´e au polynˆome Mu(X) = Mv(X)·Mw(X).
Donner un algorithme pour construire l’arbre Tavec une complexit´e arithm´etique en O(M(d) log d).
2. Soit PA[X] unitaire avec deg(P) = d. Donner un algorithme qui prenant en entr´ee P,
(a1, . . . , ad) et l’arbre T, calcule P(X) mod Mu(X) pour tout uT, avec une complexit´e arithm´etique
en O(M(d) log d).
1
3. D´eduire des questions pr´ec´edentes un algorithme qui calcule P(a1), . . . , P (ad) pour tout dN
avec une complexit´e arithm´etique en O(M(d) log d).
Exercice 4 (Algorithme de Pollard-Strassen).Soit Nun entier positif compos´e et d=dN1/4e.
1. Montrer que (d2)! N6= 1.
2. En utilisant l’exercice pr´ec´edent, expliquer comment on peut calculer (d2)! mod Nen O(M(d) log(d))
op´erations arithm´etiques dans Z/N Z.
3. En d´eduire un moyen de trouver un diviseur propre de Nen O(N1/4+o(1)) op´erations ´el´ementaires.
Exercice 5 (Extraction de racine carr´ee modulo p`).Soit pun nombre premier impair et `2 un entier.
1. Montrer qu’un entier xpremier avec pv´erifie x21 mod p`si et seulement si x≡ ±1 mod p`.
2. Montrer qu’un entier xpremier avec pest un carr´e modulo psi et seulement si xest un carr´e
modulo p`.
3. En supposant connu un algorithme pour calculer une racine carr´ee de xmodulo p(cf Ex. 8),
donner un algorithme pour calculer une racine carr´ee de xmodulo p`.
Exercices compl´ementaires
Exercice 6 (Algorithme de Pohlig-Hellman).Soit Gun groupe cyclique d’ordre fini ndont la d´ecomposition
en facteurs premiers est connue.
1. Montrer que si n=pq est le produit de deux nombres premiers pet qdistincts alors il existe
un algorithme qui r´esout le probl`eme du logarithme discret dans Gen O(p+q+ log(n))
multiplications dans G.
2. Montrer que si n=peo`u pest un nombre premier et e2 est un entier, alors il existe un algorithme
qui r´esout le probl`eme du logarithme discret dans Ge, O(e(p+ log(n))) multiplications dans G.
3. En d´eduire, si n=qe1
1···qek
ko`u les qisont des nombres premiers deux `a deux distincts, alors il
existe un algorithme qui r´esout le probl`eme du logarithme discret en O(Pk
i=1 ei(qi+ log(n)))
op´erations dans G.
Exercice 7 (Extraction de racine carr´ee modulo p– Algorithme de Tonelli-Shanks).Soit pun nombre
premier impair.
1. Supposons p3 mod 4. Donner un algorithme de complexit´e O(log3p) op´erations binaires qui,
´etant donn´e α∈ {1, . . . , p 1}tel que α
p= 1, retourne β∈ {1, . . . , p 1}tel que β2αmod p.
Supposons maintenant que p1 mod 4 et posons p= 2hm+ 1 avec mimpair.
2. Donner un algorithme probabiliste qui ´etant donn´e pretourne un ´el´ement γde {1, . . . , p 1}tel
que γ
p=1 en temps esp´er´e O(log2p) op´erations binaires. Montrer que pour un tel γ, l’´el´ement
δ=γmengendre l’unique sous-groupe d’ordre 2hde (Z/pZ).
3. Soit α∈ {1, . . . , p 1}tel que α
p= 1. Montrer que αmappartient au sous-groupe engendr´e par
δet en utilisant un algorithme de logarithme discret, en d´eduire un algorithme pour calculer une
racine carr´ee de αmmod p.
4. En utilisant l’exercice pr´ec´edent, en d´eduire un algorithme permettant de calculer les racines
carr´ees de αen temps O(log3p).
2
1 / 2 100%