Pregunta

Me da cuenta de esta pregunta puede ser un poco vago o que puede estar usando terminología incorrecta, que se debe a que estoy tratando de llegar a enfrentarse con estas cosas :).

Tengo un requisito para implementar la firma digital de un mensaje XML mediante el uso de un dsig: sección de la firma. Creo que entiendo este proceso; Voy a utilizar una clave privada para firmar el documento que garantice al destinatario que era yo quien envió el mensaje y que nadie ha manipulado con él.

Estoy en lo cierto que esto es diferente de la implementación de TLS certificados de cliente, pero el objetivo es el mismo? (TLS es porque el nivel de transporte, ¿verdad?) Manera la ejecución de certificados de cliente sea más fácil? Es uno mejor que el otro?

Muchas gracias por su respuesta,

Martijn

Actualización 1:

Creo que otra diferencia es que el uso de un certificado TLS del cliente todo el mensaje se cifrará, mientras que con la firma digital del mensaje en sí será de texto sin formato, que contiene una sección de la firma.

¿Fue útil?

Solución

Usted está comparando la seguridad a nivel de mensajes con la seguridad de nivel de transporte. Aunque tienen similitudes, tienen diferentes propósitos.

Uso de TLS protege la comunicación de ser visto y alterado por partes intermedias. El certificado X.509 sobre las garantías lado del servidor que los mensajes que se le envían sólo pueden ser leídas por el servidor con esta clave privada y que lo envía viene desde el servidor con esta clave privada. Esto podría sin apretar puede considerar como la firma por el servidor y el cifrado para el servidor con el certificado X.509, aunque en realidad sólo se aplica a los mensajes TLS apretón de manos, no los datos de las aplicaciones que se intercambian después. (Estoy dejando de lado el hecho de que se obtiene el cifrado simétrico del canal de todos modos, si ninguna de las partes ha presentado un certificado, sino que es importante contar con, al menos, el uso del servidor un certificado para que el cliente sabe lo que se está comunicando con el lugar de la comunicación con un potencial hombre-en-el-medio). Al agregar un certificado de cliente a esto, el cliente firma también los mensajes TLS se ha intercambiado durante el apretón de manos.

Cuando se utilizan los dos certificados de cliente y servidor, usted podría (con cuidado) establecer una analogía con la seguridad a nivel de mensaje, en el que los mensajes que están firmados y encriptados son los mensajes TLS apretón de manos que se utilizan para establecer el canal TLS.

Sin embargo, hay grandes diferencias con la seguridad a nivel de mensajes (por ejemplo XML-DSig y XML-Enc).

En primer lugar, una de las características de la firma de mensajes (XML-DSig) es la auditoría, para que pueda llevar un registro de lo que ha sido dicho. No es específicamente limitado en el tiempo. Eso es mucho más difícil de hacer, incluso si usted ha grabado los paquetes TLS. Con conjuntos de cifrado modernas en SSL / TLS que el uso de DHE (Diffie-Hellman modo efímero), incluso si tiene la clave privada del servidor, puede no necesariamente descifrar el canal si ha grabado todos sus paquetes (sin más conocimiento de la DHE mecanismo).

En segundo lugar, en términos de implementaciones, XML-DSig tiende a ser hecho a nivel de aplicación, mientras que TLS tiende a ser realizado por el conector de servidor. La diferencia puede ser borrosa, dependiendo de las condiciones de despliegue, pero TLS es sobre la comunicación con la máquina / el recipiente en lugar de la aplicación detrás de ellos. Por lo general, el certificado TLS se establecerá en un contenedor Java o en el nivel de WCF, mientras que el certificado utilizado para XML-DSig será utilizada por la aplicación de web / aplicación que se ejecuta detrás. Puede haber diferentes personas o procedimiento a cargo allí.

(que está también justo que si estás usando XML-DSig sin XML-Enc, no estás cifrar los datos.)

Otros consejos

Hasta el momento se están comparando manzanas con naranjas.

Los datos XML pueden ser firmados en muchas maneras, por ejemplo usando el estándar X.509 XMLDSig y certificado (que es posible utilizar otros tipos de llaves en XMLDSig también). certifica la autoría de la firma del documento (así, en cierta medida, por supuesto).

TLS significa Transport Layer Security y se utiliza para cifrar (no firme) los datos al mismo tiempo en la transferencia. No tiene nada que ver con XML específicamente. TLS utiliza certificados X.509, así, pero no se puede utilizar el mismo certificado para XMLSDig y TLS causa los certificados necesita tener fines específicos (campo de uso de claves).

Le sugiero que se tome un libro sobre PKI (Siempre recomiendo Guía Oficial Rsa de Seguridad la criptografía de por su simplicidad) y leerlo con atención.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top