Qu’est-ce que le cryptage, et comment ça fonctionne?
De nos jours, le cryptage est utilisé même sur la plus simple des applis. Puisque il est si simple de hacker vos informations en ligne, le cryptage et autres formes de cryptographie sont les meilleurs outils disponibles pour protéger vos informations.
La plupart des applications et programmes utilisent une forme de cryptage. Les meilleurs VPN utilisent un cryptage AES avec des clés 256 bit, et c’est l’une des raisons pour lesquelles les VPN sont la meilleure façon de sécuriser vos activités en ligne.
D’autres applis populaires, comme WhatsApp et Gmail, utilisent également une forme de cryptage.
Mais si nous utilisons la cryptographie dans nos vies quotidiennes, la plupart d’entre nous ne sait pas comment cela fonctionne.
Pour nous aider à comprendre comment marche la cryptographie, nous allons nous pencher sur un exemple pratique.
Le problème avec les canaux ouverts
Imaginez une salle de chat classique où les utilisateurs peuvent communiquer les uns avec les autres avec des messages écrits. Comment construire une salle de chat sécurisée avec des messages cryptés ?
La première chose à implanter, c’est un canal simple avec des communications basées sur TCP. Puisque la sécurité est non-existante, chaque message envoyé par les utilisateurs est susceptible d’être attaqué.
Donc, quand Alice et Julien s’envoient des messages, les hackeurs peuvent facilement lire leurs messages. Cette attaque s’appelle l’attaque de l’homme du milieu. Les hackeurs peuvent aussi modifier les messages et les rediriger.
Tout cela est rendu possible parce que le canal de communication par défaut transmet le message en texte clair. C’est la même chose avec les communications HTTP sur les réseaux wifi ouverts. Nous avons clairement besoin d’un meilleur système.
Cryptage symétrique
Le cryptage symétrique utilise un algorithme qui converti le message en clair original en un message crypté avec texte chiffré grâce à une clé de cryptage. Cette même clé est utilisée par le destinataire pour convertir le texte chiffré en texte en clair. Utilisons le même principe pour notre application.
Quand Alice veut envoyer un message à Julien, elle le crypte avec une clé symétrique. Quand Julien le reçoit, il utilise la même clé pour décrypter le message. Sans la clé, les hackeurs ne peuvent pas accéder à la communication cryptée entre les deux utilisateurs, qui reste confidentielle.
En général, une seule clé symétrique est générée par session, non valide pour les communications ultérieures. On l’appelle clé de session.
Toutefois, cette approche a des inconvénients :
- Échelonnabilité : notre solution n’est pas échelonnable. Si 1000 utilisateurs veulent communiquer ensemble, ils auront besoin de 999 clés différentes pour établir un canal sécurisé.
- Distribution de clé : nous sommes partis du principe que les deux parties auraient accès à la clé symétrique, mais comment obtiennent-ils cette clé ? Si Alice génère une clé symétrique (ou clé de session) et l’envoie à Julien, un hackeur pourrait l’intercepter et décrypter les communications suivantes.
Alors, quelle est la prochaine étape ?
Cryptage asymétrique
Le cryptage asymétrique utilise deux clés : une clé publique et une clé privée. Quand le texte en clair est crypté avec une clé publique, on peut seulement le décrypter avec la clé privée correspondante, et vice-versa.
Cela aide à contourner le problème des deux clés symétriques. Le cryptage asymétrique est plus lent que le cryptage symétrique, ils sont donc généralement utilisés en tandem. Jetons un coup d’œil au processus:
Chaque utilisateur possède une paire de clés publiques/privées. La clé publique est disponible, et connue de tous, et la clé privée est confidentielle et protégée par son propriétaire.
Quand Alice veut envoyer un message à Julien, elle crée d’abord une clé de session, symétrique. Elle la crypte ensuite avec la clé publique de Julien. Puisque Julien possède la clé privée correspondante, il n’y a que lui qui peut décrypter le message et obtenir la clé de session.
À partir de là, cette clé de session peut être utilisée pour crypter et décrypter les messages qu’ils s’envoient. Cela résout le problème, en permettant de distribuer la clé sans compromettre la vitesse, puisque le cryptage asymétrique, plus lent, n’est utilisé que pour la première action.
Le problème d’échelonnabilité est également résolu, puisque les gens n’ont besoin que d’une paire de clés publiques/privées pour communiquer les uns avec les autres.
Le système est désormais bien meilleur, mais pas encore complètement sécurisé. Il reste des problèmes :
- L’authentification : nous utilisons la clé publique de Julien comme point de départ, mais comment l’avons-nous obtenue ? La clé publique que nous avons reçue en premier pourrait venir de Julien, ou de quelqu’un qui se fait passer pour lui, un hackeur. Donc, nous communiquons de manière sécurisée, mais avec la mauvaise personne.
- Intégrité des données : le message pourrait être modifié pendant le transfert de données. Mieux vaut s’assurer que les données n’ont pas été touchées.
Certificats et signatures numériques
L’authentification nécessite un système de confiance. Une autorité fiable en matière de certificat (CA) s’assure qu’une clé publique appartient à la bonne personne. Chacun des utilisateurs du système enregistre un certificat numérique auprès de l’autorité de certification (CA). Il contient les informations personnelles du propriétaire ainsi qu’une clé publique.
Donc, quand Alice veut communiquer avec Julien, elle peut vérifier avec l’autorité de certification que la clé qu’elle a reçue appartient bien à Julien. C’est également comme cela que le HTTPS fonctionne sur Internet. Un certificat racine est relié à d’autres certificats ayant une signature numérique (décrite ci-dessous).
Alors, comment savoir si les certificats reçus proviennent de la CA et pas du hackeur ? En général, les certificats racine provenant d’une autorité de certification fiable sont codés en dur sur le navigateur, ce qui nous donne une base à laquelle se fier.
Le problème d’intégrité des données peut être résolu en utilisant des signatures numériques (à ne pas confondre avec les certificats numériques).
Lorsqu’Alice veut envoyer un message à Julien, elle crée d’abord une clé de session et la crypte avec la clé publique de Julien. Appelons ce paquet de données PARTIE1. Ensuite, elle crée un hachage de message grâce à l’un des nombreux algorithmes des hachage disponibles (MD5/SHA256). Un hachage de message est une conversion à sens unique, d’un octet à longueur varié à un octet à longueur fixe.
On ne peut pas obtenir le message original à partir de la valeur de hachage, et il est statistiquement peu probable que deux messages aient la même valeur de hachage.
Après avoir créé le hachage, Alice le crypte avec sa clé privée. On appelle ça une signature numérique puisque qu’elle peut être utilisée pour vérifier que le message provient bien d’Alice et qu’il n’a pas été modifié.
La signature numérique et le message original sont cryptés avec la clé de session. Appelons ça PARTIE2. Voici ce que ça donne :
PARTIE1 = CLÉ_PUBLIQUE_JULIEN -> (CLÉ_SESSION)
PARTIE2 = CLÉ_SESSION -> (MESSAGE + SIGNATURE_NUMÉRIQUE)
Alice envoie la PARTIE1 et la PARTIE2 à Julien. Puisqu’il possède la clé privée, seul Julien peut décrypter la PARTIE1 et accéder à la CLÉ_SESSION.
Ensuite, il utilise cette clé de session pour décrypter la PARTIE2 et récupère le message et la signature numérique. Puis, il se sert de la clé publique d’Alice pour décrypter la signature numérique et récupérer le hachage du message. Julien calcule ensuite le hachage du MESSAGE et le compare à celui d’une des étapes précédentes.
Si les deux hachages correspondent, cela signifie que l’intégrité des données a été préservée et qu’elles n’ont pas subi de modifications.
Comme vous pouvez le voir, nous avons créé un écosystème parfaitement sécurisé.
Avec des certificats et des signatures numériques, on peut créer un système d’authentification crypté qui est rapide, sûr, confidentiel et échelonnable.
Maintenant que vous savez comment fonctionne le cryptage, allez voir nos VPN préférés pour pouvoir le voir en action.
Dites-nous comment améliorer cet article dans les commentaires. Votre avis nous importe !