Cryptographie à clé publique

Transcription

Cryptographie à clé publique
Chapitre 5 :
Cryptographie à clé publique
Les cryptosystèmes vus jusqu’à présent sont dit classiques ou à clef secrète ou encore symétrique en ce sens
que toute personne qui peut chi¤rer des messages (et donc qui connait la clef secrète) peut également en
déchi¤rer. Un tel cryptosystème se comporte comme une boite fermée par une serrure, les deux personnes qui
veulent l’utiliser pour s’envoyer des messages doivent chacun en posséder une clé mais ils peuvent tous deux
ouvrir et fermer cette boite.
Un cryptosystème à clef publique se comporte comme un co¤re fort dont seul une personne possède la
clef. Il laisse son co¤re ouvert à disposition de toute personne désirant lui envoyer un message, celle ci referme
alors la porte et seul le destinataire peut ensuite l’ouvrir. En pratique, le destinataire publie à l’intention de
ceux qui veulent lui envoyer des messages une méthode de chi¤rement que lui seul est capable de déchi¤rer.
On voit donc bien pourquoi ces systèmes sont dits asymétriques.
I
Dé…nitions et principes généraux
Dans ce paragraphe on va tenter d’expliciter une méthode générale de constrution de cryptosystèmes à clef
publique. On rappelle que In est l’ensemble des chaines de n bits.
Dé…nition I.1 Soit u et v deux applications de N dans R, on dit que u est négligeable par rapport à v et on
note u
v si lim
u(n)
n!+1 v(n)
= 0.
Dé…nition I.2 Une suite d’applications (fr ) avec fr : Ir ! Ir est dite à sens unique si
Il existe un polynôme P et un algorithme déterministe qui permet pour toute valeur a 2 Ir de calculer
fr (a) en moins de P (r) opérations.
Pour tout b 2 Im (fr ) et pour tout algorithme déterministe
qui calcule une valeur a 2 Ir tel que
fr (a) = b, C (r) : le nombre d’opérations faites par lors de son éxécution véri…e Q
C pour tout
polynôme Q.
En pratique, si on dispose d’une suite d’applications à sens unique, cela signi…e que l’on peut choisir un
rang n assez grand pour que le calcul de tout antécédent de fn soit infaisable en pratique (i.e. nécéssite un
nombre d’opérations supérieur à 280 (en 2004)). On veillera à choisir la plus petite valeur de n possible pour
ne pas augmenter inutilement le calcul des valeurs de f et la taille de la description de f . Par raccourci on
appellera une telle fonction une fonction à sens unique.
Remarque I.1 On ne sait pas si il existe une suite d’applications à sens unique, on a quelques fonctions
candidates, dont on va voir des exemples ci dessous, mais on a jamais réussi à démontrer qu’elles le sont.
Prouver qu’il existe une suite d’application à sens unique prouverait une grande conjecture d’informatique
théorique : P 6= N P; conjecture qui a été énoncée en 1971:
Dé…nition I.3 Soit (fn ) une suite d’application à sens unique, on dit que cette suite est munie d’une trappe
ou qu’elle est trapdoor si pour tout n la connaisance d’un "secret" (une donnée mathématique supplémentaire)
permet d’inverser la fonction n avec un nombre de calculs polynomial.
Remarque I.2 Une conséquence des dé…nitions c’est que la donnée de f ne doit pas permettre de calculer le
"secret" avec un nombre de calculs polynomial en n; sinon f ne serait plus à sens unique !
Supposons qu’Alice dispose d’une fonction f : Ir ! Ir à sens unique munie d’une trappe, elle la rend
publique (sur sa page web par exemple). Alors si Bob veut lui envoyer un message m 2 Ir de façon sûre, il
calcule f (m) et l’envoie à Alice. Supposons de plus que f (m) à un seul antécédent (donc m) alors Alice est
la seule qui peut le calculer à partir de f (m) et ainsi déchi¤rer le message de Bob.
Si on a un moyen de construire des bijections à sens unique munie d’une trappe ( permutations one-way,
trapdoor) alors il est aisé de faire de la cryptographie à clef publique. En fait, on a trouvé une méthode qui
semble nous donner de telles fonctions en 1978 et on va la décrire sans plus attendre. Notons que depuis 1978
on en a pas trouvé d’autres !
1
II
RSA
C’est l’algorithme cryptologique à clé publique le plus connu et le plus utilisé (plus de 2 millions de clés en
circulation en 2002). Il tire son nom des initiales de ses inventeurs : Rivest, Shamir et Adleman. Il date de
1977.
Ron Rivest
(1947-...)
Adi Shamir
(1952-...)
Leonard Adleman
(1945-...)
L’équipe RSA en 1977
Il repose sur la suite d’applications :
fn : Z=nZ ! Z=nZ
: x ! xc
où c 2 N; c
(n) et n = pq où p et q sont des nombres premiers.
Notons tout d’abord que le nombre d’éléments de Z=nZ est n et donc qu’on peut représenter tous ces
éléments par des chaines de r bits où r = E (log2 (n)) + 1.
Le calcul de fn est une exponentiation modulaire, l’algorithme classique nécéssite un nombre de calcul qui
vaut Cr3 où C est une constante. Par ailleurs, on va voir ci-dessous qu’inverser f (si c est bien choisi) est aussi
di¢ cile que de factoriser n. Donc la suite (fn ) est à sens unique sous l’hypothèse que la factorisation de n
est un problême di¢ cile, c’est à dire qu’il n’existe pas d’algorithme déterministe pour y arriver de complexité
P (r) avec P : polynôme (ce qui n’est bien sûr pas prouvé).
En pratique Alice choisit deux grands nombres premiers p et q (plus de 100 chi¤res), on verra à la …n de
ce chapitre comment on peut y parvenir en pratique. Alice calcule n = pq, ensuite elle choisit un nombre c
(d’au moins 50 chi¤res) , appelé exposant de chi¤rement. Alice publie n et c. Bien sûr le "secret" d’Alice
consiste en la factorisation de n et donc elle garde p et q secrets.
a)
Cryptage
Pour crypter le message m 2 Z=nZ, Bob calcule m0 = mc et l’envoie à Alice.
b)
Décryptage
Il faut montrer que la suite (fn ) est à trappe, plus précisément on va donner un algorithme qui permet à Alice
de calculer rapidement m à partir de m0 grâce à la connaissance de p et q:
Alice calcule ' (n) = (p 1) (q 1). Elle calcule ensuite l’inverse de c dans Z='(n) Z par l’algorithme
d’Euclide (le nombre de calculs e¤ectués par cet algorithme est Cr2 où C : constante), on note d ce nombre
appelé l’exposant de déchi¤rement.
Il faut pour cela que c soit inversible dans Z='(n) Z et donc premier avec ' (n), si ça n’était pas le cas Alice
aurait choisi une autre valeur pour c. (Notons qu’en particulier il faut choisir c impair).
Pour décrypter m0 Alice calcule m0d .
2
En e¤et par dé…nition de d on a
cd
1 [' (n)]
donc il existe un entier k tel que
cd = 1 + k' (n)
donc
m0d = (mc )d = mcd = m1+k'(n)
On utilise alors le résultat suivant :
Proposition II.1 Si n = pq où p et q sont deux nombres premiers, alors pour tout entier k et tout nombre
m de Z=nZ on a
m1+k'(n) = m
Démonstration. On utilise le théorème des restes chinois et l’isomorphisme Z=nZ ! Z=pZ
donc m = (x; y) avec x 2 Z=pZ et y 2 Z=qZ.
On va montrer que dans Z=pZ on a
x1+k(p 1) = x
Z=qZ: On a
pour tout entier k: En e¤et si x = 0 c’est évident et sinon d’après le petit théorème de Fermat on a xp
et donc x1+k(p 1) = x. Comme ' (n) est multiple de p 1 on a dans Z=pZ
1
=1
x1+k'(n) = x
Le même raisonnement avec q montre que
y 1+k'(n) = y
dans Z=qZ. Donc m1+k'(n) = x1+k'(n) ; y 1+k'(n) = (x; y) = m.
Exemple II.1 Si Alice a choisi p = 101 et q = 113 donc n = 11413. Alors ' (n) = 112 100 = 11200.
Supposons qu’Alice ait choisi c = 3533 (on véri…e facilement que pgcd(3533; 11200) = 1). On calcule d par
l’algorithme d’Euclide, on trouve d = 6597.
Bob veut transmettre le message 9726 à Alice, il calcule 97263533 mod 11413 = 5761 et envoie ce résultat.
Alice reçoit 5761 et calcule 57616597 mod 11413 = 9726
Il reste donc à voir qu’il n’est pas possible d’inverser RSA sans factoriser n:
Proposition II.2 Si quelqu’un réussit à calculer d à partir de n et c alors il peut factoriser n:
Démonstration. Décomposons cd 1 sous la forme 2k r avec r impair pour tout m 2 (Z=nZ) on a mcd
on a alors trois possibilités :
1
=1
1. mr = 1
l
2. il existe l, 0
l < k tel que m2 r =
3. il existe l, 0
l < k tel que m2 r 6=
l
1
1 et m2
l+1 r
= 1.
l
En fait, le troisième cas se produit pour la moitié des messages m, dans ce cas m2 r est une racine carrée
l
de 1 autre que 1. Notons x = m2 r , on a donc x2 = 1 dans Z=nZ et donc (x 1) (x + 1) = 0 et donc
pgcd(x 1; n) est soit p soit q !
En fait on peut aussi montrer que si quelqu’un peut déterminer pour tout message m son premier bit
(position de m par rapport à n2 ) ou son dernier bit (sa parité) à partir de mc alors il peut factoriser n.
Par conséquent, une cryptanalyse totale de RSA revient à factoriser n. Mais il n’est pas prouvé que cette
factorisation est nécéssaire pour une cryptanalyse partielle (déchi¤rer un message). Pour le cryptosystème
que l’on va voir maintenant il est montré que le décryptage d’un message est aussi di¢ cile que la factorisation.
3
III
Chi¤rement de Rabin
Cet algorithme fut publié en 1979 par Michael Rabin, décrivons le maintenant
Il repose sur la suite d’applications
fn : Z=nZ ! Z=nZ
: x ! x (x + B)
Michael O. Rabin
(1931-...)
où n = pq est un entier de Blum (i.e. p et q sont congrus à 3 modulo 4) et B est un entier, 0
Les données n et B sont publiques (p et q sont secrets).
a)
B
n
1.
Cryptage
Pour crypter le message m, Bob calcule m0 = m (m + B) dans Z=nZ et l’envoie à Alice.
b)
Décryptage
Alice doit résoudre dans Z=nZ l’équation x2 + Bx = m0 , on procède comme pour l’équation du second degré
0
2
classique, on a x + 2 1 B
4 1 B 2 = m (comme n est impair 2 et 4 sont inversibles modulo n et on a
2
noté leur inverse 2 1 et 4 1 ) donc x + 2 1 B = m0 + 4 1 B 2 . Comme l’équation a forcément une solution
(le message d’origine), m0 + 41 B 2 est forcément un carré dans Z=nZ on note x1 et x2 ses quatres racines
carrées et donc on a
8
< 2 1 B x1
ou
x=
:
1
2 B x2
Comme on l’a vu dans le chapitre précédent si l’on connaît p et q il est facile de déterminer les racines carrées
dans Z=nZ.
Exemple III.1 Supposons que n = 77 et que B = 9. Alice reçoit le message m0 = 22 de Bob. Dans Z=77Z
l’inverse de 2 est 39 et l’inverse de 4 est 58. Donc
m0 + 4
1
B 2 = 22 + 58
Alice va donc résoudre
81 = 23 [77]
x2 = 2 [7]
x2 = 1 [11]
Donc
x = 4 [7]
x = 1 [11]
Alors on a x = 4 11 2 1 3 7 = 88 21 [77] donc les racines carrés de m0 + 4 1 B 2 dans Z=77Z
sont 10 et 32, comme 2 1 B = 39 9 = 34 [77] les di¤ érents messages clairs possibles sont
34
32 = 2
34 + 32 = 66
34
10 = 24
34 + 10 = 44
On peut véri…er que tous ces messages donnent bien par cryptage le message 22.
4
On va voir par contre que si l’on ne sait pas factoriser n alors on ne peut calculer les quatres racines carrés
pour aucun carré de (Z=nZ) . En e¤et, soit a un carré de (Z=nZ) on peut donc écrire a = x2 supposons que
l’on sache trouver les racines carrées de a, on sait donc calculer une racine carrée y de a di¤érente de x et de
x. Et donc on aura x2 = y 2 [n] et donc
(x
y) (x + y) = 0 [n]
et comme x y et x + y ne sont pas multiples de n on a pgcd(x y; n) nous donnera p ou q et donc on pourra
factoriser n.
Donc avec l’algorithme de Rabin la sécurité de chi¤rement de tous les messages est assurée, si la factorisation de n est di¢ cile. Mais il y a un défaut, c’est que cet algorithme n’est pas injectif, pour un message chi¤ré
reçu il y a quatres messages clairs dont il peut provenir ! Dans la pratique, seul un des 4 messages aura un
sens donc il n’y aura pas d’ambiguité. Néanmoins cela peut poser problème pour automatiser le déchi¤rement,
pour contourner cette di¢ culté on va introduire de la redondance dans le message clair. Il y a de multiples
façons de le faire, par exemple on peut redoubler les 64 derniers bits, avec une très grande probabilité une
seule des quatres solutions respectera cette redondance.
IV
Le cryptosystème ElGamal
La sécurité de RSA comme celle de l’algorithme de Rabin
sont liées à la factorisation. Celle du cryptosystème que l’on
va voir maintenant repose sur un autre problème réputé dif-…cile : le problème du logarithme discret. Il a été présenté
en 1985 par Taher Elgamal
Taher Elgamal
Problème du logarithme discret : Soit p un (grand) nombre premier et soit g un générateur de
(Z=pZ) . Le problème consiste à trouver, étant donné x 2 (Z=pZ) l’entier a tel que
g a = x avec 0
a
p
2
autrement dit de trouver l’index de x par rapport à g.
Dire que ce problème est di¢ cile est équivalent à dire que la famille d’applications :
fp : (Z=pZ) ! (Z=pZ)
: k ! gk
où p est un nombre premier et où g est un générateur de (Z=pZ) est à sens unique.
Contrairement aux deux familles d’applications à sens unique vu dans les paragraphes précédents, celle ci
n’est pas à trappe. On ne va donc pas pouvoir l’utiliser comme précédemment pour chi¤rer des messages.
Décrivons maintenant l’algorithme, tout d’abord Alice choisit un grand nombre premier p; un élément
primitif modulo p : g et un entier b, elle calcule A = g a [p]. Alice publie p; g et A mais garde a secret.
a)
Cryptage
Pour chi¤rer le message m 2 (Z=pZ) , Bob choisit un entier k et calcule K = g k [p], il calcule ensuite c = mAk
et envoie le couple m0 = (K; c).
Notons que ce calcul dépend du choix de k et donc que pour un message clair donné, il y a plusieurs
messages chi¤rés correspondants.
5
b)
Décryptage
Alice calcule cK
a
en e¤et
cK
a
= mAk g
ak
= mg ak g
ak
=m
Retrouver la clef secrète, c’est à dire faire la cryptanalyse totale de cet algorithme revient à résoudre le
problème du logarithme discret. Mais que peut on dire pour une cryptanalyse partielle ?
Supposons que Charlie réussise à retouver une valeur de m à partir des valeurs K et c corespondantes. Il
peut en déduire Ak et donc g ak et donc il a résolu une instance du problème suivant :
Problème de Di¢ e-Hellman : Soit p un (grand) nombre premier et soit g un générateur de (Z=pZ) :
Le problème consiste à trouver, étant donné A; B 2 Z non divisibles par p; l’entier C tel que
C = g ab où a; b 2 Z (inconnus) sont tels que A = g a [p] et B = g b [p]
Il est clair que si on sait résoudre le problème du logarithme discret alors on sait résoudre le problème
de Di¢ e-Hellman mais en fait dans beaucoup de cas (on conjecture que c’est toujours vrai) la réciproque est
vraie, c’est à dire que la donnée d’un algorithme qui résout le problème de Di¢ e-Hellman permet de résoudre
le problème du logarithme discret.
Pour mettre en oeuvre cet algorithme il faut choisir un nombre premier p assez grand : 768 bits ou 1024
bits de plus il faut que p 1 ait un grand facteur premier pour contrer la méthode de Pohlig-Hellman. Cette
méthode permet d’obtenir des informations sur la valeur x telle que g x = y à partir de y. Plus précisément, si
q est un petit facteur premier de p 1 alors on peut calculer la classe de x modulo q: On verra cette méthode
en TD.
Remarque IV.1 Si A = g a [p] on ne sait pas retrouver a à partir de A (pour p assez grand) mais peut
on avoir des informations partielles sur a ? La réponse est oui, on peut facilement calculer la parité de a
par exemple, en e¤ et a est pair si et seulement si A est un carré et donc un simple calcul de symbole de
Legendre permet de répondre à cette question. On verra même en TD que si 2k divise p 1 alors on peut
facilement calculer les k bits de poids faible de a. Toutefois on peut montrer que le calcul des autres bits est
essentiellement aussi di¢ cile que le logarithme complet.
V
El Gamal généralisé.
En fait, si l’on dispose d’un groupe cyclique G pour lequel le logarithme discret est di¢ cile et d’un générateur
g de G on peut utiliser l’algorithme suivant (similaire au précédent) :
Alice choisit un entier a et calcule A = g a , elle publie A et la description du groupe G mais garde a secret.
Pour chi¤rer le message m 2 G, Bob choisit un entier k et calcule K = g k , il calcule ensuite c = mAk et
envoie le couple m0 = (K; c).
Pour déchi¤rer, Alice calcule cK a .
Bien que tout groupe cyclique de cardinal n soit isomorphe à Z=nZ la di¢ culté du problème du logarithme
discret dépend fortement du groupe. Il est des groupes où ce problème est très facile à résoudre, par exemple
le groupe Z=nZ lui-même, en e¤et un générateur
de ce groupe est un élément inversible et résoudre le
logarithme discret consiste pour tout y 2 Z=nZ à résoudre l’équation x = y ce qui est très facile.
Le fait que pour certains groupe G le problème du logarithme discret soit di¢ cile implique que pour ces
groupes on ne parvient pas à expliciter l’isomorphisme entre G et Z=nZ.
En pratique, un groupe sera jugé meilleur qu’un autre si il présente un meilleur rapport entre la sécurité
qu’il o¤re (le nombre d’opérations nécéssaires pour résoudre le problème du logarithme dicret associé) et la
taille de sa description (taille de la clé publique).
Selon ce critère il y a des meilleurs groupes que (Z=pZ) et c’est un domaine de recherche actuel très
actif que de déterminer des groupes toujours meilleurs. Notons que si l’on trouve un groupe avec de bonnes
propriétés mais non cyclique, il su¢ t d’en prendre un sous-groupe engendré par un élément pour obtenir un
groupe cyclique.
Les recherches portent principalement sur les groupes multiplicatifs des corps …nis et sur les groupes des
courbes elliptiques.
6
VI
Protocole d’échange de Clé de Di¢ e-Hellman
L’inconvénient majeur des systèmes à clés publiques est qu’ils sont beaucoup plus lents que les systèmes à
clé privée. Par exemple, RSA utilisé avec un nombre premier de 512 bits (on dit RSA 512) chi¤re 600 Ko
par seconde, c’est 1500 fois plus lent que l’implémentation la plus rapide de DES qui permet de chi¤rer 1
Go par seconde.Donc en pratique on utilise souvent les systèmes à clé publique pour se transmettre une clé
privée qu’on utilise ensuite pour chi¤rer les messages. Historiquement, la naissance de la cryptologie à clé
publique remonte à l’invention d’une méthode permettant à deux personnes distantes de se mettre d’accord
sur un nombre appelé à devenir une clé secrète) sans que quiconque écoutant l’intégralité de la discussion ne
puisse calculer ce nombre. Di¢ e et Hellmann ont proposé une méthode pour y parvenir, et ceci en 1976.
Whit…eld Di¢ e
(1944-...)
a)
Martin Hellman
(1945-...)
Description
Tout d’abord Alice et Bob se mettent d’accord sur un grand nombre premier (environ 200 chi¤res) p, et sur
un nombre g qui sert de générateur en pratique on peut prendre g = 3. Charlie connaît lui aussi p et g.
Le protocole repose sur l’hypothèse que le problème de Di¢ e-Hellman est di¢ cile.
Alice choisit secrètement un nombre x (plus d’une centaine de chi¤res) et calcule g x dans Z=pZ elle envoie
le résultat à Bob.
Calculer x est quasiment impossible pour Charlie (pour Bob également) car cela revient à calculer un
logarithme discret.
Bob choisit lui aussi secrètement un nombre y, calcule g y dans Z=pZ et l’envoie à Alice.
Finalement Alice éléve à la puissance x le nombre que Bob lui a envoyé elle obtient : (g y )x modulo p
Bob, de même, élève à la puissance y le résultat que lui a envoyé Alice et obtient (g x )y modulo p, comme
g yx = (g x )y = g xy
ce nombre : g xy peut leur servir de clé secrète. Pour Charlie, le calculer à partir de g x et g y consiste exactement
à résoudre le problème de Di¢ e-Hellman pour ces valeurs.
Exemple VI.1 Supposons qu’Alice et Bob choisissent le nombre premier p = 1259 et g = 3.
Alice choisit x = 144 et calcule
3144 = 572 [1259]
Alice envoie 572 à Bob.
Bob choisit y = 731 et calcule
3731 = 900 [1259]
Bob envoie 900 à Alice.
Alice calcule
900144 = 572731 = 26 [1259]
Donc Alice et Bob peuvent utiliser la clé K = 26.
7
b)
Attaque
En fait Charlie pourra déchi¤rer tous les messages qu’Alice et Bob vont s’échanger en utilisant la clé qu’ils
auront calculée par le procédé précédent si il peut s’intercaler dans la conversation de Bob et Alice, c’est à
dire si il peut recevoir leurs messages et les remplacer par des messages de son choix avant de les transmettre.
Dans ce cas, les valeurs sont échangées comme dans la …gure ci dessous :
gx
Alice
gx
0
!
Charlie
gy
gy
0
!
Bob
0
0
Donc Charlie s’est mis d’accord sur la clé Ka = g xx avec Alice, et sur la clé Kb = g yy avec Bob. Par la
suite, lorsque Alice envoie un message crypté (avec Ka ), Charlie le décrypte et le recrypte en utilisant la clé
Kb et Bob reçoit le message qu’il peut décrypter.
Par conséquent, on voit qu’avant de procéder à cet échange de clé il est nécéssaire d’avoir authenti…er son
interlocuteur. On verra des procédés d’authenti…cation dans le chapitre suivant.
VII
Tests de primalité
Le problème qui se pose en pratique est de réussir à générer des grands nombres premiers. La seule méthode
que l’on connaisse consiste à tirer un nombre au hasard et à lui appliquer di¤érents tests pour déterminer si
il est premier ou non. Tout d’abord, on peut légitimement se demander qu’elle est la probabilité de trouver
un nombre premier au hasard.
Le théorème des nombres premiers nous dit que le nombre (x) de nombres premiers inférieurs ou égaux
x
à x est équivalent à ln(x)
quand x est grand.
Prenons par exemple les nombres de 100 chi¤res, il y en a 10100 1099 = 9 1099 , les nombres premiers
formés de 100 chi¤res sont au nombre de
10100
1099 '
10100
ln (10100 )
1099
'4
ln (1099 )
1097
97
donc la probabilité qu’un nombre de 100 chi¤res tiré au hasard soit premier est approximativement 49 10
=
1099
1
225 . Maintenant, si l’on tire un nombre au hasard que parmi les nombres impair, non multiple de 3, non
multiple de 5 et non multiple de 11 qui représentent un peu moins du quart de tous les nombres la probabilité
d’obtenir un nombre premier est d’à peu près une chance sur 50. Donc, pour peu qu’on dispose d’un test
rapide permettant de dire si un nombre est premier (ou au moins qu’il a une très grande probabilité de l’être),
cette méthode consistant à tirer des nombres au hasard va fonctionner.
a)
Test de pseudo-primalité.
Dé…nition VII.1 Soit n 2 N , et soit b 2 N on dit que n est probablement-premier de base b si l’on a
bn
1
= 1 [n]
Le petit théorème de Fermat nous dit que tout nombre premier est probablement-premier de base b pour
tout b non multiple de p.
Exemple VII.1 2340 = 1 [341] or 341 = 31 11 donc 341 est pseudo-premier de base 2.
390 = 1 [91] or 91 = 13 7 donc 91 est pseudo premier de base 3.
La question que l’on se pose maintenant est de savoir si il y a beaucoup de nombres pseudo-premiers
par rapport aux nombres premiers, prenons un exemple concret, il y a seulement 264 239 nombres pseudo
premiers de base 2 contre
1013 = 37 607 912 018 nombres premiers. Donc le test de pseudo-primalité est
relativement …able, surtout qu’on peut l’e¤ectuer avec plusieurs bases.
8
Malheureusement, il y a des nombres composés qui sont pseudo-premiers pour toute base ce sont les
nombres de Carmichaël ! Il y en a relativement peu en proportion, mais il y en a une in…nité, donc le test de
pseudo-primalité ne su¢ t pas. En pratique, néanmoins si l’on a pas peur des probabilités faibles on pourra
s’en contenter.
Décrivons maintenant un test un peu plus élaboré, le test de Rabin Miller.
b)
Test de Rabin-Miller
Dé…nition VII.2 Soit b 2 N et n 2 N impair, on pose n 1 = 2k q avec q impair. L’entier n est dit
probablement-premier fort de base b si il véri…e l’une des conditions suivantes :
bq = 1 [n]
il existe un entier i véri…ant 0
i
i < k tel que b2 q =
1
On a vu dans le premier chapitre que si p est un nombre premier alors il est propablement-premier fort de
base b pour tout b non multiple de p.
Dé…nition VII.3 Si n est probablement-premier fort de base b et est composé alors on dit que n est pseudo-premier fort
de base b.
En pratique, pour mettre en œuvre ce test, on choisit une base b < n, on teste si b est premier avec n
(avec l’algorithme d’Euclide du calcul du pgcd), si ce n’est pas le cas, on est sûr que n n’est pas premier :-)
sinon on détermine k et q et on calcule bq dans Z=nZ. Si bq = 1 alors on conclut que n est probablement
premier fort de base b, sinon on calcule (bq )2 et ainsi de suite on calcule les carrés successifs de cette valeur,
si l’on trouve une racine carrée de 1 autre que 1 alors on pourra conclure que n est composé.
Exemple VII.2 pour n = 341 on a n 1 = 4 85, 285 = 32 [341] on ne peut pas conclure, 322 = 1 [341]
donc 341 n’est pas pseudo premier fort de base 2 et donc est composé.
Il y beaucoup moins de nombres pseudo-premiers forts que de nombres pseudo-premiers. Par exemple, il
y a seulement 58 897 nombres pseudo-premiers forts de base 2 inférieurs à 1013 : Mais le réel avantage de cette
notion c’est qu’il n’existe plus de nombres pseudo-premiers forts pour toute base, plus précisément on a
Proposition VII.1 Notons B (n) = fb 2 Z=nZ; tel que n est probablement premier-fort de base bg alors si
n est est composé on a
' (n)
jB (n)j
4
On peut en déduire que si n passe le test de Rabin-Miller avec k bases alors la probabilité qu’il soit composé
est inférieure à 41k .
9

Documents pareils