
Code-Garage #20 - Le chiffrement symétrique expliqué
Durée: 11m37s
Date de sortie: 11/04/2022
Définition, concepts, sécurité, failles, un rapide tour du sujet, tout en restant le plus compréhensible possible !
Notes de l'épisode :
- Article d'origine : https://code-garage.fr/blog/comment-fonctionne-le-chiffrement-symetrique/
Salut, je m'appelle Nicolas Bondin Bernard et je suis le fondateur de Code Garage.
Code Garage, qu'est-ce que c'est ? C'est un ensemble de ressources gratuite et de
formations premiums pour aider les développeurs et développeurs juniors à devenir experts
en se formant continuellement avec des articles de blogs, des podcasts, des vidéos YouTube
et des formations.
Je vous invite à vous rendre sur le site code-garage.fr pour retrouver tous les contenus et ne rien
louper.
Aujourd'hui, on va parler de chiffrement symétrique.
Alors, il faut savoir que dès l'Antiquité, la communication d'information stratégique,
ça a été un des piliers pour faire pencher la balance en faveur d'un camp ou de l'autre
pendant des guerres, des batailles, que ce soit physique, armée, non-violente, numérique,
etc.
Sauf que ces communications, dès qu'elles sont interceptées, elles peuvent devenir
dangereuses voire fatales pour le camp qui s'est fait intercepter ces communications.
C'est pour ça que le chiffrement a été utilisé depuis énormément de siècles et
notamment le chiffrement symétrique, dont la première utilisation recensée, on en
retrouve des traces en 1500 avant Jésus-Christ aux alentours de la Maisopothémie.
Alors là, on va parler du concept.
Le chiffrement symétrique, même le plus basique, il est basé sur deux outils.
Un algorithme de chiffrement, des chiffrements et une clé.
Donc, le fonctionnement, c'est que les participants d'une communication chiffrée se mettent
d'accord sur un algorithme de chiffrement commun.
Alors souvent, c'est inhérent au système utilisé, en tout cas en informatique.
Chaque, on va dire que ce soit logiciel, protocole, etc.
va avoir son algorithme de chiffrement prédéfini.
Et un des participants va générer une clé qu'il va distribuer uniquement aux autres
participants la discussion de manière discrète, pas forcément sécurisée, mais de manière
discrète.
Une fois que la clé a été reçue, chaque message sera chiffré en utilisant l'algorithme
couplé avec cette clé et les messages seront déchiffrés de la même manière de façon
à ce qu'uniquement les participants ayant accès à la clé puissent lire et envoyer
les messages.
Alors ça, c'est le concept.
Maintenant, on va parler des algorithmes parce qu'en réalité, il existe plusieurs familles
d'algorithmes de chiffrement symétrique et on va en voir les principaux en fait et
surtout dans leur forme les plus simples pour bien comprendre.
Le premier, on va parler de substitution monoalphabetique.
Le nom fait peur, mais vous allez voir que c'est très facile à comprendre.
Donc cette première famille d'algorithmes consiste très simplement à remplacer chaque
lettre d'un texte par une lettre correspondante prise d'un tableau de correspondance.
Par exemple, l'un des algorithmes les plus connus, alors même si aujourd'hui il offre
aucune sécurité et qu'il n'est plus très utilisé, c'est ce qu'on appelle le code
de César.
Le code de César, ça a consisté tout simplement à prendre un texte et pour le chiffré, on
allait décaler chaque lettre d'un certain nombre de place dans l'alphabet.
En gros, ce nombre servira de clé pour chiffrer des chiffrés.
Donc c'est comme si on prenait la clé 1 par exemple, chaque lettre du texte sera
déplacé une fois vers la droite dans l'alphabet.
Donc A devient B, B devient C, C devient D, etc.
Donc, souvent, cet algorithme-là, on en a une version spécifique qu'on appelait le
rot 13, donc rotation parce que c'est comme si c'était pour le déplacement.
Et 13 puisqu'en fait, on a 26 lettres dans l'alphabet.
Donc si vous faites un rot 13 dans un sens plus 13 ou moins 13 dans l'autre comme
l'alphabet fait 26 lettres, vous vous retrouvez pareil, on va dire, sur la même lettre.
Donc ça, c'est vraiment une substitution monoalphabetique.
Là, on déplace d'un certain chiffre, mais on pourrait se mettre d'accord sur tous les
A deviendront des K, tous les B deviendront des C, tous les Z deviendront des M, j'en
sais rien.
Et donc vous pouvez tout simplement faire une substitution comme ça, très simple.
Maintenant, le deuxième algorithme, c'est ce qu'on appelle la substitution polyalphabetique.
En fait, le problème, le principal problème de la famille des monos alphabétiques, c'est que chaque
lettre du texte original n'a qu'une seule lettre équivalente dans le texte chiffré.
Et en fait, ce qui pose problème, c'est que si on connaît la langue d'origine,
en regardant tout simplement la distributivité des lettres, le code, il est facilement
déchiffrable.
Par exemple, en français, on sait que l'une des lettres qui va le plus ressortir, ça va être le
E, on va avoir énormément de S, etc., etc.
En anglais, on va plutôt avoir énormément de W, de Y.
Donc si vous prenez les lettres qui ressortent le plus, vous allez pouvoir un petit peu
faire comme un mot caché quand on était jeune, mais simplement là, si c'est pour une communication
qui est importante, c'est compliqué.
Et donc, il existe des substitutions polyalphabetiques.
Ça veut dire que l'algorithme ne prendra pas seulement la clé comme référence, mais
également la position de la lettre dans la phrase d'origine.
C'est par exemple la base du fonctionnement de la machine de chiffrement allemande enigma
utilisée pendant la Seconde Guerre mondiale et qui a été craqué par Alain Thuring et son
équipe au Bleschlipark.
Alors là, qu'est-ce que ça donne ?
Ça veut dire que la première lettre que vous rencontrez dans un texte, c'est un A.
Vous allez dire que ça va se transformer en un C.
Par contre, si on retrouve un A plus loin dans le texte, ça ne va pas devenir un C,
ça va peut-être devenir un M, ça va peut-être devenir un Z, peu importe, mais en tout cas,
à chaque fois qu'on avance dans le texte, la lettre de référence changera.
Et donc, toute cette distributivité là n'est plus retrouvable, donc on est déjà plus sécurisé.
La troisième famille d'algorithmes, c'est ce qu'on appelle la permutation.
La permutation, c'est simple, c'est un algorithme qui est en fait très simple à déchiffrer,
mais il apporte le fait de casser la structure du texte en déplaçant les espaces et les
lettres, en fait tous les caractères, si vous prenez un texte informatique, un espace,
un caractère, un point, un caractère, etc.
Et donc, si vous faites des permutations, ça va déstructurer les mots.
Si vous dites par exemple, chaque groupe de trois lettres va être interverti avec les trois lettres
d'après, si dans ces trois lettres, si vous commenciez votre phrase par deux D E espace,
vous allez tout simplement casser les mots et donc casser la forme des phrases.
Et donc ça, c'est pareil, ça rend mine de rien plus compliqué de retrouver un texte au final.
Et alors là, on a la dernière famille qui est une famille qu'on va appeler hybride,
qui est en réalité la substitution plus permutation.
En fait, comme on a pu voir, chacune des familles que j'ai précédemment expliquées,
ça offre une sécurité différente.
C'est des méthodes qui ne sont pas forcément ultra-compliquées,
mais par contre, si on les additionne, qu'on les met, les unes avec les autres,
et bien en fait, on a une sécurité de l'information chiffrée qui est plus grande.
Et c'est pour ça qu'en pratique, en informatique, on va utiliser à chaque fois
un algorithme hybride qui fait de la substitution, alors de la substitution polyalphabetique,
et plus de la permutation.
Et donc, si on crée une clé privée à partir,
et qu'on prend un algorithme de substitution polyalphabetique,
plus permutation et une clé privée complexe,
et bien ça va nous donner une solution de chiffrement et des chiffrements qui est solide.
Alors qu'est-ce que ça donne en pratique ?
En pratique, par exemple, on utilise ça dans l'algorithme AES.
En fait, il y en a des dizaines d'algorithmes de chiffrement symétriques,
mais s'il y en a un qu'on doit connaître et qu'on doit se rappeler,
ce serait l'algorithme AES.
Ça signifie Advanced Encryption Standout,
et donc c'est un algorithme qui existe sur plusieurs versions pour plusieurs usages.
Il est, par exemple, utilisé pour le chiffrement des données transmises en Wi-Fi.
Il est utilisé pour le protocole HTTPS, etc.
Donc je ne vais pas rentrer dans les détails de l'implémentation d'AES,
parce que c'est quand même très complexe,
mais en gros, ce qu'il faut retenir,
c'est que contrairement aux algorithmes basiques que j'ai présenté juste avant,
cet algorithme-là, il ne chiffre pas de simples phrases,
mais il chiffre directement de la donnée sous forme de matrice de bits,
et que les clés associés sont en général constitués de 128, 192 ou 256 bits.
Donc ce qui rend cet algorithme-là suffisamment solide pour que ça soit compliqué de déchiffrer ça.
Alors si jamais ce sujet en particulier vous intéresse et que vous voulez aller plus loin
dans la compréhension d'AES, je vous mets dans les notes de l'épisode un article qui explique
super bien le fonctionnement.
Donc en utilisant un algorithme suffisamment solide et une clé suffisamment complexe,
et bien des algorithmes comme AES, ils sont très rapides à exécuter,
ce qui permet d'avoir une grande solidité en étant efficace sur le chiffrement et le déchiffrement.
Alors pour donner une petite estimation, AES 256, dans la version 256 bits d'AES,
ça prendrait environ, je ne peux même pas vous dire le chiffre exactement,
je vais essayer de vous le dire, 27 10 puissances,
allez je vous donnez à la louche, mais on va dire 10 puissances 30 années,
à peu près, j'ai les chiffres écrits sur mon écran, mais je ne peux même pas vous les dire.
Donc ça prendrait des milliards, 2 milliards, 2 milliards, 2 milliards, 2 milliards d'années.
Mais ce que je n'ai pas dit, c'est que les algorithmes de chiffrement symétriques,
ils possèdent une grande faille.
Cette faille c'est le partage de la clé privée,
parce que si jamais quand vous partagez cette clé privée, les intercepter,
et bien en fait toutes les communications pourront être interceptées.
C'est pour ça que certains systèmes, le SSL notamment, qu'on utilise dans HTTPS,
utilisent en fait à la fois un chiffrement, pardon,
asymétrique pour transférer la clé, et ils chiffrent les données finales de manière symétrique,
tout simplement parce qu'il s'est plus rapide.
Donc voilà, si on devait revenir, retenir quelques informations,
c'est que le chiffrement symétrique, il fonctionne de la manière suivante,
on génère une clé privée, on partage la clé, on chiffre et on déchiffre avec la même clé.
Donc ce système, il est plus rapide, mais il possède une faille qui est le transfert
de la clé privée à l'origine.
Et aussi que du coup, ce chiffrement, il est parfois utilisé dans d'autres technologies,
et convointement avec du chiffrement asymétrique,
dont on parlera dans un prochain épisode, comme c'est le cas pour le SSL,
où les paquets sont chiffrés avec l'algorithme AES.
J'espère que vous aurez appris des choses dans cet épisode.
Moi je vous dis à la semaine prochaine épisode de Code Garage. Salut !
Les infos glanées
Code-Garage
Découvrons ensemble des sujets passionnants autour du métier de dev et de la programmation en général !
Tags
Code-Garage #21 - La différence entre bug, défaut, anomalie et défaillance