Méthodes de chiffrement
Pour les paramètres de liaison du générateur de demande, les méthodes de chiffrement incluent la spécification des algorithmes de chiffrement de données et de clés à utiliser pour chiffrer le message SOAP. L'API WSS destinée au chiffrement (WSSEncryption) indique le nom de l'algorithme et l'URI (Uniform Resource Identifier) de l'algorithme correspondant pour les méthodes de chiffrement de données et de clés. Si les algorithmes de chiffrement de données et de clés sont spécifiés, seuls les éléments chiffrés à l'aide de ces algorithmes sont admis.
Algorithmes de chiffrement de données
L'algorithme de chiffrement de données permet de chiffrer des parties du message SOAP, y compris le corps et la signature. Les algorithmes de chiffrement de données indiquent l'URI (Uniform Resource Identifier) de l'algorithme pour chaque type d'algorithmes de chiffrement de données.
| Nom de l'algorithme 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, TRIPLE DES : https://www.w3.org/2001/04/xmlenc#tripledes-cbc |
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.
L'algorithme de chiffrement de données configuré pour le chiffrement côté générateur doit correspondre à l'algorithme de chiffrement de données configuré pour le déchiffrement côté destinataire.
Algorithmes de chiffrement de clés
Cet algorithme permet de chiffrer et de déchiffrer les clés. Ces informations de clés permettent d'indiquer la configuration requise pour générer la clé de la signature numérique et du chiffrement. Les configurations des informations de signature et de chiffrement peuvent partager les informations de clé. Les informations de clés côté destinataire permettent d'indiquer les informations de clé utilisées pour valider la signature numérique dans le message reçu ou pour déchiffrer les parties chiffrées du message. Le générateur de la requête est configuré pour le client.
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. Les algorithmes de chiffrement de clés pré-configurés suivants sont pris en charge :
| API WSS | URI |
|---|---|
| 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 | URI de l'algorithme de chiffrement de clés, TRIPLE DES avec encapsulation de clé : https://www.w3.org/2001/04/xmlenc#kw-tripledes |
- algorithmName
- keyLength
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.
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.
L'algorithme de chiffrement de clés du générateur doit correspondre à l'algorithme de déchiffrement de clés configuré pour le destinataire.
Voici une exemple de code de chiffrement utilisant la méthode de chiffrement de données Triple DES et la méthode de chiffrement de clés RSA1.5 :
// get the message context
Object msgcontext = getMessageContext();
// generate WSSFactory instance
WSSFactory factory = WSSFactory.getInstance();
// generate 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 to the encryption
SecurityToken token = factory.newSecurityToken(X509Token.class,
callbackHandler);
// generate WSSEncryption instance to encrypt the SOAP body content
WSSEncryption enc = factory.newWSSEncryption(token);
enc.addEncryptPart(WSSEncryption.BODY_CONTENT);
// 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);