0Pricing
Cryptology Academy · Leçon

HS256 ou RS256 : JWT symétriques ou asymétriques

Choisissez le bon algorithme de signature pour votre système d’authentification.

HS256 ou RS256 : JWT symétriques ou asymétriques est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cryptology Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cryptology Academy comprend 4 leçons au total.

Familles d’algorithmes

La signature des JWT utilise des algorithmes symétriques (HMAC) ou asymétriques (RSA, ECDSA). HS256 = HMAC-SHA256. RS256 = RSA-PKCS1v1.5-SHA256. ES256 = ECDSA-P256-SHA256. Ce choix influe sur la distribution des clés et le modèle de confiance.

HS256 : HMAC symétrique

HS256 utilise une seule clé secrète partagée pour la signature et la vérification. L’émetteur et chaque vérificateur doivent posséder le même secret. Cette solution est simple à mettre en œuvre, mais elle exige de distribuer la clé de manière sécurisée à tous les vérificateurs.

Cas d’utilisation de HS256

HS256 convient lorsque l’émetteur et le vérificateur sont le même service (par exemple, une API monolithique qui signe et vérifie ses propres jetons). N’utilisez jamais HS256 si plusieurs services indépendants doivent vérifier les jetons : ils auraient tous besoin du secret.

RS256 : RSA asymétrique

RS256 utilise une clé privée pour signer et une clé publique pour vérifier. Seul le serveur d’authentification détient la clé privée. Tous les serveurs de ressources récupèrent la clé publique depuis le point de terminaison JWKS et vérifient localement, sans partage de secret.

Cas d’utilisation de RS256

RS256 convient parfaitement aux architectures de microservices : le fournisseur d’identité signe les jetons et chaque service en aval les vérifie avec la clé publique sans contacter l’IDP à chaque requête. La solution s’adapte horizontalement sans risque lié à la distribution des clés.

ES256 : alternative avec ECDSA

ES256 utilise ECDSA sur P-256. La signature occupe 64 octets, contre 256 octets pour RS256 avec une clé de 2048 bits. Sa vérification est environ 10 fois plus rapide que celle de RS256. Il est préférable lorsque la bande passante ou la vitesse de vérification est essentielle (API mobiles, IoT).

Rotation des clés

Pour RS256/ES256, faites pivoter les clés en publiant une nouvelle clé (nouveau kid) dans JWKS, en signant les nouveaux jetons avec la nouvelle clé, en laissant s’écouler une période de grâce pour que les anciens jetons expirent, puis en supprimant l’ancienne clé. La rotation HMAC nécessite de redistribuer le nouveau secret.

Comparaison des performances

Vérification HS256 : environ 1 µs. Vérification RS256 : environ 100 µs (2048 bits). Vérification ES256 : environ 50 µs (P-256). HS256 est le plus rapide, mais exige le partage d’un secret. ES256 offre le meilleur équilibre entre sécurité et performances pour les systèmes distribués.

Aperçu de l’attaque par l’en-tête alg

Une vulnérabilité critique : si le vérificateur fait aveuglément confiance à l’en-tête alg, un attaquant peut remplacer alg par HS256 et signer le jeton avec la clé publique du serveur (qui est publique) comme secret HMAC. Correction : ne faites jamais confiance à l’en-tête alg.

Choix d’un algorithme

Décision : service unique → HS256. Services multiples ou microservices → RS256 ou ES256. Application mobile à fort volume → ES256. En cas de doute, utilisez ES256 (P-256) ou RS256 avec des clés d’au moins 2048 bits. N’utilisez jamais RS512 sur les chemins sensibles aux performances.

Bibliothèques et normes

Utilisez PyJWT (Python), jose (Node.js) ou auth0/java-jwt. Spécifiez toujours explicitement l’algorithme attendu dans l’appel de vérification : jwt.decode(token, secret, algorithms=["HS256"]). Ne transmettez jamais algorithms=None et n’omet­tez jamais ce paramètre.

Vérification rapide

Pourquoi RS256 est-il préféré à HS256 dans les architectures de microservices ?

Récapitulatif

HS256 est symétrique (secret partagé), tandis que RS256/ES256 sont asymétriques (signature privée, vérification publique). Utilisez des algorithmes asymétriques pour les systèmes impliquant plusieurs parties. Suite : exploiter les vulnérabilités des JWT.

Questions Fréquemment Posées

La leçon « HS256 ou RS256 : JWT symétriques ou asymétriques » est-elle gratuite ?

Oui — le texte complet de « HS256 ou RS256 : JWT symétriques ou asymétriques » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cryptology Academy, passe à CoddyKit PRO. Le cours Cryptology Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « HS256 ou RS256 : JWT symétriques ou asymétriques » ?

Choisissez le bon algorithme de signature pour votre système d’authentification. Tu pratiques Cryptology Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cryptology Academy ?

Aucune expérience préalable n'est requise. Cryptology Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « HS256 ou RS256 : JWT symétriques ou asymétriques » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cryptology Academy ?

Oui. Chaque leçon Cryptology Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Anatomie d’un JWT : en-tête, charge utile, signature
  2. HS256 ou RS256 : JWT symétriques ou asymétriques
  3. Vulnérabilités des JWT : alg=none et confusion de clés
  4. Bonnes pratiques pour une implémentation sécurisée des JWT
← Retour à Cryptology Academy