R´ ESUM´ E DE COURS DE CRYPTOGRAPHIE DUT Informatique, S4 Parcours ´

publicité
RÉSUMÉ DE COURS DE CRYPTOGRAPHIE
DUT Informatique, S4 Parcours Études Courtes
1
Arithmétique élémentaire
1.1
Division, congruence
Division euclidienne
Soient a et b deux entiers avec b 6= 0 ; il existe un
unique couple d’entiers (q, r) tel que a = q.b + r et
0 ≤ r < |b|. a s’appelle le dividende, b s’appelle le
diviseur, q s’appelle le quotient de la division de a
par b, r s’appelle le reste de la division de a par b.
2. Pour tout entier c non nul, a ≡ b [m] ⇔
a.c ≡ b.c [m.c].
3. Si a ≡ b [m.n], alors a ≡ b [m] et a ≡ b [n].
4. La relation de congruence modulo m est une
relation d’équivalence :
– pour tout entier a, a ≡ a [m] (réfléxivité),
– si a ≡ b [m], alors b ≡ a [m] (symétrie),
– si a ≡ b [m] et b ≡ c [m], alors a ≡ c [m]
(transitivité).
Entiers modulaires
On note Z/nZ l’ensemble des entiers modulo n,
Divisibilité
c’est-à-dire l’ensemble des classes d’équivalence
Notation : a | b ⇔ a divise b ⇔ b est un multiple pour la relation de congruence modulo n. Chaque
de a ⇔ ∃k ∈ Z, b = ak
élément de Z/nZ a un unique représentant compris entre 0 et n−1. L’addition et la multiplication
sont
bien définies dans Z/nZ.
Propriétés
Pour tout entier a, 1 | a et a | a (réflexivité).
Si a | b et b | c, alors a | c (transitivité).
1.2 Exponentiation modulaire
Si a | b et a | c, alors a | (b + c).
Pour tout entier c non nul, a | b ⇔ a.c | b.c Algorithme d’exponentiation rapide : Pour
calculer ab modulo n :
Congruence
– Ecrire
P b comme somme de puissances de 2 :
Notation : a ≡ b [n] ⇔ a est congru à b modulo n
b = ki=0 bi 2i (écriture binaire).
k
⇔ n divise b − a ⇔ ∃k ∈ Z, a = b + k.n.
– Calculer a2 , a4 , a8 , . . . a2 modulo n par mises
au carré successives.
i
Propriétés
– Faire le produit des a2 modulo n pour les indices i tels que bi = 1.
1. L’addition et la multiplication sont compatibles avec la relation de congruence : si Le problème inverse s’appelle problème du loa ≡ b [m] et c ≡ d [m], alors a+b ≡ c+d [m] garithme discret : étant donnés a et c, trouver
et a.c ≡ b.d [m]
b tel que ab ≡ c [n]. C’est un problème difficile.
1.
2.
3.
4.
Résumé de cours
Méthode naı̈ve de factorisation : Pour
1. Alice et Bob choisissent un modulo N (de décomposer un entier n en nombre premier, on
si p | n pour tout nombre
préférence un grand nombre premier) et un teste successivement
√
premier p < n ; en cas de succès, on recommence
entier g ; N et g ne sont pas secrets.
à partir de p en remplaçant n par n/p, sinon, n
2. Alice choisit un nombre secret a. Bob choisit est premier.
un nombre secret b.
Lemme d’Euclide
3. Alice calcule ca ≡ g a [N ] et le transmet à
Soient a et b deux entiers et p un nombre premier.
Bob. Bob calcule cb ≡ g b [N ] et le transmet
Alors p | ab ⇒ p | a ou p | b .
à Alice. ca et cb ne sont pas secrets.
Echange de clés Diffie-Hellman :
4. Alice reçoit cb et calcule Kab ≡ (cb )a ≡
(g b )a ≡ g ba [N ]. Bob reçoit ca et calcule 2.2
Kab ≡ (ca )b ≡ (g a )b ≡ g ab [N ].
PGCD et nombres premiers entre
eux
5. Alice et Bob disposent maintenant d’une clé
commune Kab dont ils peuvent se servir pour Définitions : Soient a et b deux entiers. Le plus
grand commun diviseur de a et b, noté pgcd(a, b)
chiffrer leur correspondance.
ou a ∧ b, est le plus grand entier d tel que d | a
Un attaquant passif qui écoute les échanges et d | b. Le plus petit commun multiple de a et b,
connaı̂t N , ca ≡ g a [N ] et cb ≡ g b [N ] mais il noté ppcm(a, b) ou a ∨ b, est le plus petit entier m
ne connaı̂t ni a ni b : il ne peut pas calculer (faci- tel que a | m et b | m.
lement) la clé Kab .
On dit que a et b sont premiers entre eux si leur
pgcd vaut 1.
2
2.1
Nombres
premiers,
théorème de Bézout
pgcd,
Décomposition en nombres premiers
Lien avec la décomposition en nombres premiers
Si a = pα1 1 pα2 2 . . . pαk k et b = ±pβ1 1 pβ2 2 . . . pβk k , alors
a ∧ b = pγ11 pγ22 . . . pγkk
a ∨ b = pδ11 pδ22 . . . pδkk
où γi = min(αi , βi ) et δi = max(αi , βi ).
Définition : Un nombre premier est un nombre
entier différent de ±1 qui n’est divisible que par Propriétés
1 et par lui-même. Exemples : 2, 3, 5, 7, 11, 13,
- (a ∧ b) × (a ∨ b) = ab. En particulier si a et
17 . . . On note P l’ensemble des nombres premiers,
b sont premiers entre eux, a ∨ b = ab.
cet ensemble est infini (théorème d’Euclide).
- a ∧ b = b ∧ a, a ∧ (b ∧ c) = (a ∧ b) ∧ c.
Théorème (Répartition des nombres premiers).
- 0 ∧ a = a, a ∧ a = a, 1 ∧ a = 1.
Si on note π(x) le nombre de nombres premiers
- Si x | a et x | b, alors x | (a ∧ b).
x
, c’est-à-dire
inférieurs à x, alors π(x) ∼ ln(x)
- Si a | x et b | x, alors (a ∨ b) | x.
x
π(x)/ ln(x)
→x→∞ 1.
- ma∧mb = m(a∧b). En particulier, si a∧b =
d, alors d | a, d | b, et (a/d) ∧ (b/d) = 1.
Informellement, autour d’un grand nombre n en- Pour tout entier k, a ∧ b = a ∧ (b + ak)
viron un entier sur ln(n) est premier.
Lemme de Gauss
Décomposition en nombre premier
Si a | bc et a ∧ b = 1, alors a | c.
Tout nombre entier n peut se décomposer en facteurs premiers : n = ±pα1 1 pα2 2 . . . pαk k , pi ∈ P. Algorithme d’Euclide : pour calculer le pgcd
Cette écriture est unique à permutation des fac- de deux entiers a et b,
1. si a < b, échanger a et b ;
teurs premiers près.
2
IUT d’Orsay
Département d’informatique
Cryptographie – S4 PEC
2. faire la division euclidienne de a par b :
a = bq + r ;
3. si r = 0, le pgcd est égal à b, sinon, remplacer a par b, b par r et retourner à l’étape
2.
2.3
Théorème de Bézout et applications
Théorème de Bézout :
Deux entiers a et b sont premiers entre eux si et
seulement si il existe deux entiers u et v tels que
au + bv = 1.
Plus généralement, si a∧b = d, alors il existe deux
entiers u et v tels que au + bv = d.
1. On calcule d = a ∧ b par l’algorithme d’Euclide. Si d - c, l’équation n’a pas de solution ;
sinon, en divisant par d on obtient l’équation
équivalente a0 x + b0 y = c0 où a0 = a/d,
b0 = b/d, c0 = c/d (en particulier a0 ∧ b0 = 1).
2. D’après le théorème de Bézout il existe deux
entiers u et v tels que a0 u + b0 v = 1 ; on les
calcule par l’algorithme d’Euclide étendu.
3. L’ensemble des solutions est alors {(c0 u +
kb0 , c0 v − ka0 ) ; k ∈ Z}.
Entiers inversibles modulo n
Un entier a est inversible modulo n si et seulement
si il existe un entier b tel que ab ≡ 1 [n]. Cet entier b, s’il existe, est unique modulo n et s’appelle
inverse modulaire de a ; on note b ≡ a−1 [n].
Algorithme d’Euclide étendu : pour calculer Propriété
u et v, on utilise l’algorithme d’Euclide étendu : Un entier a est inversible modulo n si et seulement si a et n sont premiers entre eux. A l’aide de
1. On effectue les divisions successives comme
l’algorithme d’Euclide étendu, on calcule les coefdans l’algorithme d’Euclide. On note
ficients de Bézout u et v tels que au + nv = 1.
r0 , r1 , . . . , rm et q1 , q2 , . . . , qm−1 les restes
Alors a−1 ≡ u [n].
et les quotients successifs, avec a = r0 et
b = r1 :
Chiffrement El Gamal :
a = q1 b+r2 ,
...
b = q2 r2 +r3 ,
r2 = q3 r3 +r4 ,
rm−2 = qm−1 rm−1 + rm
Le dernier reste non nul rm est égal au pgcd
d de a et b.
2. On calcule par récurrence une série d’égalité
de la forme d = uk rk−1 + vk rk , en partant de
l’égalité d = rm = rm−2 − qm−1 rm−1 (c’està-dire um−1 = 1 et vm−1 = −qm−1 ) :
si d = uk+1 rk + vk+1 rk+1 , comme rk−1 =
qk rk + rk+1 , en remplaçant rk+1 on obtient
d = uk+1 rk + vk+1 (rk−1 − qk rk ) =
vk+1 rk−1 + (uk+1 − qk vk+1 ) rk .
On a donc
(
uk = vk+1
vk = uk+1 − qk vk+1
1. Alice choisit un modulo N (de préférence un
grand nombre premier) et deux entiers g et
s, et elle calcule h ≡ g s [N ].
2. Alice rend public N , g et h (sa clé publique)
et garde secret s (sa clé privée).
3. Pour envoyer un message chiffré m, Bob
choisit un entier aléatoire r, calcule c1 ≡
g r [N ] et c2 ≡ hr .m [N ], et envoie (c1 , c2 )
à Alice.
4. Pour déchiffrer le message reçu (c1 , c2 ),
Alice calcule (cs1 )−1 .c2 ≡ ((g r )s )−1 .hr .m ≡
(g rs )−1 .g sr .m ≡ m [N ].
Un attaquant passif qui écoute les échanges ne
peut pas retrouver facilement r ou s (problème
du log discret), et ne peut alors pas calculer m.
Ce cryptosystème ne fonctionne correctement que
si l’entier r est choisi suffisamment aléatoirement.
3. On remonte ainsi jusqu’à trouver d = u1 r0 +
v1 r1 = u1 a + v1 b.
2.4 Théorème des restes chinois et applications.
Applications aux équations diophantiennes : Étant donnés trois entiers a, b et c, on
veut déterminer tous les couples d’entiers (x, y) Théorème des restes chinois : Soient m et n
deux entiers premiers entre eux, et a et b deux ensolutions de l’équation ax + by = c.
IUT d’Orsay
Département d’informatique
3
Résumé de cours
tiers quelconques. Alors le système de congruences 3.2
(
x ≡ a [m]
x ≡ b [n]
Le système RSA
La sécurité de ce système repose sur la difficulté de
calculer des “racines e-ièmes modulaires” : étant
donnés des entiers e, n et a, trouver un entier x tel
que xe ≡ a [n]. On ne sait résoudre efficacement
ce problème que quand la factorisation de n est
connue.
admet une solution x, unique modulo mn.
En particulier, si x ≡ y [m] et x ≡ y [n], alors
Génération des clés : Alice choisit deux grands
x ≡ y [mn].
nombres premiers p et q et calcule leur produit
Résolution pratique : à l’aide de l’algorithme n = pq. Elle choisit un entier e premier avec
d’Euclide étendu, on calcule les coefficients de (p − 1)(q − 1) et calcule avec Euclide étendu son
Bézout u et v tels que mu + nv = 1. Alors inverse d modulo (p − 1)(q − 1). Alice publie (n, e)
x ≡ bmu + anv [mn].
(la clé publique) et garde secret d (la clé privée).
Utilisation en confidentialité (chiffrement) :
3
3.1
Théorème de Fermat et RSA
Le petit théorème de Fermat
1. Pour transmettre un message m à Alice,
Bob récupère sa clé publique (n, e), calcule
c ≡ me [n] et envoie le message chiffré c à
Alice.
2. Pour déchiffrer le message reçu c, Alice calcule m0 ≡ cd [n].
On vérifie qu’on a bien m0 ≡ m [n] :
Petit théorème de Fermat : Soit p un nombre
Comme on a de = 1 + k(p − 1)(q − 1), modulo
premier. Alors pour tout entier a, ap ≡ a [p].
p on trouve que m0 ≡ (me )d ≡ m1+k(p−1)(q−1) ≡
De façon équivalente, si a 6≡ 0 [p], alors ap−1 ≡
m × (mp−1 )k(q−1) ≡ m [p] avec le petit théorème
1 [p].
de Fermat, et on trouve de même que m ≡ m0 [q] ;
comme p et q sont premiers entre eux, le théorème
Application à la primalité
0
On peut se servir de ce théorème comme test de des restes chinois implique que m ≡ m [n].
primalité : pour vérifer si un nombre n est preUtilisation en authentification (signature) :
mier ou pas, on teste pour plusieurs entiers a si
1. Pour authentifier un message m, Alice calan ≡ a[n]. En cas d’échec, on sait que n n’est
cule sa signature s ≡ md [n] et envoie (m, s)
pas premier, sinon n est probablement (mais pas
à Bob.
sûrement) premier.
Conséquence : prouver qu’un nombre n’est pas
2. Pour s’assurer que le message reçu (m, s) a
premier est beaucoup plus facile que de factoriser
bien été envoyé par Alice, Bob récupère sa
un nombre.
clé publique (n, e) et vérifie que m ≡ se [n].
4
IUT d’Orsay
Département d’informatique
Téléchargement