Vous êtes sur la page 1sur 9

Le Plan

La cryptographie moderne ✖ Codes avec suite aléatoires


✖ La stéganographie
Michel Van Caneghem ✖ Codes à clé privé – DES – AES
✖ Echanges de clés
Mars 2002 ✖ Codes à clé publique – RSA
✖ Systèmes mixtes
✖ Signature Electronique
✖ La législation en France

c
Turing : des codes secrets aux machines universelles #2 2002 MVC c
Turing : des codes secrets aux machines universelles #2 2002 MVC 1

Codes avec suite aléatoire La stéganographie


suite aléatoire La stéganographie (du grec steganos, couvert et graphein, écriture)
k1, k2, k3, ... c’est l’art de cacher un message au sein d’un autre message de ca-
ractère anodin, de sorte que l’existence même du secret en soit dissi-
s1, s2,s3 mulée. Alors qu’avec la cryptographie habituelle, la sécurité repose sur
mélange le fait que le message ne sera sans doute pas compris, avec la stégano-
si = ci + ki graphie, la sécurité repose sur le fait que le message ne sera pas sans
message doute pas détecté.
c1, c2, c3
De cette manière on peut cacher des messages dans des images
C’est le code parfait. En effet ci ⊕ ki ⊕ ki = ci. Le problème jpeg, de fichiers mp3 ou des films sans que l’on puisse s’en rendre
est comment avoir la même suite aléatoire des deux cotés. compte.(voir démonstration).
Si on utilise un générateur de nombres aléatoires c’est faci- Le site suivant (http ://www.jjtc.com/Steganography/) est un des nom-
lement cassable ! ! On peut par exemple se mettre d’accord breux sites sur le sujet. J’ai utilisé le programme suivant :
sur un document commun [pourquoi pas choisit sur Inter- (http ://linux01.gwdg.de/~alatham/stego.html) [copie sur mon site :
net]. (C’est la méthode utilisée pour le téléphone rouge). .../deug/steganographie]

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)

DES : Data Encryption Standard


✮ Taille des block : 64 bits.
Historique : ✮ Taille de la clé : 56 bits.
✭ Milieu des années 70. ✮ Structure globale :
✭ 1er algorithme de chiffrement pour l’industrie. ✯ Permutation initiale.
✭ Standard américain FIPS 46-2. ✯ Fonction itérée : expansion, substitution, permutation
Principes de base : ✯ Nombre d’itérations : 16.
✯ Key schedule : 16 sous-clé de 48 bits.
✭ Produit de substitutions/transpositions.
✭ Chiffrement à la Feistel : itération de la fonction de chif-
frement.

c
Turing : des codes secrets aux machines universelles #2 2002 MVC 4 c
Turing : des codes secrets aux machines universelles #2 2002 MVC 5

DES – Algorithme global DES – Important

C’est le même algorithme qui code et qui décode. En effet,


même si f est une fonction nonlinéaire, dont on ne connait
pas l’inverse, on a :

< Li+1, Ri+1 >=< Ri, Li ⊕ f (Ki, Ri) >

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é

Ce code n’était valable que jusqu’en 1995. On se doutait


qu’il allait être cassé. Cela a été fait en 1999 :

Breaking the previous record of 56 hours, Distributed.Net, a


worldwide coalition of computer enthusiasts, worked with
the Electronic Frontier Foundation’s (EFF) "Deep Crack,"
a specially designed supercomputer, and a worldwide net-
work of nearly 100,000 PCs on the Internet, to win RSA Data
Security’s DES Challenge III in a record-breaking 22 hours
and 15 minutes. EFF’s "Deep Crack" and the Distributed.Net
computers were testing 245 billion keys per second when
the key was found.

c
Turing : des codes secrets aux machines universelles #2 2002 MVC 8 c
Turing : des codes secrets aux machines universelles #2 2002 MVC 9

Une solution : Triple DES L’avenir AES


AES : Advanced Encryption Standard
Processus de sélection :
✰ 1/1997 : Appel à candidature.
✰ 8/1998 : Fin des candidatures.
✰ 8/1998 - 8/2000 : Analyse des candidats.
Avantages : ✰ 8/2000 : Sélection de l’AES.
✫ Compatibilité ascendante. Le choix final : Rjindael. Rijndael is a block cipher, desi-
✫ Rapidité. gned by Joan Daemen and Vincent Rijmen as a candidate
✫ Algorithme bien connu. algorithm for the AES. Rijndael can be implemented very
✫ En théorie 112 bits (conforme à la législation française) efficiently on a wide range of processors and in hardware.
FIPS-197 (Nov-2001) http ://csrc.nist.gov/encryption/aes/
c
Turing : des codes secrets aux machines universelles #2 2002 MVC 10 c
Turing : des codes secrets aux machines universelles #2 2002 MVC 11
Codes basés sur les puissances modulaires Codes basés sur les puissances modulaires (2)

Un exemple avec p = 2633 et e = 29.


✝ Soit p un nombre premier (p est connu)
✝ Soit e un entier, tel que e ∧ (p − 1) = 1 (e est votre clé c = CECI EST... = 020402080418... = C1C2C3...
secrète)
S1 ≡ 20429 ≡ 1566 (mod 2633)
Soit C le message en clair, et S le message codé (secret). S2 ≡ 20829 ≡ 1846 (mod 2633)
On code le message ainsi :
e S3 ≡ 41829 ≡ 177 (mod 2633)
S≡C (mod p)
Soit d tel que : de ≡ 1 (mod p − 1) d existe car e et p − 1 sont Pour décoder : d ≡ 29−1 ≡ 2269 (mod 2632)
premiers entre eux. d est la clé de décodage
d e d ed 1+λ(p−1)
C1 ≡ 15662269 ≡ 204 (mod 2633)
S ≡ (C ) ≡ C ≡C ≡
C2 ≡ 18462269 ≡ 208 (mod 2633)
λ(p−1) (p−1) λ
≡C ×C ≡ C × (C ) ≡C (mod p)
C3 ≡ 1772269 ≡ 418 (mod 2633)
c
Turing : des codes secrets aux machines universelles #2 2002 MVC 12 c
Turing : des codes secrets aux machines universelles #2 2002 MVC 13

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

Fonction trappe Codes à clé publique : envoi de message

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

Code RSA (2) Code RSA (3)

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)

Soit m = 688232687966668. On découpe m en m1 = 688, m2 =


x × xλΦ(n) ≡ x × (xΦ(n))λ ≡ x (mod n) 232, m3 = 687, m4 = 966, m5 = 668
Le théorème d’Euler mis à contribution.
On a c1 = 68879 (mod 3337) = 1570 de même c2 = 2756, c3 =
Pour calculer d, il faut pouvoir calculer Φ(n), ce qui n’est 2091, c4 = 2276, c5 = 2423.
possible que si on connait p et q. Hors ces nombres n’appa-
Le déchiffrement du message se fait en calculant : c1 =
raissent pas dans l’algorithme de f . Le calcul de d repose
15701019 (mod 3337) = 688, etc.
sur la difficulté de factoriser un nombre.

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

Signature numérique Signature numérique (2)


*pQpUDWLRQGHVLJQDWXUH 9pULILFDWLRQGHVLJQDWXUH

➤ Une signature est authentique ; 0HVVDJH


0HVVDJHUHoX

➤ Une signature ne peut pas être falsifiée ;


➤ Une signature n’est pas réutilisable ; )RQFWLRQGHKDFKDJH )RQFWLRQGHKDFKDJH

➤ Un document signé est inaltérable ;


➤ Une signature ne peut pas être reniée.
&RQGHQVDWGXPHVVDJH &RQGHQVDWGXPHVVDJH

&Op 6LJQDWXUH 6LJQDWXUH &Op

'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

Combien faut-il de personnes pour que la probabilité que


h = H(M) deux personnes soient nées le même jour de l’année soit
Elle doit avoir les propriétés suivantes : supérieure à 0.5.
✥ Etant donné M, il est facile de calculer h.
Probabilité pour que cela ne se produise pas (n le nombre
✥ Etant donné h, il est très difficile de calculer M.
de jour de l’année) :
✥ Etant donné M, il est très difficile de trouver M0 tel que
✫ 1ère personne : p = 1 = n/n
H(M) = H(M0).
✫ 2ème personne : p = (n − 1)/n
Les 2 principales méthodes sont :
✫ 3ème personne : p = (n − 2)/n
✽ SHA-1 qui produit une empreinte (ou condensat) de 160
✫ ...
bits.
✫ rème personne : p = (n − r + 1)/n
✽ MD5 qui produit une empreinte de 128 bits
On trouve alors p(r) = 1 − n(n − 1)(n − 2) . . . (n − r + 1)/nr
c
Turing : des codes secrets aux machines universelles #2 2002 MVC 28 c
Turing : des codes secrets aux machines universelles #2 2002 MVC 29

Le paradoxe de l’anniversaire (2) Secure Hash Algorithm

On trouve : SHA-1 : Standard fédéral pour le traitement de l’information


(américain) FIPS (fip180-1)[1995].
✬ pour r = 23 on trouve p = 0.507
✬ pour r = 50 on trouve p = 0.97
✬ pour r = 100 on trouve p = 0.9999996928

Il n’y a pas d’attaque cryptographique connue contre SHA

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

Digital Signature Algorithm (3) La législation en France

g q ≡ hp−1 ≡ 1 (mod p) Décret 99-200 of 17 March 1999


Vérification de la Signature (http ://www.internet.gouv.fr/francais/textesref/cryptodecret99200.htm)
précise les opérations dispensées de toute formalité préa-
w ≡ s−1 (mod q)
lable. En gros limite la taille de la clé à 128 bits. (Mon com-
u1 ≡ H(M0)w (mod q) mentaire : attention au vocabulaire, 2128 = 1039, c’est beau-
u2 ≡ rw (mod q) coup, mais factoriser un nombre de 128 bits c’est facile ! ! !).
Ne concerne pas la signature électronique.
v = ((g u1 y u2 mod p) mod q)
Si v = r alors la signature est vérifiée Décret 99-199 of 17 March 1999
(http ://www.internet.gouv.fr/francais/textesref/cryptodecret99199.htm)
w ≡ s−1 ≡ k(H(M0) + xr)−1 (mod q)
OPÉRATIONS pour lesquelles la déclaration se substitue à
xu2 + u1 ≡ xrw + H(M0)w ≡ w(xr + H(M0)) ≡ k (mod q) l’autorisation.
g u1 y u2 ≡ g u1 g xu2 ≡ g u1+xu2 ≡ g k (mod p)
c
Turing : des codes secrets aux machines universelles #2 2002 MVC 34 c
Turing : des codes secrets aux machines universelles #2 2002 MVC 35

Vous aimerez peut-être aussi