stringtranslate.com

Firma XML

XML Signature (también llamada XMLDSig , XML-DSig , XML-Sig ) define una sintaxis XML para firmas digitales y se define en la recomendación de W3C Sintaxis y procesamiento de firmas XML. Funcionalmente, tiene mucho en común con PKCS #7 pero es más extensible y está orientada a la firma de documentos XML. Se utiliza en varias 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 mediante 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 ; [1] si contiene los datos firmados en su interior, se denomina firma envolvente . [2]

Estructura

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

<Firma> <InformaciónFirmada > <MétodoCanonicalización /> <MétodoFirma /> <Referencia> <Transformaciones /> <MétodoDigest /> <ValorDigest /> </Referencia> <Referencia /> etc. </InformaciónFirmada> <ValorFirmada /> <InformaciónClave /> <Objeto /> </Firma>                       

Consideraciones de validación y seguridad

Al validar una firma XML, se sigue un procedimiento llamado Validación del núcleo .

  1. Validación de referencia: cada Referenceresumen de se verifica recuperando el recurso correspondiente y aplicándole las transformaciones y luego el método de resumen especificado. El resultado se compara con el registrado DigestValue; si no coinciden, la validación falla.
  2. Validación de firma: el SignedInfoelemento se serializa utilizando el método de canonización especificado en CanonicalizationMethod, los datos de la clave se recuperan utilizando KeyInfoo por otros medios, y la firma se verifica utilizando el método especificado en SignatureMethod.

Este procedimiento permite establecer si los recursos fueron realmente firmados por la supuesta parte. Sin embargo, debido a la extensibilidad de los métodos de canonización y transformación, la parte verificadora también debe asegurarse de que lo que realmente fue firmado o digerido sea realmente lo que estaba presente en los datos originales, es decir, que se puede confiar en que los algoritmos utilizados allí no cambiarán el significado de los datos firmados.

Debido a que la estructura del documento firmado puede ser alterada y dar lugar a ataques de "envoltura de firma", 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 getElementByNamemétodos. [4]

Canonicalización XML

La creación de firmas XML es sustancialmente más compleja que la creación de una firma digital común porque un documento XML determinado (un " conjunto de información ", de uso común entre los desarrolladores de XML) puede tener más de una representación serializada legal. Por ejemplo, los espacios en blanco dentro de un elemento XML no son sintácticamente significativos, por lo que <Elem >son sintácticamente idénticos 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 un ordenador a otro, el terminador de línea puede cambiar de CR a LF a CR LF, etc. Un programa que digiere y valida un documento XML puede posteriormente representar el documento XML de una manera diferente, por ejemplo, añadiendo espacio adicional entre las definiciones de atributos con una definición de elemento, o utilizando URL relativas (en lugar de 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 puede ser representado de maneras que varían en el tiempo por un servidor remoto errante.

Para evitar estos problemas y garantizar que los documentos XML lógicamente idénticos proporcionen firmas digitales idénticas, se utiliza una transformación de canonización XML (abreviada frecuentemente como C14n ) al firmar documentos XML (para firmar SignedInfo, es obligatoria una canonización). 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 canonización predeterminado maneja las declaraciones de espacios de nombres; con frecuencia, un documento XML firmado debe incrustarse en otro documento; en este caso, el algoritmo de canonización original no arrojará el mismo resultado que si el documento se tratara solo. Por esta razón, se creó la denominada Canonicalización Exclusiva , que serializa las declaraciones de espacios de nombres XML independientemente del XML circundante.

Beneficios

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

Asuntos

Existen críticas dirigidas a la arquitectura de seguridad XML en general, [5] y a la idoneidad de la canonización XML en particular como interfaz para firmar y cifrar datos XML debido a su complejidad, requisito de procesamiento inherente y características de rendimiento deficientes. [6] [7] [8] El argumento es que realizar la canonización XML causa una latencia excesiva que es simplemente demasiado para superar para aplicaciones SOA transaccionales y sensibles al rendimiento .

Estas cuestiones se están abordando en el Grupo de Trabajo de Seguridad XML. [9] [10]

Sin una política y una implementación adecuadas [4], el uso de XML Dsig en SOAP y WS-Security puede generar vulnerabilidades [11] , como el envoltorio de firmas XML. [12]

Aplicaciones

Un ejemplo de aplicaciones de firmas XML:

Véase también

Referencias

  1. ^ "Sintaxis y procesamiento de firmas XML versión 1.1".
  2. ^ "Sintaxis y procesamiento de firmas XML versión 1.1".
  3. ^ Filtro XPath de firma XML 2.0
  4. ^ por Pawel Krawczyk (2013). "Validación segura de SAML para prevenir ataques de envoltura de firma XML".
  5. ^ "Por qué la seguridad XML está rota"
  6. ^ Rendimiento de la seguridad de los servicios web
  7. ^ Comparación del rendimiento de los mecanismos de seguridad para los servicios de red
  8. ^ Zhang, Jimmy (9 de enero de 2007). "Acelerar aplicaciones WSS con VTD-XML". JavaWorld . Consultado el 24 de julio de 2020 .
  9. ^ Taller del W3C sobre los próximos pasos para la firma XML y el cifrado XML, 2007
  10. ^ "Requisitos de seguridad XML 2.0 y consideraciones de diseño".
  11. ^ "Ataques y contramedidas de envoltorio de elementos de firma XML" (PDF) . División de investigación de IBM . Consultado el 7 de septiembre de 2023 .
  12. ^ Juraj Somorovsky; Andreas Mayer; Jorg Schwenk; Marco Kampmann; Meiko Jensen (2012). "Sobre la ruptura de SAML: sea quien quiera ser" (PDF) .
  13. ^ "SBR Assurance" . Consultado el 7 de septiembre de 2023 .

Enlaces externos