FlowingDev

Chiffrement AES, expliqué : Le coffre-fort numérique préféré au monde

Apprenez comment le chiffrement symétrique AES utilise une clé unique basée sur un mot de passe pour transformer du texte lisible en texte chiffré illisible, et vice-versa, afin de sécuriser les données modernes.

Essayer l'outil: Outils de chiffrement

En une phrase

Le chiffrement AES basé sur un mot de passe est une méthode standard pour brouiller et débrouiller des données à l'aide d'une clé secrète unique, créée à partir d'un mot de passe que vous choisissez.

Le problème résolu

Depuis que les humains ont commencé à écrire, on a toujours voulu écrire des choses que les autres ne peuvent pas lire. Des généraux romains décalant les lettres d'un message (le chiffre de César) aux espions utilisant des masques jetables pendant la Guerre Froide, l'objectif a toujours été le même : la confidentialité. Si le message tombe entre de mauvaises mains, il doit ressembler à du charabia.

À l'ère numérique, ce problème est partout. Vos données transitent par des Wi-Fi publics douteux, sont stockées sur des serveurs appartenant à des multinationales, et sont sauvegardées sur des disques durs qui pourraient finir à la décharge. Comment garantir que votre message privé, votre liste de clés d'API ou votre recette secrète de cookies reste... secrète ?

Les chiffrements à l'ancienne étaient faciles à casser, surtout avec des ordinateurs capables de tester des milliards de combinaisons par seconde. Il nous fallait quelque chose de mieux. De bien mieux. C'est là qu'intervient l'Advanced Encryption Standard, ou AES.

À la fin des années 1990, le National Institute of Standards and Technology (NIST) américain a organisé un concours public pour trouver un remplaçant au vieillissant Data Encryption Standard (DES). Ils ne cherchaient pas un algorithme secret pondu dans les sous-sols d'une agence gouvernementale ; ils voulaient un chiffrement transparent, public et testé sans pitié, auquel le monde entier pourrait faire confiance. Après des années de combats de cage cryptographiques, un algorithme belge nommé « Rijndael » (un mot-valise combinant les noms de ses inventeurs, Rijmen et Daemen) a été couronné vainqueur en 2001.

Il était rapide, efficace et, surtout, il avait résisté à un assaut mondial de tentatives pour le casser. Il est devenu l'AES, le standard que nous utilisons aujourd'hui pour tout verrouiller, des sites web sécurisés (HTTPS) aux disques durs chiffrés et aux fichiers sensibles. Il résout le problème ancestral de la conservation des secrets avec la rigueur mathématique moderne.

Comment ça marche sous le capot

L'AES, ça ressemble à de la magie : vous marmonnez une phrase secrète, et votre texte se transforme en un bazar illisible. Vous la marmonnez à nouveau, et tout redevient normal. Mais sous le capot, ce n'est qu'une série d'étapes mathématiques astucieuses et reproductibles.

Symétrique vs. Asymétrique

D'abord, un concept clé. Le chiffrement existe en deux grandes saveurs. L'AES est symétrique, ce qui signifie que la même clé est utilisée pour verrouiller (chiffrer) et déverrouiller (déchiffrer) les données. C'est comme la clé de votre maison : elle ferme la porte, et cette même clé l'ouvre. C'est rapide et efficace.

L'autre saveur est la cryptographie asymétrique (ou à clé publique). Elle utilise deux clés différentes : une clé publique pour verrouiller les données et une clé privée pour les déverrouiller. C'est comme une boîte aux lettres : n'importe qui peut y déposer une lettre (en utilisant la fente publique), mais seul vous avez la clé privée pour l'ouvrir et lire le courrier. C'est génial quand on ne peut pas partager une clé secrète de manière sécurisée à l'avance, mais c'est beaucoup plus lent que le chiffrement symétrique.

Le chiffrement basé sur un mot de passe utilise le modèle symétrique, car vous et la personne qui doit déchiffrer les données partagerez le même mot de passe.

Du mot de passe à la clé : la KDF

Voici un détail crucial : votre mot de passe, « SuperSecretP@ssw0rd123 », n'est pas la clé de chiffrement. Les mots de passe mémorisables par un humain ne sont ni assez aléatoires, ni assez longs pour être des clés cryptographiques sûres.

À la place, votre mot de passe est donné à une Key Derivation Function (KDF). Imaginez une KDF comme un algorithme spécialisé, conçu pour transformer un mot de passe en une clé cryptographique robuste et de taille fixe. Les KDF modernes comme PBKDF2 (Password-Based Key Derivation Function 2) ou Argon2 font trois choses importantes :

  1. Ajouter un sel (Salt) : Un sel est une donnée aléatoire générée pour chaque nouveau chiffrement. Il est mélangé à votre mot de passe avant le traitement. Cela signifie que même si deux utilisateurs ont le même mot de passe, les clés de chiffrement qui en résulteront seront totalement différentes. À lui seul, ce mécanisme anéantit les attaques par « tables arc-en-ciel » (rainbow tables), où les hackers utilisent des tables précalculées de mots de passe courants et de leurs hashs correspondants. Le sel est stocké avec les données chiffrées ; ce n'est pas un secret, juste un ingrédient unique.
  2. Étendre la clé (Stretching) : La KDF passe le mot de passe et le sel dans un algorithme de hachage (comme SHA-256) non pas une fois, mais des milliers, voire des millions de fois. C'est ce qu'on appelle les « itérations » ou le « coût de calcul » (work factor). Le processus est délibérément ralenti. Pour vous, attendre quelques centaines de millisecondes n'est pas un problème. Pour un attaquant qui essaie de forcer votre mot de passe par brute-force, c'est un cauchemar, car cela rend des milliards de tentatives très coûteuses en temps de calcul.
  3. Produire la clé : Après tout ce travail, la KDF crache une clé de la longueur souhaitée (par ex., 256 bits) qui ressemble à du pur bruit aléatoire. C'est cette clé qui est réellement utilisée par l'AES.
Votre Mot de Passe + Sel Aléatoire + Nombreuses Itérations -> Clé de Chiffrement Robuste
("hunter2"          + "a3f9d..."    + 100,000 tours)         -> Clé AES 256-bit

Le chiffrement AES lui-même : un état et des tours

Et maintenant, le plat de résistance. L'AES opère sur des blocs de données de taille fixe : toujours 128 bits (16 octets) à la fois. Votre message en clair est découpé en ces blocs de 16 octets. Chaque bloc est chargé dans une grille de 4x4 octets appelée la matrice d'état (state matrix).

Cet état passe ensuite par une série de transformations identiques appelées des tours (rounds). Le nombre de tours dépend de la taille de la clé :

  • AES-128 : 10 tours
  • AES-192 : 12 tours
  • AES-256 : 14 tours

Chaque tour (sauf le dernier) se compose de quatre étapes :

  1. SubBytes : Chaque octet de la matrice d'état est remplacé par un autre via une table de correspondance standard (la « S-box de Rijndael »). C'est la principale étape non linéaire qui introduit de la confusion.
  2. ShiftRows : Les octets de chaque ligne de la matrice sont décalés de manière cyclique. La première ligne n'est pas décalée, la deuxième est décalée d'un cran, la troisième de deux, et la quatrième de trois. Cela mélange les données.
  3. MixColumns : Une opération mathématique est effectuée sur chaque colonne, mélangeant les octets entre eux. Cela assure la diffusion, propageant l'influence d'un seul octet du texte en clair sur l'ensemble du bloc.
  4. AddRoundKey : Une partie de la clé de chiffrement principale (une « clé de tour » spécifique à ce tour) est combinée par une opération XOR avec l'état. C'est là que la clé secrète est réellement mélangée à vos données.

Cette séquence SubBytes -> ShiftRows -> MixColumns -> AddRoundKey est répétée encore et encore. Chaque tour brouille davantage les données jusqu'à ce que, après le dernier tour, la matrice d'état soit un bloc de texte chiffré complètement illisible. Pour déchiffrer, il suffit d'exécuter les étapes en sens inverse avec la même clé.

Le tout assemblé : modes de chiffrement et bourrage

L'AES ne sait chiffrer qu'un seul bloc de 16 octets. Mais que faire de votre message de 500 octets ? C'est là que les modes opératoires (modes of operation) entrent en jeu. Un mode opératoire est une recette pour utiliser un chiffrement par bloc afin de chiffrer un flux de données de n'importe quelle longueur.

Les anciens modes comme CBC (Cipher Block Chaining) avaient quelques pièges de sécurité. Le mode moderne recommandé est GCM (Galois/Counter Mode). GCM est un mode de « chiffrement authentifié », une façon chic de dire qu'il offre deux choses pour le prix d'une :

  • Confidentialité : Il chiffre vos données pour que personne ne puisse les lire.
  • Authenticité : Il produit une courte « étiquette d'authentification » (authentication tag). Si un seul bit du texte chiffré est modifié ou altéré pendant le transit, l'étiquette ne correspondra pas lors du déchiffrement, et le processus échouera. Cela vous indique non seulement que les données sont restées secrètes, mais aussi qu'elles n'ont pas été trafiquées.

Histoires vécues

Le secret du client du freelance

Anya, une designer UX, devait envoyer une maquette pour un nouveau produit non annoncé à son client. Le fichier de la maquette contenait des informations stratégiques et de branding sensibles. L'envoyer par e-mail lui semblait risqué — l'e-mail est notoirement peu sûr. Mettre en place un portail de transfert de fichiers sécurisé était excessif pour un envoi unique. À la place, Anya a chiffré l'archive ZIP contenant son travail avec un mot de passe. Elle a ensuite appelé le client pour lui communiquer le mot de passe par téléphone. Elle pouvait désormais envoyer le fichier chiffré par e-mail en toute sécurité, sachant que seul le client pourrait l'ouvrir.

Leçon : Le chiffrement par mot de passe est un outil fantastique pour le partage sécurisé et ponctuel de fichiers sensibles entre deux personnes, sans avoir besoin d'une infrastructure complexe.

Le fichier de configuration du développeur

Ben développait une application web qui se connectait à une base de données et utilisait une API de paiement tierce. Le mot de passe de la base de données et la clé d'API étaient stockés dans un fichier config.json. Il devait commiter son code dans un dépôt Git partagé, mais commiter le fichier de configuration avec des secrets en clair aurait été une faille de sécurité catastrophique. Il a donc chiffré config.json pour créer config.json.enc. Le mot de passe pour le déchiffrement n'était pas stocké dans le code. En développement, il déchiffrait simplement le fichier localement. En production, le mot de passe était transmis de manière sécurisée à l'application en tant que variable d'environnement, que l'app utilisait pour déchiffrer la configuration au démarrage.

Leçon : Chiffrer les fichiers de configuration vous permet de stocker en toute sécurité des « secrets au repos » à côté de votre code, en séparant les données secrètes de la clé secrète nécessaire pour les déverrouiller.

Les notes du journaliste dans le cloud

Maria, une journaliste d'investigation, travaillait sur un sujet sensible. Elle gardait ses notes d'interview et ses recherches dans un dossier synchronisé avec un service de stockage cloud populaire. Bien qu'elle ait confiance en la sécurité du service, elle s'inquiétait des menaces potentielles : un employé malveillant de l'entreprise cloud, une assignation du gouvernement, ou une fuite de données majeure. Pour protéger ses sources, elle chiffrait chaque document avec un mot de passe fort et unique avant de le sauvegarder dans le dossier synchronisé. Désormais, même si l'intégralité de son compte cloud était compromise, ses notes ne seraient que du charabia illisible.

Leçon : Le chiffrement fournit une couche personnelle de sécurité « zero-trust », garantissant que vos données restent privées même lorsqu'elles sont stockées sur des systèmes que vous ne contrôlez pas.

Erreurs et pièges courants

  • Utiliser un mot de passe faible. L'AES-256 est, à toutes fins pratiques, incassable par brute-force. Mais la KDF qui génère la clé à partir de votre mot de passe est vulnérable si le mot de passe est « 12345 » ou « password ». La sécurité de tout le système s'effondre au niveau de la robustesse de votre mot de passe. Utilisez une phrase de passe longue, aléatoire et unique.
  • Oublier le mot de passe. Avec le chiffrement par mot de passe, il n'y a pas de lien « Mot de passe oublié ? ». Le mot de passe est la clé. Si vous le perdez, les données sont perdues à jamais. Elles ne sont pas simplement verrouillées ; la clé a été vaporisée. Stockez vos mots de passe en toute sécurité dans un gestionnaire de mots de passe.
  • Bricoler sa propre crypto. C'est le péché capital de la sécurité logicielle. Vous savez peut-être ce que sont AES, GCM et PBKDF2, mais les combiner de manière sécurisée est un véritable champ de mines. Avez-vous utilisé un générateur de nombres aléatoires cryptographiquement sûr pour le sel ? Votre étiquette d'authentification est-elle gérée correctement ? Utilisez toujours une bibliothèque cryptographique réputée et auditée pour votre langage de programmation. Ne fabriquez pas la serrure vous-même ; achetez-en une chez un maître serrurier.
  • Réutiliser un sel ou un IV. Le sel (pour la KDF) et l'IV/nonce (pour le mode de chiffrement) doivent être aléatoires et uniques pour chaque opération de chiffrement avec la même clé. Les réutiliser peut briser de manière catastrophique la sécurité du chiffrement. Les bonnes bibliothèques gèrent cela pour vous, mais c'est un piège dont il faut être conscient.

Pourquoi vous devriez y prêter attention

Si vous êtes développeur, vous manipulerez des secrets. C'est inévitable. Que ce soit une chaîne de connexion à une base de données, une clé d'API, des informations personnelles d'un utilisateur, ou juste un fichier de log sensible, vous aurez des données qui ne doivent pas être exposées.

L'AES basé sur un mot de passe est votre outil de prédilection pour garantir la confidentialité au repos. C'est la solution standard, éprouvée au combat, pour :

  • Chiffrer les secrets d'une application dans votre code base.
  • Sécuriser les sauvegardes avant de les envoyer sur un stockage cloud.
  • Protéger les champs de données sensibles dans une base de données (par ex., chiffrer un numéro de sécurité sociale avant de le stocker).
  • Créer un moyen simple et sécurisé pour qu'un utilisateur vous envoie un fichier sensible.

C'est la brique fondamentale pour garder les secrets secrets dans un monde où les données sont copiées, partagées et stockées dans plus d'endroits qu'on ne peut l'imaginer.

Pour aller plus loin

Théorie bouclée. Place à la pratique — 100 % dans ton navigateur.

Essayer l'outil: Outils de chiffrement