Préparation à l’agrégation
Cryptographie et primalité
ENS Rennes - Année 2014–2015
Romain Basson
Cryptographie et primalité
Table des matières
1 Cryptographie asymétrique [Zém00]1
1.1 Le concept de fonctions à sens unique ........................... 1
1.2 L’exponentiation modulaire ................................. 2
1.3 Le système RSA ....................................... 2
2 Tests de primalité [Zém00,Hin08]3
2.1 Le test de Fermat ....................................... 4
2.2 Le test de Solovay-Strassen ................................. 4
2.3 Le test de Miller-Rabin .................................... 5
2.4 Le théorème de Lucas-Lehmer ................................ 7
2.5 Remarques finales ....................................... 7
3 Exercices 8
Références
[Dem09] Michel Demazure. Cours d’algèbre. Cassini, 2009.
[Hin08] Marc Hindry. Arithmétique. Calvage & Mounet, 2008.
[Zém00] Gilles Zémor. Cours de cryptographie. Cassini, 2000.
1 Cryptographie asymétrique [Zém00]
1.1 Le concept de fonctions à sens unique
Le concept de fonctions à sens unique est informellement le suivant :
Définition 1.1 Une fonction f:EF, x 7−f(x)est dite à sens unique lorsque
1. il est possible de calculer simplement f(x), pour tout xE(i.e. il existe un algorithme qui,
pour tout xE, calcule f(x)en un temps polynomial en la taille de x) ;
2. pour la plupart des yf(E), il est impossible de trouver xEtel que f(x) = y, à moins
d’effectuer un nombre prohibitif de calculs ou d’avoir une chance déraisonnable.
Nous ne formaliserons pas plus ce concept, toutefois notons que l’ensemble Edoit être suffisamment
vaste pour rendre dérisoire une recherche exhaustive d’un antécédent.
Il existe plusieurs exemples concrets de telles fonctions, dont les deux plus célèbres, très largement
utilisées en cryptographie, sont présentées dans les deux sections suivantes.
1
Préparation à l’agrégation
Cryptographie et primalité
ENS Rennes - Année 2014–2015
Romain Basson
1.2 L’exponentiation modulaire
Il s’agit de la fonction f:F
pF
p, x 7−αx, pour αun générateur de F
p, qui se calcule
aisément via l’algorithme d’exponentiation rapide. En revanche, les meilleurs algorithmes génériques
connus pour inverser cette fonction (i.e. résoudre le problème du logarithme discret) ont une complexité
sous-exponentielle O(e(log p)1/2(log log p)1/2) = e
O(p).
Pour définir concrètement une telle fonction, il est donc nécessaire de savoir générer un grand
nombre premier pet un générateur αde F
p. Signalons qu’on ne connaît pas d’algorithme polynomial
permettant de déterminer un tel α, mais que, modulo la connaissance de la factorisation de p1, on
peut tester si αest un générateur en l’élevant à toutes les puissances d, pour ddiviseurs de p1, ce
qui permet d’aboutir, dans la mesure où le rapport φ(p1)
p1n’est pas trop petit devant 1 (cf. section 2.4
pour la génération de tels nombres premiers).
Le protocole de Diffie-Hellman (New directions in cryptography, 1976) : ce protocole résout
le problème du partage d’un secret via un canal non sécurisé de la façon suivante :
1. Alice et Bob s’accordent publiquement (i.e. via le canal) sur un grand nombre premier pet sur
un générateur αde F
p;
2. Alice (resp. Bob) choisit secrètement un nombre aléatoire a(resp. b) et transmet à Bob (resp.
Alice) αa(resp. αb) ;
3. Alice et Bob dispose du secret commun αab = (αa)b= (αb)a.
La sécurité de ce protocole repose sur le fait qu’avec une puissance de calcul et un temps limités,
on ne sait ni résoudre le logarithme discret ni retrouver αab à partir de α,p,αaet αb.
1.3 Le système RSA
Il s’agit du premier système à clé publique solide, inventé en 1977 par Rivest, Shamir et Adleman.
Il est fondé sur la difficulté de factoriser de grands entiers et la fonction à sens unique utilisée est une
fonction puissance.
Précisément, la clé secrète est constituée de deux grands nombres premiers pet qtandis que la clé
publique est n=pq et un entier einversible modulo ϕ(n). Le chiffrement d’un message représenté par
un entier Mmodulo nse fait alors par la transformation :
f:M7−Memod n.
Proposition 1.2 La fonction réciproque de fest M7−Mdmod n, où dest l’inverse de emodulo
ϕ(n).
Démonstration.
Si (M, n)=1, alors Mϕ(n)1 mod n, d’après le théorème de Lagrange, ainsi (Me)dMed
Mmod n.
Si M0 mod pet (M, q)=1, alors, puisque ϕ(n) = ϕ(p)ϕ(q),Mϕ(n)0 mod pet Mϕ(q)
Mϕ(n)1 mod q. Ainsi Mde 0Mmod pet Mde Mmod q, d’où le résultat, d’après le
théorème Chinois.
Les autres cas sont analogues.
QED
2
Préparation à l’agrégation
Cryptographie et primalité
ENS Rennes - Année 2014–2015
Romain Basson
Remarque 1.3
1. Les paramètres de sécurité actuels préconisés pour RSA sont de prendre un entier nde taille
1024 bits, i.e. de l’ordre de 10300, ce qui légitime la nécessité du développement d’algorithme de
calcul rapide (DFT, FFT, . . .).
2. Connaissant ϕ(n)il est aisé de déterminer dà partir de e(algorithme d’Euclide).
3. La connaissance de ϕ(n)est équivalente à celle de pet q(i.e. la factorisation de n), dans la
mesure où ϕ(n)=(p1)(q1) = n(p+q)+1.
4. Savoir déterminer un inverse de dmodulo ϕ(n)revient à savoir factoriser n(cf. ex. 4.1 de [Zém00]).
5. En revanche, on ne sait pas prouver formellement qu’inverser la fonction M7−Memod n
revient à savoir factoriser n.
6. La complexité du meilleur algorithme de factorisation (Number Field Sieve) est :
exp 3
r64
9+o(1)!(log n)1/3(log log n)2/3!.
2 Tests de primalité [Zém00,Hin08]
La mise en œuvre concrète des deux exemples de fonctions à sens unique présentées précédemment
repose notamment sur la capacité à générer de grands nombres premiers (typiquement de plusieurs
centaines de chiffres binaires).
Le procédé le plus répandu pour réaliser ce dernier point consiste à choisir au hasard de grands
entiers et à tester leur primalité, jusqu’à obtenir satisfaction. L’efficience de cette méthode est justifiée
par le théorème des nombres premiers, qui énonce
Théorème 2.1 - Théorème des nombres premiers, J. Hadamard et C.-J. de La Vallée Poussin, 1896.
π(x)
x+
x
ln x
π(x)désigne le nombre de nombres premiers inférieurs à x.
En outre, cet équivalent est approché rapidement, ainsi, pour des nombres de 1024 bits, la proba-
bilité de tirer un nombre premier est de l’ordre d’une chance sur 700.
Dans ce qui suit, nous présentons divers tests de primalité. On s’intéresse plus particulièrement
aux tests de primalité probabilistes. Formellement, il s’agit de la donnée d’un critère de non-primalité
P(n, a), pour un entier naturel nimpair, qui utilise un témoin 0< a < n, et qui satisfait aux conditions
suivantes, pour un α[0,1[ :
1. si nest premier, alors P(n, a)est vrai pour tout a[[1, n 1]] ;
2. si nest composé, alors, sur les n1entiers acompris entre 1 et n1, il y en a au plus α(n1)
pour lesquels P(n, a)est vrai ;
3. le test P(n, a)est rapide, i.e. polynomial en log n.
Ainsi un entier ncomposé survit au test P(n, .)kfois avec une probabilité inférieure à αk.
3
Préparation à l’agrégation
Cryptographie et primalité
ENS Rennes - Année 2014–2015
Romain Basson
2.1 Le test de Fermat
Test de Fermat : choisir au hasard a6≡ 0 mod net calculer an1mod n. L’entier nsatisfait au
test si an11 mod n.
Ce test est naturellement inspiré du petit théorème de Fermat qui énonce que : si nest un nombre
premier, alors, pour tout entier apremier à n,an11 mod n. Ainsi, pour un nombre ndonné,
dont on souhaite tester la primalité, s’il existe un entier a6≡ 0 mod ntel que an16≡ 1 mod n, alors
nest composé. La réciproque est toutefois fausse, puisque, pour un adonné, la relation an11
mod npeut subsister alors que nest composé, un tel nétant alors dit pseudo-premier en base
a. Cependant, si ces contre-exemples sont rares, on peut envisager d’utiliser ce critère comme test
probabiliste. Plutôt que d’entrer dans le détail de ces questions, soulignons qu’il existe des nombres
composés pseudo-premier en toute base : les nombres de Carmichael. Carmichael exhiba un tel nombre
en 1910, à savoir 561 = 3 ×11 ×17 ; plus généralement ces nombres sont caractérisés par le critère
suivant (cf. exercice 3.3) :
Proposition 2.2 - Critère de Korselt, 1899. ndivise ana, pour tout entier a, si et seulement si n
est sans facteur carré et p1divise n1, pour tout diviseur premier pde n.
Pour conclure sur ce point, signalons le résultat suivant, qui énonce en particulier qu’il existe une
infinité de nombres de Carmichael :
Théorème 2.3 - Alford, Granville, Pomerance, 1994. Pour tout xsuffisamment grand, il existe au
moins x2/7nombres de Carmichael inférieurs à x.
Ainsi, le principal défaut du test de Fermat réside en l’absence, pour tout ncomposé, d’une pro-
portion, indépendante de n, du choix de l’aléa apour lequel la réponse au test soit négative. Il ne
constitue donc pas un test probabiliste de primalité. Ce qui rend notamment ce test inutilisable pour
tester la primalité d’entier dont on ne connaît pas l’origine.
2.2 Le test de Solovay-Strassen
Sans perte de généralité, il est loisible de supposer que l’entier n, dont on souhaite tester la primalité,
est impair, ce que nous supposons toujours par la suite. Le test suivant repose sur le fait que la formule
d’Euler pour les résidus quadratiques ne s’étend pas au symbole de Jacobi.
Test de Solovay-Strassen : choisir a[[1, n 1]] au hasard, premier à n, et calculer a(n1)/2
mod net a
n. L’entier nsatisfait au test si
a(n1)/2a
nmod n
Si nest premier, alors il satisfait au test pour tout a6≡ 0 mod n, d’après le théorème 3.8 du cours
sur les corps finis. En outre, contrairement au test de Fermat, on peut énoncer une réciproque :
Proposition 2.4 Si nest composé, alors, pour achoisi aléatoirement dans (Z/nZ)?, la probabilité que
nsatisfasse le test de Solovay-Strassen est inférieure à 1/2.
4
Préparation à l’agrégation
Cryptographie et primalité
ENS Rennes - Année 2014–2015
Romain Basson
Lemme 2.5 Soit H={a(Z/nZ)?/ a(n1)/2a
nmod n}, alors H= (Z/nZ)?si et seulement
si nest premier.
Démonstration. Le sens réciproque est déjà énoncé dans le théorème 3.8 du cours sur les corps finis.
Pour le sens direct, commençons par établir que nest sans facteur carré. En effet, si p2,ppremier
impair, divise n, alors il existe ad’ordre p(p1) dans (Z/nZ)?(cf. le théorème de structure des groupes
(Z/nZ)?et le théorème Chinois), or pne divise pas n1, donc an16= 1, ce qui est exclu. Ainsi, si n
est composé, il est de la forme n=p1. . . pr, avec r>2. Considérons alors a(Z/nZ)?tel que aest
non résidu quadratique modulo p1et congru à 1 modulo p2. . . pr, ce qui est loisible d’après le théorème
Chinois. Alors, a
n=a
p1a
p2...pr=1, or a1 mod p2. . . pr, ce qui exclu a(n1)/2≡ −1 mod n,
d’où une contradiction.
QED
Démonstration.[Proposition] Dans l’énoncé du lemme précédent, Hest clairement un sous-groupe de
(Z/nZ)?, ainsi, d’après le lemme, dès que nest composé, [(Z/nZ)?:H]>2, d’où le résultat.
QED
On obtient ainsi un test probabiliste polynomial 1de primalité (le calcul de a(n1)/2mod nétant
aisé via l’algorithme d’exponentiation rapide et celui de a
nde même via la loi de réciprocité quadra-
tique), de paramètre α= 1/2.
2.3 Le test de Miller-Rabin
Test de Miller-Rabin : choisir a[[1, n 1]] au hasard, premier à n, et écrire n1 = 2st, avec
timpair. L’entier nsatisfait au test si at1 mod nou s’il existe 06r6s1, tel que a2rt≡ −1
mod n.
Ce test constitue, comme l’énonce la proposition suivante, un test probabiliste polynomial de pri-
malité de paramètre α= 1/4, qui est un raffinement du test de Solovay-Strassen :
Proposition 2.6
1. Si nest premier, alors il satisfait au test de Miller-Rabin ;
2. Si nest composé et distinct de 9, alors, pour achoisi aléatoirement dans (Z/nZ)?, la probabilité
que nsatisfasse au test de Miller-Rabin est inférieure à 1/4;
3. Si nsatisfait au test de Miller-Rabin pour un témoin a, alors il satisfait au test de Solovay-Strassen
pour ce même témoin a.
Lemme 2.7 Soit n= 1 + 2st=pα1
1. . . pαk
k, avec timpair, et uN. Posons pi1=2siti, avec ti
impair, s0
i= min(u, si)et di=pgcd(t, ti). On a alors
Card{a(Z/nZ)?/ a2ut= 1}= 2s0
1+···+s0
kd1. . . dk
1. Le test de Solovay-Strassen est déterministe polynomial sous l’hypothèse de Riemann généralisée (cf. [Hin08] p.
42). Précisément, pour ncomposé, il existe a62(log n)2,a
n6=a(n1)/2mod n.
5
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !