¿Cuál es el rol de RSA y ECC en TLS 1.2? [duplicar]

1

Estoy tratando de averiguar para qué se utilizan RSA y ECC en los conjuntos de cifrado TLS 1.2.

Tomemos TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 , por ejemplo, la comunicación entre el servidor y el cliente se vería así (revisada de acuerdo con la respuesta a continuación) -

C        S 
|<<------| 1.   [PlainText] signed certificate
|------>>| 1.1. [RSA] Authentication: encrypted message using the public key in certificate
|<<------| 1.2. [RSA] Authentication: session key to be used as "master" for DHE
|        |
|<<---->>| 2.   [ECC] Key exchange: using DHE protocol
|        |
|<<---->>| 3.   [ChaCha20+Poly1305] Encrypted data

Supongo que algo en este diagrama es incorrecto, ¿dónde se utiliza RSA?

Según otras preguntas similares y la respuesta a continuación, RSA se utiliza para la autenticación del servidor.

Si entiendo correctamente, durante este proceso de autenticación, el servidor (¿o el cliente?) creará una ID de sesión y se usará más adelante como un secreto maestro para DHE. Correcto?

Entonces, ¿para qué se usa ECC? ¿Para cifrar el proceso de intercambio de claves?

    
pregunta Kof 01.07.2015 - 21:08
fuente

1 respuesta

1

Estás combinando algunos componentes. TLS / SSL es bastante complejo porque hay muchas piezas individuales que encajan entre sí.

La clave pública es parte del certificado y el intercambio de claves y la autenticación del servidor son dos pasos independientes que (pueden) usar diferentes algoritmos.

El servidor primero debe autenticarse porque DH y las variantes son vulnerables a los ataques MITM. No puede intercambiar claves de forma segura hasta que sepa que está hablando con la entidad correcta, de lo contrario, todo lo que hizo fue intercambiar las claves "de forma segura" con un atacante.

Por lo tanto, el servidor se autentica a sí mismo firmando un mensaje con la clave privada del servidor. El mensaje, la firma y el certificado se envían juntos al cliente. El cliente verifica que la firma para autenticar el servidor es quien dice que es. Si voy a enlace , el navegador esperará un certificado con un nombre de host de example.com pero un certificado es información pública. Solo el servidor con la clave privada puede generar una firma válida

El RSA en su ejemplo significa que el algoritmo en la verificación de la firma digital es RSA. El algoritmo utilizado estará determinado por el tipo de clave pública que contenga el certificado. Si tiene un par de llaves ECC (ECDSA), la autenticación utilizará ECDSA. Si se trata de un par de llaves RSA, la autenticación utilizará RSA. DSA también es una opción válida, pero no estoy seguro de que CA siga emitiendo certificados de DSA.

Al mismo tiempo, el navegador verificará que el certificado del sitio haya sido firmado por un certificado en el que confíe. Funciona al revés en la medida en que lo necesita hasta que alcanza un certificado raíz en el que ya confía (porque está integrado en el sistema operativo) o se queda sin cadena e informa que "cert no es de confianza".

Una vez que está todo lo que está completo, el cliente sabe que no puede ser falsificado por MITM y en realidad está hablando con el servidor en cuestión para que pueda usar un protocolo de intercambio de claves como RSA, DH, DHE, ECDH o ECDHE para Intercambiar de forma segura las claves con el servidor. Sí, RSA se puede utilizar para intercambiar claves, así como en firmas digitales.

DH_DSS = Key exchange using DH. Authentication using DSA.
DH_RSA = Key exchange using DH. Authentication using RSA.
ECDHE_RSA = Key Exchange using ECDHE Authentication using RSA
ECDHE_ECDSA = Key Exchange using ECDHE Authentication using ECDSA
RSA = Key Exchange and Authentication are both done using RSA
    
respondido por el Gerald Davis 01.07.2015 - 21:47
fuente

Lea otras preguntas en las etiquetas