Información y enlaces

Participa comentando, viendo lo que otros tienen que decir, o enlazandolo desde tu blog.


Otros artículos
Un plasma en menos 256 bytes
Programación en Flujo

Tips: Xml Signature

Posteado por Félix García Borrego en 4 April, 2007

¿Que es?

Es una especificación desarrollada bajo el amparo del w3c (http://www.w3.org/Signature/) que permite la firma( completa o parcial) de documentos utilizando una notación XML estandar. XML Signatures ofrece algunas ventajas frente a la firma tradicional ya que al estar basada en texto plano su estructura es legible por humanos.

Los documentos Xml Signature los podemos clasificar en tres tipos, dependiendo de la asociación con el documento firmado:

  • Enveloped: En el que el documento a firmar y la firma quedan ligados en un único xml. Este es el método mas recomendable para firmar documentos de texto o Xmls.
  • Enveloping: En el que el documento firmado(Debe ser un Xml), adjunta como un nodo mas el elemento Signature.
  • Detached: En el que el documento firmado se mantiene separado de la firma, manteniendo el XMLSignature una referencia al documento.

Un Ejemplito
Ejemplo de fichero XML Signature

Aunque parece un XML con un formato muy complejo, es sencillo de entender, su esquema de definición es :

<element name=“Signature” type=“ds:SignatureType” />
<
complexType name=“SignatureType”>
<
sequence>
<
element ref=“ds:SignedInfo” />
<element ref=“ds:SignatureValue” />
<
element ref=“ds:KeyInfo” minOccurs=“0″ />
<
element ref=“ds:Object” minOccurs=“0″ maxOccurs=“unbounded”/>
</sequence>
<attribute name=“Id” type=“ID” use=“optional” />
</
complexType>

Y buscando en el XML de ejemplo las estructuras definidas en el esquema, podemos ver que SignedInfo contiene la información relacionada con la firma( algoritmo utilizado, etc), en SignatureValue el resultado de la firma( en Base64), en KeyInfo los datos del certificado del firmante, y en Object los datos que se firmaron.

¿Apis para manejar XML Signatures?

En nuestro caso, estamos utilizando la implementación de Apache de XML Security , junto con Bouncy Castle.

XML Singature es un formato que ha llegado para quedarse entre nosotros, espero que esto sirva de una pequeña introducción para que deje de ser un desconocido o simplemente una palabreja, para convertirse en algo palpable y sencillo.



Escriba un comentario

Tomate un momento para comentar y contar lo que piensas sobre el post. Puedes usar un HTML básico para formatear

Comentarios leidos

Hola, en primer lugar un saludo y felidades por el blog, me parece muy interesante.
En segundo lugar una pregunta sobre el tema de xml signatures: ¿hay opciones de compatibilizarlo con los certificados digitales tradicionales (tipo X509)?

Un saludo

Claro que es posible, de echo un XMLSignature contiene, ademas de el resultado del proceso de firma, la clave pública del certificado(X509).
En nuestra plataforma de firma digital( que en unos meses sera liberada), utilizamos las librerías de Apache (http://santuario.apache.org/Java/index.html), aquí podrás encontrar algunos ejemplos de uso interesantes.