Métodos de cifrado
Para los valores de los enlaces del generador de solicitudes, los métodos de cifrado incluyen la especificación de algoritmos de cifrado de datos y claves para utilizar el cifrado del mensaje SOAP. La API de WSS para cifrado (WSSEncryption) especifica el nombre del algoritmo y el URI (Uniform Resource Identifier) del algoritmo coincidente de los métodos de cifrado de datos y de claves. Si se especifican los algoritmos de cifrado de datos y de claves, sólo se aceptan los elementos que coinciden con dichos algoritmos.
Algoritmos de cifrado de datos
El algoritmo de cifrado de datos se utiliza para cifrar las partes del mensaje SOAP, incluido el cuerpo y la firma. Los algoritmos de cifrado de datos especifican el URI (Uniform Resource Identifier) del algoritmo para cada tipo de algoritmo de cifrado de datos.
Nombre del algoritmo de cifrado de datos | URI del algoritmo |
---|---|
WSSEncryption.AES128 (el valor predeterminado) | Un URI del algoritmo de cifrado de datos, AES 128: http://www.w3.org/2001/04/xmlenc#aes128-cbc |
WSSEncryption.AES192 | Un URI del algoritmo de cifrado de datos, AES 192: http://www.w3.org/2001/04/xmlenc#aes192-cbc |
WSSEncryption.AES256 | Un URI del algoritmo de cifrado de datos, AES 256: http://www.w3.org/2001/04/xmlenc#aes256-cbc |
WSSEncryption.TRIPLE_DES | Un URI del algoritmo de cifrado de datos, TRIPLE DES: http://www.w3.org/2001/04/xmlenc#tripledes-cbc |
De forma predeterminada, JCE (Java™ Cryptography Extension) se facilita con cifrados de nivel limitado o restringido. Para utilizar algoritmos de cifrado AES (Advanced Encryption Standard) de 192 bits y 256 bits, debe aplicar archivos de política de jurisdicción ilimitada.
Para los algoritmos AES256-cbc y AES192-CBC, debe descargar los archivos de políticas JCE (Java™ Cryptography Extension) sin restricciones desde el siguiente sitio web: http://www.ibm.com/developerworks/java/jdk/security/index.html.
El algoritmo de cifrado de datos configurado para el cifrado para el extremo del generador debe coincidir con el algoritmo de cifrado de datos configurado para el descifrado en el extremo del consumidor.
Algoritmos de cifrado de claves
Este algoritmo se utiliza para cifrar y descifrar las claves. Esta información de claves se utiliza para especificar la configuración necesaria para generar la clave para firma digital y cifrado. Las configuraciones de la información de firmas y de la información de cifrado pueden compartir la información de claves. La información de claves del extremo del consumidor se utiliza para especificar la información relacionada con la clave que se utiliza para validar la firma digital en el mensaje recibido o para descifrar las partes cifradas del mensaje. El generador de solicitudes se configura para el cliente.
Los algoritmos de cifrado de claves especifican el URI (Uniform Resource Identifier) del algoritmo del método de cifrado de claves. Se da soporte a los siguientes algoritmos de cifrado de claves preconfigurados:
API de WSS | URI |
---|---|
WSSEncryption.KW_AES128 | Un URI del algoritmo de cifrado de claves, envoltura de claves AES 128: http://www.w3.org/2001/04/xmlenc#kw-aes128 |
WSSEncryption.KW_AES192 | Un URI del algoritmo de cifrado de claves, envoltura de claves AES 192: http://www.w3.org/2001/04/xmlenc#kw-aes192 Restricción: No utilice el algoritmo de cifrado de datos de 192 bits si desea que la aplicación configurada cumpla con BSP (Basic Security Profile).
|
WSSEncryption.KW_AES256 | Un URI del algoritmo de cifrado de claves, envoltura de claves AES 256: http://www.w3.org/2001/04/xmlenc#kw-aes256 |
WSSEncryption.KW_RSA_OAEP (el valor predeterminado) | Un URI del algoritmo de cifrado de claves, envoltura de claves RSA OAEP: http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p |
WSSEncryption.KW_RSA15 | Un URI del algoritmo de cifrado de claves, envoltura de claves RSA 1.5: http://www.w3.org/2001/04/xmlenc#rsa-1_5 |
WSSEncryption.KW_TRIPLE_DES | Un URI del algoritmo de cifrado de claves, con la envoltura de claves 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
Por omisión, el algoritmo RSA-OAEP utiliza una serie null para la serie de octeto de codificación opcional de los OAEPParams. Puede proporcionar una serie de octetos de codificación explícita especificando una propiedad de algoritmo del cifrado de claves. Como nombre de la propiedad, puede especificar com.ibm.wsspi.wssecurity.enc.rsaoaep.OAEPparams. El valor de la propiedad es el valor codificado en base 64 de la serie de octeto.
Para los algoritmos de cifrado de claves KW-AES256 y KW-AES192, debe descargar los archivos de políticas JCE sin restricciones desde el sitio web siguiente: http://www.ibm.com/developerworks/java/jdk/security/index.html.
El algoritmo de cifrado de claves del generador debe coincidir con el algoritmo de descifrado de claves que se configura para el consumidor.
Este ejemplo proporciona código de ejemplo para que el cifrado utilice Triple DES como método de cifrado de datos y para utilizar RSA1.5 para el método de cifrado de claves:
// obtener el contexto de mensaje
Object msgcontext = getMessageContext();
// generar la instancia WSSFactory
WSSFactory factory = WSSFactory.getInstance();
// generar la instancia de WSSGenerationContext
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// generar el manejador de retorno de llamada
X509GenerateCallbackHandler callbackHandler = new X509GenerateCallbackHandler(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"bob",
null,
"CN=Bob, O=IBM, C=US",
null);
// genera la señal de seguridad utilizada para el cifrado
SecurityToken token = factory.newSecurityToken(X509Token.class,
callbackHandler);
// generar la instancia de WSSEncryption para cifrar el contenido del texto SOAP
WSSEncryption enc = factory.newWSSEncryption(token);
enc.addEncryptPart(WSSEncryption.BODY_CONTENT);
// establecer el método de cifrado de datos
// DEFAULT: WSSEncryption.AES128
enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);
// establecer el método de cifrado de datos
// DEFAULT: WSSEncryption.KW_RSA_OAEP
enc.setEncryptionMethod(WSSEncryption.KW_RSA15);
// añadir WSSEncryption a WSSGenerationContext
gencont.add(enc);
// generar la cabecera de WS-Security
gencont.process(msgcontext);