Choix des méthodes de chiffrement pour les liaisons de générateur

Pour configurer le client pour le chiffrement des demandes pour la liaison de générateur, vous devez indiquer les méthodes de chiffrement à utiliser lorsque le client 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 indiquer les méthodes d'algorithme à utiliser lorsque le client chiffre les messages SOAP, procédez comme suit :
  • Utilisez l'API WSSEncryption pour configurer les méthodes d'algorithme de chiffrement de données et d'algorithme de chiffrement de clé.
  • Utilisez l'API WSSEncryptPart pour configurer une méthode d'algorithme de transformation, si besoin est. Par défaut, il n'existe pas d'algorithme de transformation.

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 la méthode servant à chiffrer la clé. 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 de message SHA1 pour calculer une synthèse de message pendant le 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 nulle 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é.
Tableau 1. Types d'utilisation du chiffrement . Le type de syntaxe de chiffrement décrit les méthodes de chiffrement.
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.

Chiffrement des données

WebSphere® Application Server prend en charge les algorithmes de chiffrement de données préconfigurés suivants :

Tableau 2. Algorithmes de cryptage des données . Ces algorithmes de chiffrement préconfigurés sont pris en charge par WebSphere Application Server.
Nom de chiffrement de données URI d'algorithme
WSSEncryption.AES128 (valeur par défaut) URI de l'algorithme de chiffrement de données, AES 128 : https://www.w3.org/2001/04/xmlenc#aes128-cbc
WSSEncryption.AES192 URI de l'algorithme de chiffrement de données, AES 192 : https://www.w3.org/2001/04/xmlenc#aes192-cbc
WSSEncryption.AES256 URI de l'algorithme de chiffrement de données, AES 256 : https://www.w3.org/2001/04/xmlenc#aes256-cbc
WSSEncryption.TRIPLE_DES URI de l'algorithme de chiffrement de données 3DES : https://www.w3.org.2001/04/xmlenc#tripledes-cbc

Chiffrement des clés

WebSphere Application Server prend en charge les algorithmes de chiffrement de clés pré-configurés suivants :

Tableau 3. Algorithmes de chiffrement à clé . Ces algorithmes de chiffrement préconfigurés sont pris en charge par WebSphere Application Server.
Nom de chiffrement de clé URI d'algorithme
WSSEncryption.KW_AES128 URI de l'algorithme de chiffrement de clés, AES 128 avec encapsulation de clé : https://www.w3.org/2001/04/xmlenc#kw-aes128
WSSEncryption.KW_AES192 URI de l'algorithme de chiffrement de clés, AES 192 avec encapsulation de clé : https://www.w3.org/2001/04/xmlenc#kw-aes192
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).
WSSEncryption.KW_AES256 URI de l'algorithme de chiffrement de clés, AES 256 avec encapsulation de clé : https://www.w3.org/2001/04/xmlenc#kw-aes256
WSSEncryption.KW_RSA_OAEP (valeur par défaut) URI de l'algorithme de chiffrement de clés, RSA OAEP avec encapsulation de clé : https://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
WSSEncryption.KW_RSA15 URI de l'algorithme de chiffrement de clés, RSA 1.5 avec encapsulation de clé : https://www.w3.org/2001/04/xmlenc#rsa-1_5
WSSEncryption.KW_TRIPLE_DES https://www.w3.org/2001/04/xmlenc#kw-tripledes

Pour configurer les méthodes d'algorithme de chiffrement et de parties chiffrées, utilisez l'API WSSEncryption 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.

L'API WSS suit la procédure de haut niveau pour indiquer les méthodes de chiffrement à utiliser lors de la configuration du client pour le chiffrement de la demande :

Procédure

  1. A l'aide de l'API WSSEncryption, 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 chiffrement de données indiquent l'URI de l'algorithme pour la méthode de chiffrement des données.

    La configuration du générateur client doit correspondre à celle du fournisseur destinataire.

    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 supporte les algorithmes de chiffrement de données préconfigurés suivants :

    • AES 128 : 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.

    • AES 192 : 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.

    • AES 256 : 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.

    • TRIPLEDES : 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 :
    // Default data encryption algorithm: AES128
    WSSEncryption enc = factory.newWSSEncryption(x509t); 
       enc.setEncryptionMethod(EncryptionMethod.TRIPLEDES_CBC);
    gencont.add(enc); 
  3. A l'aide de l'API WSSEncryption, 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 la clé de chiffrement, utilisée pour chiffrer les parties du message, n'est pas chiffrée, l'API de déchiffrement choisit false pour correspondre à cette clé.

    La configuration du générateur client doit correspondre à celle du fournisseur destinataire.

    La valeur de l'algorithme de chiffrement de clé par défaut est l'encapsulation de clé RSA OAP. 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.

      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).

      KW AES 256 : 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 RSA15 : 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

Résultats

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

Exemple

L'exemple suivant fournit un exemple de code d'API WSS avec WSSEncryption.setEncryptionMethod() et WSSEncryption.setKeyEncryptionMethod().

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

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

// Generate the WSSGenerationContext instance
   WSSGenerationContext gencont = factory.newWSSGenerationContext();

// Generate callback handler
   X509GenerateCallbackHandler callbackHandler = new 
       X509GenerateCallbackHandler(
                                   "",
                                   "enc-sender.jceks",
                                   "jceks", 
                                   "storepass".toCharArray(), 
                                   "bob", 
                                   null, 
                                   "CN=Bob, O=IBM, C=US", 
                                   null);

// Generate the security token used for encryption
   SecurityToken token = factory.newSecurityToken(X509Token.class , callbackHandler);

// Generate WSSEncryption instance 
   WSSEncryption enc = factory.newWSSEncryption(token);

// Set the data encryption method 
// DEFAULT: WSSEncryption.AES128
      enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);

// Set the key encryption method
// DEFAULT: WSSEncryption.KW_RSA_OAEP
      enc.setEncryptionMethod(WSSEncryption.KW_RSA15);

// Add the WSSEncryption to the WSSGenerationContext
   gencont.add(enc);

// Generate the WS-Security header
gencont.process(msgcontext);

Etape suivante

Pour ajouter ensuite un algorithme de transformation, voir le processus de l'API WSSEncryptPart.