Métodos de descifrado
Los algoritmos de descifrado especifican los algoritmos de cifrado de datos y claves que se utilizan para descifrar el mensaje SOAP. La API de WSS para descifrado (WSSDecryption) especifica el URI (Uniform Resource Identifier) del algoritmo de los métodos de cifrado de datos y de claves. La interfaz WSSDecryption forma parte del paquete com.ibm.websphere.wssecurity.wssapi.decryption.
Algoritmos de cifrado de datos
Los algoritmos de cifrado de datos son los algoritmos que se utilizan para cifrar y descifrar datos. Este tipo de algoritmo se utiliza para cifrar los datos y cifrar y descifrar las diferentes partes del mensaje, incluido el contenido del cuerpo del mensaje y la firma.
Los algoritmos de descifrado de datos especifican el URI (Uniform Resource Identifier) del algoritmo del método de cifrado de datos. WebSphere Application Server da soporte a los siguientes algoritmos preconfiguradosde descifrado de datos.
API de WSS | URI |
---|---|
WSSDecryption.AES128 (el valor predeterminado) | Un URI del algoritmo de cifrado de datos, AES 128: http://www.w3.org/2001/04/xmlenc#aes128-cbc |
WSSDecryption.AES192 | Un URI del algoritmo de cifrado de datos, AES 192: http://www.w3.org/2001/04/xmlenc#aes192-cbc |
WSSDecryption.AES256 | Un URI del algoritmo de cifrado de datos, AES 256: http://www.w3.org/2001/04/xmlenc#aes256-cbc |
WSSDecryption.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 debe coincidir con el algoritmo de descifrado de datos que se configura para el consumidor.
Algoritmos de cifrado de claves
Los algoritmos de cifrado de claves son algoritmos que se utilizan para cifrar y descifrar 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 (identificador de recursos uniforme) del algoritmo del método de cifrado de claves. WebSphere Application Server da soporte a los siguientes algoritmos preconfigurados de cifrado de claves.
API de WSS | URI |
---|---|
WSSDecryption.KW_AES128 | Un URI del algoritmo de cifrado de claves, envoltura de claves AES 128: http://www.w3.org/2001/04/xmlenc#kw-aes128 |
WSSDecryption.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).
|
WSSDecryption.KW_AES256 | Un URI del algoritmo de cifrado de claves, envoltura de claves AES 256: http://www.w3.org/2001/04/xmlenc#kw-aes256 |
WSSDecryption.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 |
WSSDecryption.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 |
WSSDecryption.KW_TRIPLE_DES | Un URI del algoritmo de cifrado de datos, con la envoltura de claves TRIPLE DES: http://www.w3.org/2001/04/xmlenc#kw-tripledes |
De forma predeterminada, el algoritmo RSA-OAEP utiliza el algoritmo de conversión de mensajes SHA1 para calcular la conversión de un mensaje como parte de la operación de cifrado. Si lo desea, puede utilizar el algoritmo de conversión de mensajes SHA256 o SHA512 especificando una propiedad del algoritmo del cifrado de claves. El nombre de la propiedad es: com.ibm.wsspi.wssecurity.enc.rsaoaep.DigestMethod. El valor de la propiedad es uno de los siguientes URI 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 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 de cifrado de claves. Para el 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.
Este algoritmo de cifrado de claves para el generador debe coincidir con el del consumidor.
El ejemplo siguiente proporciona un ejemplo del código de la API de WSS para los algoritmos predeterminados que se utilizan para el descifrado en WebSphere Application Server:
WSSFactory factory = WSSFactory.getInstance();
WSSConsumingContext concont = factory.newWSSConsumingContext();
// Es necesario para adjuntar el nombre de usuario al mensaje.
X509ConsumeCallbackHandler callbackHandler =
new X509ConsumeCallbackHandler("",
"enc-sender.jceks",
"JCEKS",
"storepass".toCharArray(),
"alice",
"keypass".toCharArray(),
"CN=Alice, O=IBM, C=US");
// Establecer el componente de descifrado.
// Parte cifrada predeterminada: Body-Content
// Algoritmo de cifrado de datos predeterminado: AES128
// Algoritmo de cifrado de claves predeterminado: KW-RSA-OAEP
WSSDecryption dec = factory.newWSSDecryption(X509Token.Type,
callbackHandler);
concont.add(dec);
// validar la cabecera WS-Security.
concont.process(msgctx);