Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Quelques tests de primalité J.-M. Couveignes (merci à T. Ezome et R. Lercier) Institut de Mathématiques de Bordeaux & INRIA Bordeaux Sud-Ouest [email protected] École de printemps C2 Mars 2014 Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Plan 1 Introduction 2 De Fermat à Miller-Rabin 3 Test de Miller-Rabin 4 Le test de Solovay-Strassen Le test de Solovay-Strassen Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Définition et résultats classiques Euclide, livre sept des Élément, vers -300 : définition, existence d’un diviseur premier, algorithme pour pgcd et ppcm, infinité, Q pk+1 ≤ l≤k pl + 1, crible d’Eratosthène, théorème fondamental de l’arithmétique (preuve par Gauss), complexité linéaire pour +, quadratique pour ×, exponentielle pour primalité et factorisation : T = n1/2+o(1) . Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Distribution des nombres premiers A π(A) A/π(A) log A 10 4 2.5 2.3 100 25 4 4.6 1000 168 5.95 6.9 Théorème des nombres premiers : π(A) = pn = (1 + o(1)) × n log n. Assez nombreux ! 10000 1229 8.14 9.2 A log A 100000 9592 10.4 11.5 × (1 + o(1)) et Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Exponentiation Étant donné g dans G et e entier naturel, calculer g e . Maladroit g, g 2 , g 3 , . . . , g e−1 , g e . T = (e − 1). L’algorithme d’exponentiation rapide permet de calculer efficacement g e . Méthode inventée par Piṅgala dans son Chandah-sûtra (entre -450 et -250). e= Puis P 0≤k≤K k 2 k 2 et b0 = g, bk = bk−1 pour 1 ≤ k ≤ K . ge ≡ Y bkk . 0≤k≤K T = O(log e). Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Ordre d’un élément dans un groupe 0 / oZ /Z /G a / g a. Trouver o ? Prouver o ? Q Si f = i pimi et qi = f /pi et g f = 1 et g qi 6= 1 alors f = o. Si l’on a des preuves courtes de primalité, on a des preuves courtes pour l’ordre d’un élément dans un groupe. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Un peu d’arithmétique Les propriétés de l’anneau Z/nZ reflètent la factorisation de n. Q Q Si n = i pimi alors Z/nZ ≡ i (Z/pimi Z). Bijection effective : ri = n/pimi et si inverse de ri modulo pimi (ui )i 7→ X ui ri si mod n. i En particulier (Z/nZ)∗ est d’ordre i pimi −1 (pi − 1) donc #(Z/nZ)∗ = n − 1 ⇐⇒ n est premier. Q Une preuve que g mod n est d’ordre n − 1 est une preuve de primalité. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Preuves courtes de primalité Exhiber un générateur g de (Z/nZ)∗ et une preuve que g est d’ordre n − 1. Exhiber la factorisation n − 1 = premiers. Vérifier que g n−1 = 1 et g n−1 pi Q i 6= 1. PRIMES est dans NP ∩ co-NP. pimi et une preuve que les pi sont Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Ordre ou ordre exact On se donne un groupe algébrique G, e.g. groupe multiplicatif ou courbe elliptique sur Z/nZ. Soit G(Z/nZ) = (Z/nZ)∗ ou E (Z/nZ) par exemple. On a un morphisme ρp : G(Z/nZ) → Gp (Z/pZ) pour tout p|n. Soit o premier à n. On dit que A ∈ G(Z/nZ) est d’ordre exact o si oA = 0 et pour tout p|n l’image ρp (A) est d’ordre o dans Gp (Z/pZ). Autrement dit pour tout q|o et p|n on a qo A 6= 0 mod p. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Ordre ou ordre exact Soit n = 7 × 13 = 91 et G le groupe multiplicatif. −1 est d’ordre 2 modulo 7 et 3 est d’ordre 3 modulo 13, donc 3 × 2 × 7 + (−1) × 6 × 13 = −36 = 55 est d’ordre 6 modulo n mais pas d’ordre exact 6. En revanche 3 est d’ordre 6 modulo 7 et 10 est d’ordre 6 modulo 13, donc 10 × 2 × 7 + 3 × 6 × 13 = 374 = 10 est d’ordre exact 6. En particulier 102 − 1 et 103 − 1 sont inversibles modulo n. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Test de Pocklington-Lehmer Théorème (Pocklington) Soit n > 2 un entier. Soit a ∈ (Z/nZ)∗ d’ordre exact s > est premier. √ n. Alors n ”a est d’ordre exact s” signifie as = 1 et ai − 1 est inversible pour 1 6 i < s (de façon équivalente as/q − 1 est inversible pour tout diviseur premier q de s). Démonstration. Soit p un diviseur premier de n. Le groupe (Z/pZ)∗ contient a mod p. √ Donc s divise p − 1. Donc p > 1 + s > n. Donc tout diviseur √ premier de n est plus grand que n, et n est premier. Ce qui est difficile en pratique, c’est de trouver un facteur s assez grand de n − 1 qui soit produit de petits premiers. Souvent on écrit n − 1 = 2m et on est bloqué. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Des premiers pour quoi faire ? On va voir que PRIMES est dans P. Le problème de la factorisation ne semble pas être dans P. Fonctions asymétriques et fonctions trappes. Pour construire des groupes multiplicatifs et utiliser des logarithmes discrets. On connaît #(Z/pZ)∗ . Pour construire des corps finis et faire de la géométrie : (3x + 2y )p = 3x p + 2y p ∈ Fp [x , y ]. Si V est une variété algébrique sur Fp on a une application F : V → V . On peut calculer #E (Fp ). Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Critère de Fermat Si n est premier alors x n = x mod n pour tout entier x et x n−1 = 1 mod n si (x , n) = 1. Preuve 1 : on vérifie pour x = 1 et on utilise (x + y )p = x p + y p . Preuve 2 : théorème de Lagrange. Critère de composition : Wn = (Z/nZ)∗ , Fn associée est définie par : Fn : / {prime, composite} (Z/nZ)∗ x / ( prime si x n−1 = 1 mod n composite si x n−1 6= 1 mod n On choisit x au hasard (comment ?) et on calcule Fn (x ). Si Fn (x ) = composite alors n est composé. Critère de composition. Si Fn (x ) = prime que faire ? Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Critère de Fermat Combien de faux témoins ? Pas trop en général. 100% pour les nombres de Carmichael exemple n = 561 = 3 × 11 × 17. Que se passe-t-il ? Il y a une infinité de nombres de Carmichael d’après Alford, Granville, Pomerance. Le test de Fermat n’a pas de faux témoins si n est premier, mais peut avoir 100% de faux témoins pour certains nombres composés. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Le critère de Miller-Rabin Théorème Soit n ≥ 3 un entier impair et posons n − 1 = 2k m avec m impair. Si n est premier, alors pour tout x dans (Z/nZ)∗ , on a x m = 1 ou x 2 i m = −1 pour un 0 6 i < k . (1) Démonstration. D’après le théorème de Fermat, x n−1 − 1 = 0. Mais x n−1 − 1 = (x n−1 2 )2 − 1 = (x m n−1 2 − 1)(x m n−1 2 (x − 1)(x + 1)(x + 1) = 2m + 1) · · · (x 2 k−1 m (Z/nZ)∗ est un corps, donc au moins un des facteurs est nul. + 1) Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Le test de Miller-Rabin Corollaire : Si l’on trouve un x tel que Eq. (1) est fausse, alors n est composé. Critère de composition : Wn = (Z/nZ)∗ , Mn associée est définie par : Mn : / {prime, composite} (Z/nZ)∗ x / ( prime si (1) est vraie composite sinon On choisit x au hasard et on calcule Mn (x ). Comment ? Complexité ? Si Mn (x ) = composite alors n est composé. Critère de composition. Si Mn (x ) = prime que dire ? Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Le test de Miller-Rabin Théorème Si n est composé et impair, et s’il a t facteurs premiers, alors #{x in (Z/nZ)∗ : Eq. (1) est vraie} 1 6 t−1 . ϕ(n) 2 Si de plus n ≥ 15 alors 6 1/4. Remarque 1 : Après λ tests, la probabilité de manquer un composé est majorée par 1/4λ . Remarque 2 : Cette majoration est presque optimale. Pour n = p q avec p = 2 a + 1, q = 4 a − 1 deux premiers et a impair, n − 1 = 2 a (4a + 3) et il y a beaucoup d’entiers x d’ordre a modulo n. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Preuve I Soit l le plus grand entier tel que 2l divise p − 1 pour tout diviseur premier p de n. Alors B = {x in (Z/nZ)∗ : Eq. (1) est vraie} est contenu dans B 0 = {x in (Z/nZ)∗ : x 2 i l−1 m = ±1} Si x m = 1 mod n alors x ∈ B 0 . Si x m2 = −1 mod n avec 1 ≤ i < k alors 2i+1 divise p − 1 pour tout p|n. Donc l ≥ i + 1. l−1 l−i−1 Donc x 2 m = (−1)2 . Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Preuve II l−1 Le nombre de x tels que x 2 m = 1 est le produit sur p du l−1 nombre de solutions de x 2 m = 1 mod p ap , pgcd((p − 1)p ap −1 , m 2l−1 ) (= pgcd(p − 1, m) 2l−1 ) . Donc, #{x in (Z/nZ)∗ : x 2 l−1 m = 1} = Y pgcd(p − 1, m) 2l−1 . p|n l De même, le nombre de x tels que x 2 m = 1 mod p ap est l−1 pgcd(p − 1, m) 2l , donc le nombre de x tels que x 2 m = −1 mod p ap est aussi pgcd(p − 1, m) 2l−1 . Donc, Q #B 0 = 2 p|n pgcd(p − 1, m) 2l−1 , et Y pgcd(p − 1, m) 2l−1 #B 0 =2 . ap −1 ϕ(n) (p − 1) p p|n Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Preuve III Comme 2l−1 pgcd(p − 1, m) divise (p − 1)/2, on a #B 0 1 6 t−1 . ϕ(n) 2 Enfin si t = 1, #B 0 /ϕ(n) ≤ 1/3. Le test de Solovay-Strassen Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Complexité et fiabilité Si n est premier, pas de faux temoin. Si n est composé, la densité de faux témoins est ≤ 1/4 et ≤ 1/2t−1 . T = (log n)2+(n) avec exponentiation et arithmétique rapides. Avec λ/2 tests de Miller-Rabin, pour n ≥ 15 impair, l’algorithme répond prime avec probabilité 6 2−λ si n est composé. Le temps de calcul est (λ/2) (log n)2+(n) . Nous verrons qu’il existe un algorithme qui atteint la même sécurité en temps 1 λ 2 +(λ) (log n)2+(n) si λ ≤ log n. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Symbole de Legendre Soit n ≥ 3 un entier premier. Pour a entier a n On a = a n 0 1 −1 =a a n est défini par si a = 0 mod n. si l’équation X 2 = a a deux solutions dans Z/nZ. si l’équation X 2 = a n’a aucune solution dans Z/nZ. n−1 2 n−1 2 mod n. En effet si a = b 2 alors a n−1 2 = b n−1 = 1 et le polynôme x − 1 n’a pas plus de (n − 1)/2 solutions. Cela donne une première méthode pour calculer efficacement ce symbole. Notons que a 7→ na est un morphisme de groupes. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Loi de réciprocité quadratique Théorème Si p et q sont des premiers impairs positifs et distincts, alors p q 2 p ! ! = (−1) q p ! p 2 −1 8 = (−1) , et (p−1)(q−1) 4 −1 p , ! = (−1) p−1 2 . Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Démonstration. Soit Φq (x ) = 1 + x + · · · + x q−1 et A(x ) ∈ Fp [x ] un facteur irréductible de Φq (x ) modulo p. Soit L = Fp [x ]/A et ζ = x mod A(x ) ∈ L . C’est une racine q-ième primitive de l’unité dans L . La somme de Gauss X τ= x ∈F∗q est dans L . On montre que −1 q ! = τ . On vérifie que τp racine carrée de τ2 = ! −1 q ! ζx q ∈ L . Donc τ est une q. Cette racine est dans Fp si et seulement si ! = p q ! modulo p si et seulement si p q τp x q τ . Donc = 1. −1 q ! q est un carré Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Symbole de Jacobi Soit N ≥ 3 entier impair et N = i piei sa factorisation. Le symbole de Jacobi est !ei ! Y x x . = N pi i Q a b Dépend de x mod N. Et ! 6= 0 ssi pgcd(a, b) = 1. Théorème (Gauss) Pour M ≥ 3 et N ≥ 3 impairs et M N ! N M −1 M ! M−1 =(−1) 2 ! = (−1) 2 M , (M−1)(N−1) 4 . ! =(−1) M 2 −1 8 , Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Calcul du symbole de Jacobi Pour calculer M N ! on utilise alternativement trois idées remplacer M par M%N, si M est pair, sortir 2, si M est impair et < N basculer. T = (log max(M, N))2+o(1) . Et même mieux. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Critère de Solovay-Strassen Si n ≥ 3 est premier alors pour tout x dans (Z/nZ)∗ on a x n−1 2 x n = mod n. L’ensemble des témoins pour ce test est donc Wn = (Z/nZ)∗ et l’application associée Sn : (Z/nZ)∗ est définie par : Sn (x ) = prime ssi x / {prime, composite} n−1 2 = x n mod n. Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Densité de faux témoins Si n est premier impair, pas de faux témoins. Théorème Si n est un entier impair composé, la densité de faux témoins vérifie n−1 {x ∈ (Z/nZ)∗ | x 2 = ϕ(n) x n mod n} 1 ≤ , 2 où ϕ(n) = #(Z/nZ)∗ . Complexité ? Densité ? Comparaison avec Miller-Rabin ? Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Bilan On a montré que PRIME est dans co − RP. Montrer que PRIME est dans RP a pris beaucoup de temps. Adleman et Huang l’ont montré en 1992. Rappel : RP ∩ co − RP est noté ZPP. Quantités pertinentes pour un test de composition : densité µ(n), complexité T (n). Le quotient T (n) − log2 µ(n) est le prix d’un bit de sécurité, ou d’espérance. On obtient (log n)2+o(1) . Introduction De Fermat à Miller-Rabin Test de Miller-Rabin Le test de Solovay-Strassen Résumé Complexité des algorithmes antiques Distribution des nombres premiers Exponentiation rapide Preuves courtes de l’ordre d’un élément Preuves courtes de primalité et de composition PRIME est dans NP ∩ co − NP Ordre exact Test de Pocklington-Lehmer Tests de composition (Miller-Rabin, Solovay-Strassen) PRIME est dans co − RP