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.
- El servidor entregará un certificado, que contiene una clave pública RSA . Esto se utilizará para la autenticación.
- El intercambio de claves se realizará utilizando ECDHE .
- El cifrado simétrico utilizado después del intercambio de claves será AES-GCM con una 128 clave de bit.
- 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.