Firma XML

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

Firma XML (también llamada XMLDSig, XML-DSig, XML-Sig) define una sintaxis XML para firmas digitales y se define en la recomendación del W3C Sintaxis y procesamiento de firmas XML. Funcionalmente, tiene mucho en común con PKCS #7 pero es más extensible y está orientado a firmar documentos XML. Es utilizado por diversas tecnologías web como SOAP, SAML y otras.

Las firmas XML se pueden utilizar para firmar datos (un recurso) de cualquier tipo, normalmente documentos XML, pero se puede firmar cualquier cosa a la que se pueda acceder a través de una URL. Una firma XML utilizada para firmar un recurso fuera del documento XML que lo contiene se denomina firma separada; si se utiliza para firmar alguna parte del documento que lo contiene, se denomina firma envuelta; si contiene los datos firmados dentro de sí mismo, se denomina firma envolvente.

Estructura

Una firma XML consta de un elemento Signature en el espacio de nombres http://www.w3.org/2000/09/xmldsig#. La estructura básica es la siguiente:

Señaladura Identificado c)Canonicalización Método / SignatureMethod / " Referencia " ■Transformas / #DigestMethod / - Valor Digest / ■/Referencia *Referencia / etc.
 Identificado/Firmado Signature Valor / *KeyInfo / Objeción /" Señal "
  • El SignedInfo El elemento contiene o hace referencia a los datos firmados y especifica qué algoritmos se utilizan.
    • El SignatureMethod y CanonicalizationMethod elementos son utilizados por SignatureValue elemento y se incluyen en SignedInfo para protegerlos de manipularlos.
    • Uno o más Reference Los elementos especifican el recurso que está firmando la referencia URI y cualquier transformación que se aplique al recurso antes de la firma.
      • Transforms contiene las transformaciones aplicadas al recurso antes de la firma. Una transformación puede ser una expresión XPath que selecciona un subconjunto definido del árbol de documentos.
      • DigestMethod especifica el algoritmo hash antes de aplicar el hash.
      • DigestValue contiene el resultado codificado Base64 de aplicar el algoritmo hash al recurso(s) transformado definido en el Reference atributos de elementos.
  • El SignatureValue elemento contiene el resultado de firma codificada Base64 - la firma generada con los parámetros especificados en el SignatureMethod elemento - del SignedInfo elemento después de aplicar el algoritmo especificado por el CanonicalizationMethod.
  • KeyInfo El elemento opcionalmente permite al firmante proporcionar a los destinatarios la clave que valida la firma, generalmente en forma de uno o más certificados digitales X.509. La parte que confía debe identificar la clave desde el contexto si KeyInfo no está presente.
  • El Object elemento (opcional) contiene los datos firmados si se trata de un enveloping signature.

Consideraciones de validación y seguridad

Al validar una firma XML, se sigue un procedimiento llamado Validación principal.

  1. Validación de referencia: Cada uno Reference's digest is verified by retrieving the corresponding resource and applying any transforms and then the specified digest method to it. El resultado se compara con el registrado DigestValue; si no coinciden, la validación falla.
  2. Validación de la firma: El SignedInfo elemento se serializa utilizando el método canónico especificado en CanonicalizationMethod, los datos clave se recuperan utilizando KeyInfo o por otros medios, y la firma se verifica utilizando el método especificado en SignatureMethod.

Este procedimiento establece si los recursos realmente fueron firmados por la presunta parte. Sin embargo, debido a la extensibilidad de los métodos de canonicalización y transformación, la parte verificadora también debe asegurarse de que lo que realmente se firmó o digirió es realmente lo que estaba presente en los datos originales, en otras palabras, que se puede confiar en los algoritmos utilizados allí, no para cambiar el significado de los datos firmados.

Debido a que la estructura del documento firmado puede alterarse y provocar un "envoltorio de firma"; ataques, el proceso de validación también debe cubrir la estructura del documento XML. El elemento firmado y el elemento de firma deben seleccionarse utilizando una expresión XPath absoluta, no los métodos getElementByName.

Canonicalización XML

La creación de firmas XML es sustancialmente más compleja que la creación de una firma digital ordinaria porque un documento XML determinado (un "conjunto de información", de uso común entre los desarrolladores XML) puede tener más de una firma serializada legal. representación. Por ejemplo, el espacio en blanco dentro de un elemento XML no es sintácticamente significativo, de modo que <Elem > es sintácticamente idéntico a <Elem>.

Dado que la firma digital garantiza la integridad de los datos, una diferencia de un solo byte haría que la firma varíe. Además, si un documento XML se transfiere de una computadora a otra, el terminador de línea puede cambiarse de CR a LF a CR LF, etc. Un programa que digiera y valide un documento XML puede luego representar el documento XML de una manera diferente, por ejemplo. agregando espacio excesivo entre definiciones de atributos con una definición de elemento, o usando URL relativas (vs. absolutas), o reordenando las definiciones de espacios de nombres. El XML canónico es especialmente importante cuando una firma XML hace referencia a un documento remoto, que un servidor remoto errante puede representar de forma variable en el tiempo.

Para evitar estos problemas y garantizar que los documentos XML lógicamente idénticos proporcionen firmas digitales idénticas, se emplea una transformación de canonicalización XML (frecuentemente abreviada C14n) al firmar documentos XML (para firmar el SignedInfo , una canonicalización es obligatoria). Estos algoritmos garantizan que los documentos semánticamente idénticos produzcan representaciones serializadas exactamente idénticas.

Otra complicación surge debido a la forma en que el algoritmo de canonicalización predeterminado maneja las declaraciones de espacios de nombres; frecuentemente es necesario incrustar un documento XML firmado en otro documento; en este caso, el algoritmo de canonicalización original no producirá el mismo resultado que si el documento se tratara solo. Por esta razón, se creó la llamada Canonicalización exclusiva, que serializa declaraciones de espacios de nombres XML independientemente del XML circundante.

Beneficios

La firma XML es más flexible que otras formas de firmas digitales, como Pretty Good Privacy y Cryptographic Message Syntax, porque no opera con datos binarios, sino con el conjunto de información XML, lo que permite trabajar con subconjuntos de datos (esto es También es posible con datos binarios de formas no estándar, por ejemplo codificando bloques de datos binarios en base64 ASCII), teniendo varias formas de vincular la firma y la información firmada, y realizar transformaciones. Otro concepto central es la canonicalización, es decir, firmar sólo la "esencia", eliminando diferencias sin sentido como espacios en blanco y finales de línea.

Problemas

Hay críticas dirigidas a la arquitectura de seguridad XML en general y a la idoneidad de la canonicalización XML en particular como interfaz para firmar y cifrar datos XML debido a su complejidad, requisitos de procesamiento inherentes y características de rendimiento deficientes. El argumento es que realizar la canonicalización XML provoca una latencia excesiva que es simplemente demasiado difícil de superar para aplicaciones SOA transaccionales y sensibles al rendimiento.

Estos problemas se están abordando en el Grupo de Trabajo de Seguridad XML.

Sin una política e implementación adecuadas, el uso de XML Dsig en SOAP y WS-Security puede provocar vulnerabilidades, como el ajuste de firmas XML.

Aplicaciones

Un ejemplo de aplicaciones de Firmas XML:

  • Firma digital de informes anuales XBRL por auditores en Holanda. Certificado PKIoverheid X.509, aprobado por el Royal National Institute of Chartered Accountants[nl], es necesario. La firma electrónica es jurídicamente vinculante. El estándar SBR Assurance es parte del programa holandés Standard Business Reporting.

Contenido relacionado

Historia de la cámara

La historia de la cámara comenzó incluso antes de la introducción de la fotografía. Las cámaras evolucionaron desde la cámara oscura a través de muchas...

Tubo de vacío

Un tubo de vacío, tubo de electrones o válvula termoiónica, es un dispositivo que controla el flujo de corriente eléctrica en un alto vacío entre...

Señales de humo

La señal de humo es una de las formas más antiguas de comunicación a larga distancia. Es una forma de comunicación visual utilizada a larga distancia. En...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save