Vous êtes sur la page 1sur 61

Cours cryptographie

FST-SBZ Master CO2/ Dernière partie


Med T. IlehY
2019-2020

1
Terminologie
• Cryptologie: Branche de l'informatique théorique qui
s’intéresse à la transmission secrête des données

• Cryptographie: Partie de la cryptologie qui s’intéresse


au chiffrement

• Cryptanalyse: Partie de la cryptologie qui s’intéresse


au déchiffrement

2
Notion de base- Définitions
• Cryptosystèmes : Mécanismes assurant les services requis
• Cryptographie : Art de concevoir des cryptosystèmes
• Cryptanalyses : Art de casser des cryptosystèmes
• Cryptologie : Science qui étudie les deux arts précédents.
• Chiffrement : Le chiffrement consiste à transformer une donnée
(texte, message, ...) an de la rendre incompréhensible par une
personne autre que celui qui a créé le message et celui qui en est le
destinataire.
• Déchiffrement : La fonction permettant de retrouver le texte clair à
partir du texte chiffré.
Steganographie : cacher le message pour que l’ennemi ne le trouve
pas.

3
Domaines inclus dans la cryptologie

4
Historique
• Jules César(Rome, 100-44 avant J.-C.)
Employait une substitution simple avec l’alphabet normal (il s’agissait
simplement de décaler les lettres de l’alphabet d’une quantité fixe) dans
les communications du gouvernement

• Arthur Scherbius(Allemagne)
Fait breveter sa machine à chiffrer Enigma

• Whitfield Diffie et Martin Hellman(1976)


publient ’New Directions in Cryptography’, introduisant l’idée de
cryptographie à clef publique. Ils donnent une solution entièrement
nouvelle au problème de l’échange de clefs.

5
RSA
• Ron Rivest, Adi Shamir et Leonard Adleman( 1977)
L’algorithme RSA basé sur la difficulté de factoriser un nombre n en deux
nombres premiers p et q. Il utilise les notions de théorie des nombres. Il
existe encore a nos jours.

• La machine allemande Enigma a joué un grand rôle pendant la guerre de


l’Atlantique, et son décryptage par les alliés leur a assuré bon nombre de
victoires (notamment parce que les Allemands ne se doutaient pas que
leurs messages étaient déchiffrés).
Enigma ressemble à une machine à écrire : on frappe le clair sur un
clavier, et des petites lampes s’allument pour éclairer les lettres résultant
du chiffrement.

6
ENIGMA
La première version d’ENIGMA était utilisée comme suit.

Agencement des 3 rotors.


123, 132, 213, 231, 312, 321
6 possibilités.

Position des trois rotors, 3 lettres.


26x26x26=17 576 possibilités.

Connexions des fiches (6 connexions).


100 391 791 500 possibilités.

Exemple de clef: (231,DFT,AD,BE,CM,FY,UI,LP)

Nombre total de clefs:


6 * 17 576 * 100 391 791 500=10 586 916 764 424 000
10 million de milliard de possibilités…
7
Briser ENIGMA
Sur une période de 10 ans, les Allemands se dotèrent de
plus de 30 000 machines ENIGMA.

ENIGMA est un véritable cauchemar pour les


cryptanalystes.

Toute attaque statistique est inutile puisque chaque lettre


du message est chiffré de façon différente.

Inutile d’essayer de deviner la clef. Il y en a trop.

La plupart des cryptanalystes abandonnèrent rapidement


espoir de briser ENIGMA. Il y avait une exception. Les
Polonais avaient peur d’une invasion Allemande. Pour eux,
briser ENIGMA était vitale. 8
Briser ENIGMA
Les services de renseignement polonais ont obtenu par
l’intermédiaire d’un informateur une description de la
machine, ainsi que son mode d’utilisation.

Un livre de code donnait pour chaque jour la clef utilisée.


Pour éviter que tous les utilisateurs d’ENIGMA utilisent la
même clef, l’opérateur choisissait trois lettres au hasard
qu’il chiffrait avec la clef du jour, deux fois. Ensuite la
position des rotors était modifiée en fonction de ces trois
lettres.

Chaque message était donc chiffré avec une clef


différente.
9
Briser ENIGMA

Le code ENIGMA fut brisé en décembre 1932 par


Marian Rejewski, travaillant pour les services de
renseignement polonais. A partir de 1933, les
Polonais ont réussi a déchiffrer des milliers de
messages allemands.

Les Polonais on réussi là ou les autres services de


renseignement ont échoué.
Marian Rejewski

10
Les menaces actives
Appartiennent principalement à quatre catégories
• Interruption : problème lié à la disponibilité des
données
• Interception :problème lié à la confidentialité des
données
• Modification : problème lié à intégrité des
données
• Fabrication : problème lié à authenticité des
données

11
Les menaces actives (figure)

12
Rappel : objectifs de la sécurité

• Condentialité : l’information n’est connue que


des entités communicantes
• Intégrité : l’information n’a pas été modiée
entre sa création et sontraitement (en ce
compris un éventuel transfert)
• Disponibilité : l’information est toujours
accessible et ne peut être bloquée/perdue

13
Formalisation

• M : suite de caractères (message)


• Fonction de chiffrement
E(M)=C
• Fonction de déchiffrement
D(C)=M
• On doit avoir D(E(M))=M

14
Algorithme cryptographique
• Paire de fonctions utilisées pour le chiffrement et le
déchiffrement.
• Algorithme restreint: l'algorithme est secret
– Cela n'est plus utilisé
– La conception d'un tel algorithme nécessite un expert
– On ne peut utiliser d'algorithmes commerciaux
– Différents algorithmes pour différents utilisateurs.

15
Clef cryptographique
• Valeur K provenant d'un grand ensemble de valeurs possibles
(espace des clefs).

• En général on a besoin de deux clefs


– K1 : pour le chiffrement
– K2 : pour le déchiffrement

• L'algorithme cryptographique est connu de tous mais dépend


des deux clefs:
– EK1(M)=C
– DK2(C)=M

16
Clef cryptographique

K1 K2

M C M
Chiffrement Déchiffrement

Le secret réside dans la (ou les) clef(s) et non dans les


détails de l'algorithmes.

17
Deux types d'algorithmes
• Algorithmes à clef secrète
– K1 peut être calculé à partir K2 et vice versa.
– On a souvent K1=K2
– K1 et K2 doivent être secrètes

• Algorithmes à clef publique


– K1K2
– K2 ne peut pas être calculé à partir de K1
– K1 peut être publique
– K2 doit être secrète (clef privée)

18
Algorithmes à clef secrète

• Chiffre à substitution: Chaque caractère du message est remplacé par un


autre caractère.

– Exemple: Chaque caractère du message est remplacé par celui qui se trouve K
places plus loin (modulo 26)
• Code de Jules César: K=3

– Si le message est en binaire, on peut le segmenter en blocs de longueur L et


remplacer chaque bloc B par
(B+K) mod 2L
où K < 2L est la clef.

– Machines à rotors (Enigma)

19
Chiffrement/ clef secrète
Une des principales méthodes pour assurer la
confidentialité des données est le chiffrement.

Les méthodes de chiffrement offrent deux outils qui


fonctionnent à partir d’une clé :

C := EK(M) chiffre le message M avec la clé K ;

DK’(C) déchiffre le message C avec la clé K’.

Nous voulons que, sans connaître la clé K, C=EK(M) ne


donne pas d’information sur M.

20
Chiffres symétriques
Un chiffre est appelé symétrique si la clé de chiffrement
est la même que celle pour le déchiffrement.

La clé peut être réutilisée pour le chiffrement de plusieurs


messages.

Ces systèmes sont habituellement très performants!

La longueur des clés secrètes doit être assez grande pour


exclure la recherche exhaustive des clés. Ceci n’est
cependant pas une garantie de sécurité...

21
Algorithme à clef secrète
• Chiffre à transposition: Les caractères du message sont
inchangés mais leur position est modifiée.
– Exemple (transposition simple en colonne):

"L'assassin est le docteur Matrix, regardez derrière l'horloge"

LASSASSIN
ESTLEDOCT
EURMATRIX
REGARDEZD
ERRIERELH
ORLOGE

22
Substitution++
Différentes techniques peuvent être utilisées pour rendre le
chiffrement par substitution plus sécuritaire tout en gardant
une clef de taille raisonnable.

Premièrement, on peut utiliser des synonymes. Par exemple,


la lettre E se retrouve 14% du temps et on pourrait utiliser
14 symboles différents pour représenter E et ainsi de suite
pour les autres symboles.
On obtient un code de 100 symboles.

On peut aussi utiliser des blancs (symbole sans signification).

On peut coder certains mots courants par un seul symbole.

etc.… 23
Marie Stuart
En 1586, Marie Stuart, reine d’Écosse fut
jugée en Angleterre.

Elle était accusée d’avoir comploté pour


assassiner la reine Elizabeth.

Le complot eut lieu durant son


emprisonnement en Angleterre mais Marie
utilisait le chiffrement lors de ses
communications avec ses complices.

La Reine était réticente a exécuter Marie car


elle était sa cousine. Le déchiffrement des
lettres rendrait la preuve accablante et ne
laisserait aucune chance à Marie.

24
Code de Marie Stuart

25
Marie Stuart
Gifford transmettait secrètement les lettres de Marie
mais c’était en fait un agent double et il transmettait
aussi les lettres au services de renseignement de la
Reine qui réussirent a briser le code utilisé par Marie.

En plus de lire toute sa correspondance et


d’apprendre le contenu, ils ont falsifié un message
demandant explicitement la liste des personnes
impliquées.

Ils furent tous exécutés, incluant Marie. La preuve


était accablante. 26
Le chiffre indéchiffrable
Au 16ième siècle, on brisait les codes de façon routinière. La balle était
dans le camp des cryptographes. Vigenère inventa un code simple et
subtile. Il s'agit d’une amélioration du chiffre par décalage. On choisit un
mot de code par exemple ALAIN et on l’utilise pour chiffrer.

ALAIN=1,12,1,9,14
ALAINALAINALAINALAINALAINALAINALAINALAINA
LE_CODE_DE_VIGENERE_EST_IL_INDECHIFFRABLE
MQALBEQAMSAGJPSOQSNNFDUIWMLJWRFOIRTGCBKZF

Clairement, une attaque statistique simple ne fonctionnera pas. Si le mot


de code est suffisamment long (une phrase), essayer toutes les clefs est
aussi impossible.

Le chiffre de Vigenère est-il indéchiffrable?


27
Briser le chiffre indéchiffrable!

Les cryptanalystes furent déjoués


pendant près de 3 siècles par le
chiffre de Vigenère.

Au 19ième siècle, Charles Babbage


réussit à le briser.

La technique est relativement simple.

28
Masque jetable
Peut-on avoir un cryptosystème ayant une
confidentialité absolue et qui soit impossible à briser?

Qu’arrive-t-il si on utilise le chiffre de Vigenère avec


une clef aussi longue que le message?

Avec une clef aléatoire, on obtient le masque jetable.

Pour être inconditionnellement sécuritaire, la clef doit


être choisie aléatoirement et être utilisée une seule
fois.
29
Sécurité du masque jetable

Si la clef est: 12,7,24,3,26,11,5,21,0,25


ALAIN_TAPP devient MSYLMKYVPN
Pour toute interprétation du message, il existe une clef la
justifiant.
Avec la clef: 11,4,11,2,25,22,20,22,16,14

BONJOUR___ devient MSYLMKYVPN


C’est Shannon en 1949 qui a démontré formellement que
le masque jetable est inconditionnellement sécuritaire.
L’inconvénient du masque jetable est la taille nécessaire
de la clef.
30
Cryptosystème a clef courte
Principe de Kerckhoff
(La cryptographie militaire 1883):

La sécurité d’un système de cryptographie ne doit


pas dépendre de la préservation du secret de
l’algorithme. La sécurité ne repose que sur le secret
de la clef.

Le masque jetable n’est pas pratique.

Peut-on chiffrer avec une clef courte de façon


sécuritaire? 31
Problème de l’échange de clef
Même avec un cryptosystème très sécuritaire, un
problème subsiste. Il faut distribuer les clefs secrètes
qui seront utilisées sans qu’elles soient interceptées par
des curieux. Ces clefs peuvent être échangées à l’aide
d’un courrier diplomatique ou en temps de guerre, elles
peuvent être distribuées aux unités avant leur départ.

Qu’arrive-t-il si on manque de clefs?

Pas très pratique sur Internet!

Y a-t-il une solution?


32
Cryptologie à clef publique
• Clef publique K1

• Clef privée K2

• Fonction de chiffrement: EK1(M)

• Fonction de déchiffrement: DK2(C)

• DK2(EK1(M)) = EK1(DK2(M)) = M

33
Cryptographie à clef publique

Alice Ève Bob


Privé!

Privé!

Privé!

Privé!
34
Comment cela fonctionne?
• Chaque utilisateur doit posséder une clef publique et
une clef privée.

• Si Alia veut envoyer un message M à Bechir elle


utilise la clef publique K1 de Bechir et envoie:
C = EK1(M)
• Bechir reçoit C et utilise sa clef privée K2 pour
calculer:
M = DK2(C)

35
Arithmétique modulaire
x  y(mod n) ssi x  kn  y avec y  n
27  3 * 7  6 alors 27  6(mod 7)
x(mod n)  y(mod n)  x  y(mod n)
9  11  20  6(mod 7) et
9(mod 7)  11(mod 7)  2  4  6(mod 7)

x(mod n)  y(mod n)  x  y(mod n)


9*11  99  14*7  1  1(mod 7) et
9(mod 7)  11(mod 7)  2*4  8  1(mod 7)
36
Exponentiation modulaire
Comment calculez 16578923456781 (mod 456712)

x  8
 x  
2
2 2
donc pour calculer x (2k )
(mod n)

on calcule x  x 2 (mod n) k fois


21  10101  24 + 22 +20 et
52  8(mod 17) 54  13(mod 17)
5  16(mod 17)
8
5  1(mod 17)
16

521 (mod17)  5165451 (mod17)  1 13*5  14(mod17)


37
PGCD
PGCD(a, b) ab
(a, b)  (b, a mod b)
si b  1 alors répondre a

PGCD(42,30)  6 PGCD(105, 45)  5


(42,30) (105, 45)
(30,12) (45,15)
(12, 6) (15,1)
(6,1)

38
Inverse multiplicatif
a 1 mod m avec PGCD( a, m)  1
(m, a,1, 0)
(a, b, c, d )  (b, a mod b, d  c(a div b) mod m, c)
si b  1 alors répondre c
51  8 mod13 7 1  19 mod 22
(13,5,1, 0) (22, 7,1, 0)
(5,3, 0  1*(2) mod13,1)  (5,3,11,1) (7,1, 0  1*(3) mod 22,1)  (7,1,19,1)
(3, 2,1  11*(1) mod13,11)  (3, 2,3,11) 7 *19  133  6* 22  1  1mod 22
(2,1,11  3*(1) mod13,3)  (2,1,8,3)
5*8  40  1mod13

Avec un ordinateur, on calcule le PGCD et l’inverse


multiplicatif de très grands nombres efficacement. 39
Quel est l'avantage?
1. N'importe qui peut envoyer un message à Bechir en utilisant
sa clef publique.

2. Bechir peut utiliser sa clef privée pour signer un message M:


– Il calcule d'abord:
S = DK2(M)
– Puis il envoie à Alia le message:
(M,S)
– Pour vérifier que le message a bien été envoyé par Bechir, Alia calcule:
T = EK1(S)
– Si M = T alors Alia sait que seul Bechir a pu signer ce message et que le
message n'a pas été modifié.

40
Exemple : RSA
(Rivest, Shamir et Adleman 1978)

1. Choisir aléatoirement deux grand nombres premiers p et q différents.


2. Calculer n=pq et (n)=(p-1)(q-1)
3. Choisir un entier e impair relativement premier à (n)
4. Calculer d tel que ed mod (n) = 1
5. Publier la clef publique (e,n)
6. Garder secrète la clef privée (d,n)

• Fonction de chiffrement: E(M) = Me mod n


• Fonction de déchiffrement: D(C) = Cd mod n

41
Étape 1
Comment trouver un nombre premier aléatoire:

1. On choisit un grand nombre impair au hasard


2. On effectue le test de Miller-Rabin pour déterminer s'il est
premier
3. S'il n'est pas premier on l'incrémente de 2 puis on refait
l'étape précédente

Théorème de densité des nombres premiers: Pour tout entier k,


il y a environ k/lg k nombres premiers plus petit que k.

42
Étape 2

Calculer n=pq et (n)=(p-1)(q-1)

Nous avons des algorithmes efficaces pour calculer le produit de


deux grands nombres entiers.

43
Étape 3
On veut un entier e impair et relativement premier à (n).

On choisit e<(n) au hasard puis on appelle Euclide(e, (n)):

Euclide(a,b)
si b=0 alors retourner a
sinon retourner Euclide(b,a mod b)

Si e n'est pas relativement premier à (n) alors on incrémente e


successivement jusqu'à ce que l'on obtienne le nombre désiré.

44
Étape 4
Nous avons besoin de l'algorithme d'Euclide étendu qui permet de trouver trois
valeurs entières (d,x,y) tels que:
t = PGCD(a,b) = ax + by
Euclide_étendu(a,b)
si b=0 alors retourner (a,1,0)
sinon
(t',x',y') = Euclide_étendu(b,a mod b)
retourner (t,x,y) = (t',y',x'- a/b y')

En supposant que l'appel récursif fonctionne correctement on obtient:


t = t' = bx' + (a mod b) y'
= bx' + (a - a/b b) y'

= ay' + b (x' - a/b y')

Ce qui correspond bien aux valeurs retournées par l'algorithme.


45
Étape 4 (suite)

L'algorithme d'Euclide étendu calcule un triplet (t,x,y) tel que:


t = PGCD(a,b) = ax + by

On a donc
1 = PGCD(e, (n)) = ex + (n) y

Ce qui implique
ex mod (n) = 1

Il suffit donc de prendre d=x.

46
Pourquoi cela fonctionne-t-il?
Si M mod p = 0 alors Med mod p = M mod p=0
Sinon

Med mod p = M1+k(p-1)(q-1) mod p (pour un certain k)


= M(M(p-1))k(q-1) mod p
= M(1)k(q-1) mod p (Fermat)
= M mod p

Similairement : Med mod q = M mod q

47
Pourquoi cela fonctionne-t-il?
Theorème du reste chinois:
Soit p1, p2, ..., pk des nombres relativement premiers.
Alors le système d'équations
x = ai mod pi (1i k )
Possède une solution unique modulo n=p1p2...pk

Corollaire:
On a
b = a mod p et
b = a mod q
si et seulement si
b = a mod n

48
Pourquoi cela fonctionne-t-il?

Conclusion: Si M < n=pq alors

Med mod p = M

Med mod q = M

donc par le théorème du reste chinois:

Med mod n = M

49
Utilisation de RSA
• Puisque
D(E(M)) = M mod n
alors on doit avoir M<n

• Pour chiffrer de plus long messages il suffit de le diviser en


blocs M=M1 M2 ... Mt de sorte que Mi<n pour tout 1≤i≤t

• On peut aussi utiliser RSA pour transmettre une clef et ensuite


utiliser un algorithme à clef secrète.

50
Exemple d'utilisation de RSA
• Prenons p=47 et q=71

• n = 3337 et (n) = 4670 = 3220

• Choisissons e=79 et d=1019


(on peut vérifier que ed = 80501 = 1+ 25 3220)

• Pour chiffrer le message 688232687966668 on commence par le diviser en


petit blocs de trois chiffres:
m1 m2 m3 m4 m5 m6 = 688 232 687 966 668

• En utilisant la clef (e,n)=(79, 3337) on calcule le premier bloc:


68879 mod 3337 = 1570 = c1

51
Exemple d'utilisation de RSA

• Les autres blocs sont chiffrés de la même manière et on obtient:

c1 c2 c3 c4 c5 c6 = 1570 2756 2091 2276 2423

• Pour déchiffrer le message on utilise la clef (d,n)=(1019, 3337) et on


obtient pour le premier bloc:
15701019 mod 3337 = 668 = m1

• Le reste du message en clair est obtenu de la même manière.

52
Signature numérique
Nous avons vu que Bechir pouvait signer un message M en utilisant sa clef
privée pour calculer S = D(M) et envoyer (M,S).

En général, M est trop grand pour que ce calcul puisse être effectué de
manière efficace et on veut une signature qui ne soit pas trop longue.

On peut alors utiliser le chaînage par bloc:


1. M est divisé en bloc m1 m2 ... mt de longueur fixe.
2. Calculer s1 = m1d mod n
3. Pour i = 2 à t faire si= (mi  si-1)d mod n
4. La signature est S = st

53
Fonction de hachage à sens unique
En pratique, on ne signe pas le message lui-même mais plutôt une empreinte
digitale obtenue à l'aide d'une fonction de hachage h satisfaisant les
propriétés suivantes:

1. Étant donné M, il est facile de calculer h(M).


2. Étant donné h(M) , il est difficile de calculer M.
3. Étant donné M, il est difficile de trouver un autre message M' tel que
h(M)=h(M').

On exige quelquefois une quatrième propriété:

4. Il est difficile de trouver deux messages aléatoires M et M' tels que


h(M)=h(M').

54
Conséquences
• Casser ce type de cryptage est très très très très très long,
exponentiel en la taille de la clés
• Exemple (taille de la clés, temps logarithmique) :
– (512 bits, 58)
– (1024 bits, 80)
– (2048 bits, 111)
– (4096 bits, 149)
– (8192 bits, 156)
• Environ 2^60 ans pour une clés de 1024 bits soit environ
11529215046 milliards d’années

55/47
Questions générales :
• 1-Quels sont les éléments généraux présents
dans tous les algorithmes déchiffrement
asymétriques ?
• 2-Pour quelles usages utilisent on la
cryptographie symétrique ? Asymétrique ?
• 3-Quels sont les avantages/ inconvénients de
la cryptographie asymétrique par rapport à la
symétrique ?

56
Questions générales (suite)
4-Qu'est ce qu'un chiffrement probabiliste ?
Dans quel cas cela est important ?

5- Qu'est-ce qu'un chiffrement déterministe ?


Donner un exemple.

57
Exemple-0
• Le mode ECB (Electronic Code Book)
Déterminer deux fonctions une pour le
chiffrement et l’autre pour déchiffrement.
Quel est le problème de ce mode ? Proposez
une solution pour ce problème ? Soient M =
101100010100101 message en clair et une clé
K = (1->2, 2->3, 3-> 4, 4->1) par permutation.
Chiffrez le message M.

58
Exemple -1
• Fabrication des clés par RSA L’utilisateur A choisit les
facteurs premiers p = 11 et q = 23. Trouvez n, e et d.

59
Exercice-1
• Bob utilise le protocole RSA et publie sa clé
publique N = 187 et e = 3.
1. Encoder le message m = 15 avec la clé
publique de Bob.
2. En utilisant le fait que ϕ(N) = 160, retrouver
la factorisation de N, puis la clé privée de Bob.

60
Exercice-2
• Effectuer le chiffrement et le déchiffrement en
utilisant l’algorithme RSA pour les valeurs
suivantes: Les deux nombres premiers p = 3 et
q = 11 e = 7 Le message M = 5

61

Vous aimerez peut-être aussi