Aller au contenu principal

4. Cryptographic Algorithms for Key Management (Algorithmes cryptographiques pour la gestion des clés)

JWE utilise des algorithmes cryptographiques pour chiffrer ou déterminer la Content Encryption Key (CEK) (Clé de chiffrement du contenu).

4.1 "alg" Header Parameter Values for JWE (Valeurs du paramètre d'en-tête "alg" pour JWE)

Algorithmes de gestion de clés pris en charge par JWE (résumé) :

ID d'algorithmeAlgorithme de gestion de clésParamètres d'en-tête supplémentairesExigences d'implémentation
RSA1_5RSAES-PKCS1-v1_5-Recommended- (Recommandé-)
RSA-OAEPRSAES OAEP (paramètres par défaut)-Recommended+ (Recommandé+)
RSA-OAEP-256RSAES OAEP (SHA-256)-Optional (Optionnel)
A128KW / A192KW / A256KWAES Key Wrap (Enveloppement de clé AES)-Recommended (Recommandé)
dirDirect use of shared symmetric key (Utilisation directe d'une clé symétrique partagée)-Recommended (Recommandé)
ECDH-ESECDH key agreement (Accord de clé ECDH)epk, apu, apvRecommended+ (Recommandé+)
ECDH-ES+A128KW/A192KW/A256KWECDH + AES Key Wrapepk, apu, apvRecommended/Optional (Recommandé/Optionnel)
A128GCMKW / A192GCMKW / A256GCMKWAES GCM Key Wrap (Enveloppement de clé AES GCM)iv, tagOptional (Optionnel)
PBES2-HS256/384/512+A128/192/256KWPassword-based key encryption (Chiffrement de clé basé sur mot de passe)p2s, p2cOptional (Optionnel)

Notes :

  • "+" indique que l'exigence peut être renforcée dans les futures versions
  • "-" indique que l'exigence peut être affaiblie dans les futures versions
  • Tous les algorithmes sauf "dir" et "ECDH-ES" génèrent une JWE Encrypted Key (Clé chiffrée JWE)

4.2-4.8 Descriptions détaillées des algorithmes

4.2 Chiffrement de clé RSA (RSAES-PKCS1-v1_5)

  • ID d'algorithme : RSA1_5
  • Taille minimale de clé : 2048 bits

4.3 Chiffrement de clé RSA-OAEP

  • RSA-OAEP : Utilise SHA-1 et MGF1
  • RSA-OAEP-256 : Utilise SHA-256 et MGF1
  • Taille minimale de clé : 2048 bits

4.4 AES Key Wrap (Enveloppement de clé AES)

  • A128KW : Clé de 128 bits
  • A192KW : Clé de 192 bits
  • A256KW : Clé de 256 bits
  • Utilise l'algorithme AES Key Wrap défini dans la RFC 3394

4.5 Chiffrement direct (dir)

  • Utilise directement une clé symétrique pré-partagée comme CEK
  • Ne produit pas de JWE Encrypted Key (Clé chiffrée JWE)

4.6 Accord de clé ECDH-ES

  • Utilise l'accord de clé Elliptic Curve Diffie-Hellman Ephemeral Static (Diffie-Hellman à courbe elliptique éphémère statique)
  • Paramètres d'en-tête supplémentaires :
    • epk (Ephemeral Public Key) (Clé publique éphémère) : Clé publique éphémère
    • apu (Agreement PartyUInfo) (Informations sur la partie U de l'accord) : Informations sur la partie U
    • apv (Agreement PartyVInfo) (Informations sur la partie V de l'accord) : Informations sur la partie V
  • Utilise Concat KDF pour la dérivation de clé

4.7 Chiffrement de clé AES GCM

  • Utilise l'algorithme AES GCM pour l'enveloppement de clé
  • Paramètres d'en-tête supplémentaires :
    • iv (Initialization Vector) (Vecteur d'initialisation) : Vecteur d'initialisation
    • tag (Authentication Tag) (Étiquette d'authentification) : Étiquette d'authentification

4.8 Chiffrement de clé basé sur mot de passe PBES2

  • Utilise PBES2 (Password-Based Encryption Scheme 2) (Schéma de chiffrement basé sur mot de passe 2)
  • Combine HMAC-SHA2 et AES Key Wrap
  • Paramètres d'en-tête supplémentaires :
    • p2s (PBES2 Salt Input) (Entrée de sel PBES2) : Entrée de sel
    • p2c (PBES2 Count) (Compteur PBES2) : Nombre d'itérations

Recommandations d'implémentation :

  • Privilégier l'utilisation de ECDH-ES et RSA-OAEP
  • Éviter les algorithmes avec des faiblesses connues (tels que RSA1_5)
  • Choisir des tailles de clé appropriées pour votre application