Aller au contenu

Algorithmes supportés

JWTop supporte toutes les familles d’algorithmes définies par la RFC 7518.

FamilleAlgorithmesType de clé
HMACHS256, HS384, HS512Secret partagé ([]byte)
RSA PKCS#1 v1.5RS256, RS384, RS512Clé privée/publique RSA
RSA-PSSPS256, PS384, PS512Clé privée/publique RSA
ECDSAES256, ES384, ES512Clé privée/publique EC
EdDSAEdDSAClé privée/publique Ed25519
AucunnoneAucune clé requise

EdDSA (Ed25519) est défini par la RFC 8037. Il est supporté par create, sign, verify et genkey.

Choisissez HMAC (HS256 / HS384 / HS512) si :

  • Le même service émet et vérifie les tokens.
  • La simplicité et la performance sont prioritaires.
  • Le secret peut être stocké de façon sécurisée des deux côtés.

Choisissez RSA ou EC (RS256, ES256, …) si :

  • Plusieurs services doivent vérifier les tokens sans accès à la clé de signature.
  • Vous publiez un endpoint JWKS pour la découverte de clés.
  • Vous devez pouvoir faire tourner les clés sans partager de secret.

ES256 vs RS256 : les clés ECDSA sont plus petites et les opérations plus rapides à niveau de sécurité équivalent. Préférez ES256 pour les nouveaux déploiements.

PS256 vs RS256 : RSA-PSS (PS*) résiste mieux à certaines attaques théoriques que PKCS#1 v1.5 (RS*). Les deux restent acceptables en pratique.

La commande intégrée genkey génère des clés avec des paramètres de force minimale imposés :

Terminal window
jwtop genkey --alg HS256 # secret HMAC (base64url)
jwtop genkey --alg RS256 --rsa-bits 3072 --out private.pem
jwtop genkey --alg ES256 --out es256
jwtop genkey --alg EdDSA --out ed25519

Ou utilisez des outils standards pour générer des paires de clés PEM :

Terminal window
# RSA 2048 bits
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem
# EC P-256 (pour ES256)
openssl ecparam -name prime256v1 -genkey -noout -out private.pem
openssl ec -in private.pem -pubout -out public.pem
# EC P-384 (pour ES384)
openssl ecparam -name secp384r1 -genkey -noout -out private.pem
openssl ec -in private.pem -pubout -out public.pem
# Ed25519 (pour EdDSA)
openssl genpkey -algorithm ed25519 -out private.pem
openssl pkey -in private.pem -pubout -out public.pem