Title: Primalit
1Primalité et Génération des nombres premiers
- Rémi SOUBEYRAND Exposé de cryptographie
2Primalité la préhistoire
- Euclide ( 300 av. J.C.) Théorème
- Il y a une infinité de nombres premiers
- Ératosthène de Cyrène (276 - 194 av. JC)
- Crible dEratosthène
- Idée diviser N par tous les nombres entre 2 et
?N - impraticable dès que N est trop grand
- Temps 10nbchiffres secondes
- Chine (200 av. JC) Si 2N-1 1 (mod. N) alors
N est premier - souvent vrai mais faux
3Densité des nombres premiers
- La Vallée Poussin ou Hadamard
- Distribution des nombres premiers ?(n) indice
dEuler - ?(n)
- Lim n-gt oo ----------------- 1
- n/ln(n)
- (nombre de Nombres premiers lt N) N/ln(N)
- P(M lt N soit premier) 1/ln(N)
- Ex Si n 109 alors ?(n) 50 847 534 et n /
ln(n) 48 254 942 - Ex un nombre de 100 chiffres a une chance sur
230 dêtre premier
4Tests de primalité stochastique explication
- Test de primalité négative ou test de
factorisation - Factorisation pas premier
- Pas de factorisation premier (probabilité e)
- Test de pseudo primalité
5Petit théorème de Fermat (1643) Test de Pseudo
Primalité 1/2
- Si N premier et a multiple de N alors
- (gt) aN-1 1 (mod N)
- N7, a2, 261 (mod 7), donc 7 est peut-être
premier - N9, a5, 587 (mod 9), donc 9 nest pas premier
- N341, a2, 23401 (mod 341).
- 34131?11 pas premier mais pseudo premier (base
2) - Mais 334056 (mod 341) donc 341 nest pas premier
- Le théorème de Fermat (1643) nest pas réciproque
- P(aN-11 (mod N) N premier) 3/4
6Petit théorème de Fermat (1643) Test de Pseudo
Primalité 2/2
- P(aN-11 (mod N) N premier) 3/4
- P(aN-11 (mod N) N composé) 1/4
- Croiser les tests de Fermat
- P(aN-11 (mod N)N premier et P bases testés)
1-1/4P - Test de pseudo primalité de 561
- 25601 (mod 561), 35601 (mod 561), 55601 (mod
561), - 561 est un nombre de Carmichael (1873)
7Tests de primalité stochastique différents
tests
- test de Solovay-Strassen (1977)
- Fast Monte-Carlo Test for Primality
- test de Rabin-Miller
- A partir des idées de Miller (1976)
- Rabin Algorithme Probabiliste (1980)
- test de Lehmann (1982)
- test un peu plus rapide
8Equation X21 (mod N)utile pour Rabin-Miller
- Soit X tel que X21 (mod N)
- Alors (X2-1)(X1)(X-1)0 (mod N)
- Si X?1 et X?N-1,
- alors on a le produit de 2 nombres inférieurs à N
dont le produit est un multiple de N, - donc N nest pas premier
- Ex 521 (mod 24), 24 nest pas premier par
exemple 6?40 (mod 24)
9Rabin Miller (1980) explication du test 1/2
- N entier impair ? 3
- a entier tel que 2 ? a ? N-1
- Supposons que aN-1 1 (mod N)
pseudo primalité - N-1 est pair, posons Xa(N-1)/2 (mod N)
- On a donc X21 (mod N)
- Donc si X?1 et X? N-1 alors N nest pas premier
non
oui
10Rabin Miller (1980) explication du test 2/2
- Si X1 (mod N) et (N-1)/2 pair on continue avec
Ya(N-1)/4 (mod N) - Si XN-1 alors le test sarrête
- On dit que N passe le test de Miller-Rabin quand
on a épuisé tous les recours sans obtenir de
contradiction
11Rabin Miller exemple 1 53 est il premier ?
- N53, a2
- N-15222?13
- X0213 (mod 53)30
- X1302 (mod 53)52
- X2522 (mod 53)1
- On a obtenu aucune contradiction donc 53 passe le
test pour la base 2
12Rabin Miller exemple 2 561 (nb. de
Carmichael) est il premier ?
- N561, a2
- N-124?35
- X0235 mod 561 263
- X12632 mod 561 166
- X21662 mod 561 67
- X3672 mod 561 1
- On obtient une contradiction donc 561 ne passe
pas le test et donc il nest pas premier
13Rabin Miller exemple 3 2047 est il premier ?
- N2047, a2
- N-12?1023
- X021023 (mod 2047) 1
- 2047 passe le test pour la base 2
- Mais 204723?89 nest pas premier
- On dit que 2047 est pseudo-premier fort pour la
base 2
14Rabin Miller Nombre de tests
- Soit N un nombre composé à tester
- peut passer au plus N/4 tests
- on choisit aléatoirement n bases de tests
- Si N passe tous les tests, alors il y a moins
dune chance sur 4n pour que N soit en fait
composé - n4 doù 1 chance sur 256
- n8 doù 1 chance sur 65536
- n16 doù 1 chance sur 410
15Rabin Miller Bilan du test
- Coût inférieur au test de Fermat
- O(log n3)
- Sépare efficacement les nombres composés des
nombres premiers - Mais ce test permet seulement de dire quil y a
une forte probabilité que le nombre testé soit
premier
16Explication Génération non stochastique de
nombres premiers
- nombres réellement premiers
- Pas choisit totalement au hasard
- Génère des nombres N
- si N est premier,
- preuve facile
17Génération non stochastique de nombres premiers
- algorithmes déterministe
- théorie poussée
- implémentation compliquée
- algorithme déterministe le plus rapide
- test de Cohen-Lenstra (1984)
- dit des sommes de Jacobi
- Ordre O(lg n)(lg lg lg n)
- un temps polynomial
18Primalité lhistoire contemporaine
- Lehmer (1862)
- Gordon (1985) utilise Lehmer
- Pocklington (1941)
- perfectionne le critère de Lehmer
- nécessite seulement une factorisation incomplète
de N-1 - Brillhart (1973)
- factorisation encore plus incomplète et
croisement entre les critères N-1 et N1
19Théorème de Lehmer
- Soit N un entier impair supérieur à 3
- On suppose quil existe un entier a tel que aN-1
1 (mod N) - On suppose en plus que pour tout diviseur p
premier de N-1, il existe un entier ap tel que
ap(N-1)/p? 1 (mod N) - Alors N est premier
20Méthode de Gordon (1985)
- On choisit N au hasard et on essaye de factoriser
N-1 - Si on arrive à factoriser, on lui applique le
théorème de Lehmer - Si on narrive pas à factoriser N-1, on choisit
un autre N et on recommence - Problème on a besoin de la factorisation de N-1,
qui na aucune chance daboutir si N a plusieurs
centaines de chiffres
21Théorème de Pocklingtonméthode de Maurer (1987)
- Soit N un entier impair supérieur à 3.
- Hypothèses N R . F 1, avec F pair.
- La factorisation de F est entièrement connue.
- PGCD(R,F)1
- Il existe a tel que aN-1 1 (mod N) et pour tout
facteur p de F, PGCD(aN-1/p-1,N)1 - Alors Tout facteur premier de N est de la forme
k.F1 avec k ? 1 - En particulier si N lt (F1)2, alors N premier
- En fait, si Nlt(2F1)(F1), N est premier
22Exemple Pocklington méthode de Maurer (1987)
- On choisit F de factorisation connue
F2?32573?769075010183422 - On choisit aléatoirement R impair, R?2F,
R7419669081 - On calcule NRF1, N 37173903026352175183
- On calcule aN-1 (mod N) pour un entier a
quelconque,2N-1 31953700866015605260 (mod N) - Le résultat est différent de 1 donc N nest pas
premier - On choisit un nouveau R, R7785640265
- On calcule NRF1, N39007485785358686831
- On a 7N-1 1 (mod N) donc N est peut-être
premier - On a 7(N-1)/2 39007485785358686830 (mod N)
- PGCD(39007485785358686829,N)1 donc N vérifie la
première condition - De même, PGCD(7(N-1)/32573-1,N)1 et
PGCD(7(N-1)/76907-1,N)1 - Donc N est bien un nombre premier
23Remarques Pocklingtonméthode de Maurer (1987)
- Dans lexemple précédent si on prend a2, on a
bien 2N-11 (mod N) et donc on suspecte N dêtre
premier - Mais 2(N-1)/21 (mod N) et donc
PGCD(2(N-1)/2-1,N)N - La valeur a2 ne permet pas détablir la
primalité de N - Plusieurs stratégies sont possibles
- soit on insiste en prenant une autre valeur pour
a (parce que lon suspecte N dêtre premier), - soit on abandonne et on génère un nouveau
candidat - La plupart des problèmes apparaissent quand on
teste le facteur 2 de F - une fois sur deux, a ne marche pas
- On peut sen prémunir en calculant le critère de
Jacobi de a pour N - sil vaut 1, a ne posera pas de problème
- Ce calcul est rapide par rapport aux
exponentiations - Autre remarque pour choisir les facteurs
premiers de F, on peut utiliser récursivement la
génération de nombres premiers - On peut donc choisir des valeurs F avec aussi de
grands nombres premiers
24Méthodes à la Lucas
- Marin Mersenne (1650)
- formule 2p - 1, p premier formule fausse
- Lucas (1878) Suite
- Soit la suite U(k) définie par
- U(0) 4
- U(k1) (U(k)2 - 2) modulo (2n-1)
- Alors 2n-1 est premier si U(n-1)0
- Robinson (1952) Los Angeles Université de
Californie - ordinateur SWAC à l'Institut d'Analyse Numérique
- les deux dernier chiffres premiers trouvés
- 220 996 011-1 et 213 466 917-1
25En pratique
- Le DSS du NIST
- recommande dutiliser lalgorithme de RABIN
MILLER un peu simplifié - Méthode pour générer un nombre aléatoire p de n
bits - Générer un nombre aléatoire p de n bits
- Mettez le bit de poids fort et le bit de poids
faible à 117 - Vérifier quil nest pas divisible par les petits
nombres premiers - Ex Algorithme de la roue
- Effectuer le Test de Rabin Miller
- Faire jusquà 5 tests (Gordon 85)
26Primalité lhistoire les travaux récents
- Autres travaux (?1976) Judd, Williams, Bach
- critères utilisant N21, N2N1, N2-N1,
- Lenstra, Cohen (1983)
- Premier test généraliste
- ne suppose aucune factorisation connue
- Schoof (1985)
- Test généraliste utilisant les courbes
elliptiques - Atkin, Morain (1988)
- Courbes elliptiques.
- Moins lourd que lalgorithme de Schoof
27Récapitulatif des solutions
- Algorithme stochastique
- nécessaire pour un algorithme en temps polynomial
- le plus rapide du monde à ce jour
- Algorithme non probabilistes
- Nécessitant des factorisations
- naboutissent que si on peut factoriser
- problème très difficile et impraticable au delà
de 100 chiffres - Très compliqués à implémenter
- Autres méthodes
- Suite de Perrin, de Fibonacci, de Judd et
Williams, - Tests à courbes elliptiques etc
- Liste de nombre premier
28Bibliographie
- Cryptographie Théorie et Pratique Douglas
Stinson - Chapitre 4 test de primalité probabiliste,
algorithme de Monte Carlo - Introduction à lalgorithmique Thomas Cormen,
Charles Leiserson, Ronald Rivest - Chapitre 33-8 Test de Primarité
- Cryptographie Appliquée Algorithmes, protocoles
et codes sources en C - Chapitre 11-3 Théorie des nombres
- Chapitre 11-5 Génération des nombres premiers
29Sites Internet
- Histoire des nombres premiers (Anglais)
http//www-history.mcs.st-andrews.ac.uk/history/H
istTopics/Prime_numbers.htmlhttp//www.utm.edu/re
search/primes/mersenne/index.html Mersenne - Nombres premiershttp//membres.lycos.fr/villeming
erard/http//www.haypocalc.com/maths/nbr_premier.
php (simple) - News de cryptographie fr.misc.cryptographie
- traduction des termes techniques
http//stat.sci.kagoshima-u.ac.jp/dic/fr/ - page des nombres premiers http//www.utm.edu/res
earch/primes
30Aller plus loin
31Carré parfait utile pour Brillhart
- Quand on génère des nombres premiers, on se
contente de conditions suffisantes - Si N2 (mod 3), N nest pas un carré parfait
- Si N2 ou 3 (mod 5) ou N3, 5 ou 6 (mod 7), idem.
- Si N vérifie une seule de ces congruences, alors
N nest pas un carré parfait - De manière générale,
- si Na (mod M) avec J(a,M)-1
- où J est le symbole de Jacobi (resp. Legendre) si
- M est composé (resp. premier),
- alors N nest pas un carré parfait
32Raffinement de Brillhart et al.
- Soit N vérifiant les conditions du théorème de
Pocklington sauf que Nlt2F3 seulement - On pose R 2Fs r avec 0 ? r lt 2F
- Alors si s0 ou r2-8s nest pas un carré parfait
alors N est premier - Déterminer si un nombre est ou non un carré
parfait est assez coûteux
33Théorème de Lehmer Exemple (Knuth) 1/4
- N037866809061660057264219253397
- On a 3N0-1 1 (mod N0), on suspecte donc N0
dêtre premier - On factorise alors N0-1 et on a N0-122 . 19 .
107 . 353 . 91813 . N1 avec N1143675413657196977
- On a 3N1-1 1 (mod N1), on suspecte donc N1
dêtre premier - N1-1 24 . 32 . 547 . 1103 . N2 avec N2165370
1519
34Théorème de Lehmer Exemple (Knuth) 2/4
- On a 3N2-1 1 (mod N2), on suspecte donc N2
dêtre premier - N2-1 2 . 7 . 19 . 23 . 137 . 1973
- La factorisation de N2-1 est sûre tous les
facteurs premiers sont connus avec certitude - On peut alors essayer dappliquer le théorème de
Lehmer pour essayer de montrer que N2 est premier
35Théorème de Lehmer Exemple (Knuth) 3/4
- On a 2(N2-1)/2 1 (mod N2), donc la valeur a22
ne marche pas. - On essaye successivement 2, 3, 5, 7
- On trouve 7(N2-1)/2 1653701518(mod N2), donc
a27 satisfait la condition de Lehmer - On trouve aussi a7 a19 a23 a137 a1973 2
- On a alors montré que N2 est premier
- La factorisation de N1-1 est alors sûre et on
peut alors essayer de démontrer que N1 est premier
36Théorème de Lehmer Exemple (Knuth) 4/4
- On continue et on montre que N1 puis N0 est
premier - On parle de preuve par descente
- N0 est premier si N1ltN0 est premier, N1 est
premier si N2ltN1 est premier et N2 est
suffisamment petit pour que lon montre
facilement quil est premier - Dautres certificats comme celui dAtkin-Morain
utilise le principe de la descente - Courbes elliptiques