Comment fonctionne le chiffrement symétrique ?
Définition, concepts, sécurité, failles, un rapide tour du sujet, tout en restant le plus compréhensible possible !
Article publié le 24/01/2022, dernière mise à jour le 19/09/2023
Depuis la nuit des temps, les hommes se livrent des batailles, sous toutes leurs formes : physiques, armées, non-violentes, numériques,...
Et dès l'antiquité, la communication d'informations stratégiques a été l'un des piliers pour faire pencher la balance en faveur de la victoire.
Mais ces communications, lorsqu'elles sont interceptées, peuvent être dangereuses, voir fatales.
C'est pourquoi le chiffrement a été utilisé depuis de nombreux siècles, et notamment le chiffrement symétrique dont la première utilisation recensée laisse des traces en 1500 av. JC, en Mésopotamie.
Concept
Le chiffrement symétrique, même le plus basique, est basé sur deux outils : Un algorithme de chiffrement/déchiffrement, et une clé.
Le fonctionnement est le suivant :
Les participants se mettent d'accord sur un algorithme de chiffrement commun (souvent inhérent au système utilisé pour communiquer). L'un des participants génère une clé, qu'il ne va distribuer qu'aux autres participants à la discussion, de manière discrète (mais non sécurisée).
Une fois la clé reçu, chaque message sera chiffré en utilisant l'algorithme couplé à la clé, et déchiffré de la même manière, de sorte à ce qu'uniquement les participants ayant accès à la clé puissent lire et envoyer des messages.
Algorithmes
Il existe plusieurs familles d'algorithmes de chiffrement symétrique, que voici dans leurs formes les plus simple :
Substitution mono-alphabétique
La première famille d'algorithme consiste très simplement à remplacer chaque lettre du texte, par une lettre correspondante, prise dans un "tableau" de correspondance.
L'un des algorithmes les plus connus (bien que ne présentant aujourd'hui aucune sécurité), est le "Code de César".
Ce dernier consiste à décaler chaque lettre, d'un certain nombre de places dans l'alphabet, et ce nombre servira de clé pour chiffrer, déchiffrer.
Pour la clé "1", chaque lettre sera déplacée 1 fois vers la droite (a devient b, b devient c, c devient d, etc...). L'exemple ci-dessous représente un texte chiffré avec le code de César, et la clé "13", c'est ce qu'on appelle le ROT13.
Exemple : "Hello World !" => "Uryyb jbeyq !"
Substitution poly-alphabétique
Le principal problème de la famille des "mono-alphabétique", c'est que chaque lettre du texte original, n'a qu'une seule lettre équivalente dans le texte chiffré.
En clair, si l'on connait la langue d'origine, alors en regardant la distributivité des lettres, le code est facilement déchiffrable.
C'est pourquoi il existe des substitution poly-alphabétique, c'est à 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 la base du fonctionnement de la machine de chiffrement Allemande "Enigma", utilisée pendant la seconde guerre mondiale et "crackée" par Alan Turing et son équipe au "Bletchley Park"
Exemple : "Hello World !" => "flqib shgpm !"
Permutation
La permutation simple est algorithme très simple à déchiffrer, mais il apporte le fait de "casser" la structure du texte, en déplaçant les espaces, les lettres et donc en destructurant les mots.
L'exemple ci-dessous permutte simplement chaque couple de lettre :
Exemple : "Hello World !" => "eHll ooWlr d!"
Hybride (Substitution + Permutation)
Comme on l'a vu, chacune des familles précédentes nous offre une sécurité de l'information chiffrée supplémentaire, ce qui signifie qu'en pratique, on va implémenter une famille hybride :
On combine substitution poly-alphabétique, permutations et une clé privée complexe afin d'avoir une solution de chiffrement/déchiffrement solide.
Exemple : "Hello World !" => "JsOL d$ aNdls"
En pratique
AES
Il existe des dizaines d'algorithmes de chiffrement symétrique utilisé dans l'industrie, mais si l'on ne devait en connaitre qu'un seul, ce serait sûrement l'algorithme AES.
AES signifie "Advanced Encryption Standard" et est un algorithme existant sous plusieurs version pour différents usages. Il est par exemple utilisé pour le chiffrement des données transmises en Wi-Fi, le protocole HTTPS.
Je ne vais pas rentrer dans les détails de l'implémentation AES car il est très complexe, mais voilà ce qu'il faut retenir :
Contrairement aux algorithmes basiques présentés ci-dessus, ce dernier ne chiffre pas de simples phrases, mais directement de la données sous forme de matrices de bits, et que les clés associées sont en général constitué de 128, 192 ou 256 bits.
Si vous voulez en savoir plus, je vous invite à lire cet article pour comprendre le fonctionnement exact d'AES : https://securityboulevard.com/2020/04/advanced-encryption-standard-aes-what-it-is-and-how-it-works/
Avantages/Inconvénients
En utilisant un algorithme suffisamment solide et une clé suffisament complexe, les algorithmes de chiffrement comme AES sont très rapides à exécuter, ce qui permet d'avoir une grande solidité tout en étant efficient sur le chiffrement et le déchiffrement.
Pour information, craquer une information par brute force chiffrée en AES-256 prendrait environs 27 337 893 038 406 611 194 430 009 974 922 940 323 611 067 429 756 962 487 493 203 années.
Néanmoins, les algorithmes de chiffrement symétriques possèdent une grande faille : le partage de la clé privée. Si la clé est interceptée pendant le partage, alors toutes les communications peuvent être interceptées.
C'est pour cela que certains systèmes (comme le SSL) utilisent à la fois un chiffrement asymétrique pour transférer la clé, et chiffrent les données finales de manières symétriques.
En résumé
Le chiffrement symétrique fonctionne de la manière suivante : Génération de la clé privée, partage de la clé, chiffrement et déchifrement avec la même clé.
Ce système est le plus rapide mais possède également une faille lors du transfert de la clé privée.
Le chiffrement symétrique est donc parfois utilisée conjointement avec du chiffrement asymétrique, comme c'est le cas pour le SSL dont les paquets sont chiffrés avec l'algorithme AES.
Aucun commentaire pour l'instant