Selección de los métodos de descifrado para el enlace del consumidor
Para configurar el cliente para el descifrado de respuestas para el enlace del consumidor, especifique qué datos y métodos de algoritmo de transformación se van a utilizar cuando el cliente descifra los mensajes SOAP.
Antes de empezar
Antes de completar estos pasos, lea la información de cifrado de XML para familiarizarse con el cifrado y el descifrado de mensajes SOAP.
Para completar la configuración de descifrado con objeto de proteger mensajes SOAP, debe completar las tareas siguientes:
- Configurar el descifrado de las partes del mensaje SOAP
- Especificar los métodos de descifrado.
Puede configurar los métodos de descifrado utilizando las API WSSDecryption y WSSDecryptPart. O bien también puede configurar conjuntos de políticas utilizando la consola administrativa para configurar los métodos de descifrado.
Acerca de esta tarea
Algunas de las definiciones relacionadas con el cifrado se basan en la especificación XML-Encryption. La información siguiente define algunos términos relacionados con el cifrado de datos:
- Algoritmo de método de cifrado de datos
- Los algoritmos de cifrado de datos especifican el URI (identificador de recursos uniforme) del algoritmo del método de cifrado de datos. Este algoritmo cifra y descifra los datos en bloques de tamaño fijo de varios octetos.
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.
- Algoritmo de método de cifrado de claves
- Los algoritmos de cifrado de claves especifican el URI (identificador de recursos uniforme) del algoritmo del método de cifrado de claves. El algoritmo representa los algoritmos de cifrado de claves públicas
que se especifican para cifrar y descifrar claves. De forma predeterminada, el algoritmo SHA1 utiliza el algoritmo de resumen de mensajes SHA1 para calcular la numeración de mensajes como parte de la operación de cifrado. De manera opcional, puede utilizar el algoritmo de resumen de mensajes SHA256 o SHA512 especificando una propiedad de algoritmo de cifrado de claves. El nombre de la propiedad es: com.ibm.wsspi.wssecurity.enc.rsaoaep.DigestMethod. El valor de propiedad es uno de los URI siguientes del método de conversión:
- http://www.w3.org/2001/04/xmlenc#sha256
- http://www.w3.org/2001/04/xmlenc#sha512
De forma predeterminada, el algoritmo RSA_OAEP utiliza una serie null para la serie del 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.
Importante: Puede establecer este método de numeración y las propiedades OAEPParams sólo en el generador. En el consumidor, estas propiedades se leen desde el mensaje SOAP entrante.Para los algoritmos de cifrado de claves KW_AES256 y KW_AES192, debe descargar los archivos de política JCE sin limitaciones desde el sitio web siguiente: http://www.ibm.com/developerworks/java/jdk/security/index.html.
Importante: Es posible que su país de origen tenga restricciones sobre la importación, posesión, utilización o reexportación a otro país de software de cifrado. Antes de descargar o bien utilizar los archivos de políticas sin restricciones, debe consultar las leyes de su país, sus regulaciones y las políticas relativas a la importación, posesión, uso y reexportación de software cifrado, para determinar si está permitido.
Para completar la configuración de descifrado, debe especificar el URI (identificador de recursos uniforme) del algoritmo y su tipo de uso. Si se utiliza el URI para varios tipos de uso, debe definir el URI para cada tipo de uso. WebSphere Application Server da soporte a los siguientes tipos de uso de descifrado:
Tipos de uso | Descripción |
---|---|
Cifrado de datos | Especifica el URI del algoritmo que se utiliza para el cifrado y el descifrado de datos. Cifra y descifra los datos en data en bloques de tamaño fijo de varios octetos. |
Cifrado de claves | Especifica el URI del algoritmo que se utiliza para el cifrado y el descifrado de la clave de cifrado. |
Para configurar el descifrado y los algoritmos de la parte descifrada, utilice las API WSSDecryption y WSSDecryptPart, o configure conjuntos de políticas utilizando la consola administrativa.
- Utilice la API WSSDecryption para configurar los métodos del algoritmo de cifrado de datos y del algoritmo de cifrado de claves.
- Utilice la API WSSDecryptPart para configurar un método de algoritmo de transformación.
El proceso de la API de WSS completa los siguientes pasos de alto nivel para especificar qué descifrado y métodos del algoritmo de la parte descifrada se van a utilizar, cuando se configura el cliente para el descifrado de la respuesta:
Procedimiento
Resultados
Ejemplo
En el ejemplo siguiente se proporciona código de ejemplo de la API de WSS para descifrar el contenido del cuerpo, así como también, cambiar los valores predeterminados de los algoritmos de cifrado de datos y de claves:
// Obtener el contexto de mensaje
Object msgcontext = getMessageContext();
// Generar la instancia WSSFactory
WSSFactory factory = WSSFactory.getInstance();
// Generar la instancia WSSConsumingContext
WSSConsumingContext gencont = factory.newWSSConsumingContext();
// Generar el manejador de retorno de llamada
X509ConsumeCallbackHandler callbackHandler = new
X509ConsumeCallbackHandler(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"alice",
"keypass".toCharArray(),
"CN=Alice, O=IBM, C=US");
// Generar la instancia WSSDecryption
WSSDecryption dec = factory.newWSSDecryption(X509Token.class,
callbackHandler);
// Establecer los candidatos para el método de cifrado de datos
// DEFAULT : WSSDecryption.AES128
dec.addAllowedEncryptionMethod(WSSDecryption.AES128);
dec.addAllowedEncryptionMethod(WSSDecryption.AES192);
// Establecer los candidatos para el método de cifrado de claves
// DEFAULT : WSSDecryption.KW_RSA_OAEP
dec.addAllowedKeyEncryptionMethod(WSSDecryption.KW_TRIPLE_DES);
// Añadir WSSDecryption a WSSConsumingContext
concont.add(dec);
// Validar la cabecera de WS-Security
concont.process(msgcontext);