La cryptologie est une science jeune.

Bien qu'elle soit utilisée depuis des milliers d'années pour cacher des messages secrets, l'étude systématique de la cryptologie en tant que science (et peut-être art) a commencé il y a environ cent ans.

La première preuve connue de l'utilisation du chiffrement (sous une forme ou une autre) a été trouvée dans une inscription gravée vers 1900 avant J.-C., dans la chambre principale du tombeau du noble Khnoumhotep II, en Égypte. Le scribe utilisait ici et là des symboles hiéroglyphiques inhabituels à la place de symboles plus ordinaires. Le but n'était pas de cacher le message, mais peut-être de modifier sa forme de manière à le faire paraître digne. Bien que l'inscription n'ait pas été une forme d'écriture secrète, elle comporte une transformation du texte original, et est le plus ancien texte connu de ce genre. Des preuves d'une certaine utilisation du chiffrement ont été observées dans la plupart des grandes civilisations primitives. « Arthshashtra », un ouvrage classique sur l'art de gouverner écrit par Kautalya, décrit le service d'espionnage en Inde et mentionne le fait de confier des tâches à des espions en rédigeant des « messages secrets ». Cela fait penser à une version ancienne de James Bond...

Avançons jusqu'à environ 100 avant J.-C. : Jules César était connu pour utiliser une forme de chiffrement pour transmettre des messages secrets à ses généraux de l'armée postés sur le front de guerre. Ce chiffrement par décalage, connu sous le nom de code de César, est peut-être le chiffrement historique le plus mentionné dans la littérature universitaire (un code est un algorithme utilisé pour le chiffrement ou le déchiffrement). Dans un chiffrement par décalage, chaque caractère du texte brut (le texte brut est le message qui doit être chiffré) est remplacé par un autre caractère pour former le texte chiffré (le texte chiffré est le message chiffré). La variante utilisée par César était un chiffrement avec un décalage de 3. Chaque caractère était décalé de 3 positions, de sorte que le caractère « A » était remplacé par « D », « B » par « E », etc. Les caractères à la fin repartaient du début, de sorte que la lettre « X » était remplacée par « A ».

Figure 1.

On constate aisément que de tels codes dépendent du secret du système et non de la clé de chiffrement. Une fois que le système est connu, ces messages chiffrés peuvent être facilement déchiffrés. En effet, les codes par décalage peuvent être cassés en utilisant la fréquence des lettres dans la langue.

Au XVIe siècle, Vigenere a conçu un code qui était censé être le premier code à utiliser une clé de chiffrement. Dans l'un de ses codes, la clé de chiffrement était répétée plusieurs fois dans l'ensemble du message, puis le texte chiffré a été produit en ajoutant le caractère de message avec le caractère de clé modulo 26 (modulo, ou mod, est une expression mathématique dans laquelle on calcule le reste d'une division lorsqu'un nombre est divisé par un autre). Comme pour le code de César, le code de Vigenere peut être facilement brisé. Cependant, le code de Vigenere a apporté l'idée même d'introduire des clés de chiffrement, bien qu'il ait été mal exécuté. Par rapport au code de César, le secret du message dépend ici du secret de la clé de chiffrement, plutôt que du secret du système.

Figure 2.

Au début du XIXe siècle, lorsque tout est devenu électrique, Hebern a conçu un engin électromécanique appelé la machine à rotor Hebern. Cette machine utilise un seul rotor, dans lequel la clé secrète est intégrée dans un disque rotatif. La clé encodait une table de substitution et chaque pression sur une touche du clavier entraînait la sortie d'un texte chiffré. Cette action faisait également pivoter le disque d'un cran et une table différente était ensuite utilisée pour le caractère de texte brut suivant. Ce code a de nouveau été décodé en utilisant la fréquence des lettres.

La machine Enigma a été inventée par l'ingénieur allemand Arthur Scherbius à la fin de la Première Guerre mondiale et a été largement utilisée par les forces allemandes pendant la Seconde Guerre mondiale. La machine Enigma utilisait 3 ou 4 rotors, voire plus. Les rotors tournent à des vitesses différentes lorsque vous tapez sur le clavier et sortent les lettres appropriées du texte chiffré. Dans ce cas, la clé était le réglage initial des rotors.

Le code de la machine Enigma a finalement été percé à jour par la Pologne et la technologie a ensuite été transférée aux cryptographes britanniques qui ont conçu un moyen d'obtenir la clé quotidienne.

Figure 3.

Jusqu'à la Seconde Guerre mondiale, la plupart des travaux sur le chiffrement étaient réalisés à des fins militaires et servaient généralement à dissimuler des informations militaires secrètes. Cependant, le chiffrement a attiré l'attention du commerce après la guerre, les entreprises essayant de protéger leurs données contre leurs concurrents.

Au début des années 1970, IBM s'est rendu compte que ses clients exigeaient une certaine forme de chiffrement. L'entreprise a donc formé un « groupe de chiffrement » dirigé par Horst-Feistel, à l'origine du code appelé Lucifer. En 1973, le Nation Bureau of Standards (aujourd'hui le NIST) aux États-Unis a lancé un appel d'offres pour créer un chiffrement par blocs qui deviendrait une norme nationale. L'organisme avait manifestement réalisé qu'il achetait de nombreux produits commerciaux qui ne prenaient pas en charge le chiffrement. Le code Lucifer a finalement été accepté et renommé DES (Data Encryption Standard). En 1997, et au cours des années suivantes, le DES a été cassé par des recherches exhaustives. Le principal problème du DES était la petite taille de la clé de chiffrement. À mesure que la puissance de calcul augmentait, il devenait facile d'attaquer par force brute toutes les différentes combinaisons de la clé pour obtenir un éventuel message en texte brut.

En 1997, le NIST a de nouveau lancé un appel d'offres pour créer un nouveau chiffrement par blocs. Il a reçu 50 soumissions. En 2000, il a accepté l'algorithme Rijndael et l'a baptisé AES (Advanced Encryption Standard). Aujourd'hui, l'AES est une norme largement acceptée et utilisée pour le chiffrement symétrique.

Les récents progrès des ordinateurs quantiques nous ont amenés à réfléchir au chiffrement post-quantique. En 2016, le NIST a lancé un « appel à propositions » et a demandé l'aide du public pour concevoir des algorithmes résistants qui pourraient nous aider « à résister à l'assaut d'un futur ordinateur quantique ». En 2020, le NIST a annoncé avoir trouvé quatre finalistes.

Pour conclure, l'histoire nous apprend ce qui suit :

  1. Le secret du message doit toujours dépendre du secret de la clé, et non du secret du système de chiffrement (c'est ce qu'on appelle le principe de Kerckhoffs).
  2. En lien avec ce qui précède, il faut toujours utiliser des codes qui ont fait l'objet d'examens publics et qui sont devenus des normes. L'utilisation du « chiffrement secret » est mauvaise, car tout comme le code de César, une fois que le système est connu, tous les messages peuvent être déchiffrés. Par exemple, si la clé est compromise, un attaquant peut accéder à tous les messages. Cependant, si l'attaquant parvient à compromettre le système de chiffrement lui-même, il peut obtenir le texte brut de chaque message (pas seulement pour une seule personne) chiffré par ce système.

À propos de l'auteur

Huzaifa Sidhpurwala is a principal Product Security Engineer, working for Red Hat Product Security Team.

Read full bio