CONCOURS GÉNÉRAL 2005 Exercice 4 – Logarithme discret et

publicité
CONCOURS GÉNÉRAL 2005
Exercice 4 – Logarithme discret et méthode d’Adleman
Corrigé détaillé
Samuel Rochetin
Vendredi 23 décembre 2016
Résumé
Ce problème traite du logarithme discret, utilisé en cryptologie. Les techniques d’arithmétique sont classiques et proches
du cours de spécialité mathématiques. Les deux dernières questions, indépendantes des autres, se démarquent clairement par
leur difficulté et pourraient constituer un exercice à elles seules. Enfin, signalons que les notations du sujet sont inutilement
compliquées.
I – Définition du logarithme discret
1. En procédant comme dans les exemples, nous trouvons que les racines primitives modulo 7 sont 3 et 5.
2. (a) Posons E := g k (mod p) , k ∈ J0; p − 2K . Tout d’abord, puisque g est une racine primitive modulo p, nous avons
k
l’inclusion E ⊂ g (mod p) , k ∈ N = J1; p − 1K. Pour montrer que cette inclusion est une égalité, il suffit de
2
montrer que l’ensemble E contient p − 1 éléments. Supposons
que ce n’est pas le cas. Alors il existe (i,
j) ∈ J0; p − 2K
i−j
i−j
j
i
j
j
− 1 . Or, 0 < g < p
− 1 = 0 (mod p), c’est-à-dire p divise g g
tel que i > j et g = g (mod p). Donc g g
et p est premier donc p et g sont premiers entre eux, donc d’après le théorème de Gauss, p divise g i−j − 1, c’està-dire g i−j = 1 (mod p), où i − j ∈ J1; p − 2K. Soit k ∈ N. Posons b := i − j et considérons
q la division euclidienne
de k par b : il existe (q, r) ∈ N2 tel que k = bq + r et 0 ≤ r ≤ b − 1. Donc g k = g b g r = g r (mod p). Or,
0 ≤ r ≤ b − 1 ≤ p − 3 donc l’ensemble g k (mod p) , k ∈ N contient au plus p − 2 éléments. Contradiction. Donc
k
g (mod p) , k ∈ J0; p − 2K = J1; p − 1K.
(b) D’après la question précédente, les ensembles g k (mod p) , k ∈ J0; p − 2K et J1; p − 1K ont le même cardinal fini
non nul, ils sont donc en bijection. Autrement dit, pour tout A ∈ J1; p − 1K, il existe un unique entier a ∈ J0; p − 2K
tel que A = (g a (mod p)).
k
(c) Supposons b ≥ a. Puisque b = a (mod (p − 1)), il existe k ∈ N tel que b − a = k(p − 1). Donc g b−a = g p−1
(mod p). Or, p est premier et ne divise pas g, donc d’après le petit théorème de Fermat, g p−1 = 1 (mod p), donc
g b−a = 1 (mod p). En multipliant par g a , il vient g b (mod p) = (g a (mod p)). De même si a ≥ b.
3. (a) entrer p, g, A
` := 0
k := 0
tant que g k (mod p) 6= A
k := k + 1
` := k
fin tant que
afficher `
(b) Nous trouvons `(40) = 18.
II – Calcul du logarithme discret par la méthode d’Adleman
3
1. 2 = 5560 (mod 113) et 3 = 555 (mod 113) donc 54 = 2 × 33 = 5560 555 = 5575 (mod 113)) donc `(54) = 75.
2. Nous voulons montrer la réciproque de la question I 2. (c). Commençons par montrer que si (a, b) ∈ N2 est
tel que a ≥ b
et g a = g b (mod p), alors g a−b = 1 (mod p). Nous avons g a = g b (mod p) si et seulement si g b g a−b − 1 = 0 (mod p),
c’est-à-dire si et seulement si p divise g b g a−b − 1 . Or, 0 < g < p et p est premier donc p et g sont premiers entre eux,
donc d’après le théorème de Gauss, p divise g a−b −1, c’est-à-dire g a−b = 1 (mod p). Ensuite, montrons que si x ∈ N est tel
1
que g x = 1 (mod p), alors p − 1 divise x.
la division de x par p − 1 : il existe (q, r) ∈ N2 tel que x = (p − 1)q + r
Effectuons
x
p−1 q r
r
et 0 ≤ r ≤ p − 2. Donc 1 = g = g
g = g (mod p), en utilisant le petit théorème de Fermat comme à la question
2. (c). Or, d’après la question I 2. (a), {(g r (mod p)) , r ∈ J0; p − 2K} = J1; p − 1K et g 0 = 1 (mod p), donc r = 0. Donc
x = (p − 1)q, donc p − 1 divise x. Enfin, précisons que p − 1 divise a − b si et seulement si p − 1 divise b − a, ce qui
règle le cas où a ≤ b. Conclusion : si g a = g b (mod p), alors p − 1 divise a − b. Pour répondre à la question, il suffit
1 )+···+ei,n `(pn )
donc de montrer que pour tout i ∈ J1;nK, g ai = g ei,1 `(p
(mod p). Or, pour tout k ∈ J1; nK, 1 < pk < p, donc
e
par définition du logarithme discret, g `(pk ) (mod p) = pk . Donc g `(pk ) = pk (mod p), donc g ei,k `(pk ) = pki,k (mod p),
e
e
donc g ei,1 `(p1 ) . . . g ei,n `(pn ) = p1i,1 . . . pni,n (mod p), donc nous avons bien g ei,1 `(p1 )+···+ei,n `(pn ) = g ai (mod p). D’après
ce qui vient d’être vu, nous avons donc ai = ei,1 `(p1 ) + · · · + ei,n `(pn ) (mod (p − 1)).
Remarque : nous avons
obtenu une relation logarithmique classique de transformation des produits en sommes puisque
e
e
ai = ` p1i,1 . . . pni,n = ei,1 `(p1 ) + · · · + ei,n `(pn ) (mod (p − 1)). Par ailleurs, soulignons que l’indexation par i est inutile
dans tout le problème et ne fait que compliquer inutilement la notation.
3. (a) g 1 = 20 (mod 53) donc `(20) = 1. Or, 20 = 22 × 5, donc d’après la question précédente, 2`(2) + `(5) = 1 (mod 52).
De même, g 3 = 50 (mod 53) et 50 = 2 × 52 donc `(2) + 2`(5) = 3 (mod 52). Nous obtenons donc le système :
(
2`(2) + `(5) = 1 (mod 52)
`(2) + 2`(5) = 3 (mod 52)
2L1 −L2 donne 3`(2) = 51 (mod 52), c’est-à-dire 3(`(2)−17) = 0 (mod 52). Or, 52 et 3 sont premiers entre eux donc
d’après le théorème de Gauss et puisque 17 ∈ J0; 51K, `(2) = 17 , donc en réinjectant dans L1 , il vient `(5) = 19.
Remarque : sans l’astuce 51 = 3 × 17, nous aurions dû chercher un inverse de 3 modulo 52. Un tel inverse existe car
3 et 52 sont premiers entre eux, donc d’après le théorème de Bézout, il existe (u, v) ∈ Z2 tel que 3u + 52v = 1, donc
3u ≡ 1 (mod 52), et l’algorithme d’Euclide permet de déterminer une solution particulière (u0 , v0 ).
(b) `(40) = ` 23 × 5 = 3`(2) + `(5) = 70 = 18 (mod 52). Donc `(40) = 18 , comme vu à la question I 3. (b).
(c) Si 2α 5β ∈ J1; 52K, avec α et β entiers naturels, puisque 53 = 125, nous avons nécessairement 0 ≤ β ≤ 2. Réciproquement, si β = 2, alors 0 ≤ α ≤ 1, si β = 1, alors 0 ≤ α ≤ 3 et si β = 0, alors 0 ≤ α ≤ 5. Il y a donc 2 + 4 + 6 =
12 entiers de J1; 52K pouvant s’écrire sous la forme 2α 5β , avec α et β entiers naturels.
Remarque : la connaissance des logarithmes de 2 et 5 permet donc de déterminer les logarithmes de 10 autres entiers
de J1; 52K.
4. (a) Par définition du reste de la division euclidienne par p, l’ensemble des (g s A (mod p)), pour s ∈ J0; p − 2K, est inclus
dans J0; p − 1K. Or, p est premier avec g s et premier avec A, donc par contraposée du lemme d’Euclide, p ne divise pas
g s A donc (g s A (mod p)) ne peut pas prendre la valeur 0. Ainsi, les p − 1 valeurs de (g s A (mod p)) sont bien dans
J1; p−1K. Il reste à montrer qu’elles sont distinctes.Supposons qu’elles ne le sont pas. Alors il existe (i, j) ∈ J0; p−2K2
tel que i 6= j et g i A = g j A (mod p). Donc g i − g j A = 0 (mod p). Or, p et A sont premiers entre eux, donc d’après
le théorème de Gauss, p divise g i − g j , c’est-à-dire g i = g j (mod p). D’après la question I 2. (a), nous savons que
cela signifie que i = j. Contradiction. Donc l’ensemble des (g s A (mod p)), pour s ∈ J0; p − 2K, est J1; p − 1K.
Remarque : ce résultat permet de faire l’hypothèse de la question suivante, c’est-à-dire qu’il existe un entier naturel
s tel que (g s A (mod p)) se factorise à l’aide de p1 , . . . , pn uniquement.
(b) A ∈ J1; p − 1K, donc g `(A) (mod p) = A, donc A = g `(A) (mod p) et g s A = g s+`(A) (mod p) en multipliant par g s ,
donc nous avons (g s A (mod p)) = g s+`(A) (mod p) . Donc, par hypothèse, il existe n entiers naturels e1 , . . . , en tels
que g s+`(A) (mod p) = pe11 . . . penn , donc la question II 2. donne `(A) = e1 `(p1 ) + · · · + en `(pn ) − s (mod (p − 1)).
(c) Nous connaissons `(2) et `(5), donc il suffit de trouver un entier s tel que (20s × 30 (mod 53)) soit un entier de J1; 52K
s’écrivant sous la forme 2α 5β , avec α et β entiers naturels. Pour s = 3, nous avons 203 × 30 = 16 = 24 (mod 53).
En posant A := 30, s := 3, p1 := 2, nous avons (g s × A (mod p)) = p41 , donc d’après la question précédente et la
question II 3. (a), `(30) = 4`(2) − 3 = 65 = 13 (mod 52). Donc `(30) = 13.
5. Dans les questions suivantes, nous utiliserons à plusieurs reprises la croissance du logarithme népérien sans le préciser.
Par ailleurs, les logarithmes considérés seront positifs ou strictement positifs, puisque tout nombre premier est strictement
supérieur à 1.
ln(p − 1)
. Or, α est entier, donc
(a) Soit α le plus grand entier naturel tel que pα
1 ≤ p − 1. Nous avons donc α ≤
ln p1 ln(p − 1)
ln(p − 1)
0≤α≤
. Réciproquement, soit un entier naturel α tel que 0 ≤ α ≤
. Pour tout réel x, nous
ln p1
ln p1
ln(p − 1)
α
avons bxc ≤ x, donc α ≤
, donc pα
1 ≤ p − 1. L’ensemble des entiers naturels α tels que p1 ≤ p − 1 est donc
ln p1
ln(p − 1)
ln(p − 1)
0, . . . ,
. Donc il y a
+ 1 entiers de J1; p − 1K qui sont une puissance de p1 .
ln p1
ln p1
2
(b) D’après la question II 4. (a), l’ensemble des (g s A (mod p)), pour s ∈ J0; p − 2K, est J1; p − 1K, donc la probabilité
qu’un entier s ∈ J0; p − 2K soit tel que (g s A (mod p)) soit une puissance de p1 est égal au nombre de puissances de
ln(p − 1)
1
p1 dans J1; p − 1K, divisé par le nombre d’entiers dans J1; p − 1K , c’est-à-dire
+1 .
p−1
ln p1
(c) Essayons de généraliser la question II 3. (c) et cherchons
N d’entiers de J1; p − 1K pouvant s’écrire sous la
le nombre
ln(p
−
1)
β
. D’après la question II 5. (a), m est la plus grande
forme pα
1 p2 , avec α et β entiers naturels. Posons m :=
ln p2
α i
puissance de p2 dans J1; p − 1K.Soit i ∈
J0; mK fixé. Combien existe-t-il d’entiers naturels α tels que p1 p2 ∈ J1; p − 1K,
p
−
1
c’est-à-dire tels que pα
? La méthode de la question II 5. (a) permet de conclure qu’il en existe
1 ≤ ln
pi2


  


p−1 
p−1 



 ln
ln
i
i
m





p2
p2
 +1. Puisque i peut prendre chaque valeur de J0; mK, nous avons N = P 
 + 1. Com





ln p1
ln p1
i=0
ln
p−1
m
pi2
p−1
1 P
=
ln
=
ln p1 
ln p1 i=0
pi2
m
P
mençons par minorer N . Pour tout réel x, nous avons bxc+1 > x, donc N >
i=0



m+1
m+1
2
m+1
(p
−
1)
(p − 1)m+1
1
1
1

=
(p − 1) 2 × (p − 1)
. Par définition de m, nous
ln
=
ln
ln
m(m+1)
m(m+1)
0+1+···+m
ln p1
ln
p
ln
p
p2
1
1
2
2
p2
p2
m+1
m(m+1)
2
m+1
(p
−
1)
≥ p2 2
donc
> p−1
avons d’une part, p − 1 ≥ pm
≥ 1, et d’autre part, pm+1
2 donc (p − 1) 2
2
m(m+1)
2
p
2
m+1
ln (p − 1) 2
ln(p − 1)
ln(p − 1)
ln2 (p − 1)
donc m + 1 >
. Il vient donc N >
= (m + 1)
>
. Ensuite, majoln p2
ln p1
2 ln p1
2 ln p1 ln p2
rons N . Il suffit de chercher la plus grande valeur des termes de la somme : elle est atteinte
pour la plus
petite
ln(p − 1)
i
0
valeur de p2 , c’est-à-dire pour 1 = p2 , donc nous avons la majoration classique N ≤ (m + 1)
+1 =
ln p1
ln(p − 1)
ln(p − 1)
ln(p − 1)
ln(p − 1)
+1
+1 ≤
+1
+ 1 . Puisque la probabilité P cherchée vaut
ln p1
ln p2
ln p1
ln p2
ln2 (p − 1)
ln(p − 1)
ln(p − 1)
N
1
P =
, nous avons
≤P ≤
+1
+1 .
p−1
2(p − 1) ln p1 ln p2
p−1
ln p1
ln p2
Remarque : la majoration de N peut aussi s’obtenir directement avec un raisonnement combinatoire. Soit α le plus
β
grand entier naturel tel que pα
p − 1. Toutentier de J1; p − 1K
1 ≤ p − 1 et β le plus grand entier naturel tel que p2 ≤ ln(p − 1)
a b
s’écrivant p1 p2 , avec a et b entiers naturels, vérifie nécessairement 0 ≤ a ≤ α =
et 0 ≤ b ≤ β =
ln p1
ln(p − 1)
. En effet, si a > α, alors, par définition de α et puisque pb2 ≥ 1, il vient pa1 pb2 ≥ pa1 ≥ pα+1
> p − 1, ce
1
ln p2
ln(p − 1)
ln(p − 1)
+1
+ 1 entiers
qui est impossible. Même raisonnement si b > β. Il y a donc au plus
ln p1
ln p2
a b
de J1; p − 1K s’écrivant p1 p2 .
(d) La majoration est immédiate à généraliser. En revanche, la minoration, déjà technique avec deux nombres premiers,
est délicate à généraliser. En effet, le 2 au dénominateur peut se généraliser de plusieurs façons : n, 2n ou n!. L’aspect
multiplicatif de la minoration nous oriente plutôt vers 2n ou n!, et la puissance du logarithme nous rappelle les
xn
expressions de la forme
. Commençons par traiter le cas n = 3. Soit N le nombre d’entiers de J1; p − 1K poun!
ln(p − 1)
vant s’écrire sous la forme pi1 pj2 pk3 , avec i, j, k des entiers naturels. Posons m :=
. Soit k ∈ J0; mK. Soit
ln p3
i j k
Nk le nombre de couples d’entiers naturels (i, j) tels que p1 p2 p3 ≤ p − 1. Puisque cette inégalité est équivalente à
ln2 (uk )
p−1
p−1
pi1 pj2 ≤
, d’après la question précédente, en posant uk :=
, nous avons Nk ≥
. Précisons que
k
k
2 ln p1 ln p2
p3
p3
changer p − 1 en uk pour appliquer la minoration de la question précédente est licite parce que le fait que p − 1
soit un entier et le fait que p soit premier n’intervenaient pas dans la preuve de la minoration. Nous avons donc
m
m
P
P
1
N =
Nk ≥
ln2 (uk ). Le carré empêche cette fois de transformer la somme en produit, donc nous
2
ln
p
ln
p
1
2 k=0
k=0
p−1
poursuivons la minoration à l’aide d’une comparaison série-intégrale. Posons f : t 7→ ln
. Nous avons donc
pt3
f (k) = ln2 (uk ). La fonction f est décroissante et continue sur R+ , donc pour tout k ∈ J0; mK, nous avons f (k) ≥
k+1
R
p−1
, donc v 0 (t) = − ln p3 , et
f (t) dt. Cette intégrale se calcule simplement car f (t) = v 2 (t), avec v(t) = ln
pt3
k
3
k+1
R
v 3 (t)
1
. D’où
f (t) dt =
ln3 uk − ln3 uk+1 . En reconnaissant
3
3 ln p3
k
m
m
m k+1
m
R
P
P
P
P
1
2
f (t) dt =
une somme télescopique, il vient donc
ln (uk ) =
f (k) ≥
ln3 uk − ln3 uk+1 =
3 ln p3 k=0
k=0
k=0 k
k=0 ln3 (p − 1)
p−1
1
1
m+1
3
3
ln u0 − ln um+1 =
−
ln
m+1 . Or, par définition de m, nous avons p − 1 < p3
3 ln p3
3 ln p3
3 ln p3
p
3
m
P
ln3 (p − 1)
ln3 (p − 1)
p−1
2
>
0,
donc
ln
(u
)
>
donc − ln
. Nous avons donc N ≥
. Nous en
k
m+1
3 ln p3
3 × 2 × ln p1 ln p2 ln p3
p3
k=0
n
ln (p − 1)
. Prouvons-le par récurrence sur n. Initialisation :
déduisons que la minoration se généralise par
n! ln p1 . . . ln pn
le cas n = 1 se déduit de la question II 5. (a) et de la minoration bxc + 1 > x, valable pour tout réel x. Hérédité : soit N le nombre d’entiers de J1; p − 1K se factorisant à l’aide de n + 1 nombres premiers distincts uniquement. Supposons que le nombre d’entiers de J1; p − 1K se factorisant à l’aide de n nombres premiers distincts
lnn (p − 1)
p1 , . . . , pn uniquement soit supérieur à
. Soit pn+1 un nombre premier distinct de p1 , . . . , pn . Posons
n! ln p1 . . . ln pn
ln(p − 1)
m :=
. Soit k ∈ J0; mK. Soit Nk le nombre d’entiers de J1; p − 1K s’écrivant sous la forme pkn+1 X, où
ln pn+1
p−1
X se factorise à l’aide de p1 , . . . , pn uniquement. En posant uk := k , par hypothèse de récurrence, nous avons
pn+1
m
m
m
P
P
P
lnn (uk )
1
. Donc N =
Nk ≥
lnn (uk ). En minorant
lnn (uk ) avec une compaNk ≥
n! ln p1 . . . ln pn
n! ln p1 . . . ln pn k=0
k=0
k=0
m
m
P
P
1
lnn+1 uk − lnn+1 uk+1 =
raison série-intégrale comme ci-dessus, nous obtenons
lnn (uk ) ≥
(n + 1) ln pn+1 k=0
k=0
!
n+1
ln
(p
−
1)
1
1
p−1
lnn+1 u0 − lnn+1 um+1 =
−
ln
. De même que précédem(n + 1) ln pn+1
(n + 1) ln pn+1
(n + 1) ln pn+1
pm+1
n+1
!
m
P
lnn+1 (p − 1)
p−1
, ce qui donne bien N ≥
> 0, donc
ment, la définition de m mène à − ln
lnn (uk ) >
m+1
(n + 1) ln pn+1
pn+1
k=0
nous savons qu’une primitive de v 0 (t)v 2 (t) est
lnn+1 (p − 1)
. La probabilité P cherchée vérifie donc :
(n + 1)! ln p1 . . . ln pn+1
lnn (p − 1)
1
≤P ≤
n!(p − 1) ln p1 . . . ln pn
p−1
ln(p − 1)
ln(p − 1)
+ 1 ···
+1 .
ln p1
ln pn
Remarque : interprétons ce résultat. Soient p un nombre premier et g une racine primitive modulo p. Supposons
que nous connaissions les logarithmes (de base g modulo p) de n nombres premiers distincts p1 , . . . , pn strictement
inférieurs à p. Supposons que nous cherchions le logarithme d’un entier A ∈ J1; p − 1K. Nous savons qu’il existe un
entier s ∈ J0; p − 2K tel que (g s A (mod p)) se factorise à l’aide de p1 , . . . , pn uniquement. Trouver un tel entier s
lnn (p − 1)
=0
nous permet de calculer le logarithme de A. Cependant, pour tout entier n ≥ 1, nous avons lim
p→+∞
p−1
par croissance comparée, donc plus p est grand, plus la probabilité de trouver par hasard un tel entier s est faible.
4
Téléchargement