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: http://www.w3.org/2001/04/xmlenc#aes128-cbc |
WSSEncryption.AES192 | URI de l'algorithme de chiffrement de données, AES 192: http://www.w3.org/2001/04/xmlenc#aes192-cbc |
WSSEncryption.AES256 | URI de l'algorithme de chiffrement de données, AES 256: http://www.w3.org/2001/04/xmlenc#aes256-cbc |
WSSEncryption.TRIPLE_DES | URI de l'algorithme de chiffrement de données, TRIPLE DES: http://www.w3.org/2001/04/xmlenc#tripledes-cbc |
Par défaut, l'extension JCE (Java™ Cryptography Extension) est fournie avec des codes de chiffrement de puissance 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 les algorithmes AES256-cbc et AES192-CBC, vous devez télécharger les fichiers de règles JCE (Java Cryptography Extension) sans restriction, à partir du site Web suivant : http://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, clé AES 128: http://www.w3.org/2001/04/xmlenc#kw-aes128 |
WSSEncryption.KW_AES192 | URI de l'algorithme de chiffrement de clés, clé AES 192: http://www.w3.org/2001/04/xmlenc#kw-aes192 Restriction : 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).
|
WSSEncryption.KW_AES256 | URI de l'algorithme de chiffrement de clés, clé AES 256: http://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, clé RSA OAEP: http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p |
WSSEncryption.KW_RSA15 | URI de l'algorithme de chiffrement de clés, clé RSA 1.5 : http://www.w3.org/2001/04/xmlenc#rsa-1_5 |
WSSEncryption.KW_TRIPLE_DES | URI de l'algorithme de chiffrement de clés, clé TRIPLE DES: http://www.w3.org/2001/04/xmlenc#kw-tripledes |
- algorithmName
- keyLength
- http://www.w3.org/2001/04/xmlenc#sha256
- http://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 de 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 les algorithmes de chiffrement de clés KW-AES256 et KW-AES192, vous devez télécharger les fichiers de règles JCE, version non limitée (unrestricted), à partir du site Web : http://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 :
// Obtenir le contexte du message
Object msgcontext = getMessageContext();
// Générer une instance WSSFactory
WSSFactory factory = WSSFactory.getInstance();
// Générer une instance WSSGenerationContext
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// Générer le gestionnaire d'appel
X509GenerateCallbackHandler callbackHandler = new X509GenerateCallbackHandler(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"bob",
null,
"CN=Bob, O=IBM, C=US",
null);
// génération du jeton de sécurité utilisé pour le chiffrement
SecurityToken token = factory.newSecurityToken(X509Token.class,
callbackHandler);
// génération de l'instance WSSEncryption pour le chiffrement du contenu du corps de message SOAP
WSSEncryption enc = factory.newWSSEncryption(token);
enc.addEncryptPart(WSSEncryption.BODY_CONTENT);
// définition de la méthode de chiffrement de données
// DEFAULT: WSSEncryption.AES128
enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);
// définition de la méthode de chiffrement de clés
// DEFAULT: WSSEncryption.KW_RSA_OAEP
enc.setEncryptionMethod(WSSEncryption.KW_RSA15);
// ajout de WSSEncryption à WSSGenerationContext
gencont.add(enc);
// Générer l'en-tête WS-Security
gencont.process(msgcontext);