undefined cover
undefined cover
#3 : On dit chiffrer cover
#3 : On dit chiffrer cover
La cybersécurité expliquée à ma grand-mère

#3 : On dit chiffrer

#3 : On dit chiffrer

30min |28/08/2022
Play
undefined cover
undefined cover
#3 : On dit chiffrer cover
#3 : On dit chiffrer cover
La cybersécurité expliquée à ma grand-mère

#3 : On dit chiffrer

#3 : On dit chiffrer

30min |28/08/2022
Play

Transcription

  • Speaker #0

    Bonjour mamie. Bonjour et bienvenue dans la cybersécurité expliquée à ma grand-mère, le podcast pour expliquer la cybersécurité à des gens qui ne comprennent rien. Et oui, on dit chiffrer et non pas crypter. Cette méconnaissance montre assez clairement que pour la plupart d'entre nous, la cryptographie est quelque chose d'assez obscur qu'on connaît sans vraiment connaître. Et pourtant, la cryptographie fait partie de notre vie de tous les jours et permet de faire bien des choses. On en a déjà parlé dans les épisodes précédents, mais le but aujourd'hui est d'aller un peu plus dans le détail. La cryptographie est un moyen qu'on utilise pour transmettre des messages en toute sécurité. C'est-à-dire que si quelqu'un intercepte le message, il doit être incapable de le lire. Comme d'habitude, c'est un problème qui existe depuis l'aube de l'humanité. Au tout début, on utilisait plutôt la stéganographie, qui était l'art de dissimuler un message. Hérodote, qui était considéré comme le premier historien, nous donne un exemple datant de moins 450 avant Jésus-Christ. Il écrit par exemple comment Desmarates envoie un message caché à Xerxes en écrivant sur une planche en bois qu'il recouvre ensuite d'une plaque de cire pour que la planche semble totalement vierge. Un autre exemple consiste à utiliser un esclave, à lui raser la tête pour ensuite lui... tatouer le message sur le crâne. Il ne reste plus qu'à attendre que les cheveux repoussent pour envoyer l'esclave au destinataire qui n'aura plus qu'à raser les cheveux pour découvrir le message caché. Un peu plus tard en Chine, une autre technique consistait à écrire un message sur une bande de papier de soie. Cette bande était par la suite roulée en boules et recouverte de cire. Le messager devait alors avaler cette boulette pour ensuite la délivrer à son destinataire en toute sécurité. Plus romanesque que la fameuse relation épistolaire entre Georges Sand et Frédéric Chepin. Ils échangeaient des lettres qui semblaient être totalement anodines et qu'il était beaucoup moins quand on regardait le premier mot de chaque ligne. Sacré coquin, Georgie. Aujourd'hui, la stéganographie est utilisée, entre autres, pour protéger une image, un film ou un document contre le piratage. La pratique consiste à légèrement altérer le document pour y cacher une information supplémentaire. A l'instar des autres cas de stéganographie, L'information est bien présente dans l'image, mais elle passe inaperçue à un œil non averti. Cette technique a permis par exemple de lutter contre les piratages des films dans les salles de cinéma. Chaque film projeté contenait un filigrane numérique unique. Si quelqu'un avait piraté ce film en filmant l'écran directement, il était possible de trouver le filigrane et de savoir dans quelle salle le film avait été piraté. Même si la stéganographie permet de protéger la confidentialité d'un message, c'est-à-dire que le message ne soit pas lu par un tiers, et bien ça n'est pas pour autant de la cryptographie. Car la protection du message dépend essentiellement du secret qu'il protège, c'est-à-dire la technique qui permet de cacher ce message. En fait, le message est protégé tant que le secret n'est pas divulgué. Tout est dans la dissimulation. Ça alors !

  • Speaker #1

    Heinrich, un postiche !

  • Speaker #0

    Il en est de même pour les codes. On peut imaginer par exemple qu'utiliser un code permet de protéger un message. En fait, c'est partiellement vrai. La première utilité du code est de transposer une information d'un ensemble à un autre. Le meilleur exemple est le code Morse inventé par l'américain Samuel Morse. Le but de son code est de transposer l'alphabet en signaux électriques ou acoustiques. Bien que ce système soit très ancien, il est utilisé encore de nos jours pour l'identification des balises utilisées dans la radionavigation aérienne. C'est certes très ancien mais très robuste. D'autres codes ont pour fonction de rendre la transmission d'informations plus résiliente, c'est-à-dire résistante aux aléas des transmissions. L'un des meilleurs exemples est le compacte disque. Cette technologie a été développée par Philips et Sony en 82 et fait aujourd'hui ses 30 ans. Vous connaissez très certainement son principe de fonctionnement. Il s'agit d'un faisceau laser de quelques millièmes de millimètre qui va lire une piste numérique qui encode la musique. Mais que se passe-t-il en cas de présence de poussière ou de rayures sur les disques ? L'échelle est tellement petite que la lecture d'un piste sera forcément erronée. Et pourtant, nous avons tous fait l'expérience, même s'il y a des rayures ou de la poussière, ça fonctionne quand même. En fait, le codage de la musique est fait avec un code correcteur d'erreur. Ce code a la propriété d'être corrigé en cas d'anomalie due à un problème de transmission, ce qui le rend résistant en cas d'altération partielle. Ce sont entre autres les polynômes premiers, c'est-à-dire des polynômes que l'on peut diviser que par eux-mêmes, qui permettent d'obtenir cette résilience. Justement, à propos de la musique, je ne peux pas m'empêcher de vous donner un exemple de stéganographie, dans ce cas un exemple de stéganophonie puisqu'il s'agit de musique. Si vous écoutez attentivement l'introduction du morceau de musique Radioactivity de Kraftwerk, vous pouvez entendre un message en morse. Ce message est un message caché à l'intérieur du morceau. Mais comme expliqué, le code permet de créer une transposition d'un ensemble de signes à un autre, des lettres de l'alphabet vers un code binaire par exemple. Mais le codage ne permet pas de garantir la confidentialité des données. Alors comment la garantir ? jusqu'à quel niveau on peut faire confiance au système ? Eh bien la réponse est justement à la cryptographie. Le principe de la cryptographie est de chiffrer des données à l'aide d'un procédé de chiffrement et d'une clé, c'est-à-dire transformer le message que l'on souhaite transmettre de telle sorte que si quelqu'un l'intercepte, il sera incapable de le comprendre et ne verra qu'une suite aléatoire de données sans aucun rapport avec le message initial. On appelle le message initial le message clair, et une fois que ce message a été traité par le processus de chiffrement, on dit que le message est chiffré. La personne ayant intercepté le message pourra tenter de le décrypter, c'est-à-dire de retrouver le message d'origine sans avoir la clé de chiffrement. En revanche, celui qui a la clé pourra simplement déchiffrer le message sans difficulté. Essayer de décrypter le code, c'est ce qu'on appelle la cryptanalyse, c'est-à-dire l'analyse du message pour casser le code. La personne légitime déchiffre le message alors que le pirate essaie de le décrypter. Tout ça doit vous paraître un peu confus, mais on va prendre un exemple très simple avec un niveau de difficulté proche des dernières pages de Picsou Magazine. Imaginons deux personnes, Alice et Bob. Et oui, en cryptographie, c'est toujours la même histoire, c'est toujours Alice qui va envoyer un message à Bob. On se demande bien ce qu'ils ont à se raconter ces deux-là. Pour protéger son message, Alice va décaler chaque lettre de l'alphabet de 1, c'est-à-dire que le A va devenir B, B va devenir C, et ainsi de suite. Pour déchiffrer le message, Bob n'aura qu'à décaler dans l'autre sens chaque lettre de l'alphabet. B va devenir A, C va devenir B, et ainsi de suite. On suppose qu'Alice et Bob ont convenu avant la transmission de la clé de chiffrement, ce qui est le décalage à opérer 1 dans notre exemple. Ajoutons maintenant un opposant, appelé Oscar. Celui-ci va chercher à décrypter le message, c'est-à-dire à retrouver le message d'origine sans avoir la clé. Il va donc faire de la cryptanalyse, c'est-à-dire analyser le message chiffré qu'Alice a envoyé à Bob, et ceci pour déduire certaines caractéristiques qui lui permettront de casser le code et de retrouver le message clair, c'est-à-dire le message d'origine, qu'Alice a envoyé à Bob. Dans le cas qui nous occupe, c'est assez simple. Il suffit juste de regarder la fréquence d'apparition des lettres. Dans la langue française, la lettre E apparaît avec une fréquence de 12%. Si en analysant le texte chiffré, vous trouvez une lettre dont la fréquence a une fréquence similaire, c'est qu'elle représente très certainement la lettre E. Dans notre exemple, c'est la lettre F qui sera la plus présente dans le texte chiffré. Cette faiblesse est due au fait que le décalage entre l'alphabet chiffré et non chiffré est constant. La répartition statistique des lettres dans le message est donc conservée. De plus, la clé est ridiculeusement petite, et en plus certaines valeurs ne seront pas des choix très judicieux. 0 par exemple ne fera aucun décalage, dans ce cas le message chiffré sera identique au message d'origine. Pas très sécurisé cette affaire. Il en va de même pour tous les multiples de 26, puisque quand vous avez fait le tour de l'alphabet, vous allez revenir à la lettre d'origine. L'une des solutions est justement d'augmenter la solidité de cette clé, et d'en utiliser une qui soit... aussi longue que le message à chiffrer. Dès lors, et pour peu que cette clé soit aléatoire et utilisée qu'une seule fois, le message qui sera chiffré sera totalement incassable. C'est ce qu'on appelle le chiffrement à masque jetable ou chiffrement de Vernam. Et cette technique est rigoureusement impossible à casser. Voilà donc la solution pour sécuriser la transmission de vos messages. Merci d'avoir écouté cet épisode de la cybersécurité expliquée à nos grands-mères. Pour réaliser ce numéro, je me suis inspiré de... Attendez une minute, ce n'est peut-être pas aussi simple que ça. C'est un chiffrement parfait, certes, mais ça veut aussi dire que la clé est aussi longue que le message à chiffrer. Imaginez que vous devez chiffrer une encyclopédie. Eh bien, la clé de chiffrement sera aussi longue que l'encyclopédie elle-même. Ça n'est pas très pratique, en fait. Alors, même si cette méthode a été utilisée par les Russes pendant la guerre froide, ça reste un système qui n'est pas très pratique. Mais alors, qu'est-ce qui fait qu'un système de chiffrement est vraiment utilisable ? C'est Auguste Karkoff qui répondit à cette question en 1883 en définissant les critères à retenir en matière de cryptographie militaire. Principe numéro 1. Le système doit être matériellement, sinon mathématiquement indéchiffrable. Cela veut dire que les difficultés techniques doivent être liées à la complexité mathématique et que résoudre ce défi mathématique prend énormément de temps et ou de ressources. Ce point est crucial, car c'est ce qui rend le chiffrement universel, car la difficulté mathématique est la même pour tout le monde. Principe numéro 2. Il faut qu'il n'existe pas de secret et qu'il puisse sans inconvénient tomber entre la main des ennemis. Ce principe est aussi très important. Il implique que la force du chiffrement n'est pas due au secret de sa fabrication et que quand bien même vous connaissez la méthode de chiffrement, cette connaissance ne vous permettra pas d'attaquer le système. Ça ne vous donnera aucun autre avantage. En fait, les protocoles de chiffrement modernes sont connus par tous. Et c'est justement parce que les spécialistes en cryptographie du monde entier ont essayé de trouver des failles dans les systèmes que celui-ci se rassure. Plus le système sera connu et répandu, plus il se rassure. Principe numéro 3. La clé doit pouvoir être communiquée et retenue sans le secours de notes écrites. et être changé ou modifié au gré des correspondances. Ça vous rappelle quelque chose ? Les mots de passe par exemple. Ce principe explique pourquoi le chiffrement de Vernam n'est pas vraiment réaliste car vous devriez retenir des clés extrêmement longues. Principe numéro 4. Il faut qu'il soit applicable à la correspondance télégraphique. Là encore, cela veut dire qu'il ne doit pas y avoir d'exception dans la manière de transmettre le message. Principe numéro 5. Il faut qu'il soit portatif et que son maniement ou son fonctionnement n'exige pas le concours de plusieurs personnes. Ce principe peut faire sourire. Mais je vous rappelle que ces règles ont été établies au 19e siècle et qu'à cette époque, il fallait que les systèmes soient transportables sur un cheval. Si on interprète d'un point de vue moderne ce principe, ceci implique que les systèmes de cryptographie doivent pouvoir s'exécuter sans trop de consommation de ressources. En d'autres termes, si vous avez besoin d'un ordinateur surpuissant pour chiffrer vos messages, ça ne fonctionnera pas. Principe numéro 6. Enfin, il est nécessaire, vu les circonstances qui en commandent l'application, que le système soit d'un usage facile, ne demande ni tension d'esprit, ni la connaissance de longues séries de règles à observer. En d'autres termes, celui qui utilise le système cryptographique ne doit pas se faire des nœuds au cerveau et idéalement que ce soit transparent pour lui. Dans l'histoire, il y a un exemple parfait de ce système cryptographique qui cache toutes les cases. C'est le système Enigma utilisé par les Allemands lors de la Seconde Guerre mondiale. C'est un système de chiffrement électromécanique. Concrètement, c'est un ensemble de roues appelées rotors qui tournent au fur et à mesure que le message est introduit dans la machine. Et d'une certaine manière, la clé qui permet de chiffrer et de déchiffrer est la position initiale de ces différents rotors. A chaque fois qu'une lettre est rentrée dans la machine, les rotors tournent suivant une certaine séquence, et ce pour chaque lettre qui compose le message. C'est un peu comme les anciens compteurs kilométriques, avec une roue pour les unités, une autre pour les dizaines, etc. Détail important, c'est que le chiffrement d'un caractère dépend du caractère précédemment traité. Contrairement au chiffrement basé sur un simple décalage de lettres qui encode une lettre, toujours avec la même correspondance. Enigma va chiffrer un caractère en fonction du résultat précédent, ce qui complexifie nettement une attaque. C'est un peu comme dans la scène d'Harry Potter, où chaque escalier change de direction au gré des passages des uns et des autres. Ce qui fait que même si tout le monde a pris la même entrée d'escalier, il a fort à parier que tout le monde va se retrouver à des endroits différents. Ça semble aléatoire, mais en réalité ça suit une logique combinatoire assez complexe. Et c'est cette complexité qui fait la force du système de chiffrement. Il y a 159 trillions de combinaisons possibles, ce qui rend mathématiquement une attaque très complexe. Et pourtant, Alan Turing, un mathématicien anglais, a réussi cet exploit en cédant d'une vulnérabilité du système, ou plutôt de son usage. Souvenez-vous, tout est vulnérable d'une certaine manière. Tous les messages transmis par les allemands commençaient par la date du jour et se terminaient par à Hitler Cette spécificité a permis de lancer une cryptanalyse sur base du texte chiffré dont le texte clair était partiellement connu au début et à la fin du message. Grâce aux travaux de Turing, les alliés eurent un avantage décisif sur les allemands, mais malgré cet exploit, Alan Turing n'a pas été reconnu à juste titre, car étant homosexuel, il a été rejeté par la société conservatrice de l'époque Et en plein désespoir, c'est donné la mort. La vie d'Alan Turing a été portée à l'écran dans le film Imitation Game. Ce type de chiffrement est basé sur une clé identique pour chiffrer et déchiffrer le message. C'est-à-dire que c'est la même clé qu'on utilise dans le processus de chiffrement et le processus de déchiffrement. C'est ce qu'on appelle le chiffrement symétrique. Ce qui implique que les deux protagonistes, Alice et Bov, doivent échanger au préalable cette clé et surtout faire cet échange de manière sécurisée. ce qui en soit une contrainte assez importante, d'autant plus que vous devez changer cette clé très fréquemment, idéalement à chaque transmission. Pour pallier à ce problème, trois mathématiciens, Ron Rives, Adir Shamir et Leonard Adleman, ont inventé un système cryptographique basé sur deux clés. Ce procédé est nommé RSA en référence à la première lettre de leur nom de famille. Le principe de fonctionnement est assez simple. Si vous chiffrez le message avec l'une des clés, vous avez besoin de l'autre pour déchiffrer le message. Si vous ne disposez que d'une clé, vous pourrez chiffrer le message sans problème, mais il faudra impérativement l'autre clé pour déchiffrer. Ce chiffrement ne va donc que dans un seul sens. Et la clé que vous utilisez ne peut être utilisée que pour chiffrer, contrairement à l'exemple précédent, où la même clé était utilisée pour chiffrer et déchiffrer. C'est la raison pour laquelle on appelle ce type de procédé chiffrement asymétrique. L'un des intérêts de cette méthode, c'est que vous pouvez diffuser à tout le monde l'une de ces deux clés. Il n'y aura aucun danger à faire ça, car il faudra l'autre clé pour déchiffrer le message. On appelle la clé qu'on peut diffuser à tout le monde la clé publique, et l'autre, celle qu'on doit garder précieusement, la clé privée. Le chiffrement RSA est baisé sur la difficulté de factoriser des produits de deux nombres premiers. Pour ceux qui ont oublié leur cours de maths, un nombre premier est un nombre qui ne peut être divisé que par lui-même ou par 1. Par exemple, 3 est premier alors que 4 ne l'est pas, puisqu'on peut diviser par 2. La factorisation première d'un nombre, c'est trouver deux nombres premiers formant un produit égal au nombre à factoriser. Par exemple, 12, c'est 4 x 3, et 4, c'est 2 x 2. La factorisation première de 12 est donc 2... fois 2 fois 3. L'exemple ici est assez simple car le nombre à factoriser est petit, mais c'est bien plus compliqué quand le nombre est grand. On sent assez intuitivement que faire le produit de plusieurs nombres premiers est très facile, alors que factoriser un produit de nombres premiers, c'est-à-dire faire l'opération inverse, est très difficile. C'est donc une opération difficilement réversible. C'est un peu comme une NAS dans laquelle il est très facile de rentrer, mais beaucoup plus difficile d'en sortir. Et c'est sur cette complexité que repose la solidité du chiffrement RSA. solidité dont on discutera un peu plus tard, car comme toujours en cybersécurité, ce qui est vrai maintenant ne l'est pas forcément demain. Mais revenons à notre exemple avec Alice et Bob. Alice peut chiffrer un message en utilisant la clé publique de Bob, et cela sans crainte de voir son message déchiffrer en cours de route. Ça permet de créer un canal de communication sécurisé sans avoir à échanger une information secrète au préalable, puisque la seule information dont a besoin Alice, c'est la clé publique de Bob. Cette technique a cependant un petit défaut. car elles consomment beaucoup plus de ressources et de temps de calcul que le chiffrement symétrique traditionnel. La propriété de pouvoir créer un canal de communication sûr sans avoir à échanger préalablement une clé est quelque chose d'essentiel en matière de cybersécurité. Si on prend l'exemple d'une connexion vers un site web, il y a plein d'étapes entre votre machine et le serveur web. Vous devez déjà traverser votre propre réseau, ensuite passer par l'infrastructure de votre fournisseur d'accès Internet, qui lui-même va aiguiller votre trafic vers d'autres prestataires pour arriver enfin à l'infrastructure du serveur web. Bien souvent, vous avez traversé le monde entier et bon nombre d'équipements. Le problème est qu'il est impossible de garantir la sécurité de chacun des intervenants et donc de faire confiance au canal de communication. Et sans cette confiance, impossible de développer l'e-commerce ou les services financiers en ligne. Et bien justement, c'est le chiffrement à clé publique qui va nous aider à sécuriser ce canal puisque la seule information dont nous avons besoin, c'est la clé publique du site web. C'est exactement ce qui se passe quand vous vous connectez à un site web en HTTPS. Vous savez, le fameux petit cadenas juste avant la barre d'adresse. Après avoir sécurisé le canal de communication, le navigateur et le site web vont se mettre d'accord sur une clé de chiffrement symétrique commune pour chiffrer efficacement la communication. Cet algorithme est appelé l'algorithme de Diffie-Hellman, du nom de ses créateurs. Toutes les informations nécessaires pour établir cette première connexion se trouvent dans ce qu'on appelle un certificat. Ce certificat se trouve sur le site web et contient des informations comme la fameuse clé publique. Mais comment être sûr de la qualité du chiffrement et surtout de son authenticité ? En fait, il y a plusieurs éléments à prendre en compte. Le premier, c'est les nombres premiers qui sont utilisés pour générer la clé publique et la clé privée. Ceux-ci doivent être suffisamment grands. Je vous rappelle que plus la clé sera longue, plus il sera mathématiquement difficile de casser le code. Et ce choix va évoluer avec le temps, car plus le temps passe et plus les moyens techniques s'améliorent. Ce qui prenait des heures dans les années 2000 ne prend maintenant plus que quelques minutes. Ce qui veut dire qu'une clé réputée sur maintenant ne le sera très certainement plus dans quelques années. Heureusement, il y a des organisations, gratuites ou payantes, qu'on appelle autorités de certification, capables de générer des certificats, c'est-à-dire des paires de clés publiques et privées de bonne qualité. Mais au-delà de leur rôle dans la génération de ces fameuses clés, ils ont aussi la responsabilité de vérifier que vous êtes bien le propriétaire du site web que vous cherchez à sécuriser. Mais comment s'assurer que quand votre navigateur se connecte à un site web, le certificat qu'il protège est bien légitime ? C'est-à-dire qu'il n'y a pas un vilain hacker qui a fait son propre certificat dans son coin et qu'il essaie de le faire passer comme légitime. En d'autres termes, comment s'assurer que le certificat n'est pas un faux ? Cette question est cruciale en matière de cybersécurité car elle adresse la question de l'authenticité, c'est-à-dire vérifier qu'un document émis par une entité n'a pas été modifié par un tiers et surtout que c'est bien cette entité qui l'a émise. Pour répondre à cette question, il faut parler d'un autre outil cryptographique qu'on appelle le hashage. Une fonction de hashage est une fonction qui, pour des données en entrée, va renvoyer un identifiant quasi unique sur un format très court. C'est ce qu'on appelle le condensat. Ce qui est très utile, c'est que ce condensat est généralement très court et qu'on peut identifier à quasi certains documents analysés. En revanche, il n'est pas possible de déduire un document uniquement sur base du condensat. C'est un peu comme une empreinte digitale. Chaque individu a sa propre empreinte, mais si je regarde uniquement cette empreinte, je ne peux pas déduire vos caractéristiques physiques, si vous êtes un homme ou une femme, ou si vous êtes brun ou blond. En revanche, il est possible de vérifier l'identité d'un individu en utilisant cette empreinte. Ça marche dans un sens, mais pas dans l'autre. Prenons un exemple simple. Imaginez une fonction de hachage qui fait la somme des lettres d'un message. Par exemple, le mot ABC aura comme résidu 1 plus 2 plus 3, c'est-à-dire 6. Si vous remplacez la seconde lettre par un A, on obtiendra le mot AAC, dont le condensé sera égal à 1 plus 1 plus 3, c'est-à-dire 5. On voit bien ici que les deux condensats sont différents car les messages sont différents. Alors évidemment cette fonction de hachage n'est pas très bonne puisque toutes les permutations des lettres dans un mot auront le même condensat. Le condensat de AAC sera le même que pour ACA et aussi CAA. Heureusement les vraies fonctions de hachage utilisées en cryptographie sont bien évidemment beaucoup plus efficaces. Et le cas de figure où deux messages différents ont le même condensat, c'est ce qu'on appelle une collision, n'existe que très rarement. Il faut surtout retenir que si on change la moindre chose dans le document, le condensat changera complètement. Cette fonction de hashage est utilisée aussi dans d'autres domaines, comme dans les blockchains qui utilisent la preuve de travail, mais aussi la protection des mots de passe, car on ne stocke jamais le mot de passe en clair, mais son condensat. Nous voilà donc avec une fonction de hashage qui permet de générer un condensat, une sorte d'empreinte digitale numérique, sur base d'un document donné. Cette fonction de hashage est connue de tous, et donc tout le monde est capable de calculer le condensat de n'importe quel document. Comme nous l'avons vu un peu avant, le chiffrement asymétrique permet de chiffrer une donnée avec une clé publique. Dans ce cas-là, seul celui qui a la clé privée pourra déchiffrer le message. Mais il faut aussi se souvenir qu'il est possible de chiffrer un message avec la clé privée. Dans ce cas, le message peut être déchiffré en utilisant la clé publique, c'est-à-dire par tout le monde. Vous vous demandez très certainement l'intérêt de chiffrer un message pour que tout le monde puisse le déchiffrer. Eh bien, vous allez comprendre d'ici quelques minutes. Si Alice veut signer un document, elle va d'abord calculer le condensat de ce document, c'est-à-dire une empreinte digitale à l'aide d'une fonction de hachage. Ensuite, elle va chiffrer cette valeur avec sa clé privée. Le résultat de cette opération donne la signature digitale. Alice va pouvoir l'exposer à tout le monde. Cette information, c'est la signature du document, et Alice peut la donner à tout le monde comme preuve de sa signature. Si Bob souhaite vérifier la signature d'Alice, Il va d'abord calculer le condensat du document qu'il cherche à authentifier en utilisant la même fonction de hachage que celle qu'Alice a utilisée. Il va récupérer la signature qu'Alice a exposée ainsi que sa clé publique. Il va ensuite déchiffrer la signature avec la clé publique et va obtenir normalement le même condensat qu'Alice a calculé lors du processus de signature. Si les deux valeurs sont identiques, cela implique que, d'une part, le document n'a pas été modifié, puisque le condensé calculé par Alice au moment de la signature est le même que celui que Bob a calculé. Et d'autre part, Bob est sûr que c'est Alice qui a signé le document, puisque c'est grâce à sa clé privée que le document a été signé. Les certificats qui protègent les sites web sont signés par les autorités de certification. Quand votre navigateur va se connecter sur un site web en utilisant HTTPS, il va vérifier l'authenticité de la signature en utilisant l'algorithme que je viens d'expliquer. Si d'aventure le certificat a été modifié ou que la signature n'est pas la bonne, alors votre navigateur affichera un message d'erreur. Ce mécanisme de signature est très puissant et s'utilise un peu partout, non seulement pour sécuriser vos connexions sur Internet, mais aussi dans le cadre des crypto-monnaies ou de la signature d'actes authentiques. Enfin bref, c'est utilisé un peu partout. Mais le plus important est de comprendre que la cryptographie est essentiellement basée sur des challenges mathématiques et que tant que ce challenge est difficile à résoudre, le processus de cryptographie est sûr. C'est pas faux ! Dans le cas de la factorisation d'un produit de nombres premiers, ce challenge est calculatoriellement complexe pour les ordinateurs classiques. On est capable, avec les algorithmes et les supercalculateurs d'aujourd'hui, de factoriser des nombres premiers ayant 250 chiffres. Par contre, dès qu'il y a un peu trop de chiffres, disons au-delà de 500, cette factorisation devient impossible. L'un des derniers records date de 2020, où l'algorithme KadoNFS, issu du LORIA, Laboratoire de Recherche Nancy, a réussi à factoriser un nombre de 250 chiffres décimaux. Il aurait fallu travailler pendant 2700 ans pour casser cette clé avec un ordinateur traditionnel. A la place, ce sont 10 000 ordinateurs, dispersés en France, en Allemagne et aux Etats-Unis, qui ont été utilisés pendant quelques mois. Pour vous donner un ordre de grandeur, Un nombre codé sur 256 bits, c'est-à-dire deux exposants 256, ça correspond au nombre d'électrons dans l'univers. Aujourd'hui, la norme est d'utiliser une clé de 2048 bits. Autant dire que c'est impossible à casser. Mais c'était sans compter l'avènement de l'ordinateur quantique qui a la capacité de résoudre ce type de problème en une fraction de seconde. Même si nous sommes encore assez loin de pouvoir acheter ce type de machine dans la boutique du coin de la rue, il paraissait certain que cette machine de science-fiction deviendrait de plus en plus une réalité. Même si sa mise au point va mettre encore quelques années, à terme, ce que nous considérons aujourd'hui comme un moyen sûr de chiffrement, moyen utilisé dans le monde entier, pilier de la technologie qui est du développement du commerce en ligne, des crypto-monnaies et des transactions bancaires, ce moyen sera obsolète car vulnérable. Heureusement, il existe déjà des solutions pour remplacer ce protocole et continuer à protéger nos données et nos communications. Ce qu'il faut comprendre par là, c'est que même si fondamentalement la cryptographie est basée sur des challenges mathématiques immuables, il y a deux facteurs importants à prendre en compte dans son évolution. D'une part l'évolution technologique, la puissance de calcul de plus en plus importante et les nouvelles opportunités comme l'ordinateur quantique. D'autre part, c'est l'implémentation de l'algorithme de chiffrement lui-même qui peut le rendre vulnérable. Le temps de chiffrement ou de déchiffrement nécessaire pour un message donné peut donner une information précieuse pour qu'un hacker lance une attaque. Ou le choix d'une clé trop faible, comme nous l'avons vu avec le chiffrement par décalage. De plus, il faut pouvoir utiliser des informations aléatoires. Mais comment obtenir du vrai aléatoire, alors que par définition un ornithère est parfaitement déterministe ? Mais la cryptographie fait de plus en plus de progrès, et même s'il existe de nombreuses vulnérabilités, les cryptographes du monde entier travaillent les corriger. Et c'est là sa grande force, car la sécurité ne vient pas de l'obscurité, mais bien au contraire, parce que tout est transparent. L'une des découvertes les plus prometteuses est le chiffrement homomorphe, qui permet à Charlie, un nouveau personnage, d'effectuer des traitements sur des données totalement chiffrées. En fait, Charlie est totalement aveugle. Il n'a pas la moindre idée des données qu'il traite, mais il le fait sans problème grâce au chiffrement homomorphique. Imaginez que vous ayez un calcul très secret à faire faire à Charlie. Vous ne souhaitez pas lui donner les chiffres à calculer, mais vous ne souhaitez pas faire le calcul par vous-même non plus. Avec le chiffrement homomorphique, vous allez chiffrer les données et les envoyer à Charlie. Charlie va faire le traitement sans avoir la moindre idée des informations qu'il traite. Une fois le travail effectué, Il va vous retourner le résultat que vous n'avez plus qu'à déchiffrer pour obtenir le résultat final. Ça vous semble peut-être totalement inutile, sauf si je vous dis que Charlie, c'est le cloud. Car l'un des plus grands défis de la cybersécurité actuellement est de sécuriser les activités déléguées à un tiers, dont on n'a pas forcément confiance. Mais ça, c'est une autre histoire. Merci d'avoir écouté ce podcast. N'hésitez surtout pas à liker cet épisode et à mettre vos questions dans les commentaires. Pour le réaliser, je me suis inspiré du livre de Pascal Lafourcade et Malika Moore, 25 énigmes ludiques pour s'initier à la cryptographie. C'est un livre hyper ludique, très bien fait, que je vous recommande chaudement. Je me suis aussi inspiré du livre Cryptographie de Douglas Hinton. Si les avancées de l'ordinateur quantique vous intéressent, n'hésitez pas à suivre Olivier Izrati, qui est une mine de connaissances sur ce sujet. Encore merci et surtout n'oubliez pas Certaines personnes pensent que la cybersécurité est un enjeu de vie ou de mort. C'est bien plus sérieux que ça.

Transcription

  • Speaker #0

    Bonjour mamie. Bonjour et bienvenue dans la cybersécurité expliquée à ma grand-mère, le podcast pour expliquer la cybersécurité à des gens qui ne comprennent rien. Et oui, on dit chiffrer et non pas crypter. Cette méconnaissance montre assez clairement que pour la plupart d'entre nous, la cryptographie est quelque chose d'assez obscur qu'on connaît sans vraiment connaître. Et pourtant, la cryptographie fait partie de notre vie de tous les jours et permet de faire bien des choses. On en a déjà parlé dans les épisodes précédents, mais le but aujourd'hui est d'aller un peu plus dans le détail. La cryptographie est un moyen qu'on utilise pour transmettre des messages en toute sécurité. C'est-à-dire que si quelqu'un intercepte le message, il doit être incapable de le lire. Comme d'habitude, c'est un problème qui existe depuis l'aube de l'humanité. Au tout début, on utilisait plutôt la stéganographie, qui était l'art de dissimuler un message. Hérodote, qui était considéré comme le premier historien, nous donne un exemple datant de moins 450 avant Jésus-Christ. Il écrit par exemple comment Desmarates envoie un message caché à Xerxes en écrivant sur une planche en bois qu'il recouvre ensuite d'une plaque de cire pour que la planche semble totalement vierge. Un autre exemple consiste à utiliser un esclave, à lui raser la tête pour ensuite lui... tatouer le message sur le crâne. Il ne reste plus qu'à attendre que les cheveux repoussent pour envoyer l'esclave au destinataire qui n'aura plus qu'à raser les cheveux pour découvrir le message caché. Un peu plus tard en Chine, une autre technique consistait à écrire un message sur une bande de papier de soie. Cette bande était par la suite roulée en boules et recouverte de cire. Le messager devait alors avaler cette boulette pour ensuite la délivrer à son destinataire en toute sécurité. Plus romanesque que la fameuse relation épistolaire entre Georges Sand et Frédéric Chepin. Ils échangeaient des lettres qui semblaient être totalement anodines et qu'il était beaucoup moins quand on regardait le premier mot de chaque ligne. Sacré coquin, Georgie. Aujourd'hui, la stéganographie est utilisée, entre autres, pour protéger une image, un film ou un document contre le piratage. La pratique consiste à légèrement altérer le document pour y cacher une information supplémentaire. A l'instar des autres cas de stéganographie, L'information est bien présente dans l'image, mais elle passe inaperçue à un œil non averti. Cette technique a permis par exemple de lutter contre les piratages des films dans les salles de cinéma. Chaque film projeté contenait un filigrane numérique unique. Si quelqu'un avait piraté ce film en filmant l'écran directement, il était possible de trouver le filigrane et de savoir dans quelle salle le film avait été piraté. Même si la stéganographie permet de protéger la confidentialité d'un message, c'est-à-dire que le message ne soit pas lu par un tiers, et bien ça n'est pas pour autant de la cryptographie. Car la protection du message dépend essentiellement du secret qu'il protège, c'est-à-dire la technique qui permet de cacher ce message. En fait, le message est protégé tant que le secret n'est pas divulgué. Tout est dans la dissimulation. Ça alors !

  • Speaker #1

    Heinrich, un postiche !

  • Speaker #0

    Il en est de même pour les codes. On peut imaginer par exemple qu'utiliser un code permet de protéger un message. En fait, c'est partiellement vrai. La première utilité du code est de transposer une information d'un ensemble à un autre. Le meilleur exemple est le code Morse inventé par l'américain Samuel Morse. Le but de son code est de transposer l'alphabet en signaux électriques ou acoustiques. Bien que ce système soit très ancien, il est utilisé encore de nos jours pour l'identification des balises utilisées dans la radionavigation aérienne. C'est certes très ancien mais très robuste. D'autres codes ont pour fonction de rendre la transmission d'informations plus résiliente, c'est-à-dire résistante aux aléas des transmissions. L'un des meilleurs exemples est le compacte disque. Cette technologie a été développée par Philips et Sony en 82 et fait aujourd'hui ses 30 ans. Vous connaissez très certainement son principe de fonctionnement. Il s'agit d'un faisceau laser de quelques millièmes de millimètre qui va lire une piste numérique qui encode la musique. Mais que se passe-t-il en cas de présence de poussière ou de rayures sur les disques ? L'échelle est tellement petite que la lecture d'un piste sera forcément erronée. Et pourtant, nous avons tous fait l'expérience, même s'il y a des rayures ou de la poussière, ça fonctionne quand même. En fait, le codage de la musique est fait avec un code correcteur d'erreur. Ce code a la propriété d'être corrigé en cas d'anomalie due à un problème de transmission, ce qui le rend résistant en cas d'altération partielle. Ce sont entre autres les polynômes premiers, c'est-à-dire des polynômes que l'on peut diviser que par eux-mêmes, qui permettent d'obtenir cette résilience. Justement, à propos de la musique, je ne peux pas m'empêcher de vous donner un exemple de stéganographie, dans ce cas un exemple de stéganophonie puisqu'il s'agit de musique. Si vous écoutez attentivement l'introduction du morceau de musique Radioactivity de Kraftwerk, vous pouvez entendre un message en morse. Ce message est un message caché à l'intérieur du morceau. Mais comme expliqué, le code permet de créer une transposition d'un ensemble de signes à un autre, des lettres de l'alphabet vers un code binaire par exemple. Mais le codage ne permet pas de garantir la confidentialité des données. Alors comment la garantir ? jusqu'à quel niveau on peut faire confiance au système ? Eh bien la réponse est justement à la cryptographie. Le principe de la cryptographie est de chiffrer des données à l'aide d'un procédé de chiffrement et d'une clé, c'est-à-dire transformer le message que l'on souhaite transmettre de telle sorte que si quelqu'un l'intercepte, il sera incapable de le comprendre et ne verra qu'une suite aléatoire de données sans aucun rapport avec le message initial. On appelle le message initial le message clair, et une fois que ce message a été traité par le processus de chiffrement, on dit que le message est chiffré. La personne ayant intercepté le message pourra tenter de le décrypter, c'est-à-dire de retrouver le message d'origine sans avoir la clé de chiffrement. En revanche, celui qui a la clé pourra simplement déchiffrer le message sans difficulté. Essayer de décrypter le code, c'est ce qu'on appelle la cryptanalyse, c'est-à-dire l'analyse du message pour casser le code. La personne légitime déchiffre le message alors que le pirate essaie de le décrypter. Tout ça doit vous paraître un peu confus, mais on va prendre un exemple très simple avec un niveau de difficulté proche des dernières pages de Picsou Magazine. Imaginons deux personnes, Alice et Bob. Et oui, en cryptographie, c'est toujours la même histoire, c'est toujours Alice qui va envoyer un message à Bob. On se demande bien ce qu'ils ont à se raconter ces deux-là. Pour protéger son message, Alice va décaler chaque lettre de l'alphabet de 1, c'est-à-dire que le A va devenir B, B va devenir C, et ainsi de suite. Pour déchiffrer le message, Bob n'aura qu'à décaler dans l'autre sens chaque lettre de l'alphabet. B va devenir A, C va devenir B, et ainsi de suite. On suppose qu'Alice et Bob ont convenu avant la transmission de la clé de chiffrement, ce qui est le décalage à opérer 1 dans notre exemple. Ajoutons maintenant un opposant, appelé Oscar. Celui-ci va chercher à décrypter le message, c'est-à-dire à retrouver le message d'origine sans avoir la clé. Il va donc faire de la cryptanalyse, c'est-à-dire analyser le message chiffré qu'Alice a envoyé à Bob, et ceci pour déduire certaines caractéristiques qui lui permettront de casser le code et de retrouver le message clair, c'est-à-dire le message d'origine, qu'Alice a envoyé à Bob. Dans le cas qui nous occupe, c'est assez simple. Il suffit juste de regarder la fréquence d'apparition des lettres. Dans la langue française, la lettre E apparaît avec une fréquence de 12%. Si en analysant le texte chiffré, vous trouvez une lettre dont la fréquence a une fréquence similaire, c'est qu'elle représente très certainement la lettre E. Dans notre exemple, c'est la lettre F qui sera la plus présente dans le texte chiffré. Cette faiblesse est due au fait que le décalage entre l'alphabet chiffré et non chiffré est constant. La répartition statistique des lettres dans le message est donc conservée. De plus, la clé est ridiculeusement petite, et en plus certaines valeurs ne seront pas des choix très judicieux. 0 par exemple ne fera aucun décalage, dans ce cas le message chiffré sera identique au message d'origine. Pas très sécurisé cette affaire. Il en va de même pour tous les multiples de 26, puisque quand vous avez fait le tour de l'alphabet, vous allez revenir à la lettre d'origine. L'une des solutions est justement d'augmenter la solidité de cette clé, et d'en utiliser une qui soit... aussi longue que le message à chiffrer. Dès lors, et pour peu que cette clé soit aléatoire et utilisée qu'une seule fois, le message qui sera chiffré sera totalement incassable. C'est ce qu'on appelle le chiffrement à masque jetable ou chiffrement de Vernam. Et cette technique est rigoureusement impossible à casser. Voilà donc la solution pour sécuriser la transmission de vos messages. Merci d'avoir écouté cet épisode de la cybersécurité expliquée à nos grands-mères. Pour réaliser ce numéro, je me suis inspiré de... Attendez une minute, ce n'est peut-être pas aussi simple que ça. C'est un chiffrement parfait, certes, mais ça veut aussi dire que la clé est aussi longue que le message à chiffrer. Imaginez que vous devez chiffrer une encyclopédie. Eh bien, la clé de chiffrement sera aussi longue que l'encyclopédie elle-même. Ça n'est pas très pratique, en fait. Alors, même si cette méthode a été utilisée par les Russes pendant la guerre froide, ça reste un système qui n'est pas très pratique. Mais alors, qu'est-ce qui fait qu'un système de chiffrement est vraiment utilisable ? C'est Auguste Karkoff qui répondit à cette question en 1883 en définissant les critères à retenir en matière de cryptographie militaire. Principe numéro 1. Le système doit être matériellement, sinon mathématiquement indéchiffrable. Cela veut dire que les difficultés techniques doivent être liées à la complexité mathématique et que résoudre ce défi mathématique prend énormément de temps et ou de ressources. Ce point est crucial, car c'est ce qui rend le chiffrement universel, car la difficulté mathématique est la même pour tout le monde. Principe numéro 2. Il faut qu'il n'existe pas de secret et qu'il puisse sans inconvénient tomber entre la main des ennemis. Ce principe est aussi très important. Il implique que la force du chiffrement n'est pas due au secret de sa fabrication et que quand bien même vous connaissez la méthode de chiffrement, cette connaissance ne vous permettra pas d'attaquer le système. Ça ne vous donnera aucun autre avantage. En fait, les protocoles de chiffrement modernes sont connus par tous. Et c'est justement parce que les spécialistes en cryptographie du monde entier ont essayé de trouver des failles dans les systèmes que celui-ci se rassure. Plus le système sera connu et répandu, plus il se rassure. Principe numéro 3. La clé doit pouvoir être communiquée et retenue sans le secours de notes écrites. et être changé ou modifié au gré des correspondances. Ça vous rappelle quelque chose ? Les mots de passe par exemple. Ce principe explique pourquoi le chiffrement de Vernam n'est pas vraiment réaliste car vous devriez retenir des clés extrêmement longues. Principe numéro 4. Il faut qu'il soit applicable à la correspondance télégraphique. Là encore, cela veut dire qu'il ne doit pas y avoir d'exception dans la manière de transmettre le message. Principe numéro 5. Il faut qu'il soit portatif et que son maniement ou son fonctionnement n'exige pas le concours de plusieurs personnes. Ce principe peut faire sourire. Mais je vous rappelle que ces règles ont été établies au 19e siècle et qu'à cette époque, il fallait que les systèmes soient transportables sur un cheval. Si on interprète d'un point de vue moderne ce principe, ceci implique que les systèmes de cryptographie doivent pouvoir s'exécuter sans trop de consommation de ressources. En d'autres termes, si vous avez besoin d'un ordinateur surpuissant pour chiffrer vos messages, ça ne fonctionnera pas. Principe numéro 6. Enfin, il est nécessaire, vu les circonstances qui en commandent l'application, que le système soit d'un usage facile, ne demande ni tension d'esprit, ni la connaissance de longues séries de règles à observer. En d'autres termes, celui qui utilise le système cryptographique ne doit pas se faire des nœuds au cerveau et idéalement que ce soit transparent pour lui. Dans l'histoire, il y a un exemple parfait de ce système cryptographique qui cache toutes les cases. C'est le système Enigma utilisé par les Allemands lors de la Seconde Guerre mondiale. C'est un système de chiffrement électromécanique. Concrètement, c'est un ensemble de roues appelées rotors qui tournent au fur et à mesure que le message est introduit dans la machine. Et d'une certaine manière, la clé qui permet de chiffrer et de déchiffrer est la position initiale de ces différents rotors. A chaque fois qu'une lettre est rentrée dans la machine, les rotors tournent suivant une certaine séquence, et ce pour chaque lettre qui compose le message. C'est un peu comme les anciens compteurs kilométriques, avec une roue pour les unités, une autre pour les dizaines, etc. Détail important, c'est que le chiffrement d'un caractère dépend du caractère précédemment traité. Contrairement au chiffrement basé sur un simple décalage de lettres qui encode une lettre, toujours avec la même correspondance. Enigma va chiffrer un caractère en fonction du résultat précédent, ce qui complexifie nettement une attaque. C'est un peu comme dans la scène d'Harry Potter, où chaque escalier change de direction au gré des passages des uns et des autres. Ce qui fait que même si tout le monde a pris la même entrée d'escalier, il a fort à parier que tout le monde va se retrouver à des endroits différents. Ça semble aléatoire, mais en réalité ça suit une logique combinatoire assez complexe. Et c'est cette complexité qui fait la force du système de chiffrement. Il y a 159 trillions de combinaisons possibles, ce qui rend mathématiquement une attaque très complexe. Et pourtant, Alan Turing, un mathématicien anglais, a réussi cet exploit en cédant d'une vulnérabilité du système, ou plutôt de son usage. Souvenez-vous, tout est vulnérable d'une certaine manière. Tous les messages transmis par les allemands commençaient par la date du jour et se terminaient par à Hitler Cette spécificité a permis de lancer une cryptanalyse sur base du texte chiffré dont le texte clair était partiellement connu au début et à la fin du message. Grâce aux travaux de Turing, les alliés eurent un avantage décisif sur les allemands, mais malgré cet exploit, Alan Turing n'a pas été reconnu à juste titre, car étant homosexuel, il a été rejeté par la société conservatrice de l'époque Et en plein désespoir, c'est donné la mort. La vie d'Alan Turing a été portée à l'écran dans le film Imitation Game. Ce type de chiffrement est basé sur une clé identique pour chiffrer et déchiffrer le message. C'est-à-dire que c'est la même clé qu'on utilise dans le processus de chiffrement et le processus de déchiffrement. C'est ce qu'on appelle le chiffrement symétrique. Ce qui implique que les deux protagonistes, Alice et Bov, doivent échanger au préalable cette clé et surtout faire cet échange de manière sécurisée. ce qui en soit une contrainte assez importante, d'autant plus que vous devez changer cette clé très fréquemment, idéalement à chaque transmission. Pour pallier à ce problème, trois mathématiciens, Ron Rives, Adir Shamir et Leonard Adleman, ont inventé un système cryptographique basé sur deux clés. Ce procédé est nommé RSA en référence à la première lettre de leur nom de famille. Le principe de fonctionnement est assez simple. Si vous chiffrez le message avec l'une des clés, vous avez besoin de l'autre pour déchiffrer le message. Si vous ne disposez que d'une clé, vous pourrez chiffrer le message sans problème, mais il faudra impérativement l'autre clé pour déchiffrer. Ce chiffrement ne va donc que dans un seul sens. Et la clé que vous utilisez ne peut être utilisée que pour chiffrer, contrairement à l'exemple précédent, où la même clé était utilisée pour chiffrer et déchiffrer. C'est la raison pour laquelle on appelle ce type de procédé chiffrement asymétrique. L'un des intérêts de cette méthode, c'est que vous pouvez diffuser à tout le monde l'une de ces deux clés. Il n'y aura aucun danger à faire ça, car il faudra l'autre clé pour déchiffrer le message. On appelle la clé qu'on peut diffuser à tout le monde la clé publique, et l'autre, celle qu'on doit garder précieusement, la clé privée. Le chiffrement RSA est baisé sur la difficulté de factoriser des produits de deux nombres premiers. Pour ceux qui ont oublié leur cours de maths, un nombre premier est un nombre qui ne peut être divisé que par lui-même ou par 1. Par exemple, 3 est premier alors que 4 ne l'est pas, puisqu'on peut diviser par 2. La factorisation première d'un nombre, c'est trouver deux nombres premiers formant un produit égal au nombre à factoriser. Par exemple, 12, c'est 4 x 3, et 4, c'est 2 x 2. La factorisation première de 12 est donc 2... fois 2 fois 3. L'exemple ici est assez simple car le nombre à factoriser est petit, mais c'est bien plus compliqué quand le nombre est grand. On sent assez intuitivement que faire le produit de plusieurs nombres premiers est très facile, alors que factoriser un produit de nombres premiers, c'est-à-dire faire l'opération inverse, est très difficile. C'est donc une opération difficilement réversible. C'est un peu comme une NAS dans laquelle il est très facile de rentrer, mais beaucoup plus difficile d'en sortir. Et c'est sur cette complexité que repose la solidité du chiffrement RSA. solidité dont on discutera un peu plus tard, car comme toujours en cybersécurité, ce qui est vrai maintenant ne l'est pas forcément demain. Mais revenons à notre exemple avec Alice et Bob. Alice peut chiffrer un message en utilisant la clé publique de Bob, et cela sans crainte de voir son message déchiffrer en cours de route. Ça permet de créer un canal de communication sécurisé sans avoir à échanger une information secrète au préalable, puisque la seule information dont a besoin Alice, c'est la clé publique de Bob. Cette technique a cependant un petit défaut. car elles consomment beaucoup plus de ressources et de temps de calcul que le chiffrement symétrique traditionnel. La propriété de pouvoir créer un canal de communication sûr sans avoir à échanger préalablement une clé est quelque chose d'essentiel en matière de cybersécurité. Si on prend l'exemple d'une connexion vers un site web, il y a plein d'étapes entre votre machine et le serveur web. Vous devez déjà traverser votre propre réseau, ensuite passer par l'infrastructure de votre fournisseur d'accès Internet, qui lui-même va aiguiller votre trafic vers d'autres prestataires pour arriver enfin à l'infrastructure du serveur web. Bien souvent, vous avez traversé le monde entier et bon nombre d'équipements. Le problème est qu'il est impossible de garantir la sécurité de chacun des intervenants et donc de faire confiance au canal de communication. Et sans cette confiance, impossible de développer l'e-commerce ou les services financiers en ligne. Et bien justement, c'est le chiffrement à clé publique qui va nous aider à sécuriser ce canal puisque la seule information dont nous avons besoin, c'est la clé publique du site web. C'est exactement ce qui se passe quand vous vous connectez à un site web en HTTPS. Vous savez, le fameux petit cadenas juste avant la barre d'adresse. Après avoir sécurisé le canal de communication, le navigateur et le site web vont se mettre d'accord sur une clé de chiffrement symétrique commune pour chiffrer efficacement la communication. Cet algorithme est appelé l'algorithme de Diffie-Hellman, du nom de ses créateurs. Toutes les informations nécessaires pour établir cette première connexion se trouvent dans ce qu'on appelle un certificat. Ce certificat se trouve sur le site web et contient des informations comme la fameuse clé publique. Mais comment être sûr de la qualité du chiffrement et surtout de son authenticité ? En fait, il y a plusieurs éléments à prendre en compte. Le premier, c'est les nombres premiers qui sont utilisés pour générer la clé publique et la clé privée. Ceux-ci doivent être suffisamment grands. Je vous rappelle que plus la clé sera longue, plus il sera mathématiquement difficile de casser le code. Et ce choix va évoluer avec le temps, car plus le temps passe et plus les moyens techniques s'améliorent. Ce qui prenait des heures dans les années 2000 ne prend maintenant plus que quelques minutes. Ce qui veut dire qu'une clé réputée sur maintenant ne le sera très certainement plus dans quelques années. Heureusement, il y a des organisations, gratuites ou payantes, qu'on appelle autorités de certification, capables de générer des certificats, c'est-à-dire des paires de clés publiques et privées de bonne qualité. Mais au-delà de leur rôle dans la génération de ces fameuses clés, ils ont aussi la responsabilité de vérifier que vous êtes bien le propriétaire du site web que vous cherchez à sécuriser. Mais comment s'assurer que quand votre navigateur se connecte à un site web, le certificat qu'il protège est bien légitime ? C'est-à-dire qu'il n'y a pas un vilain hacker qui a fait son propre certificat dans son coin et qu'il essaie de le faire passer comme légitime. En d'autres termes, comment s'assurer que le certificat n'est pas un faux ? Cette question est cruciale en matière de cybersécurité car elle adresse la question de l'authenticité, c'est-à-dire vérifier qu'un document émis par une entité n'a pas été modifié par un tiers et surtout que c'est bien cette entité qui l'a émise. Pour répondre à cette question, il faut parler d'un autre outil cryptographique qu'on appelle le hashage. Une fonction de hashage est une fonction qui, pour des données en entrée, va renvoyer un identifiant quasi unique sur un format très court. C'est ce qu'on appelle le condensat. Ce qui est très utile, c'est que ce condensat est généralement très court et qu'on peut identifier à quasi certains documents analysés. En revanche, il n'est pas possible de déduire un document uniquement sur base du condensat. C'est un peu comme une empreinte digitale. Chaque individu a sa propre empreinte, mais si je regarde uniquement cette empreinte, je ne peux pas déduire vos caractéristiques physiques, si vous êtes un homme ou une femme, ou si vous êtes brun ou blond. En revanche, il est possible de vérifier l'identité d'un individu en utilisant cette empreinte. Ça marche dans un sens, mais pas dans l'autre. Prenons un exemple simple. Imaginez une fonction de hachage qui fait la somme des lettres d'un message. Par exemple, le mot ABC aura comme résidu 1 plus 2 plus 3, c'est-à-dire 6. Si vous remplacez la seconde lettre par un A, on obtiendra le mot AAC, dont le condensé sera égal à 1 plus 1 plus 3, c'est-à-dire 5. On voit bien ici que les deux condensats sont différents car les messages sont différents. Alors évidemment cette fonction de hachage n'est pas très bonne puisque toutes les permutations des lettres dans un mot auront le même condensat. Le condensat de AAC sera le même que pour ACA et aussi CAA. Heureusement les vraies fonctions de hachage utilisées en cryptographie sont bien évidemment beaucoup plus efficaces. Et le cas de figure où deux messages différents ont le même condensat, c'est ce qu'on appelle une collision, n'existe que très rarement. Il faut surtout retenir que si on change la moindre chose dans le document, le condensat changera complètement. Cette fonction de hashage est utilisée aussi dans d'autres domaines, comme dans les blockchains qui utilisent la preuve de travail, mais aussi la protection des mots de passe, car on ne stocke jamais le mot de passe en clair, mais son condensat. Nous voilà donc avec une fonction de hashage qui permet de générer un condensat, une sorte d'empreinte digitale numérique, sur base d'un document donné. Cette fonction de hashage est connue de tous, et donc tout le monde est capable de calculer le condensat de n'importe quel document. Comme nous l'avons vu un peu avant, le chiffrement asymétrique permet de chiffrer une donnée avec une clé publique. Dans ce cas-là, seul celui qui a la clé privée pourra déchiffrer le message. Mais il faut aussi se souvenir qu'il est possible de chiffrer un message avec la clé privée. Dans ce cas, le message peut être déchiffré en utilisant la clé publique, c'est-à-dire par tout le monde. Vous vous demandez très certainement l'intérêt de chiffrer un message pour que tout le monde puisse le déchiffrer. Eh bien, vous allez comprendre d'ici quelques minutes. Si Alice veut signer un document, elle va d'abord calculer le condensat de ce document, c'est-à-dire une empreinte digitale à l'aide d'une fonction de hachage. Ensuite, elle va chiffrer cette valeur avec sa clé privée. Le résultat de cette opération donne la signature digitale. Alice va pouvoir l'exposer à tout le monde. Cette information, c'est la signature du document, et Alice peut la donner à tout le monde comme preuve de sa signature. Si Bob souhaite vérifier la signature d'Alice, Il va d'abord calculer le condensat du document qu'il cherche à authentifier en utilisant la même fonction de hachage que celle qu'Alice a utilisée. Il va récupérer la signature qu'Alice a exposée ainsi que sa clé publique. Il va ensuite déchiffrer la signature avec la clé publique et va obtenir normalement le même condensat qu'Alice a calculé lors du processus de signature. Si les deux valeurs sont identiques, cela implique que, d'une part, le document n'a pas été modifié, puisque le condensé calculé par Alice au moment de la signature est le même que celui que Bob a calculé. Et d'autre part, Bob est sûr que c'est Alice qui a signé le document, puisque c'est grâce à sa clé privée que le document a été signé. Les certificats qui protègent les sites web sont signés par les autorités de certification. Quand votre navigateur va se connecter sur un site web en utilisant HTTPS, il va vérifier l'authenticité de la signature en utilisant l'algorithme que je viens d'expliquer. Si d'aventure le certificat a été modifié ou que la signature n'est pas la bonne, alors votre navigateur affichera un message d'erreur. Ce mécanisme de signature est très puissant et s'utilise un peu partout, non seulement pour sécuriser vos connexions sur Internet, mais aussi dans le cadre des crypto-monnaies ou de la signature d'actes authentiques. Enfin bref, c'est utilisé un peu partout. Mais le plus important est de comprendre que la cryptographie est essentiellement basée sur des challenges mathématiques et que tant que ce challenge est difficile à résoudre, le processus de cryptographie est sûr. C'est pas faux ! Dans le cas de la factorisation d'un produit de nombres premiers, ce challenge est calculatoriellement complexe pour les ordinateurs classiques. On est capable, avec les algorithmes et les supercalculateurs d'aujourd'hui, de factoriser des nombres premiers ayant 250 chiffres. Par contre, dès qu'il y a un peu trop de chiffres, disons au-delà de 500, cette factorisation devient impossible. L'un des derniers records date de 2020, où l'algorithme KadoNFS, issu du LORIA, Laboratoire de Recherche Nancy, a réussi à factoriser un nombre de 250 chiffres décimaux. Il aurait fallu travailler pendant 2700 ans pour casser cette clé avec un ordinateur traditionnel. A la place, ce sont 10 000 ordinateurs, dispersés en France, en Allemagne et aux Etats-Unis, qui ont été utilisés pendant quelques mois. Pour vous donner un ordre de grandeur, Un nombre codé sur 256 bits, c'est-à-dire deux exposants 256, ça correspond au nombre d'électrons dans l'univers. Aujourd'hui, la norme est d'utiliser une clé de 2048 bits. Autant dire que c'est impossible à casser. Mais c'était sans compter l'avènement de l'ordinateur quantique qui a la capacité de résoudre ce type de problème en une fraction de seconde. Même si nous sommes encore assez loin de pouvoir acheter ce type de machine dans la boutique du coin de la rue, il paraissait certain que cette machine de science-fiction deviendrait de plus en plus une réalité. Même si sa mise au point va mettre encore quelques années, à terme, ce que nous considérons aujourd'hui comme un moyen sûr de chiffrement, moyen utilisé dans le monde entier, pilier de la technologie qui est du développement du commerce en ligne, des crypto-monnaies et des transactions bancaires, ce moyen sera obsolète car vulnérable. Heureusement, il existe déjà des solutions pour remplacer ce protocole et continuer à protéger nos données et nos communications. Ce qu'il faut comprendre par là, c'est que même si fondamentalement la cryptographie est basée sur des challenges mathématiques immuables, il y a deux facteurs importants à prendre en compte dans son évolution. D'une part l'évolution technologique, la puissance de calcul de plus en plus importante et les nouvelles opportunités comme l'ordinateur quantique. D'autre part, c'est l'implémentation de l'algorithme de chiffrement lui-même qui peut le rendre vulnérable. Le temps de chiffrement ou de déchiffrement nécessaire pour un message donné peut donner une information précieuse pour qu'un hacker lance une attaque. Ou le choix d'une clé trop faible, comme nous l'avons vu avec le chiffrement par décalage. De plus, il faut pouvoir utiliser des informations aléatoires. Mais comment obtenir du vrai aléatoire, alors que par définition un ornithère est parfaitement déterministe ? Mais la cryptographie fait de plus en plus de progrès, et même s'il existe de nombreuses vulnérabilités, les cryptographes du monde entier travaillent les corriger. Et c'est là sa grande force, car la sécurité ne vient pas de l'obscurité, mais bien au contraire, parce que tout est transparent. L'une des découvertes les plus prometteuses est le chiffrement homomorphe, qui permet à Charlie, un nouveau personnage, d'effectuer des traitements sur des données totalement chiffrées. En fait, Charlie est totalement aveugle. Il n'a pas la moindre idée des données qu'il traite, mais il le fait sans problème grâce au chiffrement homomorphique. Imaginez que vous ayez un calcul très secret à faire faire à Charlie. Vous ne souhaitez pas lui donner les chiffres à calculer, mais vous ne souhaitez pas faire le calcul par vous-même non plus. Avec le chiffrement homomorphique, vous allez chiffrer les données et les envoyer à Charlie. Charlie va faire le traitement sans avoir la moindre idée des informations qu'il traite. Une fois le travail effectué, Il va vous retourner le résultat que vous n'avez plus qu'à déchiffrer pour obtenir le résultat final. Ça vous semble peut-être totalement inutile, sauf si je vous dis que Charlie, c'est le cloud. Car l'un des plus grands défis de la cybersécurité actuellement est de sécuriser les activités déléguées à un tiers, dont on n'a pas forcément confiance. Mais ça, c'est une autre histoire. Merci d'avoir écouté ce podcast. N'hésitez surtout pas à liker cet épisode et à mettre vos questions dans les commentaires. Pour le réaliser, je me suis inspiré du livre de Pascal Lafourcade et Malika Moore, 25 énigmes ludiques pour s'initier à la cryptographie. C'est un livre hyper ludique, très bien fait, que je vous recommande chaudement. Je me suis aussi inspiré du livre Cryptographie de Douglas Hinton. Si les avancées de l'ordinateur quantique vous intéressent, n'hésitez pas à suivre Olivier Izrati, qui est une mine de connaissances sur ce sujet. Encore merci et surtout n'oubliez pas Certaines personnes pensent que la cybersécurité est un enjeu de vie ou de mort. C'est bien plus sérieux que ça.

Share

Embed

You may also like

Transcription

  • Speaker #0

    Bonjour mamie. Bonjour et bienvenue dans la cybersécurité expliquée à ma grand-mère, le podcast pour expliquer la cybersécurité à des gens qui ne comprennent rien. Et oui, on dit chiffrer et non pas crypter. Cette méconnaissance montre assez clairement que pour la plupart d'entre nous, la cryptographie est quelque chose d'assez obscur qu'on connaît sans vraiment connaître. Et pourtant, la cryptographie fait partie de notre vie de tous les jours et permet de faire bien des choses. On en a déjà parlé dans les épisodes précédents, mais le but aujourd'hui est d'aller un peu plus dans le détail. La cryptographie est un moyen qu'on utilise pour transmettre des messages en toute sécurité. C'est-à-dire que si quelqu'un intercepte le message, il doit être incapable de le lire. Comme d'habitude, c'est un problème qui existe depuis l'aube de l'humanité. Au tout début, on utilisait plutôt la stéganographie, qui était l'art de dissimuler un message. Hérodote, qui était considéré comme le premier historien, nous donne un exemple datant de moins 450 avant Jésus-Christ. Il écrit par exemple comment Desmarates envoie un message caché à Xerxes en écrivant sur une planche en bois qu'il recouvre ensuite d'une plaque de cire pour que la planche semble totalement vierge. Un autre exemple consiste à utiliser un esclave, à lui raser la tête pour ensuite lui... tatouer le message sur le crâne. Il ne reste plus qu'à attendre que les cheveux repoussent pour envoyer l'esclave au destinataire qui n'aura plus qu'à raser les cheveux pour découvrir le message caché. Un peu plus tard en Chine, une autre technique consistait à écrire un message sur une bande de papier de soie. Cette bande était par la suite roulée en boules et recouverte de cire. Le messager devait alors avaler cette boulette pour ensuite la délivrer à son destinataire en toute sécurité. Plus romanesque que la fameuse relation épistolaire entre Georges Sand et Frédéric Chepin. Ils échangeaient des lettres qui semblaient être totalement anodines et qu'il était beaucoup moins quand on regardait le premier mot de chaque ligne. Sacré coquin, Georgie. Aujourd'hui, la stéganographie est utilisée, entre autres, pour protéger une image, un film ou un document contre le piratage. La pratique consiste à légèrement altérer le document pour y cacher une information supplémentaire. A l'instar des autres cas de stéganographie, L'information est bien présente dans l'image, mais elle passe inaperçue à un œil non averti. Cette technique a permis par exemple de lutter contre les piratages des films dans les salles de cinéma. Chaque film projeté contenait un filigrane numérique unique. Si quelqu'un avait piraté ce film en filmant l'écran directement, il était possible de trouver le filigrane et de savoir dans quelle salle le film avait été piraté. Même si la stéganographie permet de protéger la confidentialité d'un message, c'est-à-dire que le message ne soit pas lu par un tiers, et bien ça n'est pas pour autant de la cryptographie. Car la protection du message dépend essentiellement du secret qu'il protège, c'est-à-dire la technique qui permet de cacher ce message. En fait, le message est protégé tant que le secret n'est pas divulgué. Tout est dans la dissimulation. Ça alors !

  • Speaker #1

    Heinrich, un postiche !

  • Speaker #0

    Il en est de même pour les codes. On peut imaginer par exemple qu'utiliser un code permet de protéger un message. En fait, c'est partiellement vrai. La première utilité du code est de transposer une information d'un ensemble à un autre. Le meilleur exemple est le code Morse inventé par l'américain Samuel Morse. Le but de son code est de transposer l'alphabet en signaux électriques ou acoustiques. Bien que ce système soit très ancien, il est utilisé encore de nos jours pour l'identification des balises utilisées dans la radionavigation aérienne. C'est certes très ancien mais très robuste. D'autres codes ont pour fonction de rendre la transmission d'informations plus résiliente, c'est-à-dire résistante aux aléas des transmissions. L'un des meilleurs exemples est le compacte disque. Cette technologie a été développée par Philips et Sony en 82 et fait aujourd'hui ses 30 ans. Vous connaissez très certainement son principe de fonctionnement. Il s'agit d'un faisceau laser de quelques millièmes de millimètre qui va lire une piste numérique qui encode la musique. Mais que se passe-t-il en cas de présence de poussière ou de rayures sur les disques ? L'échelle est tellement petite que la lecture d'un piste sera forcément erronée. Et pourtant, nous avons tous fait l'expérience, même s'il y a des rayures ou de la poussière, ça fonctionne quand même. En fait, le codage de la musique est fait avec un code correcteur d'erreur. Ce code a la propriété d'être corrigé en cas d'anomalie due à un problème de transmission, ce qui le rend résistant en cas d'altération partielle. Ce sont entre autres les polynômes premiers, c'est-à-dire des polynômes que l'on peut diviser que par eux-mêmes, qui permettent d'obtenir cette résilience. Justement, à propos de la musique, je ne peux pas m'empêcher de vous donner un exemple de stéganographie, dans ce cas un exemple de stéganophonie puisqu'il s'agit de musique. Si vous écoutez attentivement l'introduction du morceau de musique Radioactivity de Kraftwerk, vous pouvez entendre un message en morse. Ce message est un message caché à l'intérieur du morceau. Mais comme expliqué, le code permet de créer une transposition d'un ensemble de signes à un autre, des lettres de l'alphabet vers un code binaire par exemple. Mais le codage ne permet pas de garantir la confidentialité des données. Alors comment la garantir ? jusqu'à quel niveau on peut faire confiance au système ? Eh bien la réponse est justement à la cryptographie. Le principe de la cryptographie est de chiffrer des données à l'aide d'un procédé de chiffrement et d'une clé, c'est-à-dire transformer le message que l'on souhaite transmettre de telle sorte que si quelqu'un l'intercepte, il sera incapable de le comprendre et ne verra qu'une suite aléatoire de données sans aucun rapport avec le message initial. On appelle le message initial le message clair, et une fois que ce message a été traité par le processus de chiffrement, on dit que le message est chiffré. La personne ayant intercepté le message pourra tenter de le décrypter, c'est-à-dire de retrouver le message d'origine sans avoir la clé de chiffrement. En revanche, celui qui a la clé pourra simplement déchiffrer le message sans difficulté. Essayer de décrypter le code, c'est ce qu'on appelle la cryptanalyse, c'est-à-dire l'analyse du message pour casser le code. La personne légitime déchiffre le message alors que le pirate essaie de le décrypter. Tout ça doit vous paraître un peu confus, mais on va prendre un exemple très simple avec un niveau de difficulté proche des dernières pages de Picsou Magazine. Imaginons deux personnes, Alice et Bob. Et oui, en cryptographie, c'est toujours la même histoire, c'est toujours Alice qui va envoyer un message à Bob. On se demande bien ce qu'ils ont à se raconter ces deux-là. Pour protéger son message, Alice va décaler chaque lettre de l'alphabet de 1, c'est-à-dire que le A va devenir B, B va devenir C, et ainsi de suite. Pour déchiffrer le message, Bob n'aura qu'à décaler dans l'autre sens chaque lettre de l'alphabet. B va devenir A, C va devenir B, et ainsi de suite. On suppose qu'Alice et Bob ont convenu avant la transmission de la clé de chiffrement, ce qui est le décalage à opérer 1 dans notre exemple. Ajoutons maintenant un opposant, appelé Oscar. Celui-ci va chercher à décrypter le message, c'est-à-dire à retrouver le message d'origine sans avoir la clé. Il va donc faire de la cryptanalyse, c'est-à-dire analyser le message chiffré qu'Alice a envoyé à Bob, et ceci pour déduire certaines caractéristiques qui lui permettront de casser le code et de retrouver le message clair, c'est-à-dire le message d'origine, qu'Alice a envoyé à Bob. Dans le cas qui nous occupe, c'est assez simple. Il suffit juste de regarder la fréquence d'apparition des lettres. Dans la langue française, la lettre E apparaît avec une fréquence de 12%. Si en analysant le texte chiffré, vous trouvez une lettre dont la fréquence a une fréquence similaire, c'est qu'elle représente très certainement la lettre E. Dans notre exemple, c'est la lettre F qui sera la plus présente dans le texte chiffré. Cette faiblesse est due au fait que le décalage entre l'alphabet chiffré et non chiffré est constant. La répartition statistique des lettres dans le message est donc conservée. De plus, la clé est ridiculeusement petite, et en plus certaines valeurs ne seront pas des choix très judicieux. 0 par exemple ne fera aucun décalage, dans ce cas le message chiffré sera identique au message d'origine. Pas très sécurisé cette affaire. Il en va de même pour tous les multiples de 26, puisque quand vous avez fait le tour de l'alphabet, vous allez revenir à la lettre d'origine. L'une des solutions est justement d'augmenter la solidité de cette clé, et d'en utiliser une qui soit... aussi longue que le message à chiffrer. Dès lors, et pour peu que cette clé soit aléatoire et utilisée qu'une seule fois, le message qui sera chiffré sera totalement incassable. C'est ce qu'on appelle le chiffrement à masque jetable ou chiffrement de Vernam. Et cette technique est rigoureusement impossible à casser. Voilà donc la solution pour sécuriser la transmission de vos messages. Merci d'avoir écouté cet épisode de la cybersécurité expliquée à nos grands-mères. Pour réaliser ce numéro, je me suis inspiré de... Attendez une minute, ce n'est peut-être pas aussi simple que ça. C'est un chiffrement parfait, certes, mais ça veut aussi dire que la clé est aussi longue que le message à chiffrer. Imaginez que vous devez chiffrer une encyclopédie. Eh bien, la clé de chiffrement sera aussi longue que l'encyclopédie elle-même. Ça n'est pas très pratique, en fait. Alors, même si cette méthode a été utilisée par les Russes pendant la guerre froide, ça reste un système qui n'est pas très pratique. Mais alors, qu'est-ce qui fait qu'un système de chiffrement est vraiment utilisable ? C'est Auguste Karkoff qui répondit à cette question en 1883 en définissant les critères à retenir en matière de cryptographie militaire. Principe numéro 1. Le système doit être matériellement, sinon mathématiquement indéchiffrable. Cela veut dire que les difficultés techniques doivent être liées à la complexité mathématique et que résoudre ce défi mathématique prend énormément de temps et ou de ressources. Ce point est crucial, car c'est ce qui rend le chiffrement universel, car la difficulté mathématique est la même pour tout le monde. Principe numéro 2. Il faut qu'il n'existe pas de secret et qu'il puisse sans inconvénient tomber entre la main des ennemis. Ce principe est aussi très important. Il implique que la force du chiffrement n'est pas due au secret de sa fabrication et que quand bien même vous connaissez la méthode de chiffrement, cette connaissance ne vous permettra pas d'attaquer le système. Ça ne vous donnera aucun autre avantage. En fait, les protocoles de chiffrement modernes sont connus par tous. Et c'est justement parce que les spécialistes en cryptographie du monde entier ont essayé de trouver des failles dans les systèmes que celui-ci se rassure. Plus le système sera connu et répandu, plus il se rassure. Principe numéro 3. La clé doit pouvoir être communiquée et retenue sans le secours de notes écrites. et être changé ou modifié au gré des correspondances. Ça vous rappelle quelque chose ? Les mots de passe par exemple. Ce principe explique pourquoi le chiffrement de Vernam n'est pas vraiment réaliste car vous devriez retenir des clés extrêmement longues. Principe numéro 4. Il faut qu'il soit applicable à la correspondance télégraphique. Là encore, cela veut dire qu'il ne doit pas y avoir d'exception dans la manière de transmettre le message. Principe numéro 5. Il faut qu'il soit portatif et que son maniement ou son fonctionnement n'exige pas le concours de plusieurs personnes. Ce principe peut faire sourire. Mais je vous rappelle que ces règles ont été établies au 19e siècle et qu'à cette époque, il fallait que les systèmes soient transportables sur un cheval. Si on interprète d'un point de vue moderne ce principe, ceci implique que les systèmes de cryptographie doivent pouvoir s'exécuter sans trop de consommation de ressources. En d'autres termes, si vous avez besoin d'un ordinateur surpuissant pour chiffrer vos messages, ça ne fonctionnera pas. Principe numéro 6. Enfin, il est nécessaire, vu les circonstances qui en commandent l'application, que le système soit d'un usage facile, ne demande ni tension d'esprit, ni la connaissance de longues séries de règles à observer. En d'autres termes, celui qui utilise le système cryptographique ne doit pas se faire des nœuds au cerveau et idéalement que ce soit transparent pour lui. Dans l'histoire, il y a un exemple parfait de ce système cryptographique qui cache toutes les cases. C'est le système Enigma utilisé par les Allemands lors de la Seconde Guerre mondiale. C'est un système de chiffrement électromécanique. Concrètement, c'est un ensemble de roues appelées rotors qui tournent au fur et à mesure que le message est introduit dans la machine. Et d'une certaine manière, la clé qui permet de chiffrer et de déchiffrer est la position initiale de ces différents rotors. A chaque fois qu'une lettre est rentrée dans la machine, les rotors tournent suivant une certaine séquence, et ce pour chaque lettre qui compose le message. C'est un peu comme les anciens compteurs kilométriques, avec une roue pour les unités, une autre pour les dizaines, etc. Détail important, c'est que le chiffrement d'un caractère dépend du caractère précédemment traité. Contrairement au chiffrement basé sur un simple décalage de lettres qui encode une lettre, toujours avec la même correspondance. Enigma va chiffrer un caractère en fonction du résultat précédent, ce qui complexifie nettement une attaque. C'est un peu comme dans la scène d'Harry Potter, où chaque escalier change de direction au gré des passages des uns et des autres. Ce qui fait que même si tout le monde a pris la même entrée d'escalier, il a fort à parier que tout le monde va se retrouver à des endroits différents. Ça semble aléatoire, mais en réalité ça suit une logique combinatoire assez complexe. Et c'est cette complexité qui fait la force du système de chiffrement. Il y a 159 trillions de combinaisons possibles, ce qui rend mathématiquement une attaque très complexe. Et pourtant, Alan Turing, un mathématicien anglais, a réussi cet exploit en cédant d'une vulnérabilité du système, ou plutôt de son usage. Souvenez-vous, tout est vulnérable d'une certaine manière. Tous les messages transmis par les allemands commençaient par la date du jour et se terminaient par à Hitler Cette spécificité a permis de lancer une cryptanalyse sur base du texte chiffré dont le texte clair était partiellement connu au début et à la fin du message. Grâce aux travaux de Turing, les alliés eurent un avantage décisif sur les allemands, mais malgré cet exploit, Alan Turing n'a pas été reconnu à juste titre, car étant homosexuel, il a été rejeté par la société conservatrice de l'époque Et en plein désespoir, c'est donné la mort. La vie d'Alan Turing a été portée à l'écran dans le film Imitation Game. Ce type de chiffrement est basé sur une clé identique pour chiffrer et déchiffrer le message. C'est-à-dire que c'est la même clé qu'on utilise dans le processus de chiffrement et le processus de déchiffrement. C'est ce qu'on appelle le chiffrement symétrique. Ce qui implique que les deux protagonistes, Alice et Bov, doivent échanger au préalable cette clé et surtout faire cet échange de manière sécurisée. ce qui en soit une contrainte assez importante, d'autant plus que vous devez changer cette clé très fréquemment, idéalement à chaque transmission. Pour pallier à ce problème, trois mathématiciens, Ron Rives, Adir Shamir et Leonard Adleman, ont inventé un système cryptographique basé sur deux clés. Ce procédé est nommé RSA en référence à la première lettre de leur nom de famille. Le principe de fonctionnement est assez simple. Si vous chiffrez le message avec l'une des clés, vous avez besoin de l'autre pour déchiffrer le message. Si vous ne disposez que d'une clé, vous pourrez chiffrer le message sans problème, mais il faudra impérativement l'autre clé pour déchiffrer. Ce chiffrement ne va donc que dans un seul sens. Et la clé que vous utilisez ne peut être utilisée que pour chiffrer, contrairement à l'exemple précédent, où la même clé était utilisée pour chiffrer et déchiffrer. C'est la raison pour laquelle on appelle ce type de procédé chiffrement asymétrique. L'un des intérêts de cette méthode, c'est que vous pouvez diffuser à tout le monde l'une de ces deux clés. Il n'y aura aucun danger à faire ça, car il faudra l'autre clé pour déchiffrer le message. On appelle la clé qu'on peut diffuser à tout le monde la clé publique, et l'autre, celle qu'on doit garder précieusement, la clé privée. Le chiffrement RSA est baisé sur la difficulté de factoriser des produits de deux nombres premiers. Pour ceux qui ont oublié leur cours de maths, un nombre premier est un nombre qui ne peut être divisé que par lui-même ou par 1. Par exemple, 3 est premier alors que 4 ne l'est pas, puisqu'on peut diviser par 2. La factorisation première d'un nombre, c'est trouver deux nombres premiers formant un produit égal au nombre à factoriser. Par exemple, 12, c'est 4 x 3, et 4, c'est 2 x 2. La factorisation première de 12 est donc 2... fois 2 fois 3. L'exemple ici est assez simple car le nombre à factoriser est petit, mais c'est bien plus compliqué quand le nombre est grand. On sent assez intuitivement que faire le produit de plusieurs nombres premiers est très facile, alors que factoriser un produit de nombres premiers, c'est-à-dire faire l'opération inverse, est très difficile. C'est donc une opération difficilement réversible. C'est un peu comme une NAS dans laquelle il est très facile de rentrer, mais beaucoup plus difficile d'en sortir. Et c'est sur cette complexité que repose la solidité du chiffrement RSA. solidité dont on discutera un peu plus tard, car comme toujours en cybersécurité, ce qui est vrai maintenant ne l'est pas forcément demain. Mais revenons à notre exemple avec Alice et Bob. Alice peut chiffrer un message en utilisant la clé publique de Bob, et cela sans crainte de voir son message déchiffrer en cours de route. Ça permet de créer un canal de communication sécurisé sans avoir à échanger une information secrète au préalable, puisque la seule information dont a besoin Alice, c'est la clé publique de Bob. Cette technique a cependant un petit défaut. car elles consomment beaucoup plus de ressources et de temps de calcul que le chiffrement symétrique traditionnel. La propriété de pouvoir créer un canal de communication sûr sans avoir à échanger préalablement une clé est quelque chose d'essentiel en matière de cybersécurité. Si on prend l'exemple d'une connexion vers un site web, il y a plein d'étapes entre votre machine et le serveur web. Vous devez déjà traverser votre propre réseau, ensuite passer par l'infrastructure de votre fournisseur d'accès Internet, qui lui-même va aiguiller votre trafic vers d'autres prestataires pour arriver enfin à l'infrastructure du serveur web. Bien souvent, vous avez traversé le monde entier et bon nombre d'équipements. Le problème est qu'il est impossible de garantir la sécurité de chacun des intervenants et donc de faire confiance au canal de communication. Et sans cette confiance, impossible de développer l'e-commerce ou les services financiers en ligne. Et bien justement, c'est le chiffrement à clé publique qui va nous aider à sécuriser ce canal puisque la seule information dont nous avons besoin, c'est la clé publique du site web. C'est exactement ce qui se passe quand vous vous connectez à un site web en HTTPS. Vous savez, le fameux petit cadenas juste avant la barre d'adresse. Après avoir sécurisé le canal de communication, le navigateur et le site web vont se mettre d'accord sur une clé de chiffrement symétrique commune pour chiffrer efficacement la communication. Cet algorithme est appelé l'algorithme de Diffie-Hellman, du nom de ses créateurs. Toutes les informations nécessaires pour établir cette première connexion se trouvent dans ce qu'on appelle un certificat. Ce certificat se trouve sur le site web et contient des informations comme la fameuse clé publique. Mais comment être sûr de la qualité du chiffrement et surtout de son authenticité ? En fait, il y a plusieurs éléments à prendre en compte. Le premier, c'est les nombres premiers qui sont utilisés pour générer la clé publique et la clé privée. Ceux-ci doivent être suffisamment grands. Je vous rappelle que plus la clé sera longue, plus il sera mathématiquement difficile de casser le code. Et ce choix va évoluer avec le temps, car plus le temps passe et plus les moyens techniques s'améliorent. Ce qui prenait des heures dans les années 2000 ne prend maintenant plus que quelques minutes. Ce qui veut dire qu'une clé réputée sur maintenant ne le sera très certainement plus dans quelques années. Heureusement, il y a des organisations, gratuites ou payantes, qu'on appelle autorités de certification, capables de générer des certificats, c'est-à-dire des paires de clés publiques et privées de bonne qualité. Mais au-delà de leur rôle dans la génération de ces fameuses clés, ils ont aussi la responsabilité de vérifier que vous êtes bien le propriétaire du site web que vous cherchez à sécuriser. Mais comment s'assurer que quand votre navigateur se connecte à un site web, le certificat qu'il protège est bien légitime ? C'est-à-dire qu'il n'y a pas un vilain hacker qui a fait son propre certificat dans son coin et qu'il essaie de le faire passer comme légitime. En d'autres termes, comment s'assurer que le certificat n'est pas un faux ? Cette question est cruciale en matière de cybersécurité car elle adresse la question de l'authenticité, c'est-à-dire vérifier qu'un document émis par une entité n'a pas été modifié par un tiers et surtout que c'est bien cette entité qui l'a émise. Pour répondre à cette question, il faut parler d'un autre outil cryptographique qu'on appelle le hashage. Une fonction de hashage est une fonction qui, pour des données en entrée, va renvoyer un identifiant quasi unique sur un format très court. C'est ce qu'on appelle le condensat. Ce qui est très utile, c'est que ce condensat est généralement très court et qu'on peut identifier à quasi certains documents analysés. En revanche, il n'est pas possible de déduire un document uniquement sur base du condensat. C'est un peu comme une empreinte digitale. Chaque individu a sa propre empreinte, mais si je regarde uniquement cette empreinte, je ne peux pas déduire vos caractéristiques physiques, si vous êtes un homme ou une femme, ou si vous êtes brun ou blond. En revanche, il est possible de vérifier l'identité d'un individu en utilisant cette empreinte. Ça marche dans un sens, mais pas dans l'autre. Prenons un exemple simple. Imaginez une fonction de hachage qui fait la somme des lettres d'un message. Par exemple, le mot ABC aura comme résidu 1 plus 2 plus 3, c'est-à-dire 6. Si vous remplacez la seconde lettre par un A, on obtiendra le mot AAC, dont le condensé sera égal à 1 plus 1 plus 3, c'est-à-dire 5. On voit bien ici que les deux condensats sont différents car les messages sont différents. Alors évidemment cette fonction de hachage n'est pas très bonne puisque toutes les permutations des lettres dans un mot auront le même condensat. Le condensat de AAC sera le même que pour ACA et aussi CAA. Heureusement les vraies fonctions de hachage utilisées en cryptographie sont bien évidemment beaucoup plus efficaces. Et le cas de figure où deux messages différents ont le même condensat, c'est ce qu'on appelle une collision, n'existe que très rarement. Il faut surtout retenir que si on change la moindre chose dans le document, le condensat changera complètement. Cette fonction de hashage est utilisée aussi dans d'autres domaines, comme dans les blockchains qui utilisent la preuve de travail, mais aussi la protection des mots de passe, car on ne stocke jamais le mot de passe en clair, mais son condensat. Nous voilà donc avec une fonction de hashage qui permet de générer un condensat, une sorte d'empreinte digitale numérique, sur base d'un document donné. Cette fonction de hashage est connue de tous, et donc tout le monde est capable de calculer le condensat de n'importe quel document. Comme nous l'avons vu un peu avant, le chiffrement asymétrique permet de chiffrer une donnée avec une clé publique. Dans ce cas-là, seul celui qui a la clé privée pourra déchiffrer le message. Mais il faut aussi se souvenir qu'il est possible de chiffrer un message avec la clé privée. Dans ce cas, le message peut être déchiffré en utilisant la clé publique, c'est-à-dire par tout le monde. Vous vous demandez très certainement l'intérêt de chiffrer un message pour que tout le monde puisse le déchiffrer. Eh bien, vous allez comprendre d'ici quelques minutes. Si Alice veut signer un document, elle va d'abord calculer le condensat de ce document, c'est-à-dire une empreinte digitale à l'aide d'une fonction de hachage. Ensuite, elle va chiffrer cette valeur avec sa clé privée. Le résultat de cette opération donne la signature digitale. Alice va pouvoir l'exposer à tout le monde. Cette information, c'est la signature du document, et Alice peut la donner à tout le monde comme preuve de sa signature. Si Bob souhaite vérifier la signature d'Alice, Il va d'abord calculer le condensat du document qu'il cherche à authentifier en utilisant la même fonction de hachage que celle qu'Alice a utilisée. Il va récupérer la signature qu'Alice a exposée ainsi que sa clé publique. Il va ensuite déchiffrer la signature avec la clé publique et va obtenir normalement le même condensat qu'Alice a calculé lors du processus de signature. Si les deux valeurs sont identiques, cela implique que, d'une part, le document n'a pas été modifié, puisque le condensé calculé par Alice au moment de la signature est le même que celui que Bob a calculé. Et d'autre part, Bob est sûr que c'est Alice qui a signé le document, puisque c'est grâce à sa clé privée que le document a été signé. Les certificats qui protègent les sites web sont signés par les autorités de certification. Quand votre navigateur va se connecter sur un site web en utilisant HTTPS, il va vérifier l'authenticité de la signature en utilisant l'algorithme que je viens d'expliquer. Si d'aventure le certificat a été modifié ou que la signature n'est pas la bonne, alors votre navigateur affichera un message d'erreur. Ce mécanisme de signature est très puissant et s'utilise un peu partout, non seulement pour sécuriser vos connexions sur Internet, mais aussi dans le cadre des crypto-monnaies ou de la signature d'actes authentiques. Enfin bref, c'est utilisé un peu partout. Mais le plus important est de comprendre que la cryptographie est essentiellement basée sur des challenges mathématiques et que tant que ce challenge est difficile à résoudre, le processus de cryptographie est sûr. C'est pas faux ! Dans le cas de la factorisation d'un produit de nombres premiers, ce challenge est calculatoriellement complexe pour les ordinateurs classiques. On est capable, avec les algorithmes et les supercalculateurs d'aujourd'hui, de factoriser des nombres premiers ayant 250 chiffres. Par contre, dès qu'il y a un peu trop de chiffres, disons au-delà de 500, cette factorisation devient impossible. L'un des derniers records date de 2020, où l'algorithme KadoNFS, issu du LORIA, Laboratoire de Recherche Nancy, a réussi à factoriser un nombre de 250 chiffres décimaux. Il aurait fallu travailler pendant 2700 ans pour casser cette clé avec un ordinateur traditionnel. A la place, ce sont 10 000 ordinateurs, dispersés en France, en Allemagne et aux Etats-Unis, qui ont été utilisés pendant quelques mois. Pour vous donner un ordre de grandeur, Un nombre codé sur 256 bits, c'est-à-dire deux exposants 256, ça correspond au nombre d'électrons dans l'univers. Aujourd'hui, la norme est d'utiliser une clé de 2048 bits. Autant dire que c'est impossible à casser. Mais c'était sans compter l'avènement de l'ordinateur quantique qui a la capacité de résoudre ce type de problème en une fraction de seconde. Même si nous sommes encore assez loin de pouvoir acheter ce type de machine dans la boutique du coin de la rue, il paraissait certain que cette machine de science-fiction deviendrait de plus en plus une réalité. Même si sa mise au point va mettre encore quelques années, à terme, ce que nous considérons aujourd'hui comme un moyen sûr de chiffrement, moyen utilisé dans le monde entier, pilier de la technologie qui est du développement du commerce en ligne, des crypto-monnaies et des transactions bancaires, ce moyen sera obsolète car vulnérable. Heureusement, il existe déjà des solutions pour remplacer ce protocole et continuer à protéger nos données et nos communications. Ce qu'il faut comprendre par là, c'est que même si fondamentalement la cryptographie est basée sur des challenges mathématiques immuables, il y a deux facteurs importants à prendre en compte dans son évolution. D'une part l'évolution technologique, la puissance de calcul de plus en plus importante et les nouvelles opportunités comme l'ordinateur quantique. D'autre part, c'est l'implémentation de l'algorithme de chiffrement lui-même qui peut le rendre vulnérable. Le temps de chiffrement ou de déchiffrement nécessaire pour un message donné peut donner une information précieuse pour qu'un hacker lance une attaque. Ou le choix d'une clé trop faible, comme nous l'avons vu avec le chiffrement par décalage. De plus, il faut pouvoir utiliser des informations aléatoires. Mais comment obtenir du vrai aléatoire, alors que par définition un ornithère est parfaitement déterministe ? Mais la cryptographie fait de plus en plus de progrès, et même s'il existe de nombreuses vulnérabilités, les cryptographes du monde entier travaillent les corriger. Et c'est là sa grande force, car la sécurité ne vient pas de l'obscurité, mais bien au contraire, parce que tout est transparent. L'une des découvertes les plus prometteuses est le chiffrement homomorphe, qui permet à Charlie, un nouveau personnage, d'effectuer des traitements sur des données totalement chiffrées. En fait, Charlie est totalement aveugle. Il n'a pas la moindre idée des données qu'il traite, mais il le fait sans problème grâce au chiffrement homomorphique. Imaginez que vous ayez un calcul très secret à faire faire à Charlie. Vous ne souhaitez pas lui donner les chiffres à calculer, mais vous ne souhaitez pas faire le calcul par vous-même non plus. Avec le chiffrement homomorphique, vous allez chiffrer les données et les envoyer à Charlie. Charlie va faire le traitement sans avoir la moindre idée des informations qu'il traite. Une fois le travail effectué, Il va vous retourner le résultat que vous n'avez plus qu'à déchiffrer pour obtenir le résultat final. Ça vous semble peut-être totalement inutile, sauf si je vous dis que Charlie, c'est le cloud. Car l'un des plus grands défis de la cybersécurité actuellement est de sécuriser les activités déléguées à un tiers, dont on n'a pas forcément confiance. Mais ça, c'est une autre histoire. Merci d'avoir écouté ce podcast. N'hésitez surtout pas à liker cet épisode et à mettre vos questions dans les commentaires. Pour le réaliser, je me suis inspiré du livre de Pascal Lafourcade et Malika Moore, 25 énigmes ludiques pour s'initier à la cryptographie. C'est un livre hyper ludique, très bien fait, que je vous recommande chaudement. Je me suis aussi inspiré du livre Cryptographie de Douglas Hinton. Si les avancées de l'ordinateur quantique vous intéressent, n'hésitez pas à suivre Olivier Izrati, qui est une mine de connaissances sur ce sujet. Encore merci et surtout n'oubliez pas Certaines personnes pensent que la cybersécurité est un enjeu de vie ou de mort. C'est bien plus sérieux que ça.

Transcription

  • Speaker #0

    Bonjour mamie. Bonjour et bienvenue dans la cybersécurité expliquée à ma grand-mère, le podcast pour expliquer la cybersécurité à des gens qui ne comprennent rien. Et oui, on dit chiffrer et non pas crypter. Cette méconnaissance montre assez clairement que pour la plupart d'entre nous, la cryptographie est quelque chose d'assez obscur qu'on connaît sans vraiment connaître. Et pourtant, la cryptographie fait partie de notre vie de tous les jours et permet de faire bien des choses. On en a déjà parlé dans les épisodes précédents, mais le but aujourd'hui est d'aller un peu plus dans le détail. La cryptographie est un moyen qu'on utilise pour transmettre des messages en toute sécurité. C'est-à-dire que si quelqu'un intercepte le message, il doit être incapable de le lire. Comme d'habitude, c'est un problème qui existe depuis l'aube de l'humanité. Au tout début, on utilisait plutôt la stéganographie, qui était l'art de dissimuler un message. Hérodote, qui était considéré comme le premier historien, nous donne un exemple datant de moins 450 avant Jésus-Christ. Il écrit par exemple comment Desmarates envoie un message caché à Xerxes en écrivant sur une planche en bois qu'il recouvre ensuite d'une plaque de cire pour que la planche semble totalement vierge. Un autre exemple consiste à utiliser un esclave, à lui raser la tête pour ensuite lui... tatouer le message sur le crâne. Il ne reste plus qu'à attendre que les cheveux repoussent pour envoyer l'esclave au destinataire qui n'aura plus qu'à raser les cheveux pour découvrir le message caché. Un peu plus tard en Chine, une autre technique consistait à écrire un message sur une bande de papier de soie. Cette bande était par la suite roulée en boules et recouverte de cire. Le messager devait alors avaler cette boulette pour ensuite la délivrer à son destinataire en toute sécurité. Plus romanesque que la fameuse relation épistolaire entre Georges Sand et Frédéric Chepin. Ils échangeaient des lettres qui semblaient être totalement anodines et qu'il était beaucoup moins quand on regardait le premier mot de chaque ligne. Sacré coquin, Georgie. Aujourd'hui, la stéganographie est utilisée, entre autres, pour protéger une image, un film ou un document contre le piratage. La pratique consiste à légèrement altérer le document pour y cacher une information supplémentaire. A l'instar des autres cas de stéganographie, L'information est bien présente dans l'image, mais elle passe inaperçue à un œil non averti. Cette technique a permis par exemple de lutter contre les piratages des films dans les salles de cinéma. Chaque film projeté contenait un filigrane numérique unique. Si quelqu'un avait piraté ce film en filmant l'écran directement, il était possible de trouver le filigrane et de savoir dans quelle salle le film avait été piraté. Même si la stéganographie permet de protéger la confidentialité d'un message, c'est-à-dire que le message ne soit pas lu par un tiers, et bien ça n'est pas pour autant de la cryptographie. Car la protection du message dépend essentiellement du secret qu'il protège, c'est-à-dire la technique qui permet de cacher ce message. En fait, le message est protégé tant que le secret n'est pas divulgué. Tout est dans la dissimulation. Ça alors !

  • Speaker #1

    Heinrich, un postiche !

  • Speaker #0

    Il en est de même pour les codes. On peut imaginer par exemple qu'utiliser un code permet de protéger un message. En fait, c'est partiellement vrai. La première utilité du code est de transposer une information d'un ensemble à un autre. Le meilleur exemple est le code Morse inventé par l'américain Samuel Morse. Le but de son code est de transposer l'alphabet en signaux électriques ou acoustiques. Bien que ce système soit très ancien, il est utilisé encore de nos jours pour l'identification des balises utilisées dans la radionavigation aérienne. C'est certes très ancien mais très robuste. D'autres codes ont pour fonction de rendre la transmission d'informations plus résiliente, c'est-à-dire résistante aux aléas des transmissions. L'un des meilleurs exemples est le compacte disque. Cette technologie a été développée par Philips et Sony en 82 et fait aujourd'hui ses 30 ans. Vous connaissez très certainement son principe de fonctionnement. Il s'agit d'un faisceau laser de quelques millièmes de millimètre qui va lire une piste numérique qui encode la musique. Mais que se passe-t-il en cas de présence de poussière ou de rayures sur les disques ? L'échelle est tellement petite que la lecture d'un piste sera forcément erronée. Et pourtant, nous avons tous fait l'expérience, même s'il y a des rayures ou de la poussière, ça fonctionne quand même. En fait, le codage de la musique est fait avec un code correcteur d'erreur. Ce code a la propriété d'être corrigé en cas d'anomalie due à un problème de transmission, ce qui le rend résistant en cas d'altération partielle. Ce sont entre autres les polynômes premiers, c'est-à-dire des polynômes que l'on peut diviser que par eux-mêmes, qui permettent d'obtenir cette résilience. Justement, à propos de la musique, je ne peux pas m'empêcher de vous donner un exemple de stéganographie, dans ce cas un exemple de stéganophonie puisqu'il s'agit de musique. Si vous écoutez attentivement l'introduction du morceau de musique Radioactivity de Kraftwerk, vous pouvez entendre un message en morse. Ce message est un message caché à l'intérieur du morceau. Mais comme expliqué, le code permet de créer une transposition d'un ensemble de signes à un autre, des lettres de l'alphabet vers un code binaire par exemple. Mais le codage ne permet pas de garantir la confidentialité des données. Alors comment la garantir ? jusqu'à quel niveau on peut faire confiance au système ? Eh bien la réponse est justement à la cryptographie. Le principe de la cryptographie est de chiffrer des données à l'aide d'un procédé de chiffrement et d'une clé, c'est-à-dire transformer le message que l'on souhaite transmettre de telle sorte que si quelqu'un l'intercepte, il sera incapable de le comprendre et ne verra qu'une suite aléatoire de données sans aucun rapport avec le message initial. On appelle le message initial le message clair, et une fois que ce message a été traité par le processus de chiffrement, on dit que le message est chiffré. La personne ayant intercepté le message pourra tenter de le décrypter, c'est-à-dire de retrouver le message d'origine sans avoir la clé de chiffrement. En revanche, celui qui a la clé pourra simplement déchiffrer le message sans difficulté. Essayer de décrypter le code, c'est ce qu'on appelle la cryptanalyse, c'est-à-dire l'analyse du message pour casser le code. La personne légitime déchiffre le message alors que le pirate essaie de le décrypter. Tout ça doit vous paraître un peu confus, mais on va prendre un exemple très simple avec un niveau de difficulté proche des dernières pages de Picsou Magazine. Imaginons deux personnes, Alice et Bob. Et oui, en cryptographie, c'est toujours la même histoire, c'est toujours Alice qui va envoyer un message à Bob. On se demande bien ce qu'ils ont à se raconter ces deux-là. Pour protéger son message, Alice va décaler chaque lettre de l'alphabet de 1, c'est-à-dire que le A va devenir B, B va devenir C, et ainsi de suite. Pour déchiffrer le message, Bob n'aura qu'à décaler dans l'autre sens chaque lettre de l'alphabet. B va devenir A, C va devenir B, et ainsi de suite. On suppose qu'Alice et Bob ont convenu avant la transmission de la clé de chiffrement, ce qui est le décalage à opérer 1 dans notre exemple. Ajoutons maintenant un opposant, appelé Oscar. Celui-ci va chercher à décrypter le message, c'est-à-dire à retrouver le message d'origine sans avoir la clé. Il va donc faire de la cryptanalyse, c'est-à-dire analyser le message chiffré qu'Alice a envoyé à Bob, et ceci pour déduire certaines caractéristiques qui lui permettront de casser le code et de retrouver le message clair, c'est-à-dire le message d'origine, qu'Alice a envoyé à Bob. Dans le cas qui nous occupe, c'est assez simple. Il suffit juste de regarder la fréquence d'apparition des lettres. Dans la langue française, la lettre E apparaît avec une fréquence de 12%. Si en analysant le texte chiffré, vous trouvez une lettre dont la fréquence a une fréquence similaire, c'est qu'elle représente très certainement la lettre E. Dans notre exemple, c'est la lettre F qui sera la plus présente dans le texte chiffré. Cette faiblesse est due au fait que le décalage entre l'alphabet chiffré et non chiffré est constant. La répartition statistique des lettres dans le message est donc conservée. De plus, la clé est ridiculeusement petite, et en plus certaines valeurs ne seront pas des choix très judicieux. 0 par exemple ne fera aucun décalage, dans ce cas le message chiffré sera identique au message d'origine. Pas très sécurisé cette affaire. Il en va de même pour tous les multiples de 26, puisque quand vous avez fait le tour de l'alphabet, vous allez revenir à la lettre d'origine. L'une des solutions est justement d'augmenter la solidité de cette clé, et d'en utiliser une qui soit... aussi longue que le message à chiffrer. Dès lors, et pour peu que cette clé soit aléatoire et utilisée qu'une seule fois, le message qui sera chiffré sera totalement incassable. C'est ce qu'on appelle le chiffrement à masque jetable ou chiffrement de Vernam. Et cette technique est rigoureusement impossible à casser. Voilà donc la solution pour sécuriser la transmission de vos messages. Merci d'avoir écouté cet épisode de la cybersécurité expliquée à nos grands-mères. Pour réaliser ce numéro, je me suis inspiré de... Attendez une minute, ce n'est peut-être pas aussi simple que ça. C'est un chiffrement parfait, certes, mais ça veut aussi dire que la clé est aussi longue que le message à chiffrer. Imaginez que vous devez chiffrer une encyclopédie. Eh bien, la clé de chiffrement sera aussi longue que l'encyclopédie elle-même. Ça n'est pas très pratique, en fait. Alors, même si cette méthode a été utilisée par les Russes pendant la guerre froide, ça reste un système qui n'est pas très pratique. Mais alors, qu'est-ce qui fait qu'un système de chiffrement est vraiment utilisable ? C'est Auguste Karkoff qui répondit à cette question en 1883 en définissant les critères à retenir en matière de cryptographie militaire. Principe numéro 1. Le système doit être matériellement, sinon mathématiquement indéchiffrable. Cela veut dire que les difficultés techniques doivent être liées à la complexité mathématique et que résoudre ce défi mathématique prend énormément de temps et ou de ressources. Ce point est crucial, car c'est ce qui rend le chiffrement universel, car la difficulté mathématique est la même pour tout le monde. Principe numéro 2. Il faut qu'il n'existe pas de secret et qu'il puisse sans inconvénient tomber entre la main des ennemis. Ce principe est aussi très important. Il implique que la force du chiffrement n'est pas due au secret de sa fabrication et que quand bien même vous connaissez la méthode de chiffrement, cette connaissance ne vous permettra pas d'attaquer le système. Ça ne vous donnera aucun autre avantage. En fait, les protocoles de chiffrement modernes sont connus par tous. Et c'est justement parce que les spécialistes en cryptographie du monde entier ont essayé de trouver des failles dans les systèmes que celui-ci se rassure. Plus le système sera connu et répandu, plus il se rassure. Principe numéro 3. La clé doit pouvoir être communiquée et retenue sans le secours de notes écrites. et être changé ou modifié au gré des correspondances. Ça vous rappelle quelque chose ? Les mots de passe par exemple. Ce principe explique pourquoi le chiffrement de Vernam n'est pas vraiment réaliste car vous devriez retenir des clés extrêmement longues. Principe numéro 4. Il faut qu'il soit applicable à la correspondance télégraphique. Là encore, cela veut dire qu'il ne doit pas y avoir d'exception dans la manière de transmettre le message. Principe numéro 5. Il faut qu'il soit portatif et que son maniement ou son fonctionnement n'exige pas le concours de plusieurs personnes. Ce principe peut faire sourire. Mais je vous rappelle que ces règles ont été établies au 19e siècle et qu'à cette époque, il fallait que les systèmes soient transportables sur un cheval. Si on interprète d'un point de vue moderne ce principe, ceci implique que les systèmes de cryptographie doivent pouvoir s'exécuter sans trop de consommation de ressources. En d'autres termes, si vous avez besoin d'un ordinateur surpuissant pour chiffrer vos messages, ça ne fonctionnera pas. Principe numéro 6. Enfin, il est nécessaire, vu les circonstances qui en commandent l'application, que le système soit d'un usage facile, ne demande ni tension d'esprit, ni la connaissance de longues séries de règles à observer. En d'autres termes, celui qui utilise le système cryptographique ne doit pas se faire des nœuds au cerveau et idéalement que ce soit transparent pour lui. Dans l'histoire, il y a un exemple parfait de ce système cryptographique qui cache toutes les cases. C'est le système Enigma utilisé par les Allemands lors de la Seconde Guerre mondiale. C'est un système de chiffrement électromécanique. Concrètement, c'est un ensemble de roues appelées rotors qui tournent au fur et à mesure que le message est introduit dans la machine. Et d'une certaine manière, la clé qui permet de chiffrer et de déchiffrer est la position initiale de ces différents rotors. A chaque fois qu'une lettre est rentrée dans la machine, les rotors tournent suivant une certaine séquence, et ce pour chaque lettre qui compose le message. C'est un peu comme les anciens compteurs kilométriques, avec une roue pour les unités, une autre pour les dizaines, etc. Détail important, c'est que le chiffrement d'un caractère dépend du caractère précédemment traité. Contrairement au chiffrement basé sur un simple décalage de lettres qui encode une lettre, toujours avec la même correspondance. Enigma va chiffrer un caractère en fonction du résultat précédent, ce qui complexifie nettement une attaque. C'est un peu comme dans la scène d'Harry Potter, où chaque escalier change de direction au gré des passages des uns et des autres. Ce qui fait que même si tout le monde a pris la même entrée d'escalier, il a fort à parier que tout le monde va se retrouver à des endroits différents. Ça semble aléatoire, mais en réalité ça suit une logique combinatoire assez complexe. Et c'est cette complexité qui fait la force du système de chiffrement. Il y a 159 trillions de combinaisons possibles, ce qui rend mathématiquement une attaque très complexe. Et pourtant, Alan Turing, un mathématicien anglais, a réussi cet exploit en cédant d'une vulnérabilité du système, ou plutôt de son usage. Souvenez-vous, tout est vulnérable d'une certaine manière. Tous les messages transmis par les allemands commençaient par la date du jour et se terminaient par à Hitler Cette spécificité a permis de lancer une cryptanalyse sur base du texte chiffré dont le texte clair était partiellement connu au début et à la fin du message. Grâce aux travaux de Turing, les alliés eurent un avantage décisif sur les allemands, mais malgré cet exploit, Alan Turing n'a pas été reconnu à juste titre, car étant homosexuel, il a été rejeté par la société conservatrice de l'époque Et en plein désespoir, c'est donné la mort. La vie d'Alan Turing a été portée à l'écran dans le film Imitation Game. Ce type de chiffrement est basé sur une clé identique pour chiffrer et déchiffrer le message. C'est-à-dire que c'est la même clé qu'on utilise dans le processus de chiffrement et le processus de déchiffrement. C'est ce qu'on appelle le chiffrement symétrique. Ce qui implique que les deux protagonistes, Alice et Bov, doivent échanger au préalable cette clé et surtout faire cet échange de manière sécurisée. ce qui en soit une contrainte assez importante, d'autant plus que vous devez changer cette clé très fréquemment, idéalement à chaque transmission. Pour pallier à ce problème, trois mathématiciens, Ron Rives, Adir Shamir et Leonard Adleman, ont inventé un système cryptographique basé sur deux clés. Ce procédé est nommé RSA en référence à la première lettre de leur nom de famille. Le principe de fonctionnement est assez simple. Si vous chiffrez le message avec l'une des clés, vous avez besoin de l'autre pour déchiffrer le message. Si vous ne disposez que d'une clé, vous pourrez chiffrer le message sans problème, mais il faudra impérativement l'autre clé pour déchiffrer. Ce chiffrement ne va donc que dans un seul sens. Et la clé que vous utilisez ne peut être utilisée que pour chiffrer, contrairement à l'exemple précédent, où la même clé était utilisée pour chiffrer et déchiffrer. C'est la raison pour laquelle on appelle ce type de procédé chiffrement asymétrique. L'un des intérêts de cette méthode, c'est que vous pouvez diffuser à tout le monde l'une de ces deux clés. Il n'y aura aucun danger à faire ça, car il faudra l'autre clé pour déchiffrer le message. On appelle la clé qu'on peut diffuser à tout le monde la clé publique, et l'autre, celle qu'on doit garder précieusement, la clé privée. Le chiffrement RSA est baisé sur la difficulté de factoriser des produits de deux nombres premiers. Pour ceux qui ont oublié leur cours de maths, un nombre premier est un nombre qui ne peut être divisé que par lui-même ou par 1. Par exemple, 3 est premier alors que 4 ne l'est pas, puisqu'on peut diviser par 2. La factorisation première d'un nombre, c'est trouver deux nombres premiers formant un produit égal au nombre à factoriser. Par exemple, 12, c'est 4 x 3, et 4, c'est 2 x 2. La factorisation première de 12 est donc 2... fois 2 fois 3. L'exemple ici est assez simple car le nombre à factoriser est petit, mais c'est bien plus compliqué quand le nombre est grand. On sent assez intuitivement que faire le produit de plusieurs nombres premiers est très facile, alors que factoriser un produit de nombres premiers, c'est-à-dire faire l'opération inverse, est très difficile. C'est donc une opération difficilement réversible. C'est un peu comme une NAS dans laquelle il est très facile de rentrer, mais beaucoup plus difficile d'en sortir. Et c'est sur cette complexité que repose la solidité du chiffrement RSA. solidité dont on discutera un peu plus tard, car comme toujours en cybersécurité, ce qui est vrai maintenant ne l'est pas forcément demain. Mais revenons à notre exemple avec Alice et Bob. Alice peut chiffrer un message en utilisant la clé publique de Bob, et cela sans crainte de voir son message déchiffrer en cours de route. Ça permet de créer un canal de communication sécurisé sans avoir à échanger une information secrète au préalable, puisque la seule information dont a besoin Alice, c'est la clé publique de Bob. Cette technique a cependant un petit défaut. car elles consomment beaucoup plus de ressources et de temps de calcul que le chiffrement symétrique traditionnel. La propriété de pouvoir créer un canal de communication sûr sans avoir à échanger préalablement une clé est quelque chose d'essentiel en matière de cybersécurité. Si on prend l'exemple d'une connexion vers un site web, il y a plein d'étapes entre votre machine et le serveur web. Vous devez déjà traverser votre propre réseau, ensuite passer par l'infrastructure de votre fournisseur d'accès Internet, qui lui-même va aiguiller votre trafic vers d'autres prestataires pour arriver enfin à l'infrastructure du serveur web. Bien souvent, vous avez traversé le monde entier et bon nombre d'équipements. Le problème est qu'il est impossible de garantir la sécurité de chacun des intervenants et donc de faire confiance au canal de communication. Et sans cette confiance, impossible de développer l'e-commerce ou les services financiers en ligne. Et bien justement, c'est le chiffrement à clé publique qui va nous aider à sécuriser ce canal puisque la seule information dont nous avons besoin, c'est la clé publique du site web. C'est exactement ce qui se passe quand vous vous connectez à un site web en HTTPS. Vous savez, le fameux petit cadenas juste avant la barre d'adresse. Après avoir sécurisé le canal de communication, le navigateur et le site web vont se mettre d'accord sur une clé de chiffrement symétrique commune pour chiffrer efficacement la communication. Cet algorithme est appelé l'algorithme de Diffie-Hellman, du nom de ses créateurs. Toutes les informations nécessaires pour établir cette première connexion se trouvent dans ce qu'on appelle un certificat. Ce certificat se trouve sur le site web et contient des informations comme la fameuse clé publique. Mais comment être sûr de la qualité du chiffrement et surtout de son authenticité ? En fait, il y a plusieurs éléments à prendre en compte. Le premier, c'est les nombres premiers qui sont utilisés pour générer la clé publique et la clé privée. Ceux-ci doivent être suffisamment grands. Je vous rappelle que plus la clé sera longue, plus il sera mathématiquement difficile de casser le code. Et ce choix va évoluer avec le temps, car plus le temps passe et plus les moyens techniques s'améliorent. Ce qui prenait des heures dans les années 2000 ne prend maintenant plus que quelques minutes. Ce qui veut dire qu'une clé réputée sur maintenant ne le sera très certainement plus dans quelques années. Heureusement, il y a des organisations, gratuites ou payantes, qu'on appelle autorités de certification, capables de générer des certificats, c'est-à-dire des paires de clés publiques et privées de bonne qualité. Mais au-delà de leur rôle dans la génération de ces fameuses clés, ils ont aussi la responsabilité de vérifier que vous êtes bien le propriétaire du site web que vous cherchez à sécuriser. Mais comment s'assurer que quand votre navigateur se connecte à un site web, le certificat qu'il protège est bien légitime ? C'est-à-dire qu'il n'y a pas un vilain hacker qui a fait son propre certificat dans son coin et qu'il essaie de le faire passer comme légitime. En d'autres termes, comment s'assurer que le certificat n'est pas un faux ? Cette question est cruciale en matière de cybersécurité car elle adresse la question de l'authenticité, c'est-à-dire vérifier qu'un document émis par une entité n'a pas été modifié par un tiers et surtout que c'est bien cette entité qui l'a émise. Pour répondre à cette question, il faut parler d'un autre outil cryptographique qu'on appelle le hashage. Une fonction de hashage est une fonction qui, pour des données en entrée, va renvoyer un identifiant quasi unique sur un format très court. C'est ce qu'on appelle le condensat. Ce qui est très utile, c'est que ce condensat est généralement très court et qu'on peut identifier à quasi certains documents analysés. En revanche, il n'est pas possible de déduire un document uniquement sur base du condensat. C'est un peu comme une empreinte digitale. Chaque individu a sa propre empreinte, mais si je regarde uniquement cette empreinte, je ne peux pas déduire vos caractéristiques physiques, si vous êtes un homme ou une femme, ou si vous êtes brun ou blond. En revanche, il est possible de vérifier l'identité d'un individu en utilisant cette empreinte. Ça marche dans un sens, mais pas dans l'autre. Prenons un exemple simple. Imaginez une fonction de hachage qui fait la somme des lettres d'un message. Par exemple, le mot ABC aura comme résidu 1 plus 2 plus 3, c'est-à-dire 6. Si vous remplacez la seconde lettre par un A, on obtiendra le mot AAC, dont le condensé sera égal à 1 plus 1 plus 3, c'est-à-dire 5. On voit bien ici que les deux condensats sont différents car les messages sont différents. Alors évidemment cette fonction de hachage n'est pas très bonne puisque toutes les permutations des lettres dans un mot auront le même condensat. Le condensat de AAC sera le même que pour ACA et aussi CAA. Heureusement les vraies fonctions de hachage utilisées en cryptographie sont bien évidemment beaucoup plus efficaces. Et le cas de figure où deux messages différents ont le même condensat, c'est ce qu'on appelle une collision, n'existe que très rarement. Il faut surtout retenir que si on change la moindre chose dans le document, le condensat changera complètement. Cette fonction de hashage est utilisée aussi dans d'autres domaines, comme dans les blockchains qui utilisent la preuve de travail, mais aussi la protection des mots de passe, car on ne stocke jamais le mot de passe en clair, mais son condensat. Nous voilà donc avec une fonction de hashage qui permet de générer un condensat, une sorte d'empreinte digitale numérique, sur base d'un document donné. Cette fonction de hashage est connue de tous, et donc tout le monde est capable de calculer le condensat de n'importe quel document. Comme nous l'avons vu un peu avant, le chiffrement asymétrique permet de chiffrer une donnée avec une clé publique. Dans ce cas-là, seul celui qui a la clé privée pourra déchiffrer le message. Mais il faut aussi se souvenir qu'il est possible de chiffrer un message avec la clé privée. Dans ce cas, le message peut être déchiffré en utilisant la clé publique, c'est-à-dire par tout le monde. Vous vous demandez très certainement l'intérêt de chiffrer un message pour que tout le monde puisse le déchiffrer. Eh bien, vous allez comprendre d'ici quelques minutes. Si Alice veut signer un document, elle va d'abord calculer le condensat de ce document, c'est-à-dire une empreinte digitale à l'aide d'une fonction de hachage. Ensuite, elle va chiffrer cette valeur avec sa clé privée. Le résultat de cette opération donne la signature digitale. Alice va pouvoir l'exposer à tout le monde. Cette information, c'est la signature du document, et Alice peut la donner à tout le monde comme preuve de sa signature. Si Bob souhaite vérifier la signature d'Alice, Il va d'abord calculer le condensat du document qu'il cherche à authentifier en utilisant la même fonction de hachage que celle qu'Alice a utilisée. Il va récupérer la signature qu'Alice a exposée ainsi que sa clé publique. Il va ensuite déchiffrer la signature avec la clé publique et va obtenir normalement le même condensat qu'Alice a calculé lors du processus de signature. Si les deux valeurs sont identiques, cela implique que, d'une part, le document n'a pas été modifié, puisque le condensé calculé par Alice au moment de la signature est le même que celui que Bob a calculé. Et d'autre part, Bob est sûr que c'est Alice qui a signé le document, puisque c'est grâce à sa clé privée que le document a été signé. Les certificats qui protègent les sites web sont signés par les autorités de certification. Quand votre navigateur va se connecter sur un site web en utilisant HTTPS, il va vérifier l'authenticité de la signature en utilisant l'algorithme que je viens d'expliquer. Si d'aventure le certificat a été modifié ou que la signature n'est pas la bonne, alors votre navigateur affichera un message d'erreur. Ce mécanisme de signature est très puissant et s'utilise un peu partout, non seulement pour sécuriser vos connexions sur Internet, mais aussi dans le cadre des crypto-monnaies ou de la signature d'actes authentiques. Enfin bref, c'est utilisé un peu partout. Mais le plus important est de comprendre que la cryptographie est essentiellement basée sur des challenges mathématiques et que tant que ce challenge est difficile à résoudre, le processus de cryptographie est sûr. C'est pas faux ! Dans le cas de la factorisation d'un produit de nombres premiers, ce challenge est calculatoriellement complexe pour les ordinateurs classiques. On est capable, avec les algorithmes et les supercalculateurs d'aujourd'hui, de factoriser des nombres premiers ayant 250 chiffres. Par contre, dès qu'il y a un peu trop de chiffres, disons au-delà de 500, cette factorisation devient impossible. L'un des derniers records date de 2020, où l'algorithme KadoNFS, issu du LORIA, Laboratoire de Recherche Nancy, a réussi à factoriser un nombre de 250 chiffres décimaux. Il aurait fallu travailler pendant 2700 ans pour casser cette clé avec un ordinateur traditionnel. A la place, ce sont 10 000 ordinateurs, dispersés en France, en Allemagne et aux Etats-Unis, qui ont été utilisés pendant quelques mois. Pour vous donner un ordre de grandeur, Un nombre codé sur 256 bits, c'est-à-dire deux exposants 256, ça correspond au nombre d'électrons dans l'univers. Aujourd'hui, la norme est d'utiliser une clé de 2048 bits. Autant dire que c'est impossible à casser. Mais c'était sans compter l'avènement de l'ordinateur quantique qui a la capacité de résoudre ce type de problème en une fraction de seconde. Même si nous sommes encore assez loin de pouvoir acheter ce type de machine dans la boutique du coin de la rue, il paraissait certain que cette machine de science-fiction deviendrait de plus en plus une réalité. Même si sa mise au point va mettre encore quelques années, à terme, ce que nous considérons aujourd'hui comme un moyen sûr de chiffrement, moyen utilisé dans le monde entier, pilier de la technologie qui est du développement du commerce en ligne, des crypto-monnaies et des transactions bancaires, ce moyen sera obsolète car vulnérable. Heureusement, il existe déjà des solutions pour remplacer ce protocole et continuer à protéger nos données et nos communications. Ce qu'il faut comprendre par là, c'est que même si fondamentalement la cryptographie est basée sur des challenges mathématiques immuables, il y a deux facteurs importants à prendre en compte dans son évolution. D'une part l'évolution technologique, la puissance de calcul de plus en plus importante et les nouvelles opportunités comme l'ordinateur quantique. D'autre part, c'est l'implémentation de l'algorithme de chiffrement lui-même qui peut le rendre vulnérable. Le temps de chiffrement ou de déchiffrement nécessaire pour un message donné peut donner une information précieuse pour qu'un hacker lance une attaque. Ou le choix d'une clé trop faible, comme nous l'avons vu avec le chiffrement par décalage. De plus, il faut pouvoir utiliser des informations aléatoires. Mais comment obtenir du vrai aléatoire, alors que par définition un ornithère est parfaitement déterministe ? Mais la cryptographie fait de plus en plus de progrès, et même s'il existe de nombreuses vulnérabilités, les cryptographes du monde entier travaillent les corriger. Et c'est là sa grande force, car la sécurité ne vient pas de l'obscurité, mais bien au contraire, parce que tout est transparent. L'une des découvertes les plus prometteuses est le chiffrement homomorphe, qui permet à Charlie, un nouveau personnage, d'effectuer des traitements sur des données totalement chiffrées. En fait, Charlie est totalement aveugle. Il n'a pas la moindre idée des données qu'il traite, mais il le fait sans problème grâce au chiffrement homomorphique. Imaginez que vous ayez un calcul très secret à faire faire à Charlie. Vous ne souhaitez pas lui donner les chiffres à calculer, mais vous ne souhaitez pas faire le calcul par vous-même non plus. Avec le chiffrement homomorphique, vous allez chiffrer les données et les envoyer à Charlie. Charlie va faire le traitement sans avoir la moindre idée des informations qu'il traite. Une fois le travail effectué, Il va vous retourner le résultat que vous n'avez plus qu'à déchiffrer pour obtenir le résultat final. Ça vous semble peut-être totalement inutile, sauf si je vous dis que Charlie, c'est le cloud. Car l'un des plus grands défis de la cybersécurité actuellement est de sécuriser les activités déléguées à un tiers, dont on n'a pas forcément confiance. Mais ça, c'est une autre histoire. Merci d'avoir écouté ce podcast. N'hésitez surtout pas à liker cet épisode et à mettre vos questions dans les commentaires. Pour le réaliser, je me suis inspiré du livre de Pascal Lafourcade et Malika Moore, 25 énigmes ludiques pour s'initier à la cryptographie. C'est un livre hyper ludique, très bien fait, que je vous recommande chaudement. Je me suis aussi inspiré du livre Cryptographie de Douglas Hinton. Si les avancées de l'ordinateur quantique vous intéressent, n'hésitez pas à suivre Olivier Izrati, qui est une mine de connaissances sur ce sujet. Encore merci et surtout n'oubliez pas Certaines personnes pensent que la cybersécurité est un enjeu de vie ou de mort. C'est bien plus sérieux que ça.

Share

Embed

You may also like