Aller au contenu
ecdsa.com

HS256

L’algorithme JWS HMAC avec SHA-256 (RFC 7518 §3.2), dans lequel l’émetteur et le vérificateur partagent une même clé secrète d’au moins 256 bits : quiconque peut vérifier un jeton peut donc aussi en créer un.
Autres graphiesHS256HMAC-SHA256 JWTHS512

C’est le seul algorithme JWS que JWA marque comme obligatoire à implémenter (Required), et le choix par défaut de nombreux tutoriels et frameworks. Le tag de 32 octets est calculé sur header.payload avec le secret partagé ; la vérification le recalcule et le compare en temps constant.

Les secrets faibles sont le principal problème : la RFC 7518 exige des clés au moins aussi longues que le condensat (256 bits), mais les jetons signés avec des secrets courts ou issus d’un dictionnaire, comme secret, peuvent être cassés hors ligne à partir d’un seul jeton (hashcat en mode 16500, jwt_tool), après quoi l’attaquant crée des jetons arbitraires. Utilisez au moins 32 octets aléatoires, jamais un mot de passe, et vérifiez avec le vérificateur de secrets JWT.

HS256 convient lorsque le même service émet et vérifie les jetons. Pour des vérificateurs tiers, des microservices ou des clients publics, utilisez un algorithme asymétrique afin que les vérificateurs ne détiennent qu’une clé publique, et fixez l’algorithme pour chaque clé afin d’éviter toute confusion avec RS256.

Normes et références

Tous les termes