Choisissez un algorithme, saisissez un message et suivez ce qui lui arrive. Les étapes montrent le début et la fin de chaque calcul ; le milieu répétitif est omis.
CRC-32 somme de contrôle
Une somme de contrôle permet de savoir si une donnée est arrivée intacte sans la comparer en entier avec l’original. L’émetteur calcule un nombre court, le destinataire le recalcule et, si les deux correspondent, il est très probable que rien n’a été abîmé en chemin. Les fichiers ZIP, les images PNG et les réseaux Ethernet l’utilisent.
CRC-32 traite le message comme un immense nombre binaire et le divise par un polynôme fixe ; le reste, de 32 bits, est le résultat. En pratique, le calcul se fait octet par octet avec une table préparée à l’avance, d’où sa grande rapidité.
Faiblesses
Il protège contre les erreurs accidentelles, pas contre quelqu’un qui modifie le message exprès. N’importe qui peut ajuster quatre octets pour qu’un faux message ait le même CRC que le vrai, comme le montre la dernière étape. Pour détecter des modifications volontaires, il faut un hachage cryptographique ou, mieux encore, une signature.
Pendant des années, MD5 a été le hachage d’usage général. Il transforme n’importe quel message en 128 bits, toujours les mêmes pour le même message et sans lien visible avec lui. On s’en servait pour stocker des mots de passe, vérifier des téléchargements et signer des certificats.
Il complète le message jusqu’à former des blocs de 512 bits et mélange chacun en 64 étapes d’additions, de rotations et de fonctions logiques sur quatre registres de 32 bits.
Faiblesses
Depuis 2004, on sait fabriquer des collisions, deux messages différents ayant le même MD5, en quelques secondes sur un ordinateur ordinaire. En 2012, le logiciel malveillant Flame a utilisé une collision MD5 pour falsifier un certificat Microsoft. Il est en outre si rapide qu’une carte graphique teste des milliards de mots de passe par seconde. Aujourd’hui, il ne sert plus que de somme de contrôle contre les erreurs accidentelles, comme un CRC.
SHA-256 soutient une bonne partie d’Internet, des certificats HTTPS et des signatures de logiciels jusqu’à Git et Bitcoin. Il produit 256 bits et, contrairement à MD5, personne n’a trouvé de collision ni de moyen de remonter du résultat au message.
Il fonctionne un peu comme MD5, avec huit registres, 64 tours et une expansion du bloc dans laquelle chaque nouveau mot dépend de quatre mots précédents. Changer un seul bit du message change en moyenne la moitié des bits du résultat.
Faiblesses
C’est un hachage sûr, mais rapide, et il ne suffit donc pas pour stocker des mots de passe : un attaquant peut tester des milliards de candidats par seconde. C’est le rôle d’algorithmes volontairement lents comme Argon2id. Un ordinateur quantique ne ferait que diviser par deux sa résistance en bits (l’algorithme de Grover), ce qui laisse encore une marge énorme.
SHA-3 est la norme que le NIST a choisie en 2015 à l’issue d’un concours ouvert. Non pas parce que SHA-256 était cassé, mais pour disposer d’une solution de rechange construite de façon complètement différente, au cas où une faiblesse apparaîtrait un jour dans la famille SHA-2.
Au lieu de blocs enchaînés, il utilise une « éponge » : un état de 1600 bits qui absorbe le message par morceaux puis qu’on essore pour en tirer le résultat. Chaque tour applique cinq étapes, θ, ρ, π, χ et ι ; seule χ est non linéaire. La même éponge sert à construire SHAKE128 et SHAKE256, que ML-KEM et ML-DSA utilisent en interne.
Faiblesses
On ne lui connaît aucune faiblesse pratique. Comme SHA-256, il est trop rapide pour stocker des mots de passe.
Pour stocker des mots de passe, il ne faut pas un hachage rapide, mais un hachage volontairement lent. Argon2id a remporté la Password Hashing Competition en 2015 et c’est celui que recommande aujourd’hui l’OWASP. En plus du temps, il exige de la mémoire : chaque essai remplit plusieurs mégaoctets où chaque bloc dépend de blocs précédents.
Le sel est une valeur aléatoire stockée avec le résultat. Grâce à lui, deux personnes ayant le même mot de passe obtiennent des résultats différents, et l’attaquant doit s’en prendre à chaque compte séparément. Ce que le serveur stocke, c’est la ligne complète affichée à la fin, avec l’algorithme, le coût, le sel et le résultat, mais jamais le mot de passe.
Changez la mémoire et regardez le temps augmenter. Pour vous, c’est un instant au moment de la connexion ; pour qui teste un milliard de mots de passe, c’est un coût énorme.
Faiblesses
Un mot de passe court ou courant se devine quand même, simplement plus lentement. Ici, la mémoire est réduite pour que la démonstration fonctionne sur n’importe quel appareil ; sur un serveur, on utilise au moins 19 Mio, comme le recommande l’OWASP.
Jules César chiffrait ses messages militaires en décalant chaque lettre d’un nombre fixe de positions dans l’alphabet. Avec 3, A devient D et « hola » devient « krod ». Pour déchiffrer, on décale dans l’autre sens.
Faiblesses
Il n’existe que 25 clés possibles ; il suffit donc de toutes les essayer, comme dans la dernière étape, et une seule donne un texte lisible. De plus, une lettre est toujours chiffrée de la même façon, et les lettres les plus fréquentes de la langue trahissent la clé.
Vigenère chiffrement historique
Vigenère utilise un mot comme clé, et chaque lettre de la clé indique de combien décaler la lettre correspondante du message. Une même lettre du message peut être chiffrée différemment selon sa position, ce qui lui a valu le surnom de « chiffre indéchiffrable » pendant environ trois siècles.
Faiblesses
La clé se répète. Au XIXᵉ siècle, Charles Babbage et Friedrich Kasiski ont trouvé comment en déduire la longueur à partir des séquences répétées dans le texte chiffré. Une fois la longueur connue, le texte se découpe en colonnes, et chaque colonne est un simple chiffre de César qui tombe par analyse de fréquences. La dernière étape montre ces colonnes.
AES-256-GCM chiffrement symétrique
AES est le chiffrement symétrique standard depuis 2001 : la même clé chiffre et déchiffre. HTTPS, le Wi-Fi en WPA2 et WPA3, les disques chiffrés et presque toutes les messageries l’utilisent. Il travaille sur des blocs de 16 octets disposés dans une grille 4×4 qui passe par 14 tours de substitution, de décalage, de mélange et d’ajout de la clé.
GCM est le mode dans lequel on l’utilise : AES chiffre un compteur, le résultat est combiné au message par XOR et, à la fin, on calcule une étiquette qui détecte toute modification. Le nonce est un nombre qui ne doit jamais se répéter avec la même clé ; ici, un nouveau est généré à chaque fois, c’est pourquoi le résultat change même si le message ne change pas.
Faiblesses
Avec une clé aléatoire de 256 bits, il n’existe aucune attaque pratique, même avec des ordinateurs quantiques. Le danger, c’est la mauvaise utilisation : répéter un nonce avec la même clé permet de récupérer des messages et de falsifier des étiquettes. Le problème de fond est ailleurs : comment deux personnes qui ne se sont jamais rencontrées partagent-elles la clé ? C’est à cela que sert la cryptographie à clé publique.
ChaCha20-Poly1305 fait le même travail qu’AES-GCM avec une autre construction. Conçu par Daniel J. Bernstein, il n’utilise que des additions, des rotations et des XOR (ce qu’on appelle ARX) ; il est donc rapide même sur les téléphones dépourvus d’instructions spéciales pour AES. TLS 1.3, WireGuard et SSH l’utilisent.
ChaCha20 mélange une grille de 16 mots (constantes, clé, compteur et nonce) pendant 20 tours et produit un flux d’octets qui est combiné au message. Poly1305 calcule l’étiquette en évaluant un polynôme modulo 2¹³⁰ − 5.
Faiblesses
Aucune attaque pratique n’est connue, ordinateurs quantiques compris. Comme avec AES-GCM, un nonce ne doit jamais se répéter avec la même clé.
RSA (1977) a été le premier chiffrement à clé publique utilisable en pratique. N’importe qui peut chiffrer avec la clé publique, mais seul le détenteur de la clé privée peut déchiffrer. Sa sécurité repose sur le fait qu’il est facile de multiplier deux nombres premiers énormes et difficile de les retrouver ensuite.
Chiffrer consiste à élever le message, transformé en nombre, à la puissance e modulo n ; déchiffrer, à élever le résultat à la puissance d. OAEP est un remplissage aléatoire appliqué au préalable, pour qu’un même message ne donne jamais le même résultat. Une clé de 2048 bits ne peut contenir que 190 octets ; en pratique, RSA chiffre une clé AES, et AES chiffre les données.
Faiblesses
Un ordinateur quantique assez grand factoriserait n avec l’algorithme de Shor et obtiendrait la clé privée. C’est pourquoi le NIST propose de ne plus autoriser RSA en 2035. De plus, quelqu’un peut stocker aujourd’hui des messages chiffrés pour les déchiffrer le jour où un tel ordinateur existera.
X25519 résout le problème de partager une clé sans l’envoyer. Alice et Bob choisissent chacun un nombre secret et publient le résultat de la multiplication d’un point d’une courbe elliptique par ce nombre ; ensuite, chacun multiplie le résultat de l’autre par son propre secret. Tous deux arrivent au même point, et quelqu’un qui n’a vu que les valeurs publiques ne peut pas le calculer.
C’est l’échange de clés le plus utilisé aujourd’hui, dans TLS 1.3, Signal, WhatsApp et SSH. Ici, le secret partagé devient une clé AES-256-GCM qui chiffre votre message.
Faiblesses
Comme RSA, l’algorithme de Shor le casserait sur un grand ordinateur quantique. C’est pourquoi les navigateurs le combinent déjà avec ML-KEM (X25519MLKEM768), ce que montre la catégorie suivante.
ML-KEM (FIPS 203, 2024) est le remplaçant post-quantique de l’échange de clés. Sa sécurité vient d’un problème de réseaux euclidiens appelé « apprentissage avec erreurs ». La clé publique est une matrice aléatoire A multipliée par un secret composé de petits nombres, plus un peu de bruit. Sans le bruit, ce serait un système d’équations facile à résoudre ; avec lui, personne ne connaît de méthode efficace, même avec des ordinateurs quantiques.
Alice choisit 32 octets au hasard, les cache dans des polynômes à l’aide de la clé publique de Bob et lui envoie le résultat. Bob utilise son secret pour retirer presque tout le bruit ; chaque coefficient se retrouve près de 0 ou de 1665, et l’arrondi permet de retrouver les bits. À partir de là, tous deux dérivent le même secret de 32 octets, qui chiffre ici votre message avec AES-256-GCM.
Faiblesses
Il est jeune comparé à RSA et aux courbes elliptiques ; c’est pourquoi on l’utilise aujourd’hui avec X25519 : si l’un des deux tombe, l’autre protège encore. Les clés et les textes chiffrés sont beaucoup plus grands, 1184 et 1088 octets contre 32 pour X25519.
ML-DSA (FIPS 204, 2024) est la signature numérique post-quantique. Une signature prouve qu’un message vient du détenteur de la clé privée et que personne ne l’a modifié ; n’importe qui possédant la clé publique peut la vérifier.
Pour signer, on choisit un vecteur aléatoire y et on le décale avec le secret selon un défi c issu d’un hachage du message. Si le résultat z risque de révéler quelque chose du secret parce qu’il est trop grand, on le rejette et on recommence ; il faut en moyenne environ cinq essais. Pour vérifier, on refait le calcul avec la clé publique et on contrôle qu’on obtient le même défi. À la fin, vous verrez qu’il suffit de changer un caractère du message pour que la signature ne soit plus valide.
Faiblesses
Les signatures occupent 3309 octets, contre 64 pour Ed25519, ce qui pèse sur les certificats et les protocoles qui utilisent beaucoup de signatures. Comme ML-KEM, il est récent ; la transition se fait donc avec prudence et par étapes.