Aller au contenu
ecdsa.com
JOSE, JWK et COSE

Algorithmes JOSE : valeurs alg et enc pour JWS et JWE

Identifiants d’algorithmes JWS et JWE du registre JOSE de l’IANA, de HS256 et ES256 à ML-DSA et HPKE, avec leurs exigences d’implémentation et leurs RFC.

Affichage : 67 sur 67

Algorithmes JOSE · 67 entrées

Identifiants d’algorithmes JWS et JWE (alg et enc) avec leurs exigences d’implémentation.

NomDescriptionUtilisationRéférences
A128CBCA128CBC est un identifiant JOSE WebCrypto qui ne peut apparaître que dans une JWK : AES-CBC sans authentification. Exigence d’implémentation : interdit.JWKW3C Web Cryptography API
A128CBC-HS256A128CBC-HS256 est un algorithme JOSE de chiffrement du contenu (enc dans un JWE) : AES-CBC avec HMAC avec SHA-256. Exigence d’implémentation : obligatoire.encRFC 7518, Section 5.2.3
A128CTRA128CTR est un identifiant JOSE WebCrypto qui ne peut apparaître que dans une JWK : AES-CTR sans authentification. Exigence d’implémentation : interdit.JWKW3C Web Cryptography API
A128GCMA128GCM est un algorithme JOSE de chiffrement du contenu (enc dans un JWE) : AES-GCM. Exigence d’implémentation : recommandé.encRFC 7518, Section 5.3
A128GCMKWA128GCMKW est un algorithme JOSE de gestion des clés (alg dans un JWE) : enveloppement de clé AES-GCM. Exigence d’implémentation : facultatif.algRFC 7518, Section 4.7
A128KWA128KW est un algorithme JOSE de gestion des clés (alg dans un JWE) : enveloppement de clé AES. Exigence d’implémentation : recommandé.algRFC 7518, Section 4.4
A192CBCA192CBC est un identifiant JOSE WebCrypto qui ne peut apparaître que dans une JWK : AES-CBC sans authentification. Exigence d’implémentation : interdit.JWKW3C Web Cryptography API
A192CBC-HS384A192CBC-HS384 est un algorithme JOSE de chiffrement du contenu (enc dans un JWE) : AES-CBC avec HMAC avec SHA-384. Exigence d’implémentation : facultatif.encRFC 7518, Section 5.2.4
A192CTRA192CTR est un identifiant JOSE WebCrypto qui ne peut apparaître que dans une JWK : AES-CTR sans authentification. Exigence d’implémentation : interdit.JWKW3C Web Cryptography API
A192GCMA192GCM est un algorithme JOSE de chiffrement du contenu (enc dans un JWE) : AES-GCM. Exigence d’implémentation : facultatif.encRFC 7518, Section 5.3
A192GCMKWA192GCMKW est un algorithme JOSE de gestion des clés (alg dans un JWE) : enveloppement de clé AES-GCM. Exigence d’implémentation : facultatif.algRFC 7518, Section 4.7
A192KWA192KW est un algorithme JOSE de gestion des clés (alg dans un JWE) : enveloppement de clé AES. Exigence d’implémentation : facultatif.algRFC 7518, Section 4.4
A256CBCA256CBC est un identifiant JOSE WebCrypto qui ne peut apparaître que dans une JWK : AES-CBC sans authentification. Exigence d’implémentation : interdit.JWKW3C Web Cryptography API
A256CBC-HS512A256CBC-HS512 est un algorithme JOSE de chiffrement du contenu (enc dans un JWE) : AES-CBC avec HMAC avec SHA-512. Exigence d’implémentation : obligatoire.encRFC 7518, Section 5.2.5
A256CTRA256CTR est un identifiant JOSE WebCrypto qui ne peut apparaître que dans une JWK : AES-CTR sans authentification. Exigence d’implémentation : interdit.JWKW3C Web Cryptography API
A256GCMA256GCM est un algorithme JOSE de chiffrement du contenu (enc dans un JWE) : AES-GCM. Exigence d’implémentation : recommandé.encRFC 7518, Section 5.3
A256GCMKWA256GCMKW est un algorithme JOSE de gestion des clés (alg dans un JWE) : enveloppement de clé AES-GCM. Exigence d’implémentation : facultatif.algRFC 7518, Section 4.7
A256KWA256KW est un algorithme JOSE de gestion des clés (alg dans un JWE) : enveloppement de clé AES. Exigence d’implémentation : recommandé.algRFC 7518, Section 4.4
dirdir est un algorithme JOSE de gestion des clés (alg dans un JWE) : utilisation directe d’une clé symétrique partagée. Exigence d’implémentation : recommandé.algRFC 7518, Section 4.5
ECDH-ESECDH-ES est un algorithme JOSE de gestion des clés (alg dans un JWE) : ECDH éphémère-statique. Exigence d’implémentation : recommandé, probablement obligatoire à l’avenir.algRFC 7518, Section 4.6
ECDH-ES+A128KWECDH-ES+A128KW est un algorithme JOSE de gestion des clés (alg dans un JWE) : ECDH éphémère-statique suivi d’un enveloppement de clé AES. Exigence d’implémentation : recommandé.algRFC 7518, Section 4.6
ECDH-ES+A192KWECDH-ES+A192KW est un algorithme JOSE de gestion des clés (alg dans un JWE) : ECDH éphémère-statique suivi d’un enveloppement de clé AES. Exigence d’implémentation : facultatif.algRFC 7518, Section 4.6
ECDH-ES+A256KWECDH-ES+A256KW est un algorithme JOSE de gestion des clés (alg dans un JWE) : ECDH éphémère-statique suivi d’un enveloppement de clé AES. Exigence d’implémentation : recommandé.algRFC 7518, Section 4.6
Ed25519Ed25519 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : EdDSA sur edwards25519. Exigence d’implémentation : facultatif.edwards25519algRFC 9864, Section 2.2
Ed448Ed448 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : EdDSA sur edwards448. Exigence d’implémentation : facultatif.edwards448algRFC 9864, Section 2.2
EdDSANoteEdDSA est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : EdDSA. Exigence d’implémentation : déconseillé.algRFC 9864, Section 2.2
ES256NoteES256 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : ECDSA sur P-256 avec SHA-256. Exigence d’implémentation : recommandé, probablement obligatoire à l’avenir.P-256algRFC 7518, Section 3.4
ES256KES256K est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : ECDSA sur secp256k1 avec SHA-256. Exigence d’implémentation : facultatif.secp256k1algRFC 8812, Section 3.2
ES384ES384 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : ECDSA sur P-384 avec SHA-384. Exigence d’implémentation : facultatif.P-384algRFC 7518, Section 3.4
ES512ES512 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : ECDSA sur P-521 avec SHA-512. Exigence d’implémentation : facultatif.P-521algRFC 7518, Section 3.4
HPKE-0HPKE-0 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur P-256. Exigence d’implémentation : facultatif.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-0-KEHPKE-0-KE est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur P-256. Exigence d’implémentation : facultatif.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-1HPKE-1 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur P-384. Exigence d’implémentation : facultatif.P-384algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-1-KEHPKE-1-KE est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur P-384. Exigence d’implémentation : facultatif.P-384algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-2HPKE-2 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur P-521. Exigence d’implémentation : facultatif.P-521algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-2-KEHPKE-2-KE est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur P-521. Exigence d’implémentation : facultatif.P-521algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-3HPKE-3 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur curve25519. Exigence d’implémentation : facultatif.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-3-KEHPKE-3-KE est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur curve25519. Exigence d’implémentation : facultatif.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-4HPKE-4 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur curve25519. Exigence d’implémentation : facultatif.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5HPKE-5 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur curve448. Exigence d’implémentation : facultatif.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5-KEHPKE-5-KE est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur curve448. Exigence d’implémentation : facultatif.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-6HPKE-6 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur curve448. Exigence d’implémentation : facultatif.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7HPKE-7 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur P-256. Exigence d’implémentation : facultatif.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7-KEHPKE-7-KE est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement hybride à clé publique (HPKE) sur P-256. Exigence d’implémentation : facultatif.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HS1HS1 est un identifiant JOSE WebCrypto qui ne peut apparaître que dans une JWK : HMAC avec SHA-1. Exigence d’implémentation : interdit.JWKW3C Web Cryptography API
HS256NoteHS256 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : HMAC avec SHA-256. Exigence d’implémentation : obligatoire.algRFC 7518, Section 3.2
HS384HS384 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : HMAC avec SHA-384. Exigence d’implémentation : facultatif.algRFC 7518, Section 3.2
HS512HS512 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : HMAC avec SHA-512. Exigence d’implémentation : facultatif.algRFC 7518, Section 3.2
ML-DSA-44ML-DSA-44 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : ML-DSA. Exigence d’implémentation : facultatif.algRFC 9964
ML-DSA-65NoteML-DSA-65 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : ML-DSA. Exigence d’implémentation : facultatif.algRFC 9964
ML-DSA-87ML-DSA-87 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : ML-DSA. Exigence d’implémentation : facultatif.algRFC 9964
noneNotenone est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : aucune signature ni aucun MAC. Exigence d’implémentation : facultatif.algRFC 7518, Section 3.6
PBES2-HS256+A128KWPBES2-HS256+A128KW est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement fondé sur un mot de passe (PBES2) avec SHA-256. Exigence d’implémentation : facultatif.algRFC 7518, Section 4.8
PBES2-HS384+A192KWPBES2-HS384+A192KW est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement fondé sur un mot de passe (PBES2) avec SHA-384. Exigence d’implémentation : facultatif.algRFC 7518, Section 4.8
PBES2-HS512+A256KWPBES2-HS512+A256KW est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement fondé sur un mot de passe (PBES2) avec SHA-512. Exigence d’implémentation : facultatif.algRFC 7518, Section 4.8
PS256PS256 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : RSASSA-PSS avec SHA-256. Exigence d’implémentation : facultatif.algRFC 7518, Section 3.5
PS384PS384 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : RSASSA-PSS avec SHA-384. Exigence d’implémentation : facultatif.algRFC 7518, Section 3.5
PS512PS512 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : RSASSA-PSS avec SHA-512. Exigence d’implémentation : facultatif.algRFC 7518, Section 3.5
RS1RS1 est un identifiant JOSE WebCrypto qui ne peut apparaître que dans une JWK : RSASSA-PKCS1-v1_5 avec SHA-1. Exigence d’implémentation : interdit.JWKW3C Web Cryptography API
RS256NoteRS256 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : RSASSA-PKCS1-v1_5 avec SHA-256. Exigence d’implémentation : recommandé.algRFC 7518, Section 3.3
RS384RS384 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : RSASSA-PKCS1-v1_5 avec SHA-384. Exigence d’implémentation : facultatif.algRFC 7518, Section 3.3
RS512RS512 est un algorithme JOSE de signature ou de MAC (alg dans un JWS) : RSASSA-PKCS1-v1_5 avec SHA-512. Exigence d’implémentation : facultatif.algRFC 7518, Section 3.3
RSA-OAEPRSA-OAEP est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement RSAES-OAEP avec SHA-1. Exigence d’implémentation : recommandé, probablement obligatoire à l’avenir.algRFC 7518, Section 4.3
RSA-OAEP-256RSA-OAEP-256 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement RSAES-OAEP avec SHA-256. Exigence d’implémentation : facultatif.algRFC 7518, Section 4.3
RSA-OAEP-384RSA-OAEP-384 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement RSAES-OAEP avec SHA-384. Exigence d’implémentation : facultatif.algW3C Web Cryptography API
RSA-OAEP-512RSA-OAEP-512 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement RSAES-OAEP avec SHA-512. Exigence d’implémentation : facultatif.algW3C Web Cryptography API
RSA1_5NoteRSA1_5 est un algorithme JOSE de gestion des clés (alg dans un JWE) : chiffrement RSAES-PKCS1-v1_5. Exigence d’implémentation : recommandé, probablement facultatif à l’avenir.algRFC 7518, Section 4.2

Source : JSON Object Signing and Encryption (JOSE) (IANA), récupérée le 2026-10-20. Licence des données : CC0-1.0. JSON Web Signature and Encryption Algorithms

Remarques sur les entrées notables

EdDSA

L’identifiant polymorphe EdDSA de la RFC 8037, déconseillé par la RFC 9864 au profit d’Ed25519 et d’Ed448.

Avec « EdDSA », la courbe vient de la clé (crv: Ed25519 ou Ed448), si bien qu’une partie ne peut pas annoncer quelle courbe elle prend en charge. La RFC 9864 enregistre les noms entièrement spécifiés Ed25519 et Ed448 et classe « EdDSA » comme déconseillé.

ES256

ECDSA sur P-256 avec SHA-256, l’algorithme JWS le plus utilisé pour les JWT signés avec des clés asymétriques.

Une signature JWS en ES256 est la concaténation de r et s sur 64 octets, chacun complété à 32 octets (RFC 7518 §3.4), et non la structure DER que produisent OpenSSL et Java ; la conversion entre les deux est une source fréquente d’erreurs « invalid signature » (voir le convertisseur DER ⇄ brut).

La RFC 9864 déconseille l’identifiant COSE polymorphe ES256 (−7) au profit de l’identifiant entièrement spécifié ESP256 (−9) ; en JOSE, le nom ES256 fixe déjà la courbe, il n’est donc pas concerné.

HS256

HMAC avec SHA-256, un algorithme JWS symétrique : quiconque peut vérifier un jeton peut aussi en forger un.

HS256 est le seul algorithme que la RFC 7518 rend obligatoire. Comme le même secret signe et vérifie, il convient à un service unique qui émet et contrôle ses propres jetons. Un secret court ou devinable peut être retrouvé par force brute hors ligne à partir de n’importe quel jeton ; la RFC 7518 §3.2 exige une clé au moins aussi longue que la sortie de la fonction de hachage (256 bits pour HS256), et cette clé doit être aléatoire.

ML-DSA-65

ML-DSA-65 (FIPS 204) pour JWS, enregistré par la RFC 9964 avec le nouveau type de clé AKP.

Les clés JWS post-quantiques utilisent le type de clé Algorithm Key Pair, ou paire de clés liée à un algorithme (kty « AKP »), dont le membre « pub » contient la clé publique ML-DSA brute et dont le membre « alg » la lie à un seul jeu de paramètres. Les signatures font 3309 octets, si bien que les jetons atteignent plusieurs kilo-octets.

none

alg « none » désigne un JWS non sécurisé, c’est-à-dire un jeton sans aucune signature.

La RFC 7518 §3.6 définit « none » pour les contextes où l’intégrité est assurée par d’autres moyens. Des bibliothèques qui laissent l’en-tête du jeton lui-même choisir l’algorithme ont accepté des jetons forgés avec alg « none », la vulnérabilité JWT la plus connue (RFC 8725 §2.1) ; les vérificateurs doivent le rejeter, sauf si l’application attend explicitement des jetons non sécurisés.

RS256

RSASSA-PKCS1-v1_5 avec SHA-256, l’algorithme JWS de la plupart des jetons d’ID OpenID Connect.

OpenID Connect Core §15.1 impose aux fournisseurs de prendre en charge la signature des jetons d’ID en RS256, ce qui explique que la plupart des jetons d’ID et des points de terminaison JWKS utilisent des clés RSA. Son piège classique est la confusion d’algorithme : un vérificateur qui accepte HS256 pour une clé destinée à RS256 peut être amené à utiliser la clé publique comme secret HMAC (RFC 8725 §2.1). Fixez l’algorithme attendu pour chaque clé, comme l’exige la RFC 8725 §3.1.

RSA1_5

Chiffrement de clé RSAES-PKCS1-v1_5 pour JWE, exposé aux attaques par oracle de remplissage de type Bleichenbacher.

Un serveur qui révèle de quelque manière que ce soit (message d’erreur, temps de réponse) si le remplissage d’une clé RSA1_5 déchiffrée était valide permet à un attaquant de déchiffrer les clés de contenu une requête après l’autre. La RFC 7518 classe RSA1_5 « Recommended- », c’est-à-dire susceptible d’être rétrogradé ; préférez RSA-OAEP-256 ou ECDH-ES.

Tous les registres