Choix des méthodes de déchiffrement pour la liaison de destinataire

Pour configurer le client pour le déchiffrement des réponses pour la liaison de destinataire, indiquez les données et les méthodes d'algorithme de transformation à utiliser lorsque le client déchiffre les messages SOAP.

Avant de commencer

Avant de suivre cette procédure, voir les informations de chiffrement XML pour vous familiariser avec le chiffrement et le déchiffrement de messages SOAP.

Pour configurer le déchiffrement en vue de sécuriser des messages SOAP, vous devez procéder comme suit :

  • Configurez le déchiffrement des portions du message SOAP.
  • Indiquez les méthodes de déchiffrement.

Vous pouvez configurer ces méthodes à l'aide des API WSSDecryption et WSSDecryptPart. Vous pouvez aussi configurer des ensembles de règles à l'aide de la console d'administration pour configurer les méthodes de déchiffrement.

A propos de cette tâche

Certaines définitions liées au chiffrement se basent sur la spécification XML-Encryption. Les informations suivantes déterminent des termes liés au chiffrement de données :

Algorithme de méthode de chiffrement des données :
Les algorithmes de chiffrement de données indiquent l'URI de l'algorithme pour la méthode de chiffrement des données. Cet algorithme chiffre et déchiffre des données dans des blocs muti-octets de taille fixe.

Par défaut, Java™ Cryptography Extension (JCE) est livré avec des chiffrements à force restreinte ou limitée. Pour utiliser les algorithmes de chiffrement AES (Advanced Encryption Standard) 192 bits et 256 bits, vous devez appliquer des fichiers de règles de juridiction sans restriction.

Pour le AES256-cbc et le AES192-cbc algorithmes, vous devez télécharger les fichiers de stratégie Java™ Cryptography Extension (JCE) sans restriction à partir du site Web suivant : https://www.ibm.com/developerworks/java/jdk/security/index.html.

Algorithme de méthode de chiffrement de clé :
Les algorithmes de déchiffrement de clés indiquent l'URI (Uniform Resource Identifier) de l'algorithme de la méthode de déchiffrement de clés. L'algorithme désigne les algorithmes de chiffrement de clé publique pour chiffrer et déchiffrer des clés.
Par défaut, l'algorithme RSA_OAEP utilise l'algorithme de synthèse (digest) SHA1 pour calculer une synthèse de message dans le cadre du chiffrement. Vous pouvez éventuellement utiliser l'algorithme de synthèse de message SHA256 ou SHA512 en indiquant une propriété d'algorithme de chiffrement des clés. Le nom de la propriété est : com.ibm.wsspi.wssecurity.enc.rsaoaep.DigestMethod. La valeur de la propriété correspond à l'une des URI suivantes de la méthode simplifiée :
  • https://www.w3.org/2001/04/xmlenc#sha256
  • https://www.w3.org/2001/04/xmlenc#sha512

Par défaut, l'algorithme RSA_OAEP utilise une chaîne null pour la chaîne d'octets de codage facultative pour OAEPParams. Vous pouvez fournir une chaîne d'octets de codage en définissant une propriété d'algorithme de chiffrement des clés. Pour le nom de la propriété, vous pouvez utiliser com.ibm.wsspi.wssecurity.enc.rsaoaep.OAEPparams. La valeur de la propriété correspond à la valeur codée en base 64 de la chaîne d'octets.

Important: Vous pouvez définir ces méthodes de digestion et ces propriétés OAEPParams uniquement côté générateur. Côté client, ces propriétés sont lues à partir du message SOAP entrant.

Pour le KW_AES256 et le KW_AES192 algorithmes de chiffrement à clé, vous devez télécharger les fichiers de stratégie JCE sans restriction à partir du site Web suivant : https://www.ibm.com/developerworks/java/jdk/security/index.html.

Important: Votre pays d'origine peut avoir des restrictions sur l'importation, la possession, l'utilisation ou la réexportation vers un autre pays de logiciels de cryptage. Avant de télécharger ou d'utiliser des fichiers de règles non restreintes, vous devez vérifier les lois en vigueur dans votre pays, sa réglementation et ses règles concernant l'importation, la possession, l'utilisation et la réexportation du logiciel de chiffrement afin de déterminer si cela est autorisé.

Pour effectuer la configuration de déchiffrement, vous devez indiquer l'URI de l'algorithme et son type de syntaxe. Si l'URI est le même pour plusieurs types de syntaxe, vous devez le définir pour chaque type de syntaxe. WebSphere® Application Server prend en charge les types d'utilisation de décryptage suivants :

Tableau 1. Types d'utilisation du décryptage . Ces types de décryptage sont pris en charge par WebSphere Application Server.
Types de syntaxe Descriptif
Chiffrement des données Indique l'URI d'algorithme utilisé pour le chiffrement et le déchiffrement des données. Chiffre et déchiffre des données sous la forme de blocs de plusieurs octets à taille fixe.
Chiffrement des clés Indique l'URI d'algorithme utilisé pour le chiffrement et le déchiffrement des clés de chiffrement.

Pour configurer les algorithmes de déchiffrement et de portions déchiffrées, utilisez les API WSSDecryption et WSSDecryptPart ou configurez des ensembles de règles à l'aide de la console d'administration.

Note: Les ensembles de règles ne prennent pas en charge le chiffrement à clé symétrique. Si vous utilisez l'API WSS pour le chiffrement de clé symétrique, vous ne pourrez pas interopérer avec les noeuds finaux des services web utilisant des ensembles de règles.
Si vous utilisez les API WSS, les API WSSDecryption et WSSDecryptPart indiquent les méthodes d'algorithme utilisées lorsque le client déchiffre les messages SOAP.
  • Utilisez l'API WSSDecryption pour configurer les algorithmes de chiffrement de données et les méthodes d'algorithme de chiffrement de clé.
  • Utilisez l'API WSSDecryptPart pour configurer une méthode d'algorithme de transformation.

L'API WSS suit la procédure de haut niveau pour indiquer les méthodes d'algorithme de déchiffrement et de portions déchiffrées à utiliser lors de la configuration du client pour le déchiffrement de la réponse :

Procédure

  1. A l'aide de l'API WSSDecryption, elle ajoute l'algorithme de chiffrement de données obligatoire.
    Cet algorithme sert à chiffrer ou à déchiffrer des parties d'un message SOAP. Les algorithmes de déchiffrement de données indiquent l'URI (Uniform Resource Identifier) de l'algorithme de la méthode de déchiffrement de données.

    L'algorithme de chiffrement de données par défaut est AES 128. Le nom de chiffrement de données est AES128 et l'URI de l'algorithme de chiffrement de données est https://www.w3.org/2001/04/xmlenc#aes128-cbc. WebSphere Application Server prend en charge les algorithmes de déchiffrement de données pré-configurés suivants :

    • AES128: https://www.w3.org/2001/04/xmlenc#aes128-cbc

      L'algorithme AES 128 est la méthode d'algorithme de données par défaut.

    • AES256: https://www.w3.org/2001/04/xmlenc#aes256-cbc

      Pour utiliser cet algorithme AES 256-cbc, vous devez télécharger le fichier de stratégie Java Cryptography Extension (JCE) sans restriction à partir du site Web suivant : https://www.ibm.com/developerworks/java/jdk/security/index.html.

    • AES192: https://www.w3.org/2001/04/xmlenc#aes192-cbc

      N'utilisez pas l'algorithme de chiffrement de données 192 bits si vous voulez que l'application configurée soit compatible avec le profil BSP (Basic Security Profile).

      Pour utiliser cet algorithme AES 192-cbc, vous devez télécharger le fichier de stratégie Java Cryptography Extension (JCE) sans restriction à partir du site Web suivant : https://www.ibm.com/developerworks/java/jdk/security/index.html.

    • TRIPLE_DES : https://www.w3.org/2001/04/xmlenc#tripledes-cbc
  2. Si besoin est, elle modifie la méthode de l'API WSSEncryption pour indiquer un autre algorithme de chiffrement de données.
    Par exemple, vous pouvez ajouter le code suivant pour modifier l'algorithme AES 128 par défaut à l'algorithme Triple DES :
    dec.addAllowedKeyEncryptionMethod(WSSDecryption.TRIPLE_DES); 
  3. A l'aide de l'API WSSDecryption, elle ajoute l'algorithme de chiffrement de clé obligatoire.
    L'algorithme de chiffrement de clé est utilisé pour le chiffrement de portions d'un message SOAP. Si aucune clé n'est requise pour le chiffrement des données, vous devez indiquer WSSDecryption.encryptKey(false).

    L'algorithme de chiffrement de clé sélectionné côté destinataire doit correspondre à la méthode de chiffrement des clés sélectionnée côté générateur.

    La valeur de l'algorithme de chiffrement de clé par défaut est RSA_OAEP. Le nom de chiffrement de clé est KW_RSA_OAEP et l'URI de l'algorithme de chiffrement de clé est https://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p. WebSphere Application Server prend en charge les algorithmes de chiffrement de clés pré-configurés suivants :

    • KW_AES128: https://www.w3.org/2001/04/xmlenc#kw-aes128
    • KW_AES192: https://www.w3.org/2001/04/xmlenc#kw-aes192

      Pour utiliser cet algorithme AES 192 d'encapsulage de clé, vous devez télécharger le fichier de stratégie JCE (Java Cryptography Extension) sans restriction à partir du site Web suivant : https://www.ibm.com/developerworks/java/jdk/security/index.html.

      Restriction: N'utilisez pas l'algorithme de chiffrement à clé de 192 bits si vous souhaitez que votre application configurée soit conforme au profil de sécurité de base (BSP).
    • KW_AES256: https://www.w3.org/2001/04/xmlenc#kw-aes256

      Pour utiliser cet algorithme AES 256-cbc d'enveloppement de clé, vous devez télécharger le fichier de stratégie Java Cryptography Extension (JCE) sans restriction à partir du site Web suivant : https://www.ibm.com/developerworks/java/jdk/security/index.html.

    • KW_RSA_OAEP : https://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p.

      L'algorithme KW_RSA_OAEP est la méthode d'algorithme de clé par défaut.

      Lors de l'exécution avec le kit de développement de logiciels (SDK) version 1.4, la liste des algorithmes de transport de clés pris en charge n'inclut pas cet algorithme. L'algorithme apparaît dans la liste des algorithmes de transport de clé pris en charge avec SDK Version 1.5. Voir plus d'informations sur https://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p

    • KW_RSA_15: https://www.w3.org/2001/04/xmlenc#rsa-1_5
    • KW_TRIPLE_DES : https://www.w3.org/2001/04/xmlenc#kw-tripledes
    Note: Pour la conversation sécurisée des services Web, l'API WSSEncryption peut spécifier des informations supplémentaires liées à la clé, telles que :
    • algorithmName
    • keyLength
  4. Si besoin est, elle utilise la méthode d'API WSSDecryption pour modifier d'autres algorithmes de chiffrement de clé.
    Par exemple, vous pouvez ajouter le code suivant pour remplacer l'algorithme de chiffrement de clé par défaut KW_RSA_OAEP par l'algorithme TRIPLE_DES :
    dec.addAllowedKeyEncryptionMethod(WSSDecryption.KW_TRIPLE_DES);
  5. A l'aide de l'API WSSDecryptPart, elle ajoute un algorithme de transformation si besoin est.
    Il n'existe pas d'algorithme de transformation par défaut. Cependant, WebSphere Application Server fournit une partie décryptée préconfigurée,WSSDecryptPart.TRANSFORM_ATTACHMENT_CIPHERTEXT , cela peut être ajouté.

Résultats

S'il existe une condition d'erreur, une WSSException est fournie. Si l'opération aboutit, l'API appelle la méthode WSSConsumerContext.process(), l'en-tête WS-Security est validé et le message SOAP est sécurisé avec la sécurité des services Web.

Exemple

L'exemple suivant fournit un code d'API WSS pour déchiffrer le contenu du corps et remplacer les valeurs par défaut des algorithmes de chiffrement de données et de clé :

// Get the message context
   Object msgcontext = getMessageContext();

// Generate the WSSFactory instance 
   WSSFactory factory = WSSFactory.getInstance();

// Generate the WSSConsumingContext instance 
   WSSConsumingContext gencont = factory.newWSSConsumingContext();

// Generate the callback handler
   X509ConsumeCallbackHandler callbackHandler = new 
      X509ConsumeCallbackHandler(
                                 "",
                                 "enc-sender.jceks",
                                 "jceks", 
                                 "storepass".toCharArray(), 
                                 "alice", 
                                 "keypass".toCharArray(), 
                                 "CN=Alice, O=IBM, C=US");

// Generate WSSDecryption instance 
   WSSDecryption dec = factory.newWSSDecryption(X509Token.class, 
                                                callbackHandler);

// Set the candidates for the data encryption method
// DEFAULT : WSSDecryption.AES128
   dec.addAllowedEncryptionMethod(WSSDecryption.AES128);
   dec.addAllowedEncryptionMethod(WSSDecryption.AES192);

// Set the candidates for the key encryption method
// DEFAULT : WSSDecryption.KW_RSA_OAEP
   dec.addAllowedKeyEncryptionMethod(WSSDecryption.KW_TRIPLE_DES);

// Add the WSSDecryption to WSSConsumingContext 
   concont.add(dec);

// Validate the WS-Security header
concont.process(msgcontext);