stringtranslate.com

Firma XML

La firma XML (también llamada XMLDSig , XML-DSig , XML-Sig ) define una sintaxis XML para firmas digitales y está definida en la recomendación del W3C XML Signature Syntax and Processing. 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 llama firma en sobre ; [1] si contiene los datos firmados dentro de sí mismo, 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> <SignedInfo> <CanonicalizationMethod /> <SignatureMethod /> <Reference> <Transforms /> <DigestMethod /> <DigestValue /> </Reference> <Reference /> etc. </SignedInfo> <SignatureValue /> <KeyInfo / > <Objeto /> </Firma>                       

Consideraciones de validación y seguridad

Al validar una firma XML, se sigue un procedimiento llamado Core Validation .

  1. Validación de referencia: cada Referenceresumen se verifica recuperando el recurso correspondiente y aplicándole cualquier transformación 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 canonicalización especificado en CanonicalizationMethod, los datos clave se recuperan utilizando KeyInfoo por otros medios y la firma se verifica utilizando el método especificado en SignatureMethod.

Este procedimiento establece si los recursos fueron realmente firmados por el presunto partícipe. 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 ser alterada y provocar 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 ordinaria 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, el espacio en blanco dentro de un elemento XML no es sintácticamente significativo, por lo 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 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 sobre datos binarios , sino sobre el conjunto de información XML , lo que permite trabajar sobre subconjuntos de datos (esto 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.

Asuntos

Hay críticas dirigidas a la arquitectura de seguridad XML en general [5] 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. [6] [7] [8] 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.

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

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

Aplicaciones

Un ejemplo de aplicaciones de Firmas XML:

Ver también

Referencias

  1. ^ "Procesamiento y sintaxis de firma XML versión 1.1".
  2. ^ "Procesamiento y sintaxis de firma XML versión 1.1".
  3. ^ Filtro XPath de firma XML 2.0
  4. ^ ab Pawel Krawczyk (2013). "Validación segura de SAML para evitar ataques de envoltura de firmas XML".
  5. ^ "Por qué no funciona la seguridad XML".
  6. ^ Rendimiento de la seguridad de los servicios web
  7. ^ Comparación de rendimiento de mecanismos de seguridad para servicios de red
  8. ^ Zhang, Jimmy (9 de enero de 2007). "Acelere aplicaciones WSS con VTD-XML". Mundo Java . 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. ^ "Consideraciones de diseño y requisitos de XML Security 2.0".
  11. ^ "Ataques y contramedidas que envuelven elementos de firma XML" (PDF) . División de Investigación de IBM . Consultado el 7 de septiembre de 2023 .
  12. ^ Juraj Somorovsky; Andrés Mayer; Jorg Schwenk; Marco Kampmann; Meiko Jensen (2012). "Sobre romper SAML: sé quien quieras ser" (PDF) .
  13. ^ "Garantía SBR" . Consultado el 7 de septiembre de 2023 .

enlaces externos