Compartir a través de


Consideraciones de seguridad de firma digital XML

Las aplicaciones que firman y comprueban firmas digitales XML deben escribirse de acuerdo con los siguientes procedimientos recomendados para evitar ataques por denegación de servicio, pérdida de datos y peligro de información privada. En la lista siguiente se proporcionan instrucciones generales; sin embargo, se recomienda a los desarrolladores realizar análisis de seguridad adicionales específicos de sus aplicaciones y revisar los procedimientos recomendados de firmas digitales más recientes publicados por W3C.

Comprobación de la confianza de la clave de firma

Asegúrese de que la clave de firma sea de confianza comprobando la X.509 correspondiente certificado (y cadena de certificados) incluido en el mensaje firmado. Como alternativa, la confianza en la clave de firma se puede establecer de forma fuera de banda, como un administrador que configura un conjunto de claves de confianza o una aplicación que consulta un servicio de confianza a través de un canal seguro.

En primer lugar, compruebe la clave de firma y valide SignedInfo y, a continuación, valide las referencias.

Compruebe la confianza en la clave de firma y la integridad del elemento SignedInfo antes de validar las referencias. Del mismo modo, las aplicaciones deben validar elementos de manifiesto antes de resolver las referencias contenidas en los elementos Manifest de. elementos Reference permiten la especificación de URI de destino, transformaciones y algoritmos de canónicación. Si no se valida, estos campos pueden usarse potencialmente para crear denegación de servicio, pérdida de datos u otros ataques.

Uso del conjunto mínimo de algoritmos de canónica y transformaciones necesarias

XSLT y XPATH no deben usarse en elementos no autenticados, como KeyInfo. Si una aplicación requiere el uso de XPath, restrinja el conjunto de expresiones XPATH permitidas solo a aquellos que usan los ejes antecesores o de sí mismos y no calculan el valor de cadena de los elementos. De forma predeterminada, CryptXML admite un conjunto limitado de algoritmos de canónica (consulte los URI admitidos en algoritmos criptográficos de firma digital XML). Los desarrolladores pueden implementar transformaciones adicionales o algoritmos de canónica para su uso dentro de su aplicación. Sin embargo, el uso de algoritmos complejos crea la posibilidad de ataques por denegación de servicio o de interrumpir las características de rechazo de una firma. En los casos en los que la aplicación requiere transformaciones, limite el número de transformaciones que se pueden especificar por referencia al número más alto requerido por la aplicación. Esta práctica mitiga los ataques por denegación de servicio en función del uso excesivo de transformaciones.

Asegúrese de que los URI de destino apunten a destinos dentro del ámbito esperado.

Las aplicaciones deben limitar los URI de destino al ámbito más pequeño requerido por la aplicación. Por ejemplo, es posible que los URI apunten a destinos dentro del mismo documento, archivos de un directorio de destino específico o ubicaciones de red dentro de un dominio DNS específico. Los URI establecidos por un atacante para que apunten fuera del dominio esperado podrían provocar que una aplicación recupere contenido malintencionado, envíe solicitudes HTTP malintencionadas (posiblemente que contengan cadenas de consulta) o que las aplicaciones se autentiquen en servidores malintencionados.

Compruebe que la firma comprueba los datos consumidos por la aplicación.

Si la aplicación valida la clave de firma y el signedInfo y elementos Reference, pero la aplicación consume datos importantes no a los que hace referencia la firma, la firma no proporciona ninguna protección significativa. El significado semántico de una firma puede variar en función de la posición de la firma dentro del documento. Se recomienda que las aplicaciones comprueben la posición de la firma dentro de un documento. Además, compruebe la posición de los nombres de elementos y datos a los que se hace referencia para mitigar los ataques de sustitución y ajuste.

Siga los procedimientos criptográficos recomendados.

Los algoritmos criptográficos se vuelven más débiles a lo largo del tiempo a medida que se detectan nuevos ataques y hay más potencia informática disponible. No codifique de forma rígida los identificadores de algoritmo criptográfico ni los tamaños de clave en las aplicaciones. Para obtener una lista más completa de los procedimientos criptográficos recomendados, consulte Michael Howard y Steve Lipner, "Estándares criptográficos mínimos de SDL", en The Security Development Lifecycle (Redmond, Washington: Microsoft Press, 2006), 251–258.

Puede encontrar procedimientos recomendados adicionales en el sitio web de W3C: https://www.w3.org.

Nota

Es posible que estos recursos no estén disponibles en algunos idiomas y países o regiones.