XML Encryption, Criptografía sobre XML

0
20528

XML Encryption, Criptografía sobre XML

En este tutorial vamos a ver ejemplos de cómo realizar la encriptación y desencriptación de una sección de un documento XML, dejando el resto del documento sin encriptar.

Introducción a XML Encryption

La privacidad o confidencialidad de la información es uno de los requisitos que se deben cubrir en la gran mayoría de las aplicaciones.
Debido al auge de XML como formato de representación (por ejemplo, mensajes entre servicios Web) se hace necesario mecanismos que nos permitan ocultar la información sensible.

XML Encryption es un lenguaje definido por W3C que nos permite especificar que partes de la información deseamos que vaya cifrada y que partes no.

El cifrado/descifrado se puede realizar tanto con claves simétricas cómo asimétricas. Recuerde que los procesos de cifrado/descrifrado básado en claves simétricas tienen muchísimo más rendimiento que los basados en claves asimétricas (pública/privada).

Para este tutorial utilizaremos la implementación de Apache (http://xml.apache.org/security/dist/).

Veamos unos ejemplos autocomentados:

  1. Encriptación de parte de una información XML.
  2. Desencriptación de la información anterior.

Documento XML para los ejemplos:

Dada la siguiente información en XML, vamos a encriptar exclusivamente mediante criptografía simétrica la información relaccionada con la tarjeta de crédito.

Clase de utilidades usada en los ejemplos de este tutorial

Ejemplo de encriptación de una sección de un documento XML

Documento encriptado (infoCifrada.xml)

En el siguiente documento se muestra la información que sería enviada al receptor. En ella se puede observar entre otras cosas:

  1. La información relacionada con la tarjeta de crédito ha sido sustituida por el elemento xenc:EncryptedData
  2. El elemento xenc:EncryptionMethod contiene información sobre el método de encriptación usado.
  3. El elemento KeyInfo contiene información sobre la clave de encriptación.
  4. El elemento CipherData contiene la información encriptada, es decir, la información sobre la tarjeta de crédito.
  5. El elemento EncryptedKey contiene la clave de encriptación/desencriptación de la información almacenada en CipherCipherValue.

Ejemplo de desencriptación del archivo (infoCifrada.xml)

Saludos, Carlos García.

Dejar respuesta

Please enter your comment!
Please enter your name here