¿Por qué no puedo descifrar el tráfico SSL solo con la clave privada del cliente?

14

Descubrí que puedo descifrar el tráfico SSL en Wireshark con clave privada del servidor .

¿Por qué la clave privada del cliente no es suficiente para descifrar el tráfico SSL?

    
pregunta Wojtek 22.09.2014 - 20:05
fuente

5 respuestas

29

Esto se debe a que, en una conexión SSL / TLS, el intercambio de claves asimétricas utiliza la clave pública del servidor para intercambiar el secreto maestro previo. Un certificado de cliente solo se utiliza para la autenticación del cliente si el servidor lo solicita. El secreto pre-maestro es lo que se utiliza para generar las claves de sesión. Es por eso que necesita la clave privada del servidor, no la del cliente.

Intercambio de claves SSL / TLS típico :

Observequeenelintercambioanteriorsoloelservidorenvíasucertificado.Elmensajedeintercambiodeclavedelclienteeselsecretomaestropreviocifradoconlaclavepúblicadelservidor.

Intercambio de claves SSL / TLS con autenticación del cliente

En el intercambio anterior, vemos que después de que el servidor envía su certificado también proporciona un mensaje de solicitud de certificado. Este mensaje le pide al cliente su certificado público. Responde con el mensaje ClientKeyExchange como lo hace en un típico protocolo de enlace, y luego envía un mensaje ClientVerify que firma los datos de intercambio de clave hash. El servidor usa esta firma para verificar el cliente.

El cliente o servidor nunca usa la clave pública del cliente para cifrar cualquier información en el protocolo de enlace. Por lo tanto, no es necesario para el descifrado de sesión.

    
respondido por el RoraΖ 22.09.2014 - 20:24
fuente
5

Debido a que el cliente utiliza la clave pública del servidor para cifrar la comunicación durante la fase 4 de negociación (wikipedia):

  

4 - Utilizando todos los datos generados en el protocolo de enlace hasta el momento, el cliente   (con la colaboración del servidor, dependiendo del cifrado en uso)   crea el secreto pre-master para la sesión, lo cifra con el   clave pública del servidor (obtenida del certificado del servidor, enviada en   paso 2), y luego envía el secreto pre-master cifrado al servidor.

Al final de la negociación, ambas partes generan una clave de sesión para cifrar la comunicación.

Creo que Wirehark, con la clave privada del servidor, puede elegir esta clave de sesión durante el protocolo de enlace.

Cedric.

    
respondido por el Infsy 22.09.2014 - 20:23
fuente
2

La clave privada de los clientes se usa solo cuando se usa la autenticación del certificado del cliente y allí se usa solo para firmar, no para descifrar. (si usa claves RSA / DSA) (si usa DH estático, podría ser posible, pero DH no está soportado por ningún servidor o cliente TLS)

    
respondido por el yyy 23.09.2014 - 09:18
fuente
2
  

Suponiendo una configuración adecuada de los parámetros SSL / TLS en el lado de   El servidor (o teóricamente cliente, pero eso es más difícil y no lo hace).   tener que trabajar siempre) tener la clave privada del servidor todavía no debería   Le permite descifrar cualquier tráfico a menos que esté realizando una activa   ataque.

Realmente depende de si Forward Security (FS) se negoció entre el cliente y el servidor. No hay garantía de que el cliente negocie un algoritmo de seguridad hacia adelante. IE es notoriamente malo en la elección de un algoritmo FS, y confía en el servidor para priorizar las diversas opciones. Por lo tanto, si tiene mucho cuidado al configurar sus opciones SSL en el servidor, Y su servidor admite la priorización de un algoritmo sobre otro, entonces es posible obtener una Seguridad Avanzada negociada incluso en IE.

(Qualsys tiene una excelente herramienta que simula una gran negociación del navegador con sitios web). enlace

Esencialmente, todos los demás navegadores principales (Chrome, Firefox, Safari, etc.) generalmente eligen la seguridad de reenvío si el servidor lo admite, por lo que no es posible descifrar solo con la clave privada del servidor.

    
respondido por el Steve Sether 23.09.2014 - 19:47
fuente
1

La respuesta de Raz le da una muy buena visión general de su situación particular. Sin embargo, debe mencionarse que, si la clave privada del servidor le permite descifrar realmente la comunicación sin realizar un ataque MITM, su SSL / TLS está mal configurado.

Suponiendo una configuración adecuada de los parámetros SSL / TLS en el lado del servidor (o en teoría, el cliente, pero eso es más difícil y no siempre tiene que funcionar) tener la clave privada del servidor no debería permitirle descifrar ningún tráfico a menos que esté realizando un ataque activo.

El uso de DHE (intercambio Diffie-Hellman) o ECDHE (las mismas curvas elípticas anteriores) para el intercambio de claves (en realidad el intercambio del secreto maestro a partir del cual se generan las claves) produce un aumento notable en la seguridad casi sin costo para el rendimiento o la facilidad de uso. .

    
respondido por el DRF 23.09.2014 - 09:23
fuente

Lea otras preguntas en las etiquetas