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