Académique Documents
Professionnel Documents
Culture Documents
c
Turing : des codes secrets aux machines universelles #2
2002 MVC c
Turing : des codes secrets aux machines universelles #2
2002 MVC 1
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 2 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 3
DES DES (2)
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 4 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 5
On en déduit :
Ri = Li+1
Li = Ri+1 ⊕ f (Ki, Ri) = Li ⊕ f (Ki, Ri) ⊕ f (Ki, Ri) = Li
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 6 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 7
DES – Fonction itérative DES – La sécurité
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 8 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 9
Codes basés sur les puissances modulaires (3) Codes basés sur les puissances modulaires (4)
Temps de codage-décodage : Il s’agit de calculer une puis- Pour casser le code : Si on a : S ≡ C e (mod p), il s’agit de
sance modulaire (exposant < p) sur des nombres dont la trouver e, connaissant S, C, P . On dit qu’il s’agit de trouver
taille est inférieure à p. Il faut log 2 p multiplication sur des le logarithme en base C, modulo p. Ce problème est très dif-
nombres de taille log 2 p. ficile à résoudre et aussi compliqué que celui de factoriser
Par exemple si log 2 p = 128, alors un nombre est codé sur 4 un nombre (Voir RSA).
mots de 32 bits, il faut donc 16 multiplications. Le nombre Actuellement le record de factorisation est obtenu pour un
d’opérations totale est donc de 128 × 16 = 2048 multiplica- nombre de 512 bits (155 chiffres) (1999) : Trois cents ordina-
tions. teurs divers (stations de travail et PC) ont travaillé à ce ré-
Taille du nombre p : sultat cumulant un total de calcul évalué à 8 000 Mips année
(1 Mips = un million d’instructions par seconde). Le dérou-
210 ≈ 103 p ≈ 2130 ≈ (210)13 ≈ 1039 lement des opérations s’est étalé sur une période de trois
mois et demi.
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 14 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 15
Echange de clé Codes à clé publique
2 personnes Alice et Bernard veulent échanger une clé se- Si on arrive à envoyer facilement des clés, il se pose le pro-
crète de manière publique. Soit p un nombre premier et a tel blème du nombre de clés : si n personnes veulent commu-
que p ∧ a = 1. Voici le protocole : niquer, il faudra n2 clés.
✗ A choisit k1 avec k1 ∧ p = 1. D’ou l’idée de la clé publique : Chaque clé est composée de
✗ B choisit k2 avec k2 ∧ p = 1. 2 parties : une partie publique (que tout le monde connait :
✗ A calcule y1 ≡ ak1 (mod p) et envoie y1 à B annuaire) et une partie privée. Ainsi n personnes peuvent
✗ B calcule y2 ≡ ak2 (mod p) et envoie y2 à A communiquer avec seulement n clés ! !
✗ A calcule K ≡ y2k1 ≡ ak1k2 (mod p)
Avec un tel système se pose le problème de l’authentifica-
✗ B calcule K ≡ y1k2 ≡ ak1k2 (mod p)
tion de l’émetteur du message. Nous allons montrer qu’un
Avec yi on ne peut pas retrouver ki tel système peut se réaliser avec des fonctions trappe
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 16 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 17
idée émise en 1976, par W. Diffie et M. Hellman. Une fonction Alice (clé publique fA) veut envoyer un message M à
trappe est une fonction sur les entiers : y = f (x) telle que : Bernard (clé publique fB ).
✙ Il existe f −1 c’est à dire que x = f −1(y)
✙ Il existe un algorithme efficace pour calculer f et f −1 ✦ A calcule S = fB (M ) et envoi S à B
✙ Si f et son algorithme de calcul sont connus, il est impos- ✦ B calcule C = fB−1(S) = fB−1(fB (M )) = M et ainsi dispose
sible (ou très difficile) de découvrir l’algorithme inverse du message en clair.
✦ Seul celui qui connait fB−1 peut décoder le message : c’est
mais ils ne proposent pas de fonctions satisfaisante.
à dire B
f est la clé publique et f −1 est la clé privée.
Mais B n’est pas sur que c’est bien A qui a envoyé le mes-
sage.
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 18 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 19
Codes à clé publique : envoi de message (2) Code RSA
Alice (clé publique fA) veut envoyer un message M à en 1977 D.Rivest, A. Shamir et L. Adleman proposent une
Bernard (clé publique fB ). fonction trappe intéressante :
Soit e un entier. On Choisit deux nombres premiers p et q
✦ A calcule M 1 = fA−1(M )
tels que e ∧ Φ(n) = 1. On pose n = pq. La fonction publique
✦ A calcule S = fB (M 1) et envoi S à B
est définie par :
✦ B calcule C1 = fB−1(S) = fB−1(fB (M 1)) = M 1 f (x) = xe (mod n)
✦ B calcule C = fA(M 1) = fA(fA−1(M )) = M
✦ Seul celui qui connait fB−1 peut décoder le message : c’est Calcul de la fonction privée inverse sera :
à dire B
✦ Seul celui qui connait fA−1 a pu envoyer le message : c’est f −1(x) = xd (mod n)
à dire A
reste à trouver d
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 20 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 21
Si on pose de ≡ 1 (mod Φ(n)). d existe car e est premier Φ(n). Un exemple : p = 47, q = 71, n = pq = 3337, (p − 1)(q − 1) =
(remarque : Φ(n) = (p − 1)(q − 1)). Alors : 3220, e = 79, d = 1019
(xe)d ≡ xde ≡ x1+λΦ(n) ≡ clé publique = (79, 3337) et clé privée = (1019, 3337)
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 22 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 23
Analyse de RSA Système mixte
L’analyse est la même que celle des codes basés sur la puis-
clé publique clé privée
sance modulaire. Ce code n’est pas parfait :
RSA RSA
✧ Temps de codage assez lent, beaucoup plus lent que
le DES par exemple : calcul sur des grands nombres. clé aléatoire clé
(Toutes les fonctions nécessaires existent dans la biblio-
thèque Java et bien sûr dans Maple). DES FICHIER
FICHIER DES
✧ La sécurité est basé sur le fait qu’actuellement, il n’existe
pas d’algorithmes efficaces pour factoriser de grands
nombres (record 155 chiffres = 512 bits), mais on ne sais
Une clé différente pour chaque fichier envoyé ==> sécurité
jamais... (ordinateur quantique ! !).
et efficacité. La clé communiqué par RSA. Cartes bancaires
✧ Pour une grande sécurité, il est conseillé 512 ou 1024
et PGP (RSA + IDEA).
bits.
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 24 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 25
'6$ '6$
3ULYpH 1XPpULTXH 1XPpULTXH 3XEOLTXH
6LJQDWXUHYpULILpHRXQRQ
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 26 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 27
Fonction de hachage Le paradoxe de l’anniversaire
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 30 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 31
Digital Signature Algorithm Digital Signature Algorithm (2)
Le DSA est également une proposition du FIPS (fips186)[1994] Signature
pour le standard DSS (Digital signature Standard). ➣ On choisit pour chaque message un nombre aléatoire k
tel que k < q ;
Clef publique générale
➣ On calcule r premier élément de la signature tel que :
➢ p nombre premier de 512 à 1024 bits ;
➢ q facteur premier de p − 1 de 160 bits ; r = (g k mod p) mod q
➢ g = h(p−1)/q mod p avec h < p − 1 et g > 1.
Remarque : r ne dépend pas du message.
Je vous donne les trois nombres p, q, g
➣ On calule s deuxième élément de la signature tel que :
Clef privée personnelle
s = (k −1(H(M) + xr)) mod q
➣ x nombre aléatoire tel que x < q ;
Clef publique personnelle Il est important de choisir un nombre k différent pour
➤ y = g x mod p ; chaque message.
c
Turing : des codes secrets aux machines universelles #2
2002 MVC 32 c
Turing : des codes secrets aux machines universelles #2
2002 MVC 33