Qu'est ce que la cryptographie ?

La cryptographie, c'est la science de sécuriser l’information. Elle permet de transformer des données lisibles en données illisibles.

En réalité la cryptographie ne date pas de l’ère informatique. Elle remonte à l’Antiquité, où elle était déjà utilisée pour protéger des messages.

En Égypte ancienne, on utilisait parfois des hiéroglyphes inhabituels pour cacher le véritable sens des messages.

À Sparte, on utilisait la scytale, un des premiers procédés de chiffrement connus. Il s’agissait d’une bande de cuir enroulée autour d’un bâton ; le message était écrit sur la bande une fois enroulée. Une fois déroulée, les lettres semblaient désordonnées et incompréhensibles. Seule une personne possédant un bâton de même diamètre pouvait réenrouler la bande et lire correctement le message.

La cryptographie utilisée aujourd'hui en cybersécurité suit exactement le même principe.

Il y a à la base un message ou une donnée à chiffrer (ou sécuriser). On utilise un algorithme pour transformer, donc chiffrer, ces derniers. Un algorithme que les deux personnes seules (l'expéditeur et le destinataire) connaissent. Le message ou la donnée seront chiffrés et donc incompréhensibles par toute personne étrangère. Le destinataire va déchiffrer ce qu'il aura reçu, avec l'algorithme qui a permis de chiffrer. Il comprendra donc le message ou la donnée envoyés.

Dans ce cours, nous allons découvrir les différents types de cryptographie. Nous essaierons de vulgariser ces notions sans entrer dans trop de détails. L’objectif est simplement de comprendre ce qu’est la cryptographie et comment elle fonctionne.

Introduction

Pour bien comprendre ce qu'est la cryptographie, il faut comprendre son fonctionnement. Comme nous l'avons vu, la cryptographie est structurée en "5 grandes étapes"; le message initial, le chiffrement de la donnée avec un algorithme, l'envoi du message chiffré, la réception et le déchiffrement de ce dernier.

L'algorithme utilisé pour faire le chiffrement est appelé une clé. C'est par l'intermédiaire de cette clé que l'on va pouvoir chiffrer ou déchiffrer un message.

Le choix de clé est important en fonction de ce que l'on souhaite chiffrer et surtout de la sécurité que l'on veut y mettre. Mais chaque chose en son temps, nous reviendrons sur ces points par la suite.

Nous allons voir les deux types de cryptographie qui existent et qui sont utilisés tous les jours pour chiffrer nos données et nos communications.

La cryptographie symétrique

La cryptographie symétrique est la première méthode de cryptographie qui a été utilisée. La cryptographie utilisée en Egypte ancienne, était de la cryptographie symétrique, tout comme celle utilisée à Sparte.

Le point commun entre les deux manières de communiquer de ces derniers, est qu'ils utilisaient un algorithme pour chiffrer et déchiffrer.

Et c'est la définition même de la cryptographie symétrique; on utilise un seul et même algorithme pour chiffrer et on déchiffre avec ce même algorithme. On dit aussi qu'en cryptographie symétrique on utilise qu'une seule clé

Prenons un exemple très simple. Admettons que nous voulions communiquer avec une personne X et lui envoyer le message suivant : "Bonjour". Bien sûr, nous il faut que notre message soit chiffré durant l'envoie et que seule la personne X puisse déchiffrer ce message. Il nous faut donc choisir un algorithme et donc une clé pour chiffrer et déchiffrer notre message. Une clé que l'on enverra à notre personne X pour qu'elle puisse déchiffrer.

Algorithme de chiffrement
ABCDEF GHIJKL MNOPQR STUVWX YZ
DEF GHI JKL MNO PQR STU VWX YZ ABC

Dans la première ligne nous avons notre alphabet de 26 lettres. Dans la seconde ligne, nous avons notre clé pour chiffrer le message. En analysant notre clé on peut déduire l'algorithme que l'on va utiliser. On peut voir que le "A" correspond maintenant à un "D", le "B" correspond à un "E", le "C" à un "F", etc. Nous avons simplement décalé l'alphabet de 3 lettres.

Maintenant que nous avons notre clé, essayons de chiffrer. Cliquez sur les lettres de la ligne correspondant à la clé pour chiffrer le message.

Message à chiffrer : BONJOUR

Message chiffré :

Une fois le message bien chiffré, nous pouvons l'envoyer en toute sécurité à notre personne X. En effet maintenant personne ne peut comprendre le message sans avoir la clé de chiffrement. Donc pour que la personne X puisse il/elle aussi déchiffrer, il faut lui envoyer la clé.

Une fois tout cela fait, nous pouvons envoyer notre message. Appuyez sur le bouton d'envoi :

X a bien reçu(e) notre message. Il/elle doit maintenant le déchiffrer. Pour cela X doit regarder la clé de chiffrement qu'on lui a envoyé au préalable. Ensuite, il suffit de faire la même chose que lors du chiffrement, mais cette fois à l'envers.

Algorithme de déchiffrement
DEFGHI JKLMNO PQRSTU VWXYZA BC
ABC DEF GHI JKL MNO PQR STU VWX YZ

Message à déchiffrer : ERQMRXU

Message déchiffré :

Voilà, nous venons d'utiliser la cryptographie symétrique pour chiffrer un message et l'envoyer de manière sécurisée.

L'exemple que l'on vient de voir est très simple et sert d'illustration pour comprendre le principe de cryptographie symétrique. Comme nous pouvons le voir, cet algorithme est très faible en termes de sécurité. Il serait très facile à un attaquant de déchiffrer notre message, sans avoir la clé.

Aujourd'hui, les algorithmes utilisés pour la cryptographie symétrique sont beaucoup plus complexes comme AES (explication sur www.pandasecurity.com) ou DES (introduction-des). Nous n'entrerons pas dans les détails.

En revanche il y a une dernière chose à comprendre sur ce type de cryptographie. Il s'agit d'une vulnérabilité. Comme nous avons pu le voir, ici, nous utilisons une seule et même clé. Et pour pouvoir déchiffrer le message, il faut envoyer la clé de chiffrement à la personne concernée. Le problème avec ça c'est que si un attaquant écoute la communication, il pourra intercepter la clé.

En cryptographie symétrique, si un attaquant intercepte la clé de chiffrement, il pourra donc déchiffrer le message.

La cryptographie asymétrique

Comparée à la cryptographie symétrique, la cryptographie asymétrique assure 4 propriétés essentielles.

La cryptographie asymétrique assure la confidentialité, l'intégrité, l'authentification et la non-répudiation

Pour comprendre tout cela, nous allons déjà comprendre son fonctionnement. En effet, la cryptographie asymétrique utilise un système de paires de clés. Ici, nous n'utilisons plus une seule et même clé pour chiffrer et déchiffrer, mais nous utilisons 2 clés ;

En utilisant 2 clés, nous changeons totalement la manière de chiffrer et déchiffrer. Nous allons maintenant utiliser une clé pour chiffrer et l'autre clé pour déchiffrer.

En cryptographie asymétrique, on utilise la clé publique pour chiffrer et la clé privée pour déchiffrer.

Voilà pour toute la partie théorique. Illustrons tout cela pour bien comprendre.

Reprenons la même situation que dans l'exemple pour la cryptographie symétrique. Nous voulons communiquer avec une personne X et échanger le message suivant : "Bonjour". Pour ce faire, nous n'allons donc plus utiliser une seule et même clé pour chiffrer et déchiffrer le message mais bien 2. Il y aura la clé publique et la clé privée. Ce qu'il faut comprendre, c'est que la clé privée dépend mathématiquement de la clé publique.

"La clé privée dépend mathématiquement de la clé publique"... Ca veut dire quoi concrètement ? Pour vulgariser cela, on peut dire que :

Nous voulons donc envoyer "Bonjour" à X. Pour ce faire, X va devoir générer sur son ordinateur, la paire de clés.

Pourquoi est-ce à lui/elle de générer la paire de clés ? Parce que nous savons que "La clé privée dépend mathématiquement de la clé publique". Nous savons aussi que X va déchiffrer notre message avec sa clé privée. Donc nous allons, nous, chiffrer avec sa clé publique.
Pourquoi allons-nous chiffrer avec sa clé publique ? Parce que encore et toujours "La clé privée dépend mathématiquement de la clé publique". La clé privée de X permet de déchiffrer seulement ce qui a été chiffré avec SA clé publique. Voila le principe même de la cryptographie asymétrique.

Appuyez sur l'ordinateur de X pour générer les clés.

Ordinateur

La clé publique et la clé privée sont maintenant sur l'ordinateur de X. Il/elle doit donc nous envoyer sa clé publique pour qu'on puisse chiffrer.

En cryptographie asymétrique, on envoie la clé publique et on conserve la clé privée. Celle-ci ne doit jamais être transmise sur le réseau.

Appuyez sur l'ordinateur de X pour nous envoyer la clé publique.

Ordinateur

Nous avons la clé publique de X. Nous pouvons maintenant chiffrer notre message.

(En réalité, une vraie clé publique, est une suite très longue de nombres ou caractères encodés souvent illisible pour un humain. Pour simplifier cela dans notre exemple, on va donner un ID à la clé publique)

Message : BONJOUR

ID de la clé publique : FU-123

Message chiffré :

Notre message est maintenant bien chiffré. Nous allons donc pouvoir l'envoyer à X. À savoir que nous n'avons pas besoin d'envoyer à nouveau la clé publique. Car, celle-ci ne sert qu'à chiffrer. Donc à partir de maintenant nous pourrons envoyer tous les messages que nous voulons à X, en utilisant la même clé publique pour chiffrer.

Appuyez sur notre ordinateur pour envoyer le message à X.

Ordinateur

X a bien reçu(e) notre message, il/elle peut maintenant le déchiffrer avec sa clé privée.

(Pareil que pour la clé publique, nous utiliserons un ID pour la clé privée)

Message chiffré : 34mgH5gz

ID de la clé privée : PR-456

Message déchiffré :

Et voilà ! Nous venons de communiquer avec X en utilisant la cryptographie asymétrique. Voici un petit schéma pour résumer les étapes d'une communication en cryptographie asymétrique.

Ordinateur

Avec ce système de paire de clés, il est maintenant impossible à une personne étrangère de déchiffrer le message. La seule personne qui peut déchiffrer est celle qui a la clé privée.

Rappelons-nous de ce que nous avons dit au début du cours, la cryptographie asymétrique permet d'assurer 4 propriétés :

Expliquons un peu ces 4 points, sans rentrer dans des détails trop techniques.

But ? Comment ? Vérification
Confidentialité "Seules les personnes autorisées peuvent lire le message" On chiffre le message Si un attaquant intercepte le message mais ne peut pas le lire alors la confidentialité est assurée
Intégrité "Le message reçu est exactement le même que celui envoyé" Créer une empreinte numérique pour vérifier que le message n’a pas changé*. Si "l'empreinte numérique" donc le hash est le même à l'envoie et à la réception, alors l'intégrité est assurée
Authentification "Savoir avec qui on parle" (est-ce qu'on communique bien avec la bonne personne) Avec une signature numérique. L'expéditeur signe avec sa clé privée et le destinataire "vérifie la signature" avec la clé publique Si la signature est valide alors on communique avec la bonne personne, donc l'authentification est assurée.
Non-répudiation Quelqu’un ne peut pas dire : “Ce n’est pas moi qui ai envoyé ça.” Toujours grâce à la signature numérique Si la signature est valide, alors l'expéditeur ne peut pas nier l’avoir envoyée. La non-répudiation est assurée

* Le message sera hashé. Ce sera son empreinte numérique (tout comme nous, nous avons une empreinte digitale unique). Le message aura un hash unique

Pour conclure, il faut savoir qu'aujourd'hui les 2 types de cryptographie sont utilisés. En effet, la cryptographie symétrique est moins sécurisée que la cryptographie asymétrique mais elle est plus rapide (de par les calculs mathématiques utilisés). Et la cryptographie asymétrique permet elle, des échanges plus sécurisés. Les 2 servent des besoins différents, comme par exemple dans le chiffrement des données dans le protocole https (voir le cours : cours-https).