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.

Se da soporte a los siguientes algoritmos de cifrado de datos preconfigurados:
Tabla 1. Algoritmos de cifrado de datos. Algoritmos que se utilizan para cifrar mensajes SOAP.
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 suministra con cifrados de potencia limitada o restringida. 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.

Importante: Su país de origen puede tener restricciones sobre la importación, posesión, uso 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 los algoritmos AES256-cbc y AES192-CBC , debe descargar los archivos de políticas JCE (Java™ Cryptography Extension) sin restricciones del 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.

Nota: Los conjuntos de políticas no dan soporte al cifrado de claves simétricas. Si utiliza la API de WSS para el cifrado de claves simétricas, no podrá interactuar con los puntos finales de servicios web utilizando los conjuntos de políticas.

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:

Tabla 2. Algoritmos de cifrado de claves preconfigurados soportados. Algoritmos que se utilizan para cifrar y descifrar claves.
API de WSS Titularidades
WSSEncryption.KW_AES128 Un URI del algoritmo de cifrado de claves, con la envoltura de clave AES 128: http://www.w3.org/2001/04/xmlenc#kw-aes128
WSSEncryption.KW_AES192 Un URI del algoritmo de cifrado de claves, con la envoltura de clave AES 192: http://www.w3.org/2001/04/xmlenc#kw-aes192
Restricción: No utilice el algoritmo de cifrado de claves de 192 bits si desea que la aplicación configurada esté en conformidad con BSP (Basic Security Profile).
WSSEncryption.KW_AES256 Un algoritmo de cifrado de claves, con la 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, con la 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, con la 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
Para conversaciones seguras, se debe especificar información adicional relacionada con las claves como, por ejemplo.
  • algorithmName
  • keyLength
De forma predeterminada, el algoritmo RSA-OAEP utiliza el algoritmo de resumen de mensajes SHA1 para calcular unresumen de mensaje 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 la 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 nula para la serie opcional de octetos de codificación para OAEPParams. Puede proporcionar una serie de octetos de codificación explícita especificando una propiedad de algoritmo del 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.

Importante: Puede establecer estas propiedades de método de resumen y OAEPParams sólo en el lado del 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íticas JCE sin restricciones del siguiente sitio web: 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:

	  // 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);