Algorithmique. Rappels mathématiques. Cryptosystème RSAnitulesc/files/CRYPTO13/cours4.pdf ·...
Embed Size (px)
Transcript of Algorithmique. Rappels mathématiques. Cryptosystème RSAnitulesc/files/CRYPTO13/cours4.pdf ·...

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
Algorithmique.Rappels mathématiques.
Cryptosystème RSA
Anca [email protected]
Université Paris 13 Villetaneuse
Cours 425/01/2016
1/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Algorithme
DéfinitionAlgorithme = Suite finie d’opérationsélémentaires constituant un schéma decalcul ou de résolution d’un problème
(Petit Larousse)
2/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Mathématiques 6= Informatique
Problèmes pratiquesLa pratique = Ligne de séparation entre les maths et l’info :
Mathématiques : on résout un problème en montrantl’existence d’une solution.Informatique : on cherche à construire cette solution ens’intéressant à l’effcacitè de la construction.
Un algorithme permet un traitement (informatique) automatisé si :la solution existel’algorithme soit performant
3/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Crypto
Algorithmes et cryptographieReprésenter les tâches à accomplir,manipuler des objets mathématiques :
calculer un chiffrementgénérer une signatureretrouver une clé
Comparer les algorithmes :
effcacité des schémascryptographiquesdificulté d’attaquer
4/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Complexité
Mesurer un algorithme
La variable/le paramètre = la taille des données en entrée del’algorithme
temps = nombre d’opérations élémentairesespace = mémoire nécessaire à l’algorithmecomportement = mesure aymptotique
Variantes : cas "moyen" ou "pire" des cas
5/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Complexités élémentaires
Les opérations arithméthiques
Addition : x + y complexité O(log x + log y)
Soustraction : x − y complexité O(log x + log y)
Multiplication : x × y complexité O(log x · log y)
Division : x = q × y + r complexité O(log q · log y)
Exponentiation : xn complexité ? ? ?
6/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Exponentiation
Algorithme naïfCalcul de n − 1 multiplications successives :
xn = x · x · x . . . x
Optimisation
Pour n = 2k
xn =
(. . .((
x2)2)2. . .
)2
k multiplications au lieu de n = 2k
7/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Comparaisons
Comparaison de fonctionsSoit f et g deux fonctions croissantes positivesf , g : N→ R
f = O(g) si ∃ c > 0 tel que : f (n) < c · g(n) pour n→∞f = Θ(g) si f = O(g) and g = O(f )
f = Ω(g) si g = O(f )
f = o(g) si ∀ c > 0 on a : f (n) < c · g(n) pour n→∞f = ω(g) si g = o(f )
8/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Exemples de comparaisons
Fonctions
3n2 + 3n + 1 = Ω(9n2) = O(n3/100)
1000n512 = O(1.01n)
2n = O(10n) = O(n!)
log n = o(n) = o(n log n) = O(n log n)
9/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Exemple de complexité
Multiplication matricielleMultiplier deux matrices carrées de dimension n :
dénombrement des multiplications entre coeficientsalgorithme simple : O(n3)
algorithme (très) complexe : O(n2,376)
n = 5000 : algorithme 200 fois plus rapide.n = 1 million : algorithme 5000 fois plus rapide ! (ex :rapport
de 1 heure à 200 jours)
10/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Hiérarchie entre fonctions
Hiérarchie élémentaire
f est logarithmique si f (n) = O(log(n)O(1))
f est polynomiale si f (n) = O(nO(1))
f est exponentielle si f (n) = Ω(exp(Ω(n)))
11/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Hiérarchie entre fonctions
Hiérarchie intermédiairePire que polynomiale ...
f est super-polynomiale si f (n) = Ω(nω(1))
f est sous-exponentielle si f (n) = O(exp(o(n)))
... moins pire qu’exponentielle
La fonction Lx [α, c] = exp(c · (x)α(log x)1−α)
polynomiale si α = 0exponentielle si α = 1sous-exponentielle et super-polynomiale sinon
12/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Exemples
13/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Efficacité en pratique
En pratique
logarithmique : toujours facile
polynomial : facile (si l’exposant reste petit)
sous-exponentiel, super-polynomial : très difficilepossible jusqu’à une taille critique
exponentiel : extrêmement difficiletrès vite impossible en pratique
14/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Efficacité en pratique
Faisable = Polynomial
Pour être utilisable, un algorithme doit êtrepolynomial en moyennesuper-polynomial dans le pire des casimplémentable facilementefficace en pratique
15/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Définition• Complexité des algorithmes• Hiérarchie entre fonctions
Exemples de complexités
16/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Exponentiation• Algorithme d’Euclide• Algorithme d’Euclide étendu
Exponentiation
Algorithme naïfCalcul de n − 1 multiplications successives :
xn = x · x · x . . . x
Idée
Décomposer len écriture binaire : n = 16 = 24
x16 =
(((x2)2)2
)2
4 multiplications au lieu de n = 24 = 16
17/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Exponentiation• Algorithme d’Euclide• Algorithme d’Euclide étendu
Exponentiation
Exemple
Pour calculer x11 :
11 = 8 + 2 + 1 = 23 + 21 + 20
Calcul de 1, x2, x8 =((
x2)2)2
x11 = x8 · x2 · x
18/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Exponentiation• Algorithme d’Euclide• Algorithme d’Euclide étendu
Algorithme d’Euclide
ButAlgorithme de calcul du d =pgcd(a, b).
PGCDDéfinition : plus grand entier d divisant à la fois a et bPropriétés : si a > b alors on a a = bq + r
les diviseurs communs à a et b sont les mêmes que lesdiviseurs communs à b et rdonc pgcd(a, b) = pgcd(b, r)
19/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Exponentiation• Algorithme d’Euclide• Algorithme d’Euclide étendu
Algorithme d’Euclide : Exemple
20/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Exponentiation• Algorithme d’Euclide• Algorithme d’Euclide étendu
Algorithme d’Euclide étendu
ButAgorithme de calcul des coeficients (u, v) tels que
au + bv = d = pgcd(a, b)
Théorème de BézoutDéfinition : (u, v) sont les coefficients de Bézout pour lesdeux entiers naturels a et bPropriétés : a et b sont premiers entre eux si et seulement s’ilexiste deux entiers relatifs (u, v) tels que au + bv = 1.
21/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Exponentiation• Algorithme d’Euclide• Algorithme d’Euclide étendu
Algorithme d’Euclide étendu : Exemple
22/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Primalité
DéfinitionUn nombre p est premier si ses seuls diviseurs positifs sont p et 1.
Liste : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, . . .
PropriétésEntre n et 2n, il y a toujours un nombre premier.Un nombre pair est toujours la somme de 2 premiers.Un nombre impair (>5) est la somme de 3 premiers.
Théorème d’EuclideIl existe une infinité de nombres premiers.
23/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Décomposition en facteurs prémiers
Théorème fondamental de l’arithmétiqueTout entier n s’écrit de façon unique comme produit de puissancesde nombres premiers :
n =k∏
i=1
pαii
PGCD
Si a =∏
i pαii et b =
∏i p
βii , alors :
pgcd(a, b) =∏i
pmin(αi ,βi )i
Théorème GaussSi p est premier et p|ab alors p|a ou p|b.
24/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Distribution des nombres premiers
QuestionIl existe une infinité denombres premiers.(Euclide)
Comment sont-ilsrépartis ? ? ?
25/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Distribution des nombres premiers
Théorème des nombres premiersSoit π(n) le nombre de nombre premiers inférieurs ou égaux à n.
π(n) ∼∫ n
2
dx
ln n∼ n
ln n+
n
(ln n)2 +2n
(ln n)3 + . . .
26/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Distribution des nombres premiers
En pratiqueLe nombre de premiers inférieurs à n est de l’ordre de n/ ln n.
Conclusions :il y a environ 21014 nombres premiers de 1024 bitsla probabilité qu’un nombre x soit premier est proche de1/ ln n,probabilité de 1/710 pour un entier de 1024 bits
27/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Arithmétique modulaire
Le "groupe de l’horloge"Heures :
2h + 5h = 7h9h + 4h = 1h mod 12h8h + 12h = 8h
Minutes :45 + 25 = 10 mod 60 min50 + 30 = 20 mod 60 min
28/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Addition modulaire Z7
29/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Groupe additif (Zn,+)
(Zn,+) forme un groupe commutatif d’ordre n.
DéfinitionUn groupe est un couple ensemble-loi de composition(G, ?) qui vérifie
associativité : ∀a, b, c ,∈ G : (a ? b) ? c = a ? (b ? c)
élement neutre : ∃e ∈ G,∀a ∈ G : a ? e = e ? a = a
inversion : ∀a ∈ G,∃b ∈ G : a ? b = b ? a = e
Propriétéscommutativité : ∀a, b, c ,∈ G : a ? b = b ? a
ordre de G : nombre d’éléments du groupe G
30/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Multiplication modulaire Z7
31/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Multiplication modulaire Z7 et Z8
32/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Anneau (Zn,+, ·)(Zn,+, ·) forme un anneau commutatif.
DéfinitionUn anneau est un triplet, ensemble et deux lois de composition,(G,+, ·) qui vérifie
(G,+) est un groupe commutatif avec élement neutre 0associativité : ∀a, b, c ,∈ G : (a · b) · c = a · (b · c)
élement neutre : ∃e ∈ G,∀a ∈ G : a · e = e · a = a
distributivité : ∀a, b, c ∈ G : a · (b + c) = a · b + a · c
Propriétésanneau commutatif : ∀a, b, c ,∈ G : a · b = b · aélément inversible : a 6= 0 est inversible par rapport à · si∃b ∈ G : a · b = b · a = e
33/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Inverse modulaire Z7
Inverse de a modulo n :
entier b = a−1 tel que
a× b = 1 mod n
34/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Inverse modulaire Z8
35/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Inverse modulaire Z6
36/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Éléments inversibles
DéfinitionZ?n = l’ensemble des éléments inversibles modulo n.
Attention ! Z?n 6= Zn \ 0
ExemplesZ?7 = 1, 2, 3, 4, 5, 6 : tous les éléments sont inversiblesZ?6 = 1, 5 : on a Z?6 6= Z6 \ 0
Groupe multiplicatif Z?n(Z?n, ·) forme un groupe multiplicatif.
37/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Critère d’inversibilité
QuestionQuels sont les entiers inversibles modulo n ?
Critèrex ∈ Z?n est inversibles modulo n si et seulement si pgcd(x , n) = 1.Preuve : T. Bézout.
Cas de n = p premier : Zp
Les entiers inversibles modulo p :Toutes les éléments non-nuls de Zp sont premiers avec p
Z?p = Zp \ 0
38/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Calcul de l’inverse modulaire
Applications x−1 mod n
Il existe u et v tels que xu + nv = pgcd(x , n) = 1Trouver l’inverse d’un élément revient à calculer u.L’algorithme d’Euclid étendu calcule des coeficients (u, v)
39/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Division modulaire Z?7
Division modulaire = Multiplication par l’inverse modulaire
40/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Corps (Zp,+, ·)
(Zp,+, ·) forme un corps commutatif.
DéfinitionUn corps est ensemble avec deux lois de composition,(G,+, ·) qui vérifient
(G,+) est un groupe commutatif pour l’addition(G \ 0, ·) est un groupe pour la multiplicationdistributivité : ∀a, b, c ∈ G : a · (b + c) = a · b + a · ccorps commutatif : ∀a, b, c,∈ G : a · b = b · a
Théorème - Corps fini Fp
(Zp,+, ·) est un corps, noté Fp, si et seulement si p est premier.
41/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Récapitulatif sur Zn
A retenirDeux cas distincts :
n = p est premier : (Zp,+, ·) est un corpstous les éléments sont inversibles (Euclide)Z?p coïncide avec Zp \ 0
n est composé : (Zn,+, ·) est un anneauseuls les éléments de Z?n sont inversiblesZ?n n’est pas Zn \ 0
42/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Ordre du groupe Z?n
n=p premierTous les éléments non-nuls sont premiers avec p :
Z?p = 1, 2, 3, . . . , p − 1 ordre |Z?p| = p − 1
n composéTous les éléments non-nuls premiers avec n sont dans Z?nLeur nombre est donné par la fonction d’Euler.
43/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Fonction d’Euler
Définitionϕ(n) est le nombre d’entiers de [1, n] qui sont premiers avec n.ϕ(n) désigne l’ordre du groupe multiplicatif Z?n
Propriétéssi p est premier et q premier :
ϕ(p) = p − 1ϕ(pe) = pe−1(p − 1)
ϕ(pq) = ϕ(p)ϕ(q)
44/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Fonction d’Euler
Calcul de ϕ(n)
Formule générale pour n =∏
i pαii :
ϕ(n) =k∏
i=1
(pαii − pαi−1
i
)= n ·
∏p|n
(1− 1
p
)
45/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Exponentiation modulaire
Théorème de LagrangeSi G est un groupe multiplicatif d’ordre n, alors :
∀g ∈ G gn = e
Cas de Z?7
36 = 3× 3× 3× 3× 3× 3 mod 7= 9× 9× 9 mod 7= 2× 2× 2 mod 7= 8 = 1 mod 7
L’ordre de |Z?7| = ϕ(7) = 7− 1 = 6 , d’où 36 = 1 mod 7
46/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Exponentiation modulaire
Petit théorème de FermatPour p premier et tout entier a on a
ap = a mod p
Preuve : aϕ(p) = a(p−1) = 1 mod p, donc ap = a mod p .
Théorème d’EulerPour tout entier n et tout a ∈ Z?n, on a
aϕ(n) = 1 mod n
47/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Exponentiation modulaire
En pratiqueRègles :
Dans une exponentiation modulaire (modulo un entier M), lesexposants doivent être pris modulo ϕ(M).Effectuer les réduction modulaires au fur et à mesure.
48/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Primalité• Arithmétique modulaire• Exponentiation modulaire• Théorème des restes chinois
Théorème des restes chinois
ProblèmePour p et q premiers et a et b entiers on cherche x tel que :
x = a mod p et x = b mod q
Théorème CRT (Chinese Remainder Theorem)
La solution x est unique modulo pq et se calcule par l’algorithmede Gauss :
x = aq(q−1 mod p) + bp(p−1 mod q) mod pq
49/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Fonctions à sens unique• Chiffrement à clé publique• Protocole RSA• Exemple
Fonctions à sens unique
50/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Fonctions à sens unique• Chiffrement à clé publique• Protocole RSA• Exemple
Fonctions à sens unique
PrincipePour une relation y = f (x), calculer y est facile, et retrouver x àpartir de y est difficile sans une "trappe".
QuestionComment construire telles fonctions ?
multiplication ↔ factorisation(p, q)→ p · q facile ↔ n = p · q → (p, q) difficile
Meilleur algorithme connu (crible algébrique) :
O(e1.92(ln n)1/3(ln ln n)2/3
)51/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Fonctions à sens unique• Chiffrement à clé publique• Protocole RSA• Exemple
Chiffrement à clé publique
52/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Fonctions à sens unique• Chiffrement à clé publique• Protocole RSA• Exemple
Chiffrement à clé publique
Protocole• Algorithme de génération des clés KG(`) = (pk, sk)à partir d’un paramètre de sécurité, il produit une paire de clés
• Algorithme de chiffrement E(pk,m) = cproduit le chiffré d’un message m, par la clé publique
• Algorithme de déchiffrement D(sk, c) = mutilise la clé sécrete/privée sk pour retrouver m à partir de c
53/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Fonctions à sens unique• Chiffrement à clé publique• Protocole RSA• Exemple
Protocole RSA
RSA - Génération des clésKG(`) = (pk, sk)
Soit n = p · q (p et q premiers)L’ordre du groupe multiplicatif Z?n = ϕ(n) = (p− 1)(q− 1)
Soit e un entier premier avec ϕ(n) = (p− 1)(q− 1)
Soit d un entier qui satisfait d · e = 1 (mod ϕ(n))
clé publiquen = pq : module publice : exposant public
clé secrète
d = e−1 (mod ϕ(n))
les premiers p et q
54/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Fonctions à sens unique• Chiffrement à clé publique• Protocole RSA• Exemple
Protocole RSA
RSA - ChiffrementE(pk = (e, n),M) = Me (mod n)
RSA - Déchiffrement
D(sk = d,C ) = Cd (mod n)
Vérification
D · C−x = M y r (g r )−x = M (g x)r (g r )−x = M (mod p)
55/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Fonctions à sens unique• Chiffrement à clé publique• Protocole RSA• Exemple
RSA - Exemple simplifié
Deux petits premiers : p = 5 et q = 7• n = 5 · 7 = 35, ϕ(n) = (5− 1) · (7− 1) = 24• e et d : ed = 1 mod 24• ed = 1 : Non, trop petit• ed = 25 : Ok, mais e = d = 5 et alors clé privé = clé publique• ed = 49 : Pareil, e = d• ed = 73 : 73 est premier, raté• ed = 97 : 97 est premier, raté• ed = 121 : 11 au caré, encore raté• ed = 165 : 165 = 5 * 33, et 5 est premier : Ok
• Clé publique = (RSA, 35, 5) • Clé privée = (RSA, 33).
56/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Fonctions à sens unique• Chiffrement à clé publique• Protocole RSA• Exemple
Conseils d’utilisation du RSA
RSA - PrécautionsIl y a de nombreuses manières de mal utiliser RSA et d’ouvrir desfailles de sécurité !
Ne jamais utiliser de valeur n trop petiteNe jamais utiliser d’exposant e trop petitN’utiliser que des clés fortes(p − 1 et q − 1 ont un grand facteur premier)Ne pas chiffrer de blocs trop courtsNe pas utiliser de n communs à plusieurs clés
57/58 Anca Nitulescu [email protected] Introduction à la cryptographie

AlgorithmiqueAlgorithmes pour la crypto
Rappels mathématiquesProtocole RSA
• Fonctions à sens unique• Chiffrement à clé publique• Protocole RSA• Exemple
Attaques RSA
RSA - Attaques mathématiques
factoriser n = pq et par conséquent trouver ϕ(n)et puis d
déterminer ϕ(n) directement et trouver d
trouver d directement (si petit)
attaques "broadcast"
attaques sur modulo n commun
attaques de synchronisation
(sur le fonctionnement du déchiffrement)
58/58 Anca Nitulescu [email protected] Introduction à la cryptographie