Quelques tests de primalité - Institut de Mathématiques de Bordeaux

publicité
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
Téléchargement