Académique Documents
Professionnel Documents
Culture Documents
CRYPTOGRAPHIE
Objectifs
● Comprendre les mécanismes et protocoles cryptographie
● Protocoles d’échanges de clés symétrique et asymétrique
● Mettre en service un système de cryptage
32h
Sommaire:
1
Chap 1: Principes Généraux de cryptographie
1.1 Définitions
La cryptographie est la science qui étudie les principes, méthodes et techniques
mathématiques pour réaliser la sécurité de l'information
Elle permet de stocker des informations sensibles ou de les transmettre à travers des
réseaux non sûrs (comme Internet) de telle sorte qu'elles ne peuvent être lues par personne à
l'exception du destinataire convenu.
Chiffrement : transformation à l'aide d'une clé de chiffrement d'un message en clair
en un message incompréhensible si on ne dispose pas d'une clé de déchiffrement
Chiffre : anciennement code secret, par extension l'algorithme utilisé pour le
chiffrement
Cryptogramme : message chiffré ;
Cryptosystème : système constitué d'un algorithme cryptographique ainsi que toutes
les clés possibles et tous les protocoles qui le font fonctionner
Décrypter : retrouver le message clair correspondant à un message chiffré sans
posséder la clé de déchiffrement
Cryptographie : science visant à créer des cryptogrammes, c'est-à-dire à chiffrer
Cryptanalyse : science analysant les cryptogrammes en vue de les décrypter
Cryptologie : science regroupant la cryptographie et la cryptanalyse.
ek : P → C (1)
2
et une fonction de déchiffrement:
dk : C → P (2)
3
Base théorique de cryptographie symétrique
Soit un message M sous forme binaire à transmettre entre des personnes A (créateur et
expéditeur du message M) et B (lecteur et destinataire). Nous engendrons une grande
quantité de bits "réellement aléatoires" qui forment une clé secrète K de même taille
que le message à transmettre
Cette clé sera transmise à B par un canal supposé sûr... Un laps de temps donnée après
la transmission de cette clé, A va encoder son message en C en effectuant l'opération:
C=K*M
où * est un opérateur qui doit satisfaire à une loi de groupe sur un ensemble fini
L'intérêt en informatique est d'utiliser la loi de groupe XOR (aussi nommée OU
EXCLUSIF)
Finalement, l'expéditeur A transmet la version cryptée C de son message par une voie
pas nécessairement sécurisée. B retrouve le message original M en utilisant l'opération
inverse (*)-1 de * (l'opérateur XOR est son propre inverse) Ainsi B va effectuer
l'opération suivante:
M=C K
Sous réserve que la clé K ait bien été engendrée de façon totalement aléatoire, un
intercepteur n'obtient aucune information sur le message clair M s'il intercepte C.
En effet, dans ces conditions, on ne peut établir aucune corrélation entre M et C sans la
connaissance de K.
Cependant, chaque étape du chiffrement est possible source d'erreur. En effet, la clé K
peut avoir été mal élaborée. La moindre déviation statistique sur K par rapport à du
"vrai" aléatoire fourni des informations sur les messages clair M à partir de sa version
cryptée. C'est la raison pour laquelle les bits de K ne doivent servir qu'une seule fois.
Effectivement, supposons qu'une même clé ait servit à chiffrer les messages de langue
française M1 et M2 et qu'une personne malveillante arrive à intercepter les deux
messages correspondants cryptés C1 et C2.
A partir de C1 et C2, l'intercepteur peut facilement obtenir des informations sur M1
et M2 du fait des particularités des langues. En effet, puisque:
C1 = M1 K et C2 = M2 K
Alors l'intercepteur connaît un résultat simple qui fait intervenir M1 et M2 sans la
clé K.
C1 C2 = M1 M2
4
Car : K K=0
Or, si M1 et M2 sont dans la même langue, on saura en général, grâce aux
redondances des langues (par exemple la lettre "e" apparait très souvent dans la
langue française), retrouver à partir de M1 M2 chacun des deux messages (le
travail est quand même laborieux).
Le problème principal de cette technique est donc la création d'une clé aussi aléatoire
que possible. Pour palier à cela, les mathématiciens font passer la clé par une série de
fonctions imbriquées, dont le résultat, après un grand nombre d'itérations, devient
"pseudo aléatoire".
Construire une itération pseudo aléatoire est une chose, construire une bijection
pseudo aléatoire en est cependant une autre. En effet, il faut pouvoir décrypter le
message par la suite, c'est pourquoi l'on a absolument besoin d'un système bijectif (qui
a tout élément d'arrivée - message crypté - fait correspondre un unique élément de
départ - message décrypté - et inversement).
Schéma de Feistel
Dans les années 1950, un mathématicien (Feistel) a montré qu'une fonction pseudo
aléatoire se transforme, par une méthode simple, en bijection. Aujourd'hui, la
"méthode de Feistel" est la plus utilisée dans les chiffrements à clé secrète et est
aussi à la base du D.E.S. (Data Encryption System)
Le message initial à chiffrer à une taille de 2n bits. On sépare le message M en deux
blocs, L et R de longueurs égales
5
Fig. Schéma de Feistel à n=16 étapes
Exemple:
Nous allons chiffrer par la méthode de Feistel à deux étapes un message constitué de
quatre bits. Ce qui vient à construire une bijection de quatre bits vers quatre bits à
partir de deux fonctions f1, f2 de deux bits vers deux bits. Les fonctions f1, f2
possèdent en entrée à la fois le message à chiffrer et la clé secrète. Nous considérerons
que pour une certaine clé entrée, ces fonctions sont les suivantes:
Notons que ni f1, ni f2 ne sont des bijections : Ex : f1(00) = f1(11) = 00 ; f2(01) = f2(10) = 00
6
A titre d'exemple, chiffrons le message 1101. G désigne la moitié gauche du message à chiffrer,
D la moitié droite :
Le DES
7
Fig. Principe du DES
8
Protocoles d’échange de clés
Toute utilisation de clé de chiffrement symétrique nécessite que les deux correspondants se
partagent cette clé, c'est-à dire la connaissent avant l'échange.
Ceci est un problème si la communication de cette clé s'effectue par l'intermédiaire d'un
medium non sécurisé, « en clair » comme l’internet.
Afin de pallier à cet inconvénient, on utilise un protocole d’échange de clés privées
basée sur un mécanisme de chiffrement asymétrique pour la seule phase d'échange de
la clé privée de session, et l'on utilise cette dernière pour tout le reste de l'échange
k a 208 k a 208
kb 49 kb 49
10
1.4.2 Protocole d’échange de clés: ex. RSA (Rivest, Shamir, Adleman)
Rappel
Principe
Alice fabrique sa clé
n=pq avec p et q deux grands nombres premiers
e premier avec Ф (n) = (p-1)(q-1) et d tel que : ed = 1 mod (p-1)(q-1)
Rend publique (n,e)
Bob veut envoyer un message m à Alice :
11
3) Utilisant les valeurs de n, d et e trouvées précédemment, déterminez à partir du
message c précédent le message m.
Solution
1) L’utilisateur A choisit les facteurs premiers p = 11 et q = 23. Trouvez n, e et d
Puisque les deux nombres 11 et 23 sont premiers entre eux, alors n est calculé par le
produit n = p q = 11*23 =253
Il faut choisir un entier e le plus petit tel que :
1 < e < Φ(253) = (p-1)(q-1) = (11-1)(23-1) = 220 et PGCD(e, (p-1)(q-1)) =1
d’où, on peut choisir e =3, car PGCD (3, 220) = 1.
e=3
L’entier d est calculé avec les conditions suivantes :
1 < d < (p-1)(q-1) et de =1 mod (p-1)(q-1), on en déduit
d = 147
Donc la clé publique de A est Kp = (e, n) et sa clé privée est Kpr = (d, n)
2) Utilisant les valeurs de n et e trouvées précédemment, chiffrez le message m = 165
noté c.
c = me mod n = 1653 mod 253 =110
3) Utilisant les valeurs de n, d et e trouvées précédemment, déterminez à partir du
message c précédent le message m.
m = cd mod n = 110147 mod 253 =165
Calcul de ak mod n
L'algorithme suivant est utilisé pour le calcul de x=me mod n et m=xd mod n, qui servent à
crypter et décrypter le message. En effet, lorsque les valeurs de e et de d sont élevées, le
calcul ne peut se faire facilement en calculant la puissance puis le modulo.
Cet algorithme appelé repeated square and multiply algorithm permet simplement et
rapidement d'effectuer un tel calcul en utilisant l'écriture binaire de l'exposant. Sa complexité
est proportionnelle au logarithme de l'exposant (nombre de chiffre).
12
Pour le calcul de ak, il suffit de prendre chacun des chiffres binaires de l'exposant k en partant
de droite et d'effectuer les opérations (au départ, p=1) :
si le chiffre binaire vaut 1, donner à p la nouvelle valeur p*a modulo n
donner à la nouvelle valeur a2 modulo n
Le résultat est alors donné par la dernière valeur prise par p.
Exemples de calcul
Comment, par exemple calculer le 4137 mod 527 (= 113) qui intervient dans l'exemple de
cryptage avec cet algorithme ?
a = 41
k = 37 s'écrit, en binaire, 100101
n=527
p=1 au départ.
13
1.5 Algorithmes de chiffrement
Les algorithmes de chiffrement peuvent être classés selon 2 critères :
o Symétrique / Asymétrique (type de clés)
o En continu / par bloc (format des données traitées)
14
- CFB (Cipher Feedback), Chiffrement à rétroaction
Un vecteur d'initialisation (en anglais initialization vector ou IV) est un bloc de bits combiné avec le
premier bloc de données lors d'une opération de chiffrement.
o Il est utilisé dans le cadre des modes d'opération d'un algorithme de chiffrement
symétrique par blocs ou pour un chiffrement par flux comme RC4.
o Dans certains cryptosystèmes, le vecteur est généré de manière aléatoire puis transmis
en clair avec le reste du message.
o Il ne doit jamais être réemployé avec la même clé.
15
c) Les algorithmes de chiffrement symétrique
Les algorithmes de chiffrement symétrique se fondent sur une clé unique pour chiffrer
et déchiffrer un message.
Basée sur 2 approches :
- Substitution
- Permutation
Avantages :
- Les algorithmes symétriques sont beaucoup plus rapides que les
algorithmes asymétriques
- Longueur réduite des clés (128 – 256 bits)
Inconvénients :
- la distribution de la clé doit être confidentielle (Problème dans Internet !).
- Si un grand nombre de personnes désirent communiquer ensemble, le
nombre de clés augmente de façon importante (une pour chaque couple de
communicants).
- pour n partenaires, il faut (n*(n-1))/2 clés
- Service de non répudiation non assuré
Exemples :
DES (Data Encryption Standard), 3DES, AES (Advanced Encryption Standard),
RC4 (Rivest Cipher 4), RC5, Kerberos, Blowfish, IDEA (International Data
Encryption Algorithm)
16
o On a donc Authentification ; Intégrité ; Partage d’un secret à travers un
canal non sécurisé (Internet)
Exemples d’algorithmes de chiffrement asymétrique:
o RSA (Riverst-Shamir-Adleman)
o DSA (Digital Signature Algorithm)
o ElGamal,
1. 6 Fonctions de Hachage
o Une fonction de hachage est une fonction qui, à partir d'une donnée fournie en
entrée, calcule une empreinte servant à identifier rapidement (bien
qu'incomplètement) la donnée initiale.
o Les fonctions de hachage sont utilisées en informatique et en cryptographie.
o Une fonction de hachage doit éviter autant que possible les collisions (états
dans lesquels des données différentes ont une empreinte identique) :
o dans le cas des tables de hachage, ou de traitements automatisés, les collisions
empêchent la différenciation des données ou, au mieux, ralentissent le
processus.
17
o En cryptographie les contraintes sont plus exigeantes et la taille des empreintes
est généralement bien plus longue que celle des données initiales ; un mot de
passe dépasse rarement une longueur de 8 caractères, mais son empreinte peut
atteindre une longueur de plus de 100 caractères
o Selon l'emploi de la fonction de hachage, il est souhaitable qu'un infime
changement de la donnée en entrée (inversion d'un seul bit, par exemple)
entraine une perturbation importante de l'empreinte correspondante
o Un mot de passe ne doit pas être stocké en clair sur une machine pour des
raisons de sécurité. Seul le résultat du hachage du mot de passe est donc
stocké. Pour identifier un utilisateur, l'ordinateur compare l'empreinte du mot
de passe d'origine (stocké) avec l'empreinte du mot de passe demandé
o Les algorithmes SHA-1 (Secure Hash Algorithm 1 : 160 bits) et MD5
(Message-Digest algorithm 5, 128 bits, plus ancien et moins sûr) sont des
fonctions de hachage utilisées fréquemment. Le SHA-2 (SHA-256, SHA-384
ou SHA-512 bits au choix) est d'ores et déjà prêt s'il faut abandonner aussi le
SHA-1.
1. 7 L’authentification
1.7.1 Définition
L'authentification pour un système informatique est un processus permettant au
système de s'assurer de la légitimité de la demande d'accès faite par une entité (être
humain ou un autre système...) afin d'autoriser l'accès de cette entité à des ressources
du système (systèmes, réseaux, applications…)
Exemples : Utiliser un mot de passe afin d’accéder à votre boîte aux lettres
électronique ; Saisir votre nom, votre adresse, ainsi que vos coordonnées bancaires
lorsque vous effectuez un achat en ligne
18
Principe
Dans un réseau simple utilisant Kerberos, on distingue plusieurs entités :
- le client (C), a sa propre clé secrète Kc
- le serveur (S), dispose aussi d'une clé secrète Ks
- le service d'émission de tickets (TGS pour Ticket-Granting Service), a une clé
secrète KTGS et connaît la clé secrète Ks du serveur
- le centre de distribution de clés (KDC pour Key Distribution Center), connaît
les clés secrètes Kc et KTGS
Le client C veut accéder à un service proposé par le serveur S.
Le client a une clé secrète Kc, celle-ci est également connue par le serveur
de distribution. Le client envoie son nom au serveur de distribution et lui
indique le TGS qui l'intéresse.
Après vérification sur l'identité du client (cette partie dépend des
implémentations, certains serveurs utilisent des mots de passe à usage
unique), le serveur de distribution lui envoie alors un ticket TTGS. Ce ticket
autorise le client à faire des requêtes auprès du TGS.
19
Ce ticket TTGS est chiffré par le serveur de distribution avec la clé du TGS
(KTGS) Il contient notamment des informations sur le client mais également
la clé utilisée pour établir la communication entre le client et le TGS. Cette
clé de session, nous la noterons KC-TGS. Le client reçoit également cette clé
de session KC-TGS, elle a toutefois été chiffrée avec la clé secrète Kc du
client.
À ce stade, le client possède un ticket TTGS (qu'il ne peut pas déchiffrer) et
une clé KC-TGS
2- La deuxième étape est l'envoi par le client d'une demande de ticket auprès du TGS.
Cette requête contient un identifiant (des informations sur le client ainsi que la
date d'émission) chiffré avec la clé de session KC-TGS (qui est trouvée par le
client en déchiffrant les informations reçues depuis le serveur de distribution
avec sa clé secrète). Le client envoie aussi le ticket qui lui avait été transmis
par le serveur de distribution.
Le TGS reçoit alors son ticket et il peut le déchiffrer avec sa clé secrète .
Il récupère le contenu du ticket (la clé de session) et peut ainsi déchiffrer
l'identifiant que lui a envoyé le client et vérifier l'authenticité des requêtes.
Le TGS peut alors émettre un ticket d'accès au serveur. Ce ticket est chiffré
grâce à la clé secrète du serveur Ks. Le TGS envoie aussi la clé de session KC-S
chiffrée à l'aide de la clé KC-TGS au client pour les communications entre le
serveur final et le client.
20
Chap 2: Quelques protocoles de chiffrement
Deux entiers a et b sont choisis comme clef. Chaque lettre claire est d'abord remplacée par
son équivalent numérique x puis chiffrée par le calcul du reste de la division euclidienne par
Déchiffrement
Pour déchiffrer le message, il faut être capable de trouver l'antécédent de y par l'application
qui, à un entier x compris entre 0 et 25, associe le reste de ax + b dans la division par 26. Il est
facile d'ôter b mais il n'est pas toujours réalisable de simplifier par a. La simplification ne peut
s'effectuer que s'il existe un entier a' tel que aa' a pour reste 1 dans la division par 26. C'est-à-
dire s'il existe un entier k tel que ou encore
21
Le théorème de Bachet-Bézout affirme que l'on ne peut trouver k et a' que lorsque a est
premier avec 26. La clef de code doit donc être un couple d'entiers (a, b) dans lequel a est
premier avec 26.
C'est le cas, dans l'exemple choisi, l'entier a' est 23. Pour déchiffrer le message, il faut donc
ôter b= 3 à chaque nombre, les multiplier par a’=23 puis en chercher les restes dans la
division par 26
L H C T → 11 ; 7 ; 2 ; 19
11 ; 7 ; 2 ; 19 → 8 ; 4 ; -1 ; 16
8 ; 4 ; -1 ; 16 → 184 ; 92 ; -23 ; 368
184 ; 92 ; -23 ; 368 - > 2 ; 14 ; 3 ; 4
2 ; 14 ; 3 ; 4 - > C O D E
Cryptanalyse
Il n'existe que 12 entiers compris entre 0 et 26 et premiers avec 26 (1, 3, 5, 7, 9, 11, 15, 17,
19, 21, 23 et 25). Il n'existe donc que clés de chiffrement possible. Si l'on
sait qu'un code affine a été utilisé, on peut casser le code par force brute en essayant les 312
clés.
À la lumière du principe de Kerckhoffs, ce manque de variété rend ce système très peu
sécurisé.
Le chiffre de César fonctionne par décalage des lettres de l'alphabet. Par exemple dans
l'image ci-dessus, il y a une distance de 3 caractères, donc B devient E dans le texte
codé.
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
22
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.
23
fixé, entre clés et textes clairs. Même une attaque par force brute aidée par la
connaissance des caractéristiques statistiques du langage utilisé ne donnera aucune
information.
Ce type d'impossibilité, appelé sécurité sémantique, ne repose pas sur la difficulté
du calcul, comme c'est le cas avec les autres systèmes de chiffrement en usage.
Autrement dit, le système du masque jetable est inconditionnellement sûr.
24
Principe :
Chaque caractère est d'abord codé par un nombre compris entre 0 et n -1 (son rang dans
l'alphabet diminué de 1). Les caractères sont alors regroupés par blocs de p caractères formant
un certain nombre de vecteurs
On construit alors une matrice p × p d'éléments de : A. Le bloc X est alors chiffré par
le bloc Y = AX, le produit s'effectuant modulo n.
Pour déchiffrer le message, il s'agit d'inverser la matrice A. Cela peut se faire si le déterminant
de cette matrice est premier avec n.
Exemple
On imagine dans cette section que chaque lettre est codée par son rang dans l'alphabet
diminué de 1 et que le chiffrement s'effectue par bloc de 2 lettres. Ici n= 26 et p = 2.
Et l'on cherche à chiffrer le message suivant : TEXTEACRYPTER en utilisant une matrice A
dont le déterminant est premier avec 26.
Pour construire cette matrice, il suffit de choisir trois entiers (a, b, c ) au hasard mais tel que a
soit premier avec 26, le dernier terme d doit être choisi tel que ad - bc soit premier avec 26.
Pour la suite on prendra
dont le déterminant est 21. Comme 21 est premier avec 26, il possède un inverse dans
On multiplie ensuite ces vecteurs par la matrice A en travaillant sur des congruences modulo
26
25
etc.
On obtient alors 7 vecteurs soit 14 lettres
(25 ; 0) (8;19) ; (12 ; 24) ;(13 ; 15) ; (17 ; 9) ; (25 ; 0) ; (25 ; 24)
ZAITMYNPRJZAZ
26
Chap 3: Cryptographie IPsec
27
Une machine pirate peut donc émettre des paquets IP ayant comme source l'adresse
d'une autre machine, le paquet arrivera bien à destination et le destinataire ne pourra
pas identifier la véritable source.
Dans le cadre d'UDP ou d'ICMP cela peut poser des problèmes importants car des
notifications peuvent être faites (ICMP Redirect par exemple).
Beaucoup des causes de déni de service (DoS) sont dues à ce problème d'usurpation
d'adresse, une ou des personnes malintentionnées bombardent une cible avec des
paquets dont l'adresse source est fausse. La machine cible ne peut pas déceler qui
attaque et donc remédier à l'attaque.
28
Principe :
ajout de champs d’authentification dans l’en-tête IP
chiffrement des données
Avantage : sécurisation niveau réseau
Inconvénients : coût, interfaces avec les autres protocoles à standardiser
IPsec va s'appuyer sur les techniques de cryptoraghie pour assurer ces nouvelles
fonctionnalités.
Authentification par signature électronique à clé publique (RSA).
Contrôle de l’intégrité par fonction de hachage (MD5, SHA).
Confidentialité par l’intermédiaire d’algorithmes symétriques, tels que
DES, 3DES ou IDEA.
IPsec regroupe trois mécanismes indépendants (au niveau réseau):
a) AH (Authentication Header) qui sert à valider l'intégrité des messages et à
prouver l'identité de l'expéditeur, ainsi que d'eviter les rejeux.
b) ESP (Encapsulation Security Payload) qui sert à assurer la confidentialité
(chiffrement) des messages.
c) IPcomp (IP compression) qui compresse les données qui transitent.
29
Fig. Fonctionnalité des modes tunnel et transport.
30
Authentification de messages
Plusieurs algorithmes d’authentification de messages existent :
Authentification à l’aide d’une clé secrète (MAC).
- Authentification du message basée sur une clé secrète partagée par l’émetteur
et le récepteur.
- Mécanisme coûteux pour des messages de petite taille.
Fonctions de hachage : Construire un résumé du message et l’envoyer.
Fonctions de hachage sécurisées (SHA-1, MD5) : Fonctions vérifiant des propriétés de
robustesse (telles que l’impossibilité de deviner le contenu d’un message à partir de
son résumé).
Solution retenue est l’authentification à l’aide de HMAC :
- Combiner MAC et des fonctions de hachage sécurisées (SHA-1).
- Avantages : Rapidité du mécanisme d’authentification, plusieurs algorithmes
de hachages cryptographiques sont disponibles.
31
Fig. Exemple de SA
Les associations entre AS et type de trafic se font par le biais d’une base de données de
politique de sécurité (SPD (Security Policy Database)).
On distingue également : SAD : Security Association Database : C’est la base de
données des SA pour la gestion des associations de sécurité actives. Elle est consultée
pour savoir quels mécanismes il faut appliquer à chaque paquet reçu ou à émettre
32
Fig. Fonctionnement SA ; SAD ; SPD
33