openssl ECDHE-RSA ... conjunto de cifrado seleccionado al utilizar el certificado de servidor RSA y el certificado de cliente ECDSA

6

La escena:

  • s_server utilizando el certificado RSA.
  • s_client usando el certificado ECC-ECDSA.

Se requiere autenticación del cliente (opción -Verificar conjunto en s_server)

El conjunto de cifrado seleccionado después del protocolo de enlace es ECDHE-RSA-AES256-GCM-SHA384.

Por lo tanto, no entiendo completamente cómo el tipo de certificado (RSA-DSA) afecta al conjunto de cifrado seleccionado (con respecto a la parte de autenticación del conjunto de cifrado).

¿Podría ser que el certificado del servidor establezca el tipo de autenticación utilizada?

¿Podría alguien explicar cómo los certificados de servidor / cliente afectan la selección del conjunto de cifrado?

    
pregunta jpradas 24.09.2014 - 11:27
fuente

1 respuesta

7

"ECDHE" significa que el intercambio de claves usará el algoritmo Diffie-Hellman (sobre curvas elípticas) con elementos DH recién generados; la última "E" significa efímero . Entonces, mientras DH produce una clave compartida, funcionará con valores producidos aleatoriamente, y nada en DH garantizará autenticación : el cliente no tiene forma de saber si la clave pública DH que ve realmente pertenece a la intención. servidor.

Para recuperar la autenticación del servidor, se necesita algo más. Es una firma : el servidor firma digitalmente su mitad del intercambio de claves DH. Esa firma utiliza la clave que está en el certificado del servidor y, por lo tanto, el algoritmo de la firma depende del tipo de esa clave. En "ECDHE-RSA", la parte "RSA" se refiere a esa firma: dice que será de tipo RSA (e implica, por supuesto, que el certificado del servidor contiene la clave pública RSA correspondiente).

No existe tal mecanismo para la autenticación cliente . Cuando el servidor solicita un certificado de cliente, el cliente tendrá que calcular una firma y enviar su clave pública (como parte de su certificado), pero no hay relación entre ese tipo de certificado de cliente y el conjunto de cifrado. Las razones para ello son:

  • Los certificados de cliente aparecen más adelante en el protocolo de enlace, después de la selección del conjunto de cifrado. Cuando se elige la suite de cifrado, el cliente aún no sabe si se solicitará un certificado de cliente.

  • Un servidor SSL, en general, debe poder responder a todo el mundo, pero cuando el cliente se conecta, sabe a qué servidor está hablando y puede seleccionar un certificado en consecuencia (el servidor también envía una lista de nombres de CA para limitar las opciones del cliente). Los certificados de cliente son una rareza en un contexto web; en general, los servidores SSL solicitan certificados de cliente cuando saben que ya tienen certificados de un tipo apropiado (por ejemplo, un servidor de banco solicitará el certificado de un cliente solo si el cliente es parte de un programa en el cual el banco aseguró la distribución del dichos certificados). Por lo tanto, no es necesario realizar una negociación dinámica del tipo de certificado de cliente.

La selección de la suite de cifrado consiste en elegir algoritmos que se admiten en ambos extremos. Si el servidor debe firmar y el cliente debe verificar, entonces el cliente debe poder entender el algoritmo de firma y, por lo tanto, su tipo de clave.

En la práctica, el cliente envía una lista de conjuntos de cifrado compatibles, y el servidor selecciona uno de ellos: un conjunto de cifrado que, por supuesto, corresponde a los algoritmos y tipos de clave que el servidor va a utilizar. Teóricamente, la lista enviada por el cliente está ordenada por "preferencia" y se supone que el servidor respeta esa orden, es decir, elige el primer conjunto de cifrado en la lista de clientes que también se ajusta a las capacidades del servidor. No todos los servidores son tan corteses.

Consulte esta respuesta para obtener una introducción a SSL / TLS.

    
respondido por el Thomas Pornin 24.09.2014 - 12:53
fuente

Lea otras preguntas en las etiquetas