Skip to Content
SécuritéPartie 3 — Cryptographie pour devsVue d'ensemble

Partie 3 — Cryptographie pour devs

⏱️ TL;DR — Tu n’as pas besoin d’être cryptographe, mais tu dois savoir utiliser la crypto sans te tromper — car les erreurs y sont silencieuses (ça « marche » tout en étant cassé). Cette partie clarifie d’abord la confusion la plus coûteuse : encoder ≠ hacher ≠ chiffrer. Elle explique ensuite le chiffrement symétrique et asymétrique (et comment TLS combine les deux), la bonne façon de stocker un mot de passe (argon2id, pas un SHA), les signatures / HMAC / JWT (avec leurs pièges), et l’aléatoire cryptographique (le CSPRNG, jamais Math.random()). Fil conducteur : ne jamais rouler sa propre crypto — on utilise les primitives éprouvées, correctement.

Le problème qu’on résout

La crypto est le domaine où l’on peut écrire du code qui semble fonctionner parfaitement tout en étant totalement cassé. Un mot de passe « haché » en MD5 s’enregistre et se vérifie sans erreur… et tombe en quelques secondes face à un attaquant. Un JWT « vérifié » sans contrôle de l’algorithme laisse forger des jetons. Un token « aléatoire » généré avec Math.random() est prévisible. Rien ne plante, aucun test rouge — juste une faille béante.

Cette partie te donne le discernement : reconnaître quel outil crypto s’applique à quel besoin, utiliser les bonnes primitives (celles fournies par les plateformes), et éviter les pièges classiques. Pas de mathématiques : des décisions et des API.

Ce que tu sauras faire à la fin de cette partie

  • Distinguer nettement encoder (réversible, non secret), hacher (à sens unique) et chiffrer (réversible avec clé).
  • Comprendre le chiffrement symétrique vs asymétrique et comment TLS les combine.
  • Stocker un mot de passe correctement (argon2id / bcrypt), et pourquoi un SHA ne convient pas.
  • Utiliser signatures, HMAC et JWT à bon escient, en évitant leurs pièges (alg:none, expiration…).
  • Générer de l’aléatoire sûr avec un CSPRNG (crypto.randomBytes, random_bytes()), jamais Math.random().
  • Appliquer la règle d’or : ne jamais implémenter sa propre crypto.

Les chapitres

#ChapitreEn un mot
3.1Encoder ≠ hacher ≠ chiffrerTrois opérations souvent confondues, et pourquoi ça compte.
3.2Symétrique, asymétrique, TLSUne clé vs deux clés, et comment TLS marie les deux.
3.3Hacher les mots de passeargon2id/bcrypt, sel, coût, pourquoi pas un SHA.
3.4Signatures, JWT & aléatoireHMAC, signatures, pièges JWT, CSPRNG.

Avec ces fondations crypto, on peut construire une authentification solide. Direction la Partie 4 — Authentification.


On commence par la confusion la plus coûteuse : Encoder ≠ hacher ≠ chiffrer.

Last updated on