3. Cryptographic Algorithms for Digital Signatures and MACs (Algorithmes cryptographiques pour les signatures numériques et les MAC)
JWS utilise des algorithmes cryptographiques pour signer numériquement ou créer un MAC du contenu du JWS Protected Header (En-tête protégé JWS) et du JWS Payload (Charge utile JWS).
3.1 "alg" (Algorithm) Header Parameter Values for JWS (Valeurs du paramètre d'en-tête "alg" pour JWS)
Le tableau ci-dessous définit les valeurs du paramètre d'en-tête "alg" (algorithm) pour JWS définies par cette spécification :
| Valeur du paramètre "alg" | Algorithme de signature numérique ou MAC | Exigences d'implémentation |
|---|---|---|
| HS256 | HMAC using SHA-256 (HMAC utilisant SHA-256) | Required (Requis) |
| HS384 | HMAC using SHA-384 (HMAC utilisant SHA-384) | Optional (Optionnel) |
| HS512 | HMAC using SHA-512 (HMAC utilisant SHA-512) | Optional (Optionnel) |
| RS256 | RSASSA-PKCS1-v1_5 using SHA-256 (RSASSA-PKCS1-v1_5 utilisant SHA-256) | Recommended (Recommandé) |
| RS384 | RSASSA-PKCS1-v1_5 using SHA-384 (RSASSA-PKCS1-v1_5 utilisant SHA-384) | Optional (Optionnel) |
| RS512 | RSASSA-PKCS1-v1_5 using SHA-512 (RSASSA-PKCS1-v1_5 utilisant SHA-512) | Optional (Optionnel) |
| ES256 | ECDSA using P-256 and SHA-256 (ECDSA utilisant P-256 et SHA-256) | Recommended+ (Recommandé+) |
| ES384 | ECDSA using P-384 and SHA-384 (ECDSA utilisant P-384 et SHA-384) | Optional (Optionnel) |
| ES512 | ECDSA using P-521 and SHA-512 (ECDSA utilisant P-521 et SHA-512) | Optional (Optionnel) |
| PS256 | RSASSA-PSS using SHA-256 and MGF1 with SHA-256 (RSASSA-PSS utilisant SHA-256 et MGF1 avec SHA-256) | Optional (Optionnel) |
| PS384 | RSASSA-PSS using SHA-384 and MGF1 with SHA-384 (RSASSA-PSS utilisant SHA-384 et MGF1 avec SHA-384) | Optional (Optionnel) |
| PS512 | RSASSA-PSS using SHA-512 and MGF1 with SHA-512 (RSASSA-PSS utilisant SHA-512 et MGF1 avec SHA-512) | Optional (Optionnel) |
| none | No digital signature or MAC performed (Aucune signature numérique ou MAC) | Optional (Optionnel) |
Note : Le "+" dans la colonne des exigences d'implémentation indique que la force de l'exigence peut être augmentée dans les futures versions de la spécification.
3.2 HMAC with SHA-2 Functions (HMAC avec les fonctions SHA-2)
Les Hash-based Message Authentication Codes (HMACs) (Codes d'authentification de message basés sur le hachage) permettent d'utiliser un secret plus une fonction de hachage cryptographique pour générer un MAC. Cet algorithme est défini dans la RFC 2104 [RFC2104].
Exigences de clé : Une clé de la même taille que la sortie du hachage (par exemple, 256 bits pour "HS256") ou plus grande doit (MUST) être utilisée avec cet algorithme.
Valeurs d'algorithme HMAC :
| Valeur du paramètre "alg" | Algorithme MAC |
|---|---|
| HS256 | HMAC using SHA-256 (HMAC utilisant SHA-256) |
| HS384 | HMAC using SHA-384 (HMAC utilisant SHA-384) |
| HS512 | HMAC using SHA-512 (HMAC utilisant SHA-512) |
Exigences de validation : La comparaison des valeurs HMAC doit (MUST) être effectuée en temps constant pour prévenir les attaques temporelles.
3.3 Digital Signature with RSASSA-PKCS1-v1_5 (Signature numérique avec RSASSA-PKCS1-v1_5)
Cette section définit l'utilisation de l'algorithme de signature numérique RSASSA-PKCS1-v1_5 tel que défini dans la section 8.2 de la RFC 3447 [RFC3447] avec les fonctions de hachage SHA-2.
Exigences de clé : Une clé de taille 2048 bits ou plus grande doit (MUST) être utilisée avec cet algorithme.
Valeurs d'algorithme :
| Valeur du paramètre "alg" | Algorithme de signature numérique |
|---|---|
| RS256 | RSASSA-PKCS1-v1_5 using SHA-256 (RSASSA-PKCS1-v1_5 utilisant SHA-256) |
| RS384 | RSASSA-PKCS1-v1_5 using SHA-384 (RSASSA-PKCS1-v1_5 utilisant SHA-384) |
| RS512 | RSASSA-PKCS1-v1_5 using SHA-512 (RSASSA-PKCS1-v1_5 utilisant SHA-512) |
3.4 Digital Signature with ECDSA (Signature numérique avec ECDSA)
L'Elliptic Curve Digital Signature Algorithm (ECDSA) (Algorithme de signature numérique à courbe elliptique) [DSS] utilise la cryptographie à courbe elliptique, offrant une sécurité équivalente à RSA avec des longueurs de clé plus courtes et un traitement plus rapide.
Courbes et fonctions de hachage prises en charge :
- Courbe P-256 avec SHA-256
- Courbe P-384 avec SHA-384
- Courbe P-521 avec SHA-512
Étapes de génération de signature ECDSA P-256 SHA-256 :
- Générer une signature numérique de l'entrée de signature JWS en utilisant ECDSA P-256 SHA-256 avec la clé privée, produisant une paire (R, S), chacune étant un entier non signé de 256 bits
- Convertir R et S en séquences d'octets en ordre big-endian, chacune de 32 octets de long
- Concaténer les deux séquences d'octets dans l'ordre R puis S
- La séquence de 64 octets résultante est la valeur de signature JWS
Valeurs d'algorithme :
| Valeur du paramètre "alg" | Algorithme de signature numérique |
|---|---|
| ES256 | ECDSA using P-256 and SHA-256 (ECDSA utilisant P-256 et SHA-256) |
| ES384 | ECDSA using P-384 and SHA-384 (ECDSA utilisant P-384 et SHA-384) |
| ES512 | ECDSA using P-521 and SHA-512 (ECDSA utilisant P-521 et SHA-512) |
Longueurs de signature :
- ES256 : 64 octets (R et S sont chacun de 32 octets)
- ES384 : 96 octets (R et S sont chacun de 48 octets)
- ES512 : 132 octets (R et S sont chacun de 66 octets)
3.5 Digital Signature with RSASSA-PSS (Signature numérique avec RSASSA-PSS)
Cette section définit l'utilisation de l'algorithme de signature numérique RSASSA-PSS tel que défini dans la section 8.1 de la RFC 3447 [RFC3447], avec la fonction de génération de masque MGF1 et les fonctions de hachage SHA-2.
Paramètres clés :
- La fonction de hachage RSASSA-PSS et la fonction de hachage MGF1 utilisent la même fonction de hachage
- La taille de la valeur de sel est égale à la taille de sortie de la fonction de hachage
- Exigence de taille de clé : 2048 bits ou plus
Valeurs d'algorithme :
| Valeur du paramètre "alg" | Algorithme de signature numérique |
|---|---|
| PS256 | RSASSA-PSS using SHA-256 and MGF1 with SHA-256 (RSASSA-PSS utilisant SHA-256 et MGF1 avec SHA-256) |
| PS384 | RSASSA-PSS using SHA-384 and MGF1 with SHA-384 (RSASSA-PSS utilisant SHA-384 et MGF1 avec SHA-384) |
| PS512 | RSASSA-PSS using SHA-512 and MGF1 with SHA-512 (RSASSA-PSS utilisant SHA-512 et MGF1 avec SHA-512) |
3.6 Using the Algorithm "none" (Utilisation de l'algorithme "none")
La spécification JWS [JWS] définit la valeur "alg" "none" pour une utilisation dans la création d'objets JWS non sécurisés qui ne fournissent aucune protection d'intégrité.
Avertissement de sécurité : Les implémentations doivent (MUST) comprendre les implications de sécurité de l'utilisation de cet algorithme. La valeur "alg" "none" devrait (SHOULD) être utilisée uniquement lorsque la protection d'intégrité n'est pas nécessaire.