Qu’est-ce que la cryptographie ?

Une définition simple de la cryptographie est le fait d’appliquer un ensemble d’opérations sur une donnée dans le but de la rendre incompréhensible. Pour récupérer la donnée en clair, il faut juste appliquer de nouveau les mêmes opérations.

Il existe trois types de cryptographie : cryptographie symétrique, asymétrique et hybride.

  • Cryptographie symétrique

Supposons qu’Alice souhaite envoyer un message secret à Bob. Si Eve, par exemple, arrive à intercepter ce message, alors le secret d’Alice sera dévoilé.

Avec la cryptographie symétrique, Alice peut chiffrer son message avec une clé cryptographique (partagée à l’avance avec Bob) dans le but de le rendre incompréhensible. Pour que Bob arrive à lire ce message, il doit le déchiffrer avec la même clé cryptographique (appelée aussi clé symétrique). Eve, et sans cette clé, ne pourra pas lire ce message même si elle arrive à l’intercepter.

Dans cet exemple (très simple), la clé cryptographique utilisée est de décaler d’un pas toutes les lettres (algorithme de César).

Il faut noter que la sécurité de la cryptographie symétrique repose principalement sur la protection de la clé cryptographique.

Supposons maintenant qu’Eve arrive à intercepter la clé symétrique qu’Alice a transmis à Bob.

Elle va être capable de déchiffrer tous les messages échangés entre Alice et Bob. L’envoi d’une la clé cryptographique sur le réseau présente un inconvénient pour la cryptographie symétrique.

  • Cryptographie asymétrique (dite aussi cryptographie à clé publique)

Pour être en mesure d’utiliser la cryptographie asymétrique, chaque personne doit générer (ou être en possession) de deux clés cryptographiques : une clé publique à partager avec tout le monde et une clé privée (ou secrète) à garder bien protégée. La relation entre ces deux clés est bien simple : chaque message chiffré avec une clé publique ne pourra être déchiffré qu’avec la clé privée associée à cette dernière. Les fonctions mathématiques utilisées pour la cryptographie asymétrique reposent principalement sur la complexité du logarithme discret, c’est-à-dire, en connaissant la clé publique d’une personne, il est quasi-impossible d’en déduire sa clé privée.

Le grand avantage de la cryptographie asymétrique est le fait de ne partager sur le réseau que la clé publique (clé de chiffrement). Celle de déchiffrement ne doit en aucun cas être communiquée ou accessible via le réseau.

Avec la cryptographie asymétrique, si Alice veut envoyer un message à Bob, elle doit le chiffrer avec la clé publique de Bob. Dès que Bob reçoit le message, il le déchiffre avec sa clé privée. Comme ça, si Eve arrive à intercepter le message tout en connaissant la clé publique de Bob, elle ne pourra rien faire parce qu’elle ne connaît pas la clé privée de Bob a gardé protégée.

L’inconvénient d’utiliser ce type de cryptographie est le fait que pour être bien protégé, il faut utiliser des clés avec des tailles très grandes. Si le message à envoyer est volumineux, le calcul de chiffrement/déchiffrement va prendre du temps ce qui va engendrer une lenteur dans les échanges entre Alice et Bob.

La cryptographie asymétrique est considérée plus sécurisée que la cryptographie symétrique en revanche, elle est beaucoup plus lente.

  • Cryptographie hybride

La cryptographie hybride combine à la fois la cryptographie symétrique et asymétrique.

Elle sert à assurer la sécurité de la cryptographie asymétrique et la rapidité de la symétrique. Elle utilise la cryptographie asymétrique pour échanger une clé symétrique. Une fois cette clé symétrique est partagée, elle sera utilisée pour le reste de l’échange entre Alice et Bob.

En résumé, pour la cryptographie hybride, on a deux phases :

  1. Cryptographie asymétrique : Pour échanger une clé symétrique entre Alice et Bob ;
  2. Cryptographie symétrique : Pour chiffrer la communication entre Alice et Bob (en utilisant la clé symétrique partagée dans l’étape 1).

Le hachage

Dans cette partie, je vais présenter l’une des utilisations la plus répandue des fonctions de hachage.

Prenons l’exemple d’une banque qui stocke les identifiants et les mots de passe de ses clients dans son serveur. Un client qui veut se connecter à son compte bancaire n’a qu’à saisir son identifiant et son mot de passe dans l’application. La banque vérifie ensuite ses données et lui libère l’accès si tout est bon.

Imaginons maintenant qu’un attaquant arrive à exploiter une vulnérabilité sur le serveur de la banque et réussisse à récupérer toute la base de données. Dans ce cas, il va être en possession de tous les identifiants et les mots de passe des clients et n’a qu’à les saisir dans l’application pour accéder aux comptes bancaires des clients.

Alors, que peut-on faire pour protéger les comptes des clients si le serveur de la banque a été piraté ?

La meilleure solution est d’utiliser une fonction de hachage.

Le hachage ? C’est quoi ?

Contrairement à la cryptographie, une fonction de hachage est une fonction mathématique à sens unique. C’est-à-dire, une fois appliquée à une donnée, on ne peut pas avoir la donnée de nouveau.

Revenons à l’exemple de la banque mais en supposant cette fois-ci qu’elle utilise une fonction de hachage sécurisée pour stocker les identifiants et les mots de passe de ses clients. C’est-à-dire, elle applique une fonction de hachage aux identifiants et mots de passe avant de les stocker. Dans ce cas, le serveur de base de données ne va contenir que les hachés des identifiants et mots de passe.

Si un utilisateur légitime saisit son identifiant et mot de passe dans l’application pour accéder à son compte bancaire, la banque va appliquer la fonction de hachage sur ses informations de connexion et la comparer à ceux stockés sur son serveur. S’ils sont identiques, l’accès sera donc libéré à l’utilisateur.

Si maintenant une personne malveillante arrive à pirater le serveur de la banque et récupère la base de données des identifiants et mots de passe, elle ne va trouver que les hachés de ces derniers. Et comme les fonctions de hachage sont à sens unique, elle ne pourra pas avoir les informations originales.

Les fonctions d’hachage peuvent être utilisées aussi comme complément de sécurité pour la cryptographie. En effet, lors d’un échange entre Alice et Bob, Alice peut hacher son message et l’envoyer en parallèle avec le message chiffré à Bob. Bob à son tour va déchiffrer le message et lui appliquer la fonction d’hachage. Si le haché est identique à celui envoyé par Alice, Bob peut être certain que le message reçu n’a pas été altéré en cours de chemin.

Dans ce cas, on dit que la fonction d’hachage a assuré l’intégrité du message alors que la cryptographie a assuré la confidentialité.

De nos jours, il existe plusieurs algorithmes de cryptographie et de hachage. Ci-dessous les algorithmes les plus utilisés et les plus recommandés avec les exigences minimales à respecter :

  • Cryptographie symétrique AES-128 : Algorithme AES avec une longueur de clé de 128 bits.
  • Cryptographie asymétrique RSA-2048 : Algorithme RSA avec une longueur de clé de 2048 bits.
  • Fonction de hachage SHA-256 : Algorithme SHA avec une empreinte (ou haché) de taille 256 bits.

Article rédigé par Yassine Boussaada

A propos de l'auteur

Acteur incontournable des services du numérique, Metsys s’engage à satisfaire l’ambition de ses clients dans leurs projets de transformation digitale.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.