Protocoles sécurisés : Cours de cryptographie NSI

Telechargé par hachicha.eya
Lycée Charles Peguy Année scolaire 2020-2021 Terminale NSI
Cours : Protocoles sécurisés
IINTRODUCTION
Imaginons que deux personnes nommées Alice et Bob souhaitent échanger des informations via un réseau infor-
matique. Ils souhaitent aussi, au cas où leurs messages sont interceptés, que ceux-ci ne soient pas compréhensibles
par une autre personne.
Exemple(s)
Donner des exemples de données que l’on ne souhaite pas voir circuler “en clair” sur un réseau informatique.
.................................................................................................................
.................................................................................................................
Définition 1
Coder représenter l’information par un ensemble de signes prédéfinis. On utilise aussi le terme encoder.
Exemple : Coder une image, un son, un texte en binaire...
Décoder interpréter un ensemble de signes pour extraire l’information qu’ils représentent
Exemple : Décoder un texte en braille ou en morse.
Chiffrer rendre une suite de symbole incompréhensible au moyen d’une clé de chiffrement
Déchiffrer/décrypter retrouver la suite de symbole originale à partir du message chiffré. On utilise le
terme déchiffrer lorsque l’on utilise une clé de déchiffrement pour récupérer le message initial et le
terme décrypter lorsquon arrive à déterminer le message original sans la clé.
Coder et décoder sutilisentquand ..................................................................
Exemples : ..........................................................................................
......................................................................................................
Pour qu’un message entre deux machines dans un réseau informatique ne puisse pas être compréhensible s’il est
intercepté, il faut qu’il soit chiffré.
Il y a deux manières principales pour le faire :
Par un chiffrement symétrique qui utilise une clé unique, connue seulement de l’émetteur et du récepteur.
L’émetteur chiffre le message avec la clé et le récepteur le déchiffre avec la même clé.
Par un chiffrement asymétrique qui utilise un couple de clé, l’une publique connue de tout le monde, l’autre
privée connue uniquement par le récepteur. L’émetteur chiffre le message avec la clé publique. Le récepteur
le déchiffre avec la clé privée.
II CRYPTOGRAPHIE SYMÉTRIQUE
Le chiffrement symétrique repose sur deux fonctions : une pour chiffrer le message et une autre pour déchiffrer le
message chiffré.
c(m,k)est la fonction de chiffrement. Elle prend en arguments un message men “clair” (une chaîne de caractères
par exemple) et une clé de chiffrement k(qui peut être une chaîne de caractères, un nombre, etc.). Elle produit
en sortie une chaîne de caractères chiffrée s.
d(s,k)est la fonction de déchiffrement. Elle prend en argument un message chiffré set une clé de déchiffrement ket
renvoie le message en clair m
On a la relation
d(c(m, k), k) = m
La figure 1illustre la transmission d’information.
Cours : Protocoles sécurisés Page 1 sur 9
Lycée Charles Peguy Année scolaire 2020-2021 Terminale NSI
Alice Bob
Réseau
m
c(m, k) = sd(s, k) = m
s
Figure 1 – Chiffrement symétrique
II.A. CHIFFREMENT DE CÉSAR (CHIFFREMENT PAR DÉCALAGE)
Un exemple simple de chiffrement symétrique est le chiffrement de César. Le texte chiffré s’obtient en remplaçant
chaque lettre du texte clair original par une lettre à distance fixe, toujours du même côté, dans l’ordre de l’alphabet.
Pour les dernières lettres (dans le cas d’un décalage à droite), on reprend au début. Par exemple avec un décalage
de 3 vers la droite, A est remplacé par D, B devient E, et ainsi jusqu’à W qui devient Z, puis X devient A etc. Il s’agit
d’une permutation circulaire de l’alphabet. La longueur du décalage, 3 dans l’exemple évoqué, constitue la clé du
chiffrement qu’il suffit de transmettre au destinataire — s’il sait déjà qu’il s’agit d’un chiffrement de César — pour
que celui-ci puisse déchiffrer le message. Dans le cas de l’alphabet latin, le chiffre de César n’a que 26 clés possibles
(y compris la clé nulle, qui ne modifie pas le texte).
Figure 2 – Chiffrement de César, clé = 3
Exercice 1
1. Chiffrer le message “je suis alice.” avec la clé 3.
2. Déchiffrer le message “mh fkliiuh hq qvl” toujours avec la clé 3.
.................................................................................................................
.................................................................................................................
Exercice 2
Faire le TP “Cryptographie affine” pour découvrir d’autres méthodes similaires au chiffrement de César.
https://nc-lycees.netocentre.fr/s/amH8QTMtM6xLwRQ
Exercice 3
Faire le Jupyter notebook “Application au chiffrement d’un message”
https://nc-lycees.netocentre.fr/s/RrWH5t6KpE7TAmB
Exercice 4
Fichier : TermNSI/Protocoles_securises/codage_affine.py
Ecrire les fonctions qui permettent de chiffrer puis déchiffrer des messages en utilisant le chiffrement linéaire puis
le chiffrement affine de l’exercice 2.
Ressource pour le déchiffrement : https://fr.wikipedia.org/wiki/Chiffre_affine
II.B. CHIFFREMENT AVEC XOR
Le chiffrement XOR est un système de cryptage basique mais pas trop limité. Ainsi, il a beaucoup été utilisé dans
les débuts de l’informatique et continue à l’être encore aujourd’hui car il est facile à implémenter, dans toutes sortes
de programmes.
Cours : Protocoles sécurisés Page 2 sur 9
Lycée Charles Peguy Année scolaire 2020-2021 Terminale NSI
A B A B
Vrai Vrai Faux
Vrai Faux Vrai
Faux Vrai Vrai
Faux Faux Faux
Table 1 – Table de vérité de XOR
On rappelle que XOR (no) est un opérateur logique qui correspond à un "OU exclusif" : c’est le (A OU B) quon
utilise en logique mais qui exclue le cas où A et B sont simultanément vrais. Voici sa table de vérité (table 1) :
En informatique, chaque caractère du message à coder est représenté par un entier, le code UTF-8 (ou le code
ASCII). Ce nombre est lui-même représenté en mémoire comme un nombre binaire à 8 chiffres (un octet). On
choisit une clé que l’on place en dessous du message à coder, en la répétant autant de fois que nécessaire, comme
dans le cryptage de Vigenère. Le message et la clé étant converti en binaire, on effectue un XOR, bit par bit, le 1
représentant VRAI et le 0 FAUX. Le résultat en binaire peut être reconverti en caractères UTF-8 et donne alors le
message codé.
L’algorithme est complètement symétrique : la même opération est réappliqué au message final pour retrouver le
message initial.
En effet si AB=Calors AC=Bet BC=A(ce n’est pas le cas avec d’autres opérations logiques comme
et et ou)
Exemple(s)
Codons “MESSAGE” en utilisant la clé “CLE”.
Etape 1 Convertir le message en binaire en utilisant le code UFT-8 (identique au code ASCII pour les caractères
non accentués).
Lettres M E S S A G E
Code UTF-8 77 69 83 83 65 71 69
Binaire 01001101 01000101 01010011 01010011 01000001 01000111 01000101
Etape 2 Faire de même avec la clé :
Le mot CLE en binaire est lui représenté par 01000011 - 01001100 - 01000101
Etape 3 Effectuer l’opération XOR bit à bit entre le message et la clé. La clé sera répétée autant de fois que nescessaire
pour recouvrir le message.
Message 01001101 01000101 01010011 01010011 01000001 01000111 01000101
Clé 01000011 01001100 01000101 01000011 01001100 01000101 01000011
Message chiffré 00001110 00001001 00010110 00010000 00001101 00000010 00000110
Exercice 5
Pourdéchirerlemessagechiréilsutde .....................................................................
Message chiffré 00001110 00001001 00010110 00010000 00001101 00000010 00000110
Clé
Message déchiffré
Code UTF-8
Message en clair
Exercice 6
Voici un code permettant de chiffrer un message en utilsant la méthode XOR.
def texte_2_UTF(texte : str)->list:
tab_codes_UTF =[]
for cin texte:
tab_codes_UTF.append(ord(c))
return tab_codes_UTF
assert texte_2_UTF("MESSAGE")== [77,69,83,83,65,71,69]
Cours : Protocoles sécurisés Page 3 sur 9
Lycée Charles Peguy Année scolaire 2020-2021 Terminale NSI
# Python peut effectuer l'opération XOR directement avec les entiers, il n'est
# donc pas nescessaire de convertir en binaire le message
# L'opérateur XOR s'effectue avec ^ en python
def c(message,cle):
# Conversion des textes en codes UTF-8
message_clair =texte_2_UTF(message)
tab_cle_initial =texte_2_UTF(cle)
tab_cle =[]
n,m =len(message_clair),len(tab_cle_initial)
# Répète la clé autant de fois que nescessaire
for iin range(n):
tab_cle.append(tab_cle_initial[i%m])
message_chiffre =[]
# Effectue le XOR entre le message et la clé.
for iin range(n):
message_chiffre.append(message_clair[i] ^tab_cle[i])
return message_chiffre
assert c("MESSAGE","CLE")== [14,9,22,16,13,2,6]
Fichier : TermNSI/Protocoles_securises/codage_XOR.py
1. Modifier la fonction cpour qu’elle renvoie le message chiffré (avec les caractères) . On pourra utiliser la
fonction chr.
2. Écrire une fonction dqui prend en paramètres le message chiffré (sous la forme d’une chaine de caractères)
et la clé et qui renvoie le message déchiffré sous forme de caractères.
3. Testez vos fontions avec vos camarades en échangeant des messages chiffrés.
III CHIFFREMENT ASYMÉTRIQUE
Le chiffrement symétrique fonctionne bien, mais dans la pratique un problème peut se poser. En effet pour com-
muniquer, Alice et Bob doivent se communiquer la clé de chiffrement. Or, si ces 2 personnes communiquent de façon
chiffrée, c’est que leurs moyens de communications ne sont pas sûrs. Il faut donc trouver un moyen de communi-
quer la clé de chiffrement sans quelle soit interceptée.
Des solutions, plus ou moins sécurisées ou pratiques, existents :
échanger la clé par mail
échanger la clé par téléphone
échanger la clé par un support physique ...
Mais dans tous les cas, un risque d’interception de la clé existe, car il y a un échange d’information. Une solution
a été développée dès les années 1970, d’abord de manière privée par des services secrets, puis dans la recherche
académique. C’est le principe du chiffrement asymétrique.
La cryptographie asymétrique est un domaine de la cryptographie où il existe une distinction entre des données
publiques et privées, en opposition à la cryptographie symétrique où la fonctionnalité est atteinte par la possession
d’une donnée secrète commune entre les différents participants.
Voyons deux exemples de chiffrements asymétriques : les puzzles de Merkle et le système RSA.
III.A. LES PUZZLES DE MERKLE
Supposons qu’Alice et Bob veulent communiquer en utilisant une clé secrète commune. Pour établir cette clé, Bob
envoie à Alice un message qui consiste en un grand nombre de puzzles, chacun assez petit pour quAlice puisse
le résoudre par attaque par force brute. Les puzzles sont de la forme d’un message chiffré avec une clé inconnue,
donc la clé est assez courte.
Bob envoie tous les messages à Alice. Elle en sélectionne un au hasard et le résout par force brute. C’est à dire quelle
teste toutes les clés posible de façon à déchiffrer le message. Le message chiffré contient un identificateur (du choix
d’Alice) et une clé secrète, dite clé de session. Alice renvoie l’identificateur à Bob, qui sait alors également quelle
est la clé de session.
Cours : Protocoles sécurisés Page 4 sur 9
Lycée Charles Peguy Année scolaire 2020-2021 Terminale NSI
Exemple(s)
Voici un extrait du message généré par Bob.
. . .
identificateur : 135674 – clé : fQ98c~m{)*e9+G!-
identificateur : 426891 – clé : VMQ>Dm2|uyFU8$z\\
identificateur : 734562 – clé : H\\>hq]D/x.K\\-Ov}
identificateur : 924252 – clé : nSV)ayafjvzA9zXz
. . .
Ensuite elle le chiffre en utilisant par exemple le chiffrement XOR vu dans le chapitre B. Voici un extrait du fichier
chiffré qui sera transmis sur le réseau :
. . .
47 96 83 70 114 111 49 101 24 90 72 94 135 113 82 136 96 120 65 92 70 136 31 120 106 102 31 60 116 125 76 . . . 40
42 89 117 45 21 93 145 104 66 98 143 77 100 135 31 82 90 40 37 107 83 82 139 6 11 52 62 88 30 94 117 . . . 139
68 120 21 82 102 27 6 56 50 123 23 77 113 41 106 66 141 123 124 76 104 45 17 91 20 3 32 117 124 98 67 . . . 127
4 14 48 89 143 43 129 130 110 23 11 102 121 131 104 102 95 105 21 70 148 128 146 132 40 73 41 4 87 81 93 . . . 66
. . .
Alice choisira une ligne au hasard dans ce fichier. Ensuite il décryptera cette ligne en testant toutes les clés possibles.
Admettons qu’il choisisse et décrypte la ligne suivante :
identificateur : 924252 – clé : nSV)ayafjvzA9zXz
Alice transmettra en clair 924252 sur le réseau à destination de Bob.
Il saura alors que la clé de session à utiliser sera nSV)ayafjvzA9zXz.
Alice et Bob communiquerons alors avec cette clé lors de leurs prochaines échanges.
Le tiers parti Ève (qui cherche a espioner Alice et Bob), a la tâche plus difficile. Elle ne sait pas quel puzzle a été
résolu. La meilleure stratégie pour Ève est de résoudre tous les puzzles, ce qui est beaucoup plus coûteux pour elle
que pour Alice.
Exercice 7
1. Si Bob génère 100 puzzles et qu’un puzzle est décrypté en une seconde alors combien de temps Eve mettra-
t-elle, dans le pire des cas, a décrypter l’ensemble du fichier?
2. Combien de lignes le fichier de Bob doit-il contenir pour que le décryptage par Eve prenne une semaine?
.................................................................................................................
.................................................................................................................
.................................................................................................................
Exercice 8
Faire le Jupyter notebook “Puzzle de Merkle”
https://nc-lycees.netocentre.fr/s/e6GT33ycrTEa6Fd
III.B. LE SYSTÈME RSA
Le système RSA est un système de chiffrement asymétrique basé sur des paires de clés publiques et privées. Son
nom est formé des initiales de ses 3 inventeurs : Ron Riverst cryptologue Américain, Adi Shamir cryptologue Israélien
et Len Adleman cryptologue Américain. Ce système repose sur des théorèmes mathématiques dont le détail dépasse
l’étude que nous en feront en NSI. Toutefois, il peut être interessant d’y jeter un oeil (Lien vers la wikipedia).
Le système RSA consiste en la mise en place d’une paire de clé publique et privée pour chaque participant. Nous
noterons Kpub
Alice la clé publique d’Alice et Kpriv
Alice sa clé privée. La notation K
Alice(m)signifie : “chiffrer le message m
avec la clé (publique ou privée) Kd’Alice”. La manière de créer ses clé est complexe mais il faut retenir certaines
choses.
Cours : Protocoles sécurisés Page 5 sur 9
1 / 9 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!