Par Romain F. (Ingénieur Sécurité Réseau)
Rendu quasiment systématique sur la plupart des applications de messagerie, le chiffrement s’est imposé comme un incontournable des outils de cybersécurité.
Un anglicisme tenace fait que l’on en parle souvent sous le terme de « cryptage », que nous n’utiliserons pas ici car nous sommes entre personnes civilisées.
Plus sérieusement, nous veillerons à dire « chiffrer » et non « crypter ». En revanche nous parlerons bien de « cryptographie » (fait de rendre un message illisible) car le terme n’est pas un anglicisme. Paradoxalement.
Mais comment fonctionne-t-il exactement ? Saviez-vous que, dès l’antiquité, l’humanité a eu recours à des solutions de chiffrement ? Que cet outil a eu une influence majeure sur les évènements de la seconde guerre mondiale et que l’informatique est, en partie, né de la nécessité de déchiffrer les communications allemandes à cette époque ?
C’est ce que nous allons voir ensemble tout au long de cet article.
I – Définition
Le chiffrement est un procédé mathématique visant à rendre un message ou une communication illisible ou inaudible dans le but que cette communication reste confidentielle.
Il est protégé par ce que l’on appelle une clé de chiffrement. Cette clé peut être un mot de passe, un code, ou un fichier informatique.
Le chiffrement trouve ses origines dès l’antiquité avec le code de César, que nous verrons plus en détail un peu plus tard. D’après Suétone (haut fonctionnaire et historien Romain du Ier siècle), Jules César se servait de cette méthode de chiffrement pour ses correspondances secrètes.
Avec le temps, les solutions de chiffrement se sont complexifiées et reposent désormais majoritairement sur des calculs effectués par des ordinateurs.
II – Le chiffrement symétrique
On parle de chiffrement symétrique pour désigner toutes les solutions de chiffrement protégées par un mot de passe ou un code unique.
Je vous parlais plus haut du code de César. C’est l’exemple type. Son fonctionnement est simple.
Commençons par appliquer un chiffre à chaque lettre, on obtient le tableau suivant
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 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
Nous allons à présent appliquer la clé de chiffrement +3 à notre alphabet. Nous pourrions utiliser une clé de chiffrement plus grande, mais je préfère rester simple pour cet exemple. Nous obtenons alors les valeurs suivantes :
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 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 1 | 2 | 3 |
Notre alphabet ne comportant que 26 lettres, on revient à 1 une fois ce nombre atteint.
À présent, nous allons chiffrer notre alphabet en transposant les nombres par les lettres auxquelles elles sont associées dans le premier tableau.
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 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 1 | 2 | 3 |
D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
Notre alphabet chiffré est décalé de 3 lettres par rapport à notre alphabet normal. Ainsi le message « Hello world » chiffré avec la clé de chiffrement 3 s’écrira « Khoor zruog » (non il ne s’agit pas là du nom d’un orc de Warcraft mais bien d’un message chiffré).
Nous pourrions résumer le code de César par la fonction mathématique suivante :
F(x)=x+y
Où x est le chiffre associé à la lettre d’origine, y notre clé de chiffrement et F(x) la lettre chiffrée.
Une personne n’ayant pas la clé de chiffrement passera plusieurs heures à trouver la solution.
Je vous ai expliqué ici le fonctionnement du chiffrement le plus simple à aborder. Le code de César est, vous vous en doutez, inutilisé depuis plusieurs siècles mis à part dans un but éducatif.
Les solutions de chiffrement symétriques utilisées aujourd’hui reposent sur des fonctions mathématiques nettement plus complexes qui sont calculées par ordinateur.
Vous pouvez d’ailleurs vous amuser avec quelques-unes d’entre elles sur le site web https://www.dcode.fr
En dehors du code de César, une des solutions de chiffrement symétrique célèbre est Enigma.
Inventée par les Allemands dans les années 1920, Enigma reposait sur une machine à écrire sur laquelle était reliée un tableau de permutation des lettres. Ces appareils ont été massivement utilisés par l’Allemagne durant la seconde guerre mondiale.
La machine était configurée à l’avance selon un code prédéfini, l’utilisateur tapait son texte sur la machine qui générait automatiquement un message chiffré selon la configuration du tableau de permutation.
Le code changeait toutes les 24 heures.
Extrêmement complexe à déchiffrer si l’on ignore le code, des mathématiciens anglais se sont penchés sur la question durant plusieurs années. C’est finalement à l’initiative du mathématicien Alan Turing que le premier message est déchiffré aux alentours de 1942.
Ce dernier avait établi en 1941 les spécifications techniques de machines électromécaniques capables de calculer plus rapidement qu’un cerveau humain grâce à l’utilisation du code binaire. Les « machines de Turing » ou « bombes de Turing » qui se trouvent être les premiers supercalculateurs et donc de lointains ancêtres de l’ordinateur ou du smartphone grâce auquel vous lisez le présent article.
Si le sujet vous intéresse, je vous renvoie au film Imitation Game de Morten Tyldum, sorti en 2014, inspiré de la biographie Alan Turing ou l’énigme de l’intelligence d’Andrew Hodges.
La faille du chiffrement symétrique repose sur la découverte de sa clé de chiffrement qui peut être obtenue grâce à ce que l’on appelle une attaque bruteforce qui consiste à tester toutes les combinaisons possibles jusqu’à l’obtention d’un message clair. Il s’agit là, ni plus ni moins de ce qu’ont fait Alan Turing et ses collègues dans les années 40.
À la différence près que les hackers d’aujourd’hui utilisent des scripts d’attaque qui testent une bibliothèque de codes possibles, là où Alan Turing utilisait un supercalculateur occupant une pièce entière.
III – Le chiffrement asymétrique
C’est pour répondre aux failles du chiffrement symétrique que les chercheurs en sécurité se sont penchés sur d’autres solutions et ainsi développé le chiffrement asymétrique. Il repose sur une paire de clé publique et clé privée.
Pour comprendre le principe, nous allons tous ensemble nous projeter dans un jeu de rôle.
Nous sommes en 1780, vous êtes le Baron ou la Baronne d’une petite région de France et vous êtes convié au salon de la Marquise de Montespan où vous faites la rencontre du Comte d’Amiens avec qui vous échangez sur différentes méthodes d’amélioration de l’agriculture dans votre région. Oui, vous êtes un noble concerné par le bien être de vos gens, c’est bien. Ils sauront s’en rappeler d’ici 9 ans ce qui vous permettra notamment de garder la tête sur les épaules.
Vous remettez au Comte une clé, que nous appellerons « clé publique » ainsi qu’un coffre.
Une fois rentré chez lui, le Comte se muni de plume, encre et parchemin et vous écrit une longue lettre afin de poursuivre vos échanges. Il place la lettre dans le coffre que vous lui avez remis et ferme ce dernier avec votre clé publique. La clé permet de fermer le coffre, mais pas de l’ouvrir.
En recevant le coffre, vous vous munissez d’une autre clé, différente de la précédente, que nous appellerons « clé privée ». Cette clé est unique, vous êtes le seul à la posséder. Celle-ci permet d’ouvrir le coffre et d’accéder au message qu’il contient.
Ce faisant, vous avez l’assurance que :
- L’expéditeur est bien le Comte que vous avez rencontré ou tout du moins un expéditeur dit « de confiance » à qui vous avez remis votre clé publique
- Personne n’a pu lire ou modifier le message contenu dans le coffre
- L’expéditeur peut difficilement nier être l’auteur du message
Les plus avertis auront reconnu ici trois des cinq piliers de la sécurité informatique : Confidentialité, Intégrité et Non-répudiation. L’Authentification et la Disponibilité n’étant ici pas applicables (je rappelle que nous sommes en 1780).
Revenons au présent et remplaçons nos clés par des fichiers informatiques et la serrure du coffre par un logiciel de chiffrement. Ce logiciel chiffre le message selon une fonction mathématique et votre clé publique. Ce même logiciel emploiera une autre fonction mathématique avec votre clé privée pour effectuer le déchiffrement. Vous avez là un outil de chiffrement asymétrique.
La garantie de ces outils repose sur la confidentialité de la clé privée. Vous pouvez distribuer votre clé publique comme bon vous semble, mais votre clé privée doit rester, comme son nom l’indique, privée. Le cas échéant, on parle de clé compromise et il est recommandé de faire renouveler la paire de clés.
Pour en expliquer le fonctionnement, nous allons voir ensemble le chiffrement RSA (pour Rivest, Shamir et Adelman, noms des trois inventeurs de cette solution) qui figure comme une des solutions de chiffrement asymétrique les plus fiables, publiée en 1978.
RSA repose sur des facteurs de nombre premiers. Cette information peut paraître anodine mais elle est fondamentale. En effet, un nombre premier n’est divisible que par 1 ou par lui-même, ce qui le rend très difficiles à factoriser notamment pour les grands nombres. Si l’opération est réalisable pour un être humain avec des nombres comme 3 et 11, elle deviendra nettement plus complexe avec un nombre premier comme 3 000 251.
Les calculs des clés de chiffrement RSA étant fastidieux, je les ai mis à la fin de l’article si cela vous intéresse.
Voici malgré tout, les fonctions de chiffrement C(x) et de déchiffrement D(x) du protocole RSA :
C(x) ≡ₐxⁱ
D(x) ≡ₐxⁿ
Où i, n et a sont des composants de la clé publique et de la clé privée (a est commun aux deux, tandis que i ne figure que dans la clé publique et n uniquement dans la clé privée) [1].
La fonction de chiffrement C(x) se lit « C(x) est congru à x puissance i modulo a ». Ce qui est extrêmement clair.
Rassurez-vous, cela signifie seulement que lorsqu’on divise C(x) par a il reste xⁱ. C’est dans le respect de ces conditions mathématiques qu’est assuré le chiffrement.
Le chiffrement asymétrique est lui aussi soumis à des risques d’attaque bruteforce. Cependant, dans le cadre de RSA par exemple, tout repose sur le choix des nombres premiers utilisés. Plus les nombres seront grands, plus le déchiffrement par attaque sera long et représentera une perte de temps.
Il est donc important de renouveler régulièrement les clés de chiffrement afin de ne pas motiver un attaquant à prendre le pari de se lancer dans un déchiffrement qui durera plusieurs années.
Pour l’exemple, en 2010 des chercheurs en sécurité sont parvenus à casser un chiffrement RSA de bas niveau au terme de 2 ans et demi de calcul (https://www.generation-nt.com/cle-rsa-768-bits-cassee-inria-actualite-939471.html)
Faisant partie intégrante de notre histoire, le chiffrement a évolué au fil des époques pour répondre aux besoins évidents de confidentialité et de sécurité.
Il a permis l’émergence d’outils que nous utilisons désormais dans notre quotidien.
Nous l’utilisons sans même nous en rendre compte, que ça soit pour protéger nos communications avec nos proches via les applications Signal et WhatsApp, ou alors en utilisant un VPN pour faire du télétravail.
J’ai beaucoup parlé de chiffrement appliqué à la messagerie car c’est l’exemple le plus concret. Mais il existe aussi des solutions de chiffrement appliquées aux réseaux ou aux supports de stockage.
Il s’expose aussi dans l’art. À l’instar de Kryptos (https://fr.wikipedia.org/wiki/Kryptos_(sculpture)), monument exposé au siège de la CIA et dont le texte n’a été que partiellement déchiffré en 30 ans.
L’utilisation du chiffrement pour protéger la vie privée est aussi le fer de lance du mouvement Cypherpunk, apparu au début des années 90 et comptant notamment parmi ses membres Philip Zimmermann (créateur du logiciel de chiffrement asymétrique PGP) ou encore Julian Assange.
Toutefois, le chiffrement n’est pas infaillible. En 2019, un ordinateur quantique est parvenu à casser le chiffrement RSA en 8 heures (https://siecledigital.fr/2019/06/04/un-ordinateur-quantique-casse-le-cryptage-rsa-sur-2048-bits-en-8-heures/).
Loin d’inquiéter les chercheurs en cybersécurité, cet évènement démontre ce que nous savions déjà, à savoir la nécessité de ne pas se reposer sur nos acquis et de travailler en permanence sur de nouvelles solutions de protection qui sauront résister et évoluer avec les innovations technologiques. Comme l’écrivait Bruce Schneier en 2000, « la sécurité informatique est un processus, et non un produit ».
[1] En réalité on utilisera respectivement les lettres e (encrypt) d (dectrypt) et n mais Word ne me permet pas d’avoir les exposants correspondants.
ANNEXE : Calculs de clés de chiffrement RSA
On choisit deux nombres premiers entier p et q tel que p < q
On calcule ensuite n et Ψ (« phi ») tel que
n = p x q
Ψ = (p – 1) x (q – 1)
On détermine le nombre e tel que le plus grand commun diviseur (PGCD) de e et Ψ soit égal à 1
Enfin, le nombre d tel que d est congru à e puissance -1modulo Ψ
La clé publique est composée des valeurs (n ; e), la clé privée des valeurs (n ; d)
Vous trouverez divers exemples appliqués avec des nombres simples par ici :