TLS-RSA vs TLS-ECDHE-RSA vs static DH

1

Entiendo que hay muchos artículos que explican esto y antes de publicar mi pregunta, este es mi entendimiento actual sobre estos:

ECDHE-RSA = el servidor genera aleatoriamente un par de claves DH porque el certificado no tiene información suficiente para enviar al cliente para la generación secreta principal. La clave pública DH se envía en un paquete de "intercambio de claves del servidor". El secreto nunca será enviado en el cable. El "RSA" en el conjunto de cifrado se refiere a la firma aleatoria de la clave pública DH, pero no a la firma del certificado

Static DH = el servidor tiene una clave pública DH fija en el certificado, que será utilizada por el cliente para compartir la generación secreta. El secreto nunca será enviado en el cable. Dado que la información es suficiente, el mensaje de intercambio de claves del servidor no es necesario

RSA = El cliente utilizará la clave pública del servidor para cifrar el PMS y enviarlo al servidor, el servidor descifrará el PMS y generará el mismo PMS. El secreto se envía en el cable

Dejen a un lado el DH estático por ahora, ya que no se usa comúnmente en Internet. No puedo encontrar uno en el tiburón de alambre.

Esta es mi pregunta:

Comparo el pcap entre TLS-RSA y TLS-ECDHE-RSA, encuentro que

  • en el certificado presentado por el servidor, ambos contienen una clave pública RSA (clave pública del sujeto) y el certificado tiene una firma RSA (Sha256withRSAencryption)

  • En el paquete de intercambio de claves del servidor para TLS-ECDHE-RSA, hay una clave DH con la firma RSA

La firma RSA para la "clave dh" y el "certificado" se utilizan con el propósito de autenticación / firma digital para que el servidor afirme que son quienes son.

El cliente utiliza la "clave pública RSA" en el certificado, para TLS-RSA, para cifrar el PMS. Se puede ver en el paquete de "intercambio de claves de cliente". Entonces, ¿cuál es su función en el caso de TLS-ECDHE-RSA?

Aprecio consejos o señale cualquier lugar que entienda mal

    
pregunta Nelson Gee 26.07.2017 - 12:29
fuente

2 respuestas

4

Supongo que está hablando de esto en el contexto de TLS, en particular de los cifrados de TLS. Parece que hay cierta confusión en torno a lo que hace cada componente. Es más fácil de entender si ve la imagen completa, de modo que aquí está.

Durante un protocolo de enlace TLS suceden las siguientes cosas: autenticación, intercambio de claves. Los detalles acerca de estos dependen de la llamada suite de cifrado. Aquí hay una muestra.

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

Esto básicamente dice lo siguiente.

  1. El servidor entregará un certificado, que contiene una clave pública RSA . Esto se utilizará para la autenticación.
  2. El intercambio de claves se realizará utilizando ECDHE .
  3. El cifrado simétrico utilizado después del intercambio de claves será AES-GCM con una 128 clave de bit.
  4. La PRF (función pseudoaleatoria) que se utilizará durante el intercambio es SHA256 (también puede indicar el MAC con versiones TLS más antiguas).

Mire detenidamente y verá cómo se representan todos estos en el conjunto de cifrado.

Ahora veamos lo que estos significan: ECDHE-RSA , DH estático , RSA

  

ECDHE-RSA = el servidor genera aleatoriamente un par de claves DH porque el   certificado no tiene información suficiente para enviar al cliente para   generación secreta maestra. La clave pública DH se envía en "clave del servidor   intercambio "paquete. El secreto nunca será enviado en el cable. El" RSA "   en el conjunto de cifrado se refiere a la firma de clave pública DH aleatoria, pero   no la firma del certificado

Está en el camino correcto aquí, y ahora, con el conocimiento de toda la imagen, es más fácil de entender esto. Durante un intercambio de claves "clásico", la clave pública en el certificado (y su par privado) se usa para acordar una clave simétrica. Esto, sin embargo, crea problemas si la clave del servidor se ve comprometida. Si alguna vez se pierde la clave privada correspondiente a la clave pública en el certificado, el tráfico registrado previamente se puede descifrar a gusto.

Esto es algo que generalmente queremos evitar. Ingresa Reenviar secreto . El protocolo introduce la posibilidad de tener un intercambio de claves separado que no depende tanto del par de claves RSA. El algoritmo que generalmente se usa para esto se llama Diffie-Hellman .

Para que DH funcione, necesita los llamados parámetros DH, que son básicamente un módulo principal y un generador. Estos parámetros son públicos. Estos están precomputados durante el tiempo de configuración del servidor y se comparten con cada cliente durante el intercambio de claves. Los clientes, en colaboración con el servidor, utilizan estos parámetros para acordar una clave sin enviarla por cable, tal como ha dicho. Aquí hay un gran video sobre esto de la Academia Khan. La clave privada del par de claves DH es esencial para el número privado en el video. Mientras que la clave pública es lo que se envía en el cable.

Para resumir, ECDHE es la curva elíptica efímera Diffie-Hellman, que es DH sobre las curvas elípticas. La parte efímera se refiere al hecho de que cada conexión utiliza un par de claves DH.

  

Static DH = server tiene una clave pública DH fija en el certificado, lo hará   Ser utilizado por el cliente para compartir generación secreta. El secreto sera   Nunca se enviará en el cable. Dado que la información es suficiente, la clave del servidor   no es necesario intercambiar mensaje

DH estático se refiere al servidor que elige el mismo par de claves DH para cada conexión de cliente (número privado en el video). O, como usted sugirió, se puede incrustar en el certificado. Esto permite el monitoreo pasivo de las conexiones TLS. Esto esencialmente deshabilita el secreto hacia adelante.

  

RSA = El cliente utilizará la clave pública del servidor para cifrar el PMS y enviarlo   Al servidor, el servidor descifra el PMS y genera el mismo PMS.   El secreto se envía en el cable

Exactamente.

Ahora que llegas a tu pregunta.

  

"Clave pública RSA" en el certificado, para TLS-RSA, es utilizada por el   Cliente para cifrar el PMS. Se puede ver en "intercambio de claves de cliente"   paquete. Entonces, ¿cuál es su función en el caso de TLS-ECDHE-RSA?

Ahora, esto es fácil de responder. Cuando hay un algoritmo de intercambio de claves explícito, la clave en el certificado (clave pública RSA en este caso) solo se usa para la autenticación. Asegúrate de conectarte al host al que pretendes validar la cadena de certificados y verificar que el servidor tenga la clave privada para el certificado público dado. También firmará la clave pública DH que envía al cliente con su clave privada RSA, que el cliente verifica durante el intercambio.

    
respondido por el Daniel Szpisjak 25.08.2017 - 22:38
fuente
1
  

"RSA" en la suite de cifrado se refiere a la firma aleatoria de la clave pública DH, pero no a la firma del certificado

"RSA" se refiere tanto a la firma de la clave DH como a la clave pública del certificado del servidor.

Las claves utilizadas para firmar / verificar la clave pública DH provienen del intercambio de certificados, o no podemos asegurarnos de que estemos usando la clave pública real del servidor.

  

el certificado tiene una firma RSA (Sha256withRSAencryption)

En cuanto al algoritmo de firma del certificado (Sha256withRSAencryption), depende del emisor del certificado del servidor y se utiliza para verificar el certificado del servidor. No participa en el intercambio real de datos y es irrelevante aquí.

  

Entonces, ¿cuál es su función en el caso de TLS-ECDHE-RSA?

Como ha señalado, "ECDHE" se asegura de que la clave secreta simétrica no se envíe por cable. Por lo tanto, incluso si la clave secreta del certificado del servidor se compromete un día, la clave secreta intercambiada previamente no se descifrará y los datos enviados previamente permanecerán seguros. Se conoce como "secreto de reenvío".

    
respondido por el DDoSolitary 26.07.2017 - 18:17
fuente

Lea otras preguntas en las etiquetas