Autour du cryptosystème RSA - Institut de Mathématiques de

Transcription

Autour du cryptosystème RSA - Institut de Mathématiques de
Chiffrements symétrique et asymétrique
Les nombres premiers
Autour du cryptosystème RSA
Lycée Magendie
Avril 2014
Tests de primalité
Chiffrements symétrique et asymétrique
Les nombres premiers
Plan
1
Chiffrements symétrique et asymétrique
2
Les nombres premiers
3
Tests de primalité
Tests de primalité
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement
Alice
veut écrire
à Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement
Alice
veut écrire
à Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement
Alice
veut écrire
à Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement de Jules César
Alice
QUARTIQUE
clé de chiffrement +3
TXDUWLTXH
TXDUWLTXH est envoyé
à Bob
TXDUWLTXH
clé de déchiffrement -3
QUARTIQUE
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement de Jules César
Alice
QUARTIQUE
clé de chiffrement +3
TXDUWLTXH
TXDUWLTXH est envoyé
à Bob
TXDUWLTXH
clé de déchiffrement -3
QUARTIQUE
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement de Jules César
Alice
QUARTIQUE
clé de chiffrement +3
TXDUWLTXH
TXDUWLTXH est envoyé
à Bob
TXDUWLTXH
clé de déchiffrement -3
QUARTIQUE
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement de Jules César
Alice
QUARTIQUE
clé de chiffrement +3
TXDUWLTXH
TXDUWLTXH est envoyé
à Bob
TXDUWLTXH
clé de déchiffrement -3
QUARTIQUE
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement de Jules César
Alice
QUARTIQUE
clé de chiffrement +3
TXDUWLTXH
TXDUWLTXH est envoyé
à Bob
TXDUWLTXH
clé de déchiffrement -3
QUARTIQUE
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement de Jules César
Alice
QUARTIQUE
clé de chiffrement +3
TXDUWLTXH
TXDUWLTXH est envoyé
à Bob
TXDUWLTXH
clé de déchiffrement -3
QUARTIQUE
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement de Jules César
Alice
QUARTIQUE
clé de chiffrement +3
TXDUWLTXH
TXDUWLTXH est envoyé
à Bob
TXDUWLTXH
clé de déchiffrement -3
QUARTIQUE
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement de Jules César
Alice
QUARTIQUE
clé de chiffrement +3
TXDUWLTXH
TXDUWLTXH est envoyé
à Bob
TXDUWLTXH
clé de déchiffrement -3
QUARTIQUE
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement de Jules César
Alice
QUARTIQUE
clé de chiffrement +3
TXDUWLTXH
TXDUWLTXH est envoyé
à Bob
TXDUWLTXH
clé de déchiffrement -3
QUARTIQUE
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé secrète
Alice
m=QUARTIQUE
clé secrète de chiffrement K = +3
c = fK (m)
c =TXDUWLTXH est envoyé
à Bob
c =TXDUWLTXH
clé secrète de déchiffrement K ′ = −K = −3
m = fK (−1) (c) = fK ′ (c)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé secrète
Alice
m=QUARTIQUE
clé secrète de chiffrement K = +3
c = fK (m)
c =TXDUWLTXH est envoyé
à Bob
c =TXDUWLTXH
clé secrète de déchiffrement K ′ = −K = −3
m = fK (−1) (c) = fK ′ (c)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé secrète
Alice
m=QUARTIQUE
clé secrète de chiffrement K = +3
c = fK (m)
c =TXDUWLTXH est envoyé
à Bob
c =TXDUWLTXH
clé secrète de déchiffrement K ′ = −K = −3
m = fK (−1) (c) = fK ′ (c)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé secrète
Alice
m=QUARTIQUE
clé secrète de chiffrement K = +3
c = fK (m)
c =TXDUWLTXH est envoyé
à Bob
c =TXDUWLTXH
clé secrète de déchiffrement K ′ = −K = −3
m = fK (−1) (c) = fK ′ (c)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé secrète
Alice
m=QUARTIQUE
clé secrète de chiffrement K = +3
c = fK (m)
c =TXDUWLTXH est envoyé
à Bob
c =TXDUWLTXH
clé secrète de déchiffrement K ′ = −K = −3
m = fK (−1) (c) = fK ′ (c)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé secrète
Alice
m=QUARTIQUE
clé secrète de chiffrement K = +3
c = fK (m)
c =TXDUWLTXH est envoyé
à Bob
c =TXDUWLTXH
clé secrète de déchiffrement K ′ = −K = −3
m = fK (−1) (c) = fK ′ (c)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé secrète
Alice
m=QUARTIQUE
clé secrète de chiffrement K = +3
c = fK (m)
c =TXDUWLTXH est envoyé
à Bob
c =TXDUWLTXH
clé secrète de déchiffrement K ′ = −K = −3
m = fK (−1) (c) = fK ′ (c)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé secrète
Alice
m=QUARTIQUE
clé secrète de chiffrement K = +3
c = fK (m)
c =TXDUWLTXH est envoyé
à Bob
c =TXDUWLTXH
clé secrète de déchiffrement K ′ = −K = −3
m = fK (−1) (c) = fK ′ (c)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé secrète
Alice
m=QUARTIQUE
clé secrète de chiffrement K = +3
c = fK (m)
c =TXDUWLTXH est envoyé
à Bob
c =TXDUWLTXH
clé secrète de déchiffrement K ′ = −K = −3
m = fK (−1) (c) = fK ′ (c)
Chiffrements symétrique et asymétrique
Les nombres premiers
Chiffrement à clé secrète
Trois étapes : création et distribution de clés, chiffrement,
déchiffrement
Boîte mail, consultation de compte en banque, ...
Avantages : simple, rapide, bien connu
Fragilités : attaques statistiques, gestion de clés
Tests de primalité
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Alice
veut envoyer m à Bob.
pub
Elle trouve la clé publique de chiffrement KBob
dans l’annuaire.
Elle calcule c = fK pub (m)
Bob
c est envoyé
à Bob
c
sec
KBob
qui utilise sa clé secrète de déchiffrement
sec (c)
m = fK pub (−1) (c) = gKBob
Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Alice
veut envoyer m à Bob.
pub
Elle trouve la clé publique de chiffrement KBob
dans l’annuaire.
Elle calcule c = fK pub (m)
Bob
c est envoyé
à Bob
c
sec
KBob
qui utilise sa clé secrète de déchiffrement
sec (c)
m = fK pub (−1) (c) = gKBob
Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Alice
veut envoyer m à Bob.
pub
Elle trouve la clé publique de chiffrement KBob
dans l’annuaire.
Elle calcule c = fK pub (m)
Bob
c est envoyé
à Bob
c
sec
KBob
qui utilise sa clé secrète de déchiffrement
sec (c)
m = fK pub (−1) (c) = gKBob
Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Alice
veut envoyer m à Bob.
pub
Elle trouve la clé publique de chiffrement KBob
dans l’annuaire.
Elle calcule c = fK pub (m)
Bob
c est envoyé
à Bob
c
sec
KBob
qui utilise sa clé secrète de déchiffrement
sec (c)
m = fK pub (−1) (c) = gKBob
Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Alice
veut envoyer m à Bob.
pub
Elle trouve la clé publique de chiffrement KBob
dans l’annuaire.
Elle calcule c = fK pub (m)
Bob
c est envoyé
à Bob
c
sec
KBob
qui utilise sa clé secrète de déchiffrement
sec (c)
m = fK pub (−1) (c) = gKBob
Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Alice
veut envoyer m à Bob.
pub
Elle trouve la clé publique de chiffrement KBob
dans l’annuaire.
Elle calcule c = fK pub (m)
Bob
c est envoyé
à Bob
c
sec
KBob
qui utilise sa clé secrète de déchiffrement
sec (c)
m = fK pub (−1) (c) = gKBob
Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Alice
veut envoyer m à Bob.
pub
Elle trouve la clé publique de chiffrement KBob
dans l’annuaire.
Elle calcule c = fK pub (m)
Bob
c est envoyé
à Bob
c
sec
KBob
qui utilise sa clé secrète de déchiffrement
sec (c)
m = fK pub (−1) (c) = gKBob
Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Alice
veut envoyer m à Bob.
pub
Elle trouve la clé publique de chiffrement KBob
dans l’annuaire.
Elle calcule c = fK pub (m)
Bob
c est envoyé
à Bob
c
sec
KBob
qui utilise sa clé secrète de déchiffrement
sec (c)
m = fK pub (−1) (c) = gKBob
Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Alice
veut envoyer m à Bob.
pub
Elle trouve la clé publique de chiffrement KBob
dans l’annuaire.
Elle calcule c = fK pub (m)
Bob
c est envoyé
à Bob
c
sec
KBob
qui utilise sa clé secrète de déchiffrement
sec (c)
m = fK pub (−1) (c) = gKBob
Bob
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Chiffrement à clé publique
Trois étapes : création et publication de clés, chiffrement,
déchiffrement
Avantages : gestion de clé simplifiée, solidité mathématique
Fragilités : plus lent, plus compliqué à implémenter
En pratique on combine les deux chiffrements : clé publique pour
échanger une clé de session (secrète) qui servira à chiffrer à la volée.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Histoire des nombres premiers
Euclide, livre sept des Éléments, vers -300 donne la définition,
Il existe une infinité de nombres premiers,
Tout nombre entier ≥ 2 admet un diviseur premier,
théorème fondamental de l’arithmétique (preuve par Gauss),
pk+1 ≤
Q
l≤k
pl + 1,
algorithme pour pgcd et ppcm,
crible d’Eratosthène.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Distribution des nombres premiers
A
π(A)
A/π(A)
ln A
10
4
2.5
2.3
100
25
4
4.6
1000
168
5.95
6.9
10000
1229
8.14
9.2
100000
9592
10.4
11.5
Théorème des nombres premiers (Hadamard) :
π(A) ≃
A
ln A
et
pn ≃ n ln n.
Assez nombreux !
Dans [1, 101000 ] la proportion de nombres premiers est ≃ 1/2303.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Complexité des opérations arithmétiques
La complexité d’un calcul est le nombre d’opérations élémentaires
nécessaires pour le mener à bien.
complexité linéaire pour l’addition. Pour ajouter deux nombres de
120 chiffres il faut ≃ 120 opérations élémentaires.
complexité quadratique pour la multiplication. Pour ajouter deux
nombres de 120 chiffres il faut ≃ 120 × 120 opérations
élémentaires.
complexité du crible d’Eratosthène : T ≃ n1/2 . Pour savoir si
n = 10120 + 1 est premier on a T ≃ 1060 .
Agrawal, Kayal, et Saxena (2002) : complexité polynomiale
sextique. Pour savoir si n est premier, T ≃ k 6 où k est le nombre
de chiffres de n. Si n = 10120 + 1 alors T ≃ 1216 ≃ 3 × 1012 .
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Complexité des opérations arithmétiques
Pour ajouter deux nombres de 120 chiffres il faut ≃ 120
opérations élémentaires.
Pour multiplier deux nombres de 120 chiffres il faut ≃ 120 × 120
opérations élémentaires.
Crible d’Eratosthène : pour savoir si n = 10120 + 1 est premier on
a T ≃ 1060 .
Agrawal, Kayal, et Saxena (2002) : T ≃ k 6 où k est le nombre
de chiffres de n. Si n = 10120 + 1 alors T ≃ 1216 ≃ 3 × 1012 .
√
factorisation naïve : T ≃ n,
pas d’algorithme polynomial connu pour factoriser.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Factoriser n’est pas facile
15 = 3 × 5, 8177 = 13 × 17 × 37, 4391796557 = 653 × 1237 × 5437
n =775849600041239802219341428568066121637285305234191581868939200
7157774501544283629918975176453173496395274198729351234342186103
4442347324105332378039451186561870452359346864041708636239770085359655309
n = pq avec
p =94956014784198111284390337194382959472794190112290073206808220
63984162448528523167147998893885377277
et
q =81706209112132098934270542976736314059245967312942357820857757
87009447412809370557316174968767460817
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Factoriser n’est pas facile
15 = 3 × 5, 8177 = 13 × 17 × 37, 4391796557 = 653 × 1237 × 5437
n =775849600041239802219341428568066121637285305234191581868939200
7157774501544283629918975176453173496395274198729351234342186103
4442347324105332378039451186561870452359346864041708636239770085359655309
n = pq avec
p =94956014784198111284390337194382959472794190112290073206808220
63984162448528523167147998893885377277
et
q =81706209112132098934270542976736314059245967312942357820857757
87009447412809370557316174968767460817
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Factoriser n’est pas facile
15 = 3 × 5, 8177 = 13 × 17 × 37, 4391796557 = 653 × 1237 × 5437
n =775849600041239802219341428568066121637285305234191581868939200
7157774501544283629918975176453173496395274198729351234342186103
4442347324105332378039451186561870452359346864041708636239770085359655309
n = pq avec
p =94956014784198111284390337194382959472794190112290073206808220
63984162448528523167147998893885377277
et
q =81706209112132098934270542976736314059245967312942357820857757
87009447412809370557316174968767460817
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Factoriser n’est pas facile
15 = 3 × 5, 8177 = 13 × 17 × 37, 4391796557 = 653 × 1237 × 5437
n =775849600041239802219341428568066121637285305234191581868939200
7157774501544283629918975176453173496395274198729351234342186103
4442347324105332378039451186561870452359346864041708636239770085359655309
n = pq avec
p =94956014784198111284390337194382959472794190112290073206808220
63984162448528523167147998893885377277
et
q =81706209112132098934270542976736314059245967312942357820857757
87009447412809370557316174968767460817
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Factoriser n’est pas facile
15 = 3 × 5, 8177 = 13 × 17 × 37, 4391796557 = 653 × 1237 × 5437
n =775849600041239802219341428568066121637285305234191581868939200
7157774501544283629918975176453173496395274198729351234342186103
4442347324105332378039451186561870452359346864041708636239770085359655309
n = pq avec
p =94956014784198111284390337194382959472794190112290073206808220
63984162448528523167147998893885377277
et
q =81706209112132098934270542976736314059245967312942357820857757
87009447412809370557316174968767460817
Chiffrements symétrique et asymétrique
Les nombres premiers
Asymétrie
(p, q)→N = pq
(p, q)←N = pq
Tests de primalité
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
En décembre 2009, Thorsten Kleinjung et une dizaine de collègues ont
factorisé un nombre de 232 chiffres.
The sieving, which was done on many hundreds of machines, took
almost two years.
Calculer le produit de deux nombres de 116 chiffres prend 8
millionièmes de secondes sur mon ordinateur portable.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Critère de Fermat
Théorème
Si n est premier alors
x n ≡ x mod n
(1)
pour tout entier x , et x n−1 ≡ 1 mod n si (x , n) = 1.
Fermat, Octobre 1640, . . .de quoi je vous envoierois la démonstration,
si je n’appréhendois d’être trop long.
Démonstration.
étape 1 : On montre que
(x + y )n =
X
0≤k≤n
!
n k n−k
x y
≡ x n + y n mod n
k
(2)
étape 2 : On vérifie (1) pour x = 1 puis on utilise (2) pour montrer
que si (1) est vraie pour x , elle est vraie pour x + 1.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Critère de Fermat
Théorème
Si n est premier alors
x n ≡ x mod n
(1)
pour tout entier x , et x n−1 ≡ 1 mod n si (x , n) = 1.
Fermat, Octobre 1640, . . .de quoi je vous envoierois la démonstration,
si je n’appréhendois d’être trop long.
Démonstration.
étape 1 : On montre que
(x + y )n =
X
0≤k≤n
!
n k n−k
x y
≡ x n + y n mod n
k
(2)
étape 2 : On vérifie (1) pour x = 1 puis on utilise (2) pour montrer
que si (1) est vraie pour x , elle est vraie pour x + 1.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Critère de Fermat
Théorème
Si n est premier alors
x n ≡ x mod n
(1)
pour tout entier x , et x n−1 ≡ 1 mod n si (x , n) = 1.
Fermat, Octobre 1640, . . .de quoi je vous envoierois la démonstration,
si je n’appréhendois d’être trop long.
Démonstration.
étape 1 : On montre que
(x + y )n =
X
0≤k≤n
!
n k n−k
x y
≡ x n + y n mod n
k
(2)
étape 2 : On vérifie (1) pour x = 1 puis on utilise (2) pour montrer
que si (1) est vraie pour x , elle est vraie pour x + 1.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Condition nécessaire mais non-suffisante
Si n = 5 et x = 3 alors 32 ≡ 4 mod 5, 33 ≡ 2 mod 5, 34 ≡ 1 mod 5,
35 ≡ 3 mod 5.
Si n = 15 alors 1415 ≡ 14 mod 15. On dit que 14 est un faux témoin.
Si n = 1105 = 5 × 13 × 17 alors tous les x premiers à n sont des faux
témoins.
Il existe des raffinements du théorème de Fermat.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Condition nécessaire mais non-suffisante
Si n = 5 et x = 3 alors 32 ≡ 4 mod 5, 33 ≡ 2 mod 5, 34 ≡ 1 mod 5,
35 ≡ 3 mod 5.
Si n = 15 alors 1415 ≡ 14 mod 15. On dit que 14 est un faux témoin.
Si n = 1105 = 5 × 13 × 17 alors tous les x premiers à n sont des faux
témoins.
Il existe des raffinements du théorème de Fermat.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Critère de composition
Si l’on trouve x tel que x n 6≡ x mod n alors n n’est pas premier.
Exemple : calculons 215 mod 15.
215 = 32768 et 32768 = 15 × 2184 + 8.
Autre méthode
22 ≡ 4 mod 15, 23 ≡ 8 mod 15, 24 ≡ 1 mod 15, 25 ≡ 2 mod 15,
26 ≡ 4 mod 15, 27 ≡ 8 mod 15, 28 ≡ 1 mod 15, 29 ≡ 2 mod 15,
210 ≡ 4 mod 15, 211 ≡ 8 mod 15, 212 ≡ 1 mod 15, 213 ≡ 2 mod 15,
214 ≡ 4 mod 15, 215 ≡ 8 mod 15.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Critère de composition
Si l’on trouve x tel que x n 6≡ x mod n alors n n’est pas premier.
Exemple : calculons 215 mod 15.
215 = 32768 et 32768 = 15 × 2184 + 8.
Autre méthode
22 ≡ 4 mod 15, 23 ≡ 8 mod 15, 24 ≡ 1 mod 15, 25 ≡ 2 mod 15,
26 ≡ 4 mod 15, 27 ≡ 8 mod 15, 28 ≡ 1 mod 15, 29 ≡ 2 mod 15,
210 ≡ 4 mod 15, 211 ≡ 8 mod 15, 212 ≡ 1 mod 15, 213 ≡ 2 mod 15,
214 ≡ 4 mod 15, 215 ≡ 8 mod 15.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Critère de composition
Si l’on trouve x tel que x n 6≡ x mod n alors n n’est pas premier.
Exemple : calculons 215 mod 15.
215 = 32768 et 32768 = 15 × 2184 + 8.
Autre méthode
22 ≡ 4 mod 15, 23 ≡ 8 mod 15, 24 ≡ 1 mod 15, 25 ≡ 2 mod 15,
26 ≡ 4 mod 15, 27 ≡ 8 mod 15, 28 ≡ 1 mod 15, 29 ≡ 2 mod 15,
210 ≡ 4 mod 15, 211 ≡ 8 mod 15, 212 ≡ 1 mod 15, 213 ≡ 2 mod 15,
214 ≡ 4 mod 15, 215 ≡ 8 mod 15.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Exponentiation rapide, Piṅgala (entre -450 et -250).
Soit n = 1031 et x = 5.
On veut calculer 51031 mod 1031.
b0
b3
b5
b7
b9
= 5, b1 = 52 = 25 mod n, b2 = b12 = 54 = 625 mod n,
3
4
= b22 = 52 = 390625 = 907 mod n, b4 = b32 = 52 = 942 mod n,
6
5
= b42 = 52 = 704 mod n, b6 = b52 = 52 = 736 mod n,
7
8
= b62 = 52 = 421 mod n, b8 = b72 = 52 = 940 mod n,
9
10
= b82 = 52 = 33 mod n, b10 = b92 = 52 = 51024 = 58 mod n.
Or 1031 = 103 + 0 × 102 + 3 × 10 + 1 × 1 = 210 + 22 + 2 + 1 s’écrit
10000000111 en base 2.
10
2
10
2
1
0
Donc 51031 = 52 +2 +2+1 = 52 × 52 × 52 × 52 =
b10 × b2 × b1 × b0 = 58 × 625 × 25 × 5 = 4531250 = 5 mod n.
12 multiplications au lieu de 1030.
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
L’exponentiation rapide
Pour calculer x e mod n
1
2
R ← 1 et f ← e et B ← x mod n
Tant que f 6= 0 faire
Si f est pair alors f ← f /2 et B ← B × B mod n
Si f est impair alors f ← (f − 1)/2 et R ← R × B mod n et
B ← B × B mod n
3
Afficher R
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
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 premier à n, on a
i
x m ≡ 1 mod n ou x 2
m
≡ −1 mod n pour un 0 6 i < k .
Peut importe ici le détail : ce critère est une variante du critère de
Fermat.
Si l’on trouve un x tel que la condition (3) est fausse, alors n est
composé.
On choisit x au hasard et on vérifie la condition (3).
Si elle est fausse alors n est composé. Critère de composition.
Si elle est vraie que dire ?
(3)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
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 premier à n, on a
i
x m ≡ 1 mod n ou x 2
m
≡ −1 mod n pour un 0 6 i < k .
Peut importe ici le détail : ce critère est une variante du critère de
Fermat.
Si l’on trouve un x tel que la condition (3) est fausse, alors n est
composé.
On choisit x au hasard et on vérifie la condition (3).
Si elle est fausse alors n est composé. Critère de composition.
Si elle est vraie que dire ?
(3)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
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 premier à n, on a
i
x m ≡ 1 mod n ou x 2
m
≡ −1 mod n pour un 0 6 i < k .
Peut importe ici le détail : ce critère est une variante du critère de
Fermat.
Si l’on trouve un x tel que la condition (3) est fausse, alors n est
composé.
On choisit x au hasard et on vérifie la condition (3).
Si elle est fausse alors n est composé. Critère de composition.
Si elle est vraie que dire ?
(3)
Chiffrements symétrique et asymétrique
Les nombres premiers
Tests de primalité
Le test de Miller-Rabin
Théorème
Si n ≥ 15 est composé et impair, alors
#{x in [1, n] : pgcd(x , n) = 1 et la condition (3) est vraie}
1
6 .
#{x in [1, n] : pgcd(x , n) = 1}
4
Au plus un quart de faux témoins.
Remarque 1 : Après λ tests, la probabilité de manquer un composé
est majorée par 1/4λ .
Remarque 2 : Si n est premier, on n’aura jamais de certitude avec ce
test.
Chiffrements symétrique et asymétrique
Les nombres premiers
Agrawal, Kayal et Saxena
T ≃ k6
où k est le nombre de chiffres décimaux de n.
Pas de faux témoins pour leur test.
Tests de primalité