Cryptographie et primalité

publicité
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 Le concept de fonctions à sens unique . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 L’exponentiation modulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Le système RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
2
2
2 Tests de primalité [Zém00, Hin08]
2.1 Le test de Fermat . . . . . . . . .
2.2 Le test de Solovay-Strassen . . .
2.3 Le test de Miller-Rabin . . . . . .
2.4 Le théorème de Lucas-Lehmer . .
2.5 Remarques finales . . . . . . . . .
3
4
4
5
7
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 : E −→ F, x 7−→ f (x) est dite à sens unique lorsque
1. il est possible de calculer simplement f (x), pour tout x ∈ E (i.e. il existe un algorithme qui,
pour tout x ∈ E, calcule f (x) en un temps polynomial en la taille de x) ;
2. pour la plupart des y ∈ f (E), il est impossible de trouver x ∈ E tel 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 E doit ê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é
1.2
ENS Rennes - Année 2014–2015
Romain Basson
L’exponentiation modulaire
Il s’agit de la fonction f : Fp∗ −→ Fp∗ , x 7−→ αx , pour α un générateur de Fp∗ , 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é
1/2
1/2
e √p).
sous-exponentielle O(e(log p) (log log p) ) = O(
Pour définir concrètement une telle fonction, il est donc nécessaire de savoir générer un grand
nombre premier p et un générateur α de Fp∗ . 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 p − 1, on
peut tester si α est un générateur en l’élevant à toutes les puissances d, pour d diviseurs de p − 1, ce
qui permet d’aboutir, dans la mesure où le rapport φ(p−1)
p−1 n’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 p et sur
un générateur α de Fp∗ ;
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, αa et α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 p et q tandis que la clé
publique est n = pq et un entier e inversible modulo ϕ(n). Le chiffrement d’un message représenté par
un entier M modulo n se fait alors par la transformation :
f : M 7−→ M e
mod n.
Proposition 1.2 La fonction réciproque de f est M 7−→ M d mod n, où d est l’inverse de e modulo
ϕ(n).
Démonstration.
— Si (M, n) = 1, alors M ϕ(n) ≡ 1 mod n, d’après le théorème de Lagrange, ainsi (M e )d ≡ M ed ≡
M mod n.
— Si M ≡ 0 mod p et (M, q) = 1, alors, puisque ϕ(n) = ϕ(p)ϕ(q), M ϕ(n) ≡ 0 mod p et M ϕ(q) ≡
M ϕ(n) ≡ 1 mod q. Ainsi M de ≡ 0 ≡ M mod p et M de ≡ M mod 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 n de 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 p et q (i.e. la factorisation de n), dans la
mesure où ϕ(n) = (p − 1)(q − 1) = n − (p + q) + 1.
4. Savoir déterminer un inverse de d modulo ϕ(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 M 7−→ M e mod n
revient à savoir factoriser n.
6. La complexité du meilleur algorithme de factorisation (Number Field Sieve) est :
!
!
r
3 64
1/3
2/3
exp
+ o(1) (log n) (log log n)
.
9
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
où π(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 probabilité 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 n impair, qui utilise un témoin 0 < a < n, et qui satisfait aux conditions
suivantes, pour un α ∈ [0, 1[ :
1. si n est premier, alors P (n, a) est vrai pour tout a ∈ [[1, n − 1]] ;
2. si n est composé, alors, sur les n − 1 entiers a compris entre 1 et n − 1, il y en a au plus α(n − 1)
pour lesquels P (n, a) est vrai ;
3. le test P (n, a) est rapide, i.e. polynomial en log n.
Ainsi un entier n composé survit au test P (n, .) k fois avec une probabilité inférieure à αk .
3
Préparation à l’agrégation
Cryptographie et primalité
2.1
ENS Rennes - Année 2014–2015
Romain Basson
Le test de Fermat
Test de Fermat : choisir au hasard a 6≡ 0 mod n et calculer an−1 mod n. L’entier n satisfait au
test si an−1 ≡ 1 mod n.
Ce test est naturellement inspiré du petit théorème de Fermat qui énonce que : si n est un nombre
premier, alors, pour tout entier a premier à n, an−1 ≡ 1 mod n. Ainsi, pour un nombre n donné,
dont on souhaite tester la primalité, s’il existe un entier a 6≡ 0 mod n tel que an−1 6≡ 1 mod n, alors
n est composé. La réciproque est toutefois fausse, puisque, pour un a donné, la relation an−1 ≡ 1
mod n peut subsister alors que n est 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. n divise an − a, pour tout entier a, si et seulement si n
est sans facteur carré et p − 1 divise n − 1, pour tout diviseur premier p de 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 x suffisamment grand, il existe au
moins x2/7 nombres de Carmichael inférieurs à x.
Ainsi, le principal défaut du test de Fermat réside en l’absence, pour tout n composé, d’une proportion, indépendante de n, du choix de l’aléa a pour 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(n−1)/2
mod n et na . L’entier n satisfait au test si
a
a(n−1)/2 ≡
mod n
n
Si n est premier, alors il satisfait au test pour tout a 6≡ 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 n est composé, alors, pour a choisi aléatoirement dans (Z/nZ)? , la probabilité que
n satisfasse 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
a
n
Lemme 2.5 Soit H = {a ∈ (Z/nZ)? / a(n−1)/2 ≡
si n est premier.
mod n}, alors H = (Z/nZ)? si et seulement
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 n est sans facteur carré. En effet, si p2 , p premier
impair, divise n, alors il existe a d’ordre p(p−1) dans (Z/nZ)? (cf. le théorème de structure des groupes
(Z/nZ)? et le théorème Chinois), or p ne divise pas n − 1, donc an−1 6= 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 a est
non résidu quadratique modulo
et congru à 1 modulo p2 . . . pr , ce qui est loisible d’après le théorème
p1 a
a
a
(n−1)/2 ≡ −1 mod n,
Chinois. Alors, n = p1
p2 ...pr = −1, or a ≡ 1 mod p2 . . . pr , ce qui exclu a
d’où une contradiction.
QED
Démonstration.[Proposition] Dans l’énoncé du lemme précédent, H est clairement un sous-groupe de
(Z/nZ)? , ainsi, d’après le lemme, dès que n est composé, [(Z/nZ)? : H] > 2, d’où le résultat.
QED
On obtient ainsi un test probabiliste polynomial 1 de primalité
(le calcul de a(n−1)/2 mod n étant
aisé via l’algorithme d’exponentiation rapide et celui de na de même via la loi de réciprocité quadratique), 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 n − 1 = 2s t, avec
r
t impair. L’entier n satisfait au test si at ≡ 1 mod n ou s’il existe 0 6 r 6 s − 1, tel que a2 t ≡ −1
mod n.
Ce test constitue, comme l’énonce la proposition suivante, un test probabiliste polynomial de primalité de paramètre α = 1/4, qui est un raffinement du test de Solovay-Strassen :
Proposition 2.6
1. Si n est premier, alors il satisfait au test de Miller-Rabin ;
2. Si n est composé et distinct de 9, alors, pour a choisi aléatoirement dans (Z/nZ)? , la probabilité
que n satisfasse au test de Miller-Rabin est inférieure à 1/4 ;
3. Si n satisfait 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 + 2s t = pα1 1 . . . pαk k , avec t impair, et u ∈ N. Posons pi − 1 = 2si ti , avec ti
impair, s0i = min(u, si ) et di = pgcd(t, ti ). On a alors
ut
Card{a ∈ (Z/nZ)? / a2
0
0
= 1} = 2s1 +···+sk d1 . . . 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 n composé, il existe a 6 2(log n)2 , na 6= a(n−1)/2 mod n.
5
Préparation à l’agrégation
Cryptographie et primalité
ENS Rennes - Année 2014–2015
Romain Basson
?
2u t
Card{a ∈ (Z/nZ) / a
= −1} =
0
si u > min(si )
uk
2 d1 . . . dk sinon
Démonstration. n étant impair, chaque pi l’est, ainsi, dans le groupe cyclique (Z/pαi i Z)? d’ordre
u
pαi i −1 (pi − 1), le nombre de solutions de l’équation a2 t ≡ 1 mod pαi i est pgcd(2u t, pαi i −1 (pi − 1)) =
0
pgcd(2u t, 2si ti ) = 2si di . D’après le théorème Chinois, le nombre de solutions modulo n est alors le
produit de ces nombres, comme annoncé.
Pour la deuxième équation, soit il n’existe aucune solution, soit, s’il en existe une, les solutions
u
sont en bijection avec les précédentes. Or la congruence a2 t ≡ −1 mod pαi i admet une solution si et
seulement si 2u+1 | pαi i −1 (pi − 1), i.e. u + 1 6 si .
QED
Démonstration.[Proposition 2.6]
0
1. Notons 2r t0 , avec 0 6 r 6 s et t0 | t, l’ordre de a dans (Z/nZ)? . Si r = 0, alors at = 1, donc
r−1 0
r−1
at = 1. Si r > 1, alors, puisque n est premier, a2 t = −1, donc a2 t = −1.
2. On reprend les notations du lemme, en supposant s1 6 · · · 6 sk , et on note S l’ensemble des
éléments de (Z/nZ)? passant le test de Miller-Rabin, S0 l’ensemble de ceux tels que at = 1 et Tj
j
l’ensemble de ceux tels que a2 t = −1, pour 0 6 j 6 s1 − 1. Alors, d’après le lemme,
Card S = Card S0 +
X
Card Tj = d1 . . . dk (1 + 1 + 2k + · · · + 2k(s1 −1) ) = d1 . . . dk
2ks1 + 2k − 2
2k − 1
La proportion de a ∈ (Z/nZ)? passant le test de Miller-Rabin est donc
d1 . . . dk 2−(s1 +···+sk ) 2ks1 + 2k − 2
21−k
d1 . . . dk
Card S
=
6
ϕ(n)
t1 . . . tk pα1 1 −1 . . . pαk k −1
t1 . . . tk pα1 1 −1 . . . pαk k −1
2k − 1
1
1
d1
α1 −1 6 α1 −1 6 5 , sauf pour n = 9, où on trouve 1/3 ;
t1 p1
p1
— si k = 2, alors soit un des ti est distinct d’un di , auquel cas la proportion est inférieure à 1/6,
2s
1−2s
soit t1 = d1 et t2 = d2 , auquel cas t1 = t2 et s1 < s2 et 2−s1 −s2 2 31 +2 = 2s1 −s2 1+2 3 1 6 1/4.
— si k = 1, la proportion est
— Si k > 3, la proportion est inférieure 21−k 6 1/4.
t
t
s−1
3. Supposons d’abord que at ≡ 1 mod n, alors na = na = an = 1 et a(n−1)/2 ≡ a2 t ≡ 1
r
mod n. Supposonsdorénavant qu’il existe r ∈ [[0, s − 1]], tel que a2 t ≡ −1 mod n, il s’agit alors
de prouver que na = 1 ou −1 selon que r < s − 1 ou r = s − 1. Pour p un diviseur premier de
r
n, posons p −1 = 2u v, avec v impair. Du fait de la parité de t et v, on a alors a2 tv ≡ −1 mod p
u−1
et a2 vt ≡ ap
mod p, ce qui implique u > r + 1. Précisément, si u > r + 1, alors ap = 1 et
p ≡ 1 mod 2r+2 , si u = r + 1, alors ap = −1 et p ≡ 1 + 2r+1 mod 2r+2 . Soit k le nombre de
diviseurs premiers (comptés
de n pour lesquels l’entier u correspondant vaut
avec multiplicité)
a
k
r + 1, alors d’une part n = (−1) , d’autre part n ≡ (1 + 2r+1 )k ≡ 1 + k2r+1 mod 2r+2 . Ainsi,
k est pair ou impair selon que s > r + 1 ou s = r + 1, soit le résultat escompté.
QED
6
Préparation à l’agrégation
Cryptographie et primalité
2.4
ENS Rennes - Année 2014–2015
Romain Basson
Le théorème de Lucas-Lehmer
Une autre approche pour obtenir de grands nombres premiers consiste à les construire récursivement
sous la forme n = 1 + pα1 1 . . . pαk k , où les pi sont des nombres premiers préalablement connus et les αi
des entiers naturels non nuls.
Pour certifier la primalité de n, on applique le théorème de Lucas-Lehmer :
Théorème 2.8 - Lucas-Lehmer. Le nombre n est premier si et seulement s’il existe α ∈ (Z/nZ)? tel
que αn−1 = 1 et α(n−1)/p 6= 1, pour tout diviseur premier p de n − 1.
Démonstration. Le sens direct est clair, (Z/nZ)? étant cyclique. Réciproquement, s’il existe un tel α,
alors il est d’ordre n − 1. Or tout élément de (Z/nZ)? est d’ordre un diviseur de ϕ(n) et ϕ(n) 6 n − 1,
par conséquent ϕ(n) = n − 1, i.e. n est premier.
QED
En pratique, on teste pour quelques α choisis au hasard si les conditions du théorème sont remplies
(ce qui est aisé, puisqu’on connait la factorisation de n − 1). Si on n’obtient pas satisfaction, on change
de n. Cette approche est particulièrement adaptée pour l’exponentiation modulaire, puisqu’elle fournit
à la fois un nombre premier et un élément primitif. En revanche, elle l’est moins pour RSA, dans la
mesure où on ne maitrise plus le caractère aléatoire des nombres premiers ainsi construits, ce dont un
cryptanalyste pourrait potentiellement tirer avantage.
2.5
Remarques finales
Pour tester la primalité d’un nombre entier n, on a omis de rappeler jusque’à présent le test naïf
consistant à essayer de diviser n par tous les entiers compris entre 2 et n − 1 ; test pour lequel on peut
√
naturellement se restreindre au sous-ensemble des entiers impairs inférieurs à n lorsque n est impair.
Cette omission résulte du mauvais gout de ce test à être de complexité sous-exponentielle en la taille
de n et donc inutilisable en pratique pour des entiers de taille « cryptographique ».
Dans la classe des tests de primalité probabilistes, mentionnons le test ECCP basé sur les courbes
elliptiques, que nous n’abordons donc pas dans ces notes.
Enfin, en 2002, Agrawal, Kayal et Saxena ont proposé le premier test de primalité déterministe
polynomial (sans utiliser l’hypothèse de Riemann), dit test de primalité AKS ; autrement dit le problème
décisionnel de la primalité est dans la classe de complexité P. Ce test repose également sur une
généralisation du petit théorème de Fermat :
n > 2 est premier si et seulement si, pour tout a ∈ N, (X + a)n ≡ X n + a mod n.
Pour de plus amples détails à ce sujet, voir [Dem09, §5.4.4].
7
Préparation à l’agrégation
Cryptographie et primalité
3
ENS Rennes - Année 2014–2015
Romain Basson
Exercices
Exercice 3.1 - Clé RSA. Calculer la clé privé RSA associé à la clef publique (d, n) = (3, 69).
Exercice 3.2 - Protocole de Diffie-Hellman. Alice et bob décident d’utiliser le protocole de DiffieHellman. Ils rendent public le couple (L, α) où
L = F3∗ [X]/(X 3 − X − 1)
et
α = 2X.
1. Vérifier que L est un corps et α un générateur de L? .
2. Alice choisit a = 9 et transmet α9 à Bob. Ce dernier choisit un entier b et lui renvoie l’élément
αb = 1 − α + α2 . Quelle est la clé secrète d’Alice et Bob ?
Exercice 3.3 - Critère de Korselt pour les nombres de Carmichael.
On rappelle qu’un nombre de Carmichael est un entier naturel n composé qui vérifie le petit
théorème de Fermat : an−1 = 1, ∀ a ∈ (Z/nZ)? .
1. Rappeler la structure de (Z/nZ)? , pour n > 2.
2. Déterminer l’exposant de ce groupe (i.e. l’entier min{k ∈ N? / ∀ a ∈ (Z/nZ)? , ak = 1}).
3. En déduire que s’équivalent :
(a) n est un nombre de Carmichael ;
(b) n est composé, impair, sans facteur carré et, pour tout diviseur premier p de n, p − 1 divise
n − 1.
4. Montrer que tout nombre de Carmichael possède au moins trois facteurs premiers.
5. Montrer que 561 est le plus petit nombre de Carmichael.
8
Téléchargement