• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 03/01/2024

Découvrez la cryptographie moderne

Bienvenue dans ce cours sur la cryptographie ! Dans cette première partie, je vous propose de vous en dire plus sur ce que sont la cryptographie, son vocabulaire et ses origines. Nous verrons ensuite en détail le chiffrement symétrique et comment générer des nombres aléatoires et pseudo-aléatoires. Finalement, vous apprendrez à chiffrer un disque dur avec VeraCrypt. Alors, on y va ?

Découvrez la cryptographie

La cryptographie est essentielle à la sécurité des systèmes d'information. Sans elle, un attaquant peut écouter vos communications électroniques, par exemple en interceptant des requêtes HTTP. Il peut aussi lire les fichiers du disque dur de votre ordinateur sans avoir votre mot de passe. De même, il pourrait retirer de l'argent avec votre carte de crédit ou encore ouvrir votre voiture et même la démarrer sans avoir la clé.

Par exemple, vous mettrez en place le chiffrement des disques durs, l'authentification par une infrastructure de clés publiques ou encore le contrôle d'intégrité des communications réseaux.

Vous devrez également vous assurer que les systèmes cryptographiques sont correctement utilisés de manière sécurisée.

Les exemples de cryptographies mal implémentées par les entreprises ne manquent pas. Par exemple, en septembre 2018, des chercheurs belges ont démontré qu'il était possible d'ouvrir et de démarrer les voitures Tesla en clonant la clé électronique du propriétaire à distance. Pour corriger le problème, Tesla a mis à jour son système cryptographique, a ajouté une option d'authentification par code pin et a remplacé gratuitement les clés concernées.

En mai 2018, Twitter a demandé à 300 millions d'utilisateurs de changer leur mot de passe, après avoir découvert que l'entreprise avait stocké ces mots de passe en clair dans leurs journaux de connexion.

La cryptographie est de plus en plus utilisée. Dans le même temps, on découvre de plus en plus de vulnérabilités dans les protocoles considérés comme sécurisés. Votre rôle de RSSI sera également de veiller à modifier les systèmes de cryptographie qui ne sont pas ou plus sécurisés.

Cryptologie, cryptographie, cryptanalyse, quelle est la différence ? 

La cryptologie est la science du secret (du grec kruptos qui signifie "caché"). Elle se compose de 2 disciplines :

  • la cryptographie, qui comprend l’ensemble des méthodes de protection d'une information. Elle sert à garantir la confidentialité d'une information lors de communications ou de son stockage, en utilisant le chiffrement. Mais elle a également d'autres objectifs de sécurité, tels que l'intégrité et l'authentification, que vous étudierez au second chapitre ;

  • l'autre discipline, la cryptanalyse, correspond aux méthodes utilisées pour analyser les messages chiffrés et "casser" la protection cryptographique de ces messages, afin de retrouver l'information claire sans connaître la clé de déchiffrement. C'est une compétence spécialisée rare en entreprise. Dans ce cours, vous apprendrez quelques attaques utilisées en cryptanalyse.

Découvrez les termes de la cryptographie

Je vous propose de voir ensemble le vocabulaire récurrent que nous allons utiliser dans ce cours. Si vous connaissez déjà ces notions, n’hésitez pas à passer à la section suivante !

Le chiffrement

Le chiffrement est la transformation d'une information en clair en une information chiffrée, incompréhensible, mais que l'on peut déchiffrer avec une clé pour obtenir l'information en clair originale.

Un système de chiffrement (ou cryptosystème, ou encore chiffre) est composé d'algorithmes de chiffrement et déchiffrement et d'une clé de chiffrement.

Un message en clair

Un message en clair (ou texte clair) est une information non protégée et compréhensible par tout le monde.

Un texte chiffré

Un texte chiffré est une information incompréhensible pour qui ne possède pas la clé de déchiffrement, mais qu'on peut déchiffrer, retransformer en texte clair, si on possède la clé.

Un texte chiffré contient donc toutes les informations contenues dans le texte clair pour celui qui possède la clé, mais aucune de ces informations pour celui qui ne la possède pas. C'est ce que l'on appelle la confidentialité d'une information chiffrée.

Un algorithme de chiffrement

Un algorithme de chiffrement est une fonction qui prend en entrée le texte clair et la clé de chiffrement, transforme le texte par des opérations, et fournit en sortie un texte chiffré.

L'algorithme de déchiffrement est la fonction inverse, qui prend en entrée le texte chiffré et la clé de déchiffrement, transforme ce texte par des opérations, et fournit en sortie le texte clair d'origine.

Une clé de chiffrement

La clé de chiffrement (ou cryptovariable) est l'information qui permet de transformer un texte clair en texte chiffré en utilisant un algorithme de chiffrement. De même, la clé de déchiffrement est l'information qui permet de transformer un texte chiffré en son texte clair d'origine. L'espace de clé est l'ensemble des valeurs possibles de la clé, c'est une notion importante pour la sécurité d'un algorithme.

Si la clé de chiffrement et la clé de déchiffrement sont identiques, on parle de clé secrète et de chiffrement symétrique. C'est ce type de chiffrement que nous allons étudier dans cette 1e partie du cours.

Découvrez les origines de la cryptographie

Le chiffre de César

La cryptologie est utilisée depuis l'Antiquité, principalement dans le domaine militaire, pour éviter que les informations sur une armée ou sur un plan d'attaque ne tombent dans les mains de l'ennemi. La plus célèbre méthode de chiffrement de l'Antiquité est le chiffre de César, utilisé par Jules César. Cette méthode, aussi appelée chiffrement par décalage, consiste à décaler chaque lettre d'un message par la lettre de l'alphabet située à une distance fixée. Par exemple, si la distance est 3, la lettre A est remplacée par la lettre D, la lettre B par E, etc. ; et la lettre Z par C.

Par exemple, le message clair :

ATTAQUEZ A L AUBE

est transformé en utilisant le chiffre de César avec une distance de 3, en le texte chiffré :

DWWDTXHC D O DXEH

C'est quoi au fait, la distance ? 

La distance est un nombre compris entre 0 et 25.

Si on choisit la distance 0, on ne change aucune lettre et le message chiffré reste identique au message clair, et donc lisible. L'alphabet latin étant composé de 26 lettres, si on choisit une distance de 26, on ne change aucune lettre. Au-delà de 26, le chiffrement ne sera pas différent de celui de la distance modulo 26. Par exemple, une distance de 29 donnera un message chiffré identique à une distance de 29 modulo 26 = 3.

Dans ce système de chiffrement, l'algorithme de chiffrement est le décalage, qui correspond à une addition, et la clé est la distance : Texte chiffré = (Texte clair + Clé) mod 26.

L'algorithme de déchiffrement est également le décalage, mais en soustrayant la clé au lieu de l'additionner : Texte clair = (Texte chiffré - Clé) mod 26.

Méthode d’attaque n°1 : l’attaque par force brute

Comme nous l'avons vu, la clé a seulement 26 valeurs possibles. Comme chaque valeur de clé donne un texte chiffré différent, il y a 26 messages chiffrés possibles pour un texte clair, selon la valeur de la clé.

En essayant toutes les valeurs de clés possibles, un adversaire n'a besoin de faire que 26 essais. Il lui suffit ensuite de trouver lequel des 26 messages obtenus a un sens, et il aura obtenu le texte clair ainsi que la valeur de la clé.

Cette méthode d'attaque sur un algorithme est appelée l'attaque par force brute. Il consiste à essayer toutes les valeurs de clé possibles pour retrouver le texte clair. Si la taille de l'espace de clé est trop faible, l'algorithme est vulnérable par l'attaque par force brute.

Exercice

Voici un texte chiffré avec le chiffrement par décalage, en enlevant la ponctuation et les espaces :

RMACQADMVCRIQDCRIQDIQVKC

Retrouvez le message en clair correspondant en utilisant la méthode d'attaque par force brute. La solution se trouve à la fin de ce chapitre.

Protection : Le chiffrement par substitution

Une généralisation de cet algorithme est de substituer chaque lettre par une autre lettre, définie au hasard. Par exemple la lettre A est remplacée par la lettre G, la lettre B par la lettre D, la lettre Z par la lettre M, etc.

Cette clé est une permutation de 26 éléments, il y a donc "26!" (factoriel de 26) clés possibles, soit 2 puissance 88, ou encore 10 puissance 27 (1 suivi de 27 zéros). Ce nombre gigantesque de clés possibles rend l'attaque par force brute impossible à réaliser dans la pratique sans moyens informatiques.

Méthode d’attaque n°2 : l’analyse fréquentielle

Une méthode d'attaque permet de casser facilement le chiffrement par substitution : l'analyse fréquentielle des lettres. Dans la langue française, comme dans toutes les langues, certaines lettres sont plus fréquentes que d'autres. Le E par exemple est la lettre la plus courante, suivie par le S, alors que le W et le K sont les moins courantes. Avec le chiffrement par décalage, chaque lettre est toujours remplacée par la même lettre, en appliquant le décalage par une distance fixée. Ainsi, la fréquence d'apparition des lettres dans un message chiffré reste la même que pour le message clair.

En comptant le nombre d'occurrences de chaque lettre dans le message chiffré, vous voyez quelles lettres sont les plus fréquentes et lesquelles sont les moins fréquentes. Vous pouvez ainsi déduire que les lettres les plus fréquentes correspondent aux lettres les plus fréquentes de la langue française. Par exemple si le V est la lettre la plus fréquente dans le texte chiffré, vous pouvez déduire que la lettre E est permutée par la lettre V, etc.

Vous pouvez faire la même analyse fréquentielle sur les digrammes, c'est à dire les occurrences de 2 lettres de suite. En francais, le digramme le plus fréquent est "ES", suivi de "LE". Avec un message chiffré suffisamment long, il y a forcément des motifs reconnaissables dans le texte chiffré qui permettent de le décrypter.

Le chiffre de Vigenère

Un autre algorithme célèbre est le chiffre de Vigenère, inventé au XVIe siècle. Il reprend en partie le principe de substitution, mais en variant la distance de décalage au cours du chiffrement en utilisant un mot ou une phrase comme clé. Chaque lettre de la clé correspond à sa position dans l'alphabet. Pour chiffrer un message, on écrit le texte clair et on écrit la clé en dessous, en répétant la clé autant de fois que nécessaire pour couvrir l'ensemble du message.

Par conséquent :

  • le chiffrement consiste à additionner chaque lettre du message avec la lettre de la clé en dessous, modulo 26 ;

  • le déchiffrement consiste à soustraire chaque lettre du message chiffré avec la lettre de la clé en dessous, modulo 26.

On a donc comme résultat la table de Vigenère suivante :

Table de Vigenère  https://fr.wikipedia.org/wiki/Chiffre_de_Vigen%C3%A8re#La_table_de_Vigen%C3%A8re
Table de Vigenère

Par exemple, avec la clé "RABELAIS" et le message clair suivant on obtient le texte chiffré :

SCIENCE SANS CONSCIENCE N EST QUE RUINE DE L AME

+ RABELAIS RABELAIS RABELAIS RABELAIS RABELAIS

= JCJIYCM KRNT GZNAUZEOGP N MKK QVI CUQFV DF P LMM

Par exemple, la lettre E du message en clair est d'abord associée à la lettre E de la clé et devient J dans le texte chiffré. Puis E est associée à I et devient M, etc. Il n'est donc plus possible de retrouver le texte clair avec la méthode d'analyse f, car la fréquence des lettres dans le message chiffré ne correspond pas à la fréquence des lettres dans le message clair.

Un algorithme peu résistant

Cet algorithme a résisté à la cryptanalyse jusqu'au XVIIIe siècle, mais a fini par être cassé avec la méthode suivante :

  1. Supposez d'abord que vous connaissez la longueur de la clé.

  2. Découpez le texte en parties du même nombre de lettres que la clé. La première lettre de chaque partie est toujours chiffrée avec la même lettre, la première lettre de la clé.

  3. Vous pouvez donc réaliser une analyse fréquentielle, comme pour le chiffre de César, en observant que la lettre la plus courante correspond à la lettre E suivie de la lettre S, etc. Cela vous donne la première lettre de la clé.

  4. Faites de même avec la 2e lettre, et ainsi de suite pour retrouver toutes les lettres de la clé et déchiffrer entièrement le message.

Si vous ne connaissez pas la longueur de la clé, supposez d'abord que la clé a une longueur de 1, et réalisez l'analyse fréquentielle. Si celle-ci ne donne pas de résultat, augmentez la longueur de la clé de 1, recommencez l'analyse fréquentielle et ainsi de suite. Lorsque la longueur de clé testée est la bonne, l'analyse fréquentielle fonctionnera et vous donnera la clé et le texte clair.

À partir du XIXe siècle, on utilise des machines mécaniques à cylindres de plus en plus complexes basées sur le principe de substitution polyalphabétique comme le chiffre de Vigenère. La plus connue de ces machines est la machine Enigma, utilisée par les Allemands durant la 2de guerre mondiale, et cassée par les Alliés.

La machine Enigma
La machine Enigma

Découvrez les principaux fondateurs de la cryptologie

À la fin du XIXe siècle, Auguste Kerckhoffs, un cryptologue militaire, énonce les principes fondamentaux de la cryptographie moderne, les principes de Kerckhoffs :

  • la sécurité d'un algorithme de chiffrement ne doit pas être basée sur la non-connaissance par l'attaquant de l'algorithme de chiffrement ou du système utilisé. Elle doit uniquement être basée sur le fait que l'attaquant ne connaît pas la clé ;

  • pour être sécurisés, les algorithmes de chiffrement doivent être physiquement ou mathématiquement impossibles à résoudre pour l'attaquant ;

  • le système doit être adapté à son utilisation pratique et la clé doit facilement être modifiable.

Ce principe est non seulement vrai en cryptographie, mais aussi dans la sécurité informatique en général. Ainsi, la sécurité d'un algorithme ne doit jamais être basée sur le fait que l'attaquant ne connaît pas le code source de l'algorithme. Il est possible, par la rétro-ingénierie, de retrouver le code source d'un algorithme à partir de code compilé ou simplement en observant les résultats d'un programme.

Un algorithme de chiffrement incassable

En 1917, Vernam met au point une méthode de chiffrement très simple, le "masque jetable" ou "One-Time Pad". L'originalité de cet algorithme est que la clé est aussi longue que le message en clair. 

Dans la version informatique de cet algorithme, vous utilisez des bits (de valeur 0 ou 1) pour représenter les caractères, par exemple avec la représentation ASCII.

On peut également représenter un nombre en hexadécimal, c'est à dire en base 16, plus facile à lire pour les humains que le binaire. La lettre "j" est ainsi représentée par le nombre hexadécimal 6A.

Le chiffrement consiste à effectuer l'opération XOR (OU exclusif) entre chaque bit du texte clair et celui de la clé. Le déchiffrement est de la même manière l'opération XOR entre chaque bit du texte chiffré et celui de la clé.

Ainsi, le message en clair 1001001110 chiffré avec la clé 0010101110 donne le texte chiffré : 1001001110 ⊕ 0010101110 = 1011100000.

Découvrez le chiffrement One-Time Pad

Contrairement aux méthodes précédentes, la clé n'est jamais répétée dans l'opération de chiffrement, ce qui empêche de casser le code avec les méthodes de cryptanalyse fréquentielle. De plus, chaque bit du message en clair a autant de chances d'être transformé en 0 ou 1 dans le texte chiffré, selon la valeur du bit correspondant de la clé.

Shannon a démontré que cet algorithme, lorsqu'il est correctement utilisé, est incassable et apporte une sécurité inconditionnelle (ou perfect secrecy). Même avec une puissance de calcul infinie, il est impossible de retrouver le message en clair à partir du texte chiffré. En d'autres termes, la connaissance du texte chiffré n'apporte aucune information sur le message en clair, mise à part la longueur du message.

Shannon a aussi démontré que tout système de chiffrement avec une sécurité inconditionnelle nécessite les mêmes conditions que le chiffrement de Vernam : une clé aléatoire aussi longue que le message et utilisée une seule fois.

Ces contraintes sur la longueur de la clé et le fait de ne l'utiliser qu'une seule fois font que ce système est peu utilisable dans la pratique. En effet, si vous êtes capable d'échanger une clé aussi longue que le message de manière sécurisée, alors vous pouvez échanger le message lui-même par ce canal sécurisé à la place de la clé ! Cependant, comme ce système de chiffrement est incassable, il est parfois utilisé pour des communications qui exigent une confidentialité absolue.

Ce système a par exemple été utilisé pour le téléphone rouge entre la Maison Blanche et le Kremlin durant la guerre froide, ou encore par les espions du KGB à la même époque.

La dernière condition pour que le One-Time Pad soit sécurisé est que la clé soit choisie de manière aléatoire. C'est justement le thème que vous allez aborder dans le prochain chapitre.

En résumé

  • La cryptographie est essentielle à la sécurité informatique, pas de confidentialité sans cryptographie

  • un système de chiffrement symétrique repose sur un algorithme de chiffrement et de déchiffrement et une clé secrète partagée ; 

  • la sécurité d'un système de chiffrement ne repose pas sur le fait que les algorithmes soient secrets, mais que la clé est secrète ; 

  • pour être parfaitement secret, un système de chiffrement doit utiliser une clé secrète aléatoire aussi longue que le message, n'être utilisée qu'une seule fois, et le texte chiffré ne doit donner aucune information sur le texte clair. 

Solution de l'exercice :

Si vous avez bien compris le cours, vous avez pu facilement retrouver le message en clair : JESUISVENUJAIVUJAIVAINCU et la clé utilisée, le 18.

En rajoutant la ponctuation, cela donne la citation célèbre de César : Je suis venu, j'ai vu, j'ai vaincu.

Exemple de certificat de réussite
Exemple de certificat de réussite