C'est quoi le chiffrement ?

Que signifie “chiffrer” et comment ça marche ?

Le chiffrement (ou cryptage) est une technique de cryptographie qui consiste à transformer des données pour les rendre illisibles à toute personne n'ayant pas la clé qui permet de les déchiffrer.

Petit saut dans l'enfance

N'avez-vous jamais essayé de parler un langage codé avec quelqu'un d'autre pour vous amuser ?

Par exemple : l'Alphabet décalé ( A devient B ).

Alphabet A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Alphabet décalé B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
Avec ce code, le mot « ANIMATION » devient « BOJNBUJPO » !

Cette technique peut vous paraître idiote, mais César en personne utilisait ce système avec un décalage de 3 lettres afin de protéger le courrier qu'il donnait à ses messagers.
Souvenez vous également du cryptanaliste très connu Alan Turing qui parvint à déchiffrer des messages allemands cryptés avec la machine Enigma et dont le film “Imitation Game” raconte l'exploit.
C'est une autre méthode de cryptographie. Bon, à ce stade, c'est bien plus compliqué que la méthode de César !

Comme vous venez de le constater, il existe plusieurs méthodes de cryptographie.

La méthode du chiffrement ne se base pas sur un décalage de l'alphabet, mais sur des règles bien plus complexes que l'on appelle des algorithmesUn algorithme, c’est comme une recette de cuisine. C’est une suite d’étapes qu’un logiciel doit suivre pour obtenir un résultat. et qui évoluent chaque décennie avec les progrès de calcul des ordinateurs.
Je ne vais pas vous expliquer ces algorithmes ici, car je n'ai pas assez de compétences et d'autres personnes le font mieux que moi.
Néanmoins, si voulez mettre le nez dans l'explication technique de ces différents algorithmes de chiffrement, vous pouvez vous rendre sur cette page.

Je vais simplement vous présenter l'élément commun et indispensable au fonctionnement de tous ces algorithmes.

Si l'algorithmeUn algorithme, c’est comme une recette de cuisine. C’est une suite d’étapes qu’un logiciel doit suivre pour obtenir un résultat., c'est la méthode de chiffrement :

Dans notre exemple ci-dessus : décaller les lettres de l'alphabet.


La clé, elle, indique à l'algorithme les paramètres de chiffrement :

Dans notre exemple ci-dessus : A est décalé de 1 rang, autrement dit : A = B.

Pour se rendre compte

Dans les méthodes modernes de cryptage, on utilise des clés numériques sous forme de séquences de bits, c'est à dire une suite de 0 et de 1.
Ces 0 ou ces 1 vont donner à l'algorithme les paramètres de chiffrement.

Ainsi, le critère essentiel pour la sécurité du cryptage est la longueur de clé !

Plus la clé est longue, plus il existe de possibilités, donc plus il devient impossible de toutes les essayer !
En informatique on appelle l'espace de clé le nombre de possibilités imposé par la clé de chiffrement.
Donc comme pour un mot de passe, plus l'espace de clé est grand, mieux c'est !

L'exemple de l'attaque par force brute

L'une des méthodes d'attaque des hackers est l'attaque par force brute, une méthode de décryptage basée sur l'essai de toutes les combinaisons possibles.

Exemple

Un texte chiffré avec la méthode de César peut être décryptés par “Force Brute”. En effet l'espace de clé (le nombre de possibilité par lettre) est de 27 (les 27 lettres de l'alphabet), ce qui correspond en langage numérique à une longueur de clé inférieure à 5 bits. Un pirate n’a qu’à essayer 27 combinaisons par lettre pour déchiffrer le texte en clair. Le cryptage de César n'est donc pas un obstacle sérieux ! Aujourd'hui, un algorithme comme l'AES utilise des clés dont la longueur va de 128 à 256 bits.
L'espace clé de cette procédure est donc important.

Ainsi, une clé d'une longueur de 128 bits, représente 2128 possibilités. Cela correspond à plus de 340 sextillions de combinaisons de touches possibles ! Et si l'on passe par une clé de 256 bits, le nombre de possibilités est supérieur à 115 duodécilliards.

Même avec un équipement technique approprié, il faudrait une éternité pour essayer toutes les combinaisons possibles. Avec la technologie disponible aujourd'hui, les attaques par force brute ne sont donc pas réalisables avec le chiffrement AES256.

Illustration du chiffrement symétrique avec un pôtichat et un lapinou

Exemple :

  1. Mimine veut envoyer un message chiffré à Lapinou.
  2. Elle lui donne la clé avec laquelle elle va chiffrer son message.
  3. Lapinou reçoit le message chiffré et le déchiffre avec la clé que Mimine lui a donné.

L'inconvénient : c'est qu'il faut communiquer la clé de chiffrement et de déchiffrement à la tierce personne à qui l'on veut communiquer ses données cryptées.

Et oui, ça peut paraitre bête, mais prenons cet exemple :

Mon téléphone est sur écoute et je veux parler dans une langue cryptée avec une autre personne. Je définis donc les règles de cryptage de ce langage.
Sauf que me voilà bien embêté : il faut que je communique à l'autre personne ces fameuses règles pour qu'elle puisse décrypter ce que je vais lui dire au téléphone !
Mais comment je lui communique cette “clé de chiffrement et de déchiffrement” ? Soit j'ai un moyen sécurisé extérieur (rencontrer la personne en vrai par exemple), soit je suis coincé !

Pour pallier au risque de piratage du chiffrement symétrique lors de l'échange de la clé, un autre système d'échange de clé à ainsi été mis au point : le chiffrement asymétrique.

Ouh la la, ça comment à se corser dites donc ! (Si vous avez du mal à piger, c'est normal 😃)

Illustration du chiffrement asymétrique

Prenons un exemple :
Si Lapinou veut que Mimine lui envoi un message chiffré, il va créer deux clés :

  • La clé publique : c'est la clé qu'il va donner à Mimine et avec laquelle elle va chiffrer le message pour Lapinou.
  • La clé privée : c'est la clé qu'il va garder et avec laquelle il va déchiffrer le message de Mimine.

Explication

Lapinou va donner sa clé publique à tous les gens qui veulent lui envoyer des messages chiffrés, comme par exemple Mimine. Mimine va donc chiffrer le message avec la clé publique de Lapinou avant de lui envoyer un message.
Pour déchiffrer ce message, Lapinou doit utiliser sa clé privée, clé qu'il est le seul à posséder.

Ainsi, si un pirate intercepte la clé publique au moment où Lapinou la communique à Mimine, et bien ce n'est pas grave, car justement, elle est publique ! En effet, avec cette clé, le pirate pourra envoyer des messages chiffrés à Lapinou mais ne pourra jamais déchiffrer les messages chiffrés que reçoit Lapinou car pour cela il faut la clé privée que dernier est le seul à posséder !

L'avantage du chiffrement asymétrique est de protéger le contenu du message même en cas de piratage pendant l'échange des clés publiques.

L'inconvénient : ce système de clés multiples est beaucoup plus complexe à calculer mathématiquement par l'algorithme. Le cryptage est plus long, plus gourmand en ressources matérielles et les fichiers une fois chiffrés prennent plus de place.

Comme vous venez de le voir, le chiffrement asymétrique est plus sécurisé, mais aussi plus lourd à mettre en place.

Voyez plutôt :

Mimine veut communiquer des fichiers chiffrés à Lapinou :

  1. Mimine crypte les fichiers avec un chiffrement symétrique donc avec une seule clé secrète pour le chiffrement/déchiffrement car c'est plus performant pour des opérations quotidiennes.
  2. Sauf que Mimine ne va pas me communiquer cette clé secrète, elle va la chiffrer une seconde fois, également avec un second chiffrement symétrique. Pourquoi ? De façon à créer une clé de déchiffrement temporaire qui sera supprimée dès que Lapinou aura terminé. Le temps de sa session, cette clé va permettre à Lapinou de déchiffrer la clé secrète originale et donc à la suite, de déchiffrer les fichiers de Mimine !
  3. Pour s'échanger cette clé provisoire, Mimine et Lapinou vont établir une communication chiffrée de façon asymétrique : c'est à dire qu'ils échangent leur clé publique.
  4. La clé provisoire symétrique est à nouveau chiffrée par Mimine avec la clé publique de Lapinou qui pourra, lui seul, déchiffrer la clé provisoire symétrique avec sa clé privée. Il va pouvoir utiliser cette clé provisoire pour déchiffrer temporairement la clé secrète originale et déchiffrer les fichiers de Mimine.
  5. Quand Lapinou a fini, Mimine détruit la clé provisoire symétrique.

Ouh la la, déjà que j'étais paumé·e avec le chiffrement asymétrique, mais là je ne comprends plus rien ! (C'est complètement normal 😃)

Bah oui c'est vrai ça, c'est bien de créer des clés, mais où sont-elles rangées et qui en a l'accès ?

Un chiffrement “côté serveurOrdinateur connecté 24h/24h sur internet et qui héberge le plus souvent un ou plusieurs sites internet.”, cela veut dire l'opération de chiffrement est réalisée sur le serveur. Cela veut dire que les fichiers sont en clair sur le serveur avant d'être chiffrés. Cela veut dire aussi que la clé de chiffrement/déchiffrement principale est stockée directement sur le serveur.

Tout le monde a accès à la clé principale ?

Non.
Déjà, cette clé de chiffrement/déchiffrement principale n'est pas communiquée directement, même aux personnes autorisées.
En effet, grâce au système hybride que nous venons de voir à l'instant, cette clé de chiffrement principale est elle-même chiffrée avec une clé provisoire à chaque fois que quelqu'un à besoin de s'en servir. C'est ce qu'on appelle une clé de session.
Pour pour avoir accès à cette clé de chiffrement provisoire, le plus souvent, le service nous demande de créer un mot de passe pour nous connecter. Chaque connexion avec ce mot de passe déclenche la création et le déchiffrement d'une clé de session qui sera supprimée lors de notre déconnexion.

Mais il y a deux inconvénients

  • Si le mot de passe tombe entre de mauvaises mains ou n'est pas assez solide, les fichiers sont facilement accessibles !
  • Il faut avoir une entière confiance en ce service qui met en place ce chiffrement, car il peut très bien se garder un accès à la clé de chiffrement principale au cas où il voudrait jeter un œil à vos fichiers (comme le font certains GAFAM par exemple).

Un chiffrement “côté client” signifie que l'opération de chiffrement est réalisée sur l'appareil utilisé (un téléphone, un ordinateur, …) avant d'envoyer les fichiers sur le serveur. Contrairement au chiffrement côté serveur, le chiffrement côté client stocke les clés de chiffrement exclusivement sur l'appareil qui en a besoin et nulle part ailleurs.
Qu'est ce que ça veut dire ?
Cela veut dire que le serveur ne peut pas déchiffrer les fichiers qu'il reçoit puisqu'il n'a aucune clé en sa possession.
En fait, personne d'autre que les appareils possédant les clés, ne peut déchiffrer le contenu des fichiers.

Le chiffrement côté client est aussi appelé chiffrement de bout en bout lorsqu'il s'agit de chiffrer des communications entre deux personnes.

Le seul inconvénient, c'est qu'il faut que les clés soient présentes sur chaque appareil depuis lequel on veut pouvoir déchiffrer les fichiers.
C'est comme ça par exemple que fonctionne l'application Signal (que je présente dans cet article).
Les messages envoyés sont chiffrés et déchiffrés sur les appareils de chaque personne avant de transiter par le serveur. Ainsi, même si quelqu'un accédait au contenu du serveur, il ne verrait que des fichiers incompréhensibles.

Un autre exemple :

Pour des raisons professionnelles, je fus obligé de me créer un compte sur Dropbox il y a des années (certaines personnes de mon travail partagent des documents sur Dropbox à toute l'équipe). Dropbox est un service de cloud bien connu, mais je n'ai pas confiance en eux car je sais qu'ils peuvent lire le contenu des fichiers qu'ils hébergent et qu'ils sont partenaires des programmes de surveillance de la NSA(1).
J'ai donc préféré une alternative plus éthique, mais avant de trouver cette alternative, j'ai utilisé Dropbox pour stocker des fichiers que j'ai chiffrés avant de les envoyer sur leur cloud. Ainsi, même si Dropbox veut analyser mes documents pour établir un profil d'utilisateur et revendre ces données, il n'accède qu'à des fichiers incompréhensibles.

Explications

Imaginons qu'une personne malicieuse (que nous appellerons Pirate) se cache entre Mimine et Lapinou pendant le transfert de leurs clés publiques. Cette dernière peut donc intercepter les clés publiques et les remplacer par les siennes qu'il envoie à Mimine et Lapinou sans rien leur dire.
Ainsi, à chaque fois que Mimine envoie un message chiffré à Lapinou en pensant le faire avec la clé publique de ce dernier, elle le fait avec la clé publique de Pirate qui peut donc intercepter le message, le déchiffrer avec sa clé privée, le lire ou le modifier, et le chiffrer de nouveau mais cette fois-ci avec la clé publique de Lapinou afin que ce dernier n'y voit que du feu et se dise que son message a bien été chiffré par Mimine.

Illustration d'un vol de clé par l'attaque de l'homme du millieu

Vous trouvez ça tordu ?

Et bien il s'agit de l'une des techniques de piratage les plus répandues et dans le jargon on appelle ça :
Man in the middle attack ou l'attaque de l'homme du milieu.

L'auto-certification

La méthode la plus simple, consiste à vous certifier vous même !
En effet, les clés du chiffrement asymétrique fonctionnent dans les deux sens :

  • pour l'instant, Mimine chiffre son message avec la clé publique de Lapinou et Lapinou déchiffre le message avec sa clé privée.
  • mais Lapinou peut aussi chiffrer un message avec sa clé privée que Mimine pourra déchiffrer avec la clé publique de Lapinou.

Super ! Et alors ?

Et bien lorsque Lapinou va donner sa clé publique à Mimine, il va aussi lui donner un certificat qu'il a chiffré avec sa clé privée et que Mimine ne pourra déchiffrer qu'avec la clé publique de Lapinou.
Donc si Pirate intercepte l'échange de clés et envoie à Mimine sa propre clé publique à la place de celle de Lapinou (voir schéma précédent), Mimine ne pourra pas déchiffrer le certificat et comprendra qu'il y a un problème !

Les autorités de certification

Les autorités de certification ont vu le jour quand internet est devenu un endroit d'échange de données sensibles. Par exemple des coordonnées bancaires. Aujourd'hui, il vous parait naturel d'acheter sur internet mais souvenez-vous, au début, on était quand même plutôt méfiant·es !

Quel est leur rôle ?

Le rôle de l'autorité de certification est de donner à Lapinou un certificat et d'apposer une empreinte numérique sur la clé publique de Lapinou avant que ce dernier la communique à Mimine. Elle va donc pouvoir vérifier auprès de l'autorité de certificat si cette empreinte n'a pas changé au cours de l'échange.

Jusqu'en 2015, une demande auprès des autorités de certification était payante et demandait des démarches administratives et techniques compliquées (demande de coordonnées, validation de l'identité, installation du certificat sur le serveur et le nom de domaine …).
Début 2016 ISRG (financé entres autres par l'EFF, la Fondation Mozilla (Firefox et Thunderbird), l'Université du Michigan (U-M), Akamai, Cisco Systems, PlanetHoster, OVH) ont créé une autorité de certification automatisée et gratuite appelée Let's Encrypt.

Logo de Let's Encrypt

Cette autorité de certification gratuite et automatisée a révolutionné la mise en place du chiffrement en ligne et a permis de rendre internet bien plus sûr et plus confidentiel pour tous les sites internets et tou·te·s les internautes !
Les certificats de let's Encrypt sont volontairement courts, ils expirent et sont revérifiés tous les 90 jours.

Pour info

Fin 2015, c'est environ 35% du trafic d'internet qui est chiffré.
35%

En 2016, 50% du trafic internet est chiffré.

50%

En mars 2020, 83% du trafic est chiffré.

80%

Le 27 février 2020, l'organisation a annoncé qu'elle sécurisait 190 millions de sites web et que le cap du milliard de certificats distribués avait été dépassé.
Source : https://letsencrypt.org/fr/stats/#percent-pageloads

Synthèse

Voici une synthèse du vocabulaire que vous pouvez croiser sur internet

Systèmes de chiffrement

  • Chiffrement symétrique (ou symmetric-key cryptography, symmetric encryption) = une seule clé pour chiffrer et déchiffrer les données.
  • Chiffrement asymétrique (ou public-key cryptography, asymmetric encryption) = chaque personne possède sa paire de clés pour chiffrer et déchiffrer les données.

Technique de chiffrement

  • Chiffrement côté serveur (ou server side encryption) = le chiffrement se fait sur le serveur qui sert d'intermédiaire à l'échange des données.
  • Chiffrement côté client (ou chiffrement de bout en bout, end to end encryption, E2EE) = le chiffrement se fait directement sur l'appareil avant d'envoyer la donnée chiffrée au serveur intermédiaire.

Les certificats sont délivrés par des institutions ou générés grâce à Let's Encrypt par vous même afin de signer les données que vous envoyez à une autre personne, attester de votre identité et prouver qu'il n'y a pas eu de piratage intermédiaire.

La vidéo de Monsieur Bidouille

Monsieur Bidouille explique très bien le rôle du chiffrement dans le protocole HTTPS (d'ailleurs je vous explique le rôle du protocole HTTPS dans cet article).

Pour plus de détails: https://ssd.eff.org/fr/module/les-notions-essentielles-du-chiffrement
http://laurent.flaum.free.fr/pgpintrofr.htm

Et si vraiment vous êtes motivé·es ! Anne Canteaut(2) a organisé une conférence de 1h au département informatique de l'ENS très bien expliqué mais aussi très technique ! Retrouvez la vidéo ici : https://savoirs.ens.fr/expose.php?id=2516


2. directrice de recherche au centre Inria paris-Rocquencourt, ses projets portent principalement sur la cryptographie
  • Dernière modification : 04 December 2021
  • de herminien