Explicación de la técnica de encriptación cliente-servidor (TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, claves de 128 bits)

21

Abrí una página web usando https.

Cuando miré la información de la página proporcionada por mi navegador (Firefox) vi lo siguiente:

  

Conexión encriptada: cifrado de alto grado   (TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, claves de 128 bits).

Tengo una pregunta: ¿qué significa esta técnica de cifrado? En un intento por entenderlo, decidí buscar datos en cada parte del mismo:

TLS_ECDHE significa Curva elíptica efímera Diffie-Hellman y como Wikipedia dice que permite a dos partes establecer un secreto compartido sobre un canal inseguro.

RSA se utiliza para probar la identidad del servidor como se describe en este artículo .

WITH_ AES_128_GCM_SHA256 : Si entiendo correctamente, AES_128_GCM es una técnica que proporciona cifrado autenticado como se describe en esta página .

SHA256 es un algoritmo de hash, una función de una manera.

Pero ahora estoy tratando de entender cómo poner todas estas cosas juntas. ¿Cómo funciona en conjunto y por qué se configuró de esta manera?

En este video de YouTube , Alice y Bob usan el algoritmo de intercambio de claves Diffie-Helman para acordar una clave secreta que van a uso (esto es TLS_ECDHE en nuestro caso). ¿No es suficiente establecer una conexión segura (además de la parte RSA que Alice y Bob no hicieron)? ¿Por qué también hay esta parte WITH_AES_128_GCM_SHA256 existe?

    
pregunta VL-80 18.08.2014 - 03:02
fuente

2 respuestas

23

Criptografía asimétrica

La creación de una sesión TLS tiene dos partes diferentes. Existe la criptografía asimétrica , que es un intercambio de claves públicas entre dos puntos. Que es lo que viste en tu ejemplo de Alicia y Bob. Esto solo permite el intercambio de claves asimétricas para el cifrado / descifrado asimétrico. Esta es la parte ECDHE . La parte RSA describe el algoritmo de firma utilizado para autenticar el intercambio de claves. Esto también se realiza con criptografía asimétrica. La idea es que usted firme los datos con su clave privada, y luego la otra parte puede verificar con su clave pública.

Criptografía simétrica

Cifras claves de cifrado / descifrado simétricas con tu clave asimétrica. El cifrado asimétrico es muy lento (relativamente hablando). No quieres tener que cifrar con él constantemente. Esto es para lo que Criptografía simétrica . Así que ahora estamos en AES_128_GCM .

  • AES es el algoritmo simétrico
  • 128 se refiere al tamaño de la clave en bits
  • GCM es el modo de operación

Entonces, ¿qué es exactamente lo que cifra nuestra clave asimétrica? Bueno, queremos esencialmente cifrar la clave simétrica (en este caso 128 bits, 16 bytes). Si alguien conociera la clave simétrica podría descifrar todos nuestros datos. Para TLS la clave simétrica no se envía directamente. Algo llamado el secreto pre-maestro es encriptado y enviado. A partir de este valor, el cliente y el servidor pueden generar todas las claves e IV necesarios para el cifrado y la integridad de los datos. vistazo detallado al intercambio de claves TLS

Integridad de los datos

Integridad de los datos es necesaria durante todo este proceso, así como con el canal cifrado. Como se vio al buscar GCM, el modo de operación de encriptación en sí mismo proporciona la integridad de los datos encriptados. Sin embargo, el propio apretón de manos de clave pública también debe ser confirmado. Si alguien en el medio cambió los datos mientras se transmitían, ¿cómo podríamos saber que no se alteró nada? Esta es la instancia en la que se utiliza la función hash negociada, SHA256 . Cada pieza del apretón de manos se mezcla y el hash final se transmite junto con el secreto pre-master cifrado. El otro lado verifica este hash para garantizar que se recibieron todos los datos que estaban destinados a ser enviados.

SHA256 , como lo menciona otro póster, también se usa para la función pseudoaleatoria (PRF). Esto es lo que expande el secreto pre-maestro enviado entre las dos partes a las claves de sesión que necesitamos para el cifrado.

Para otros modos de operación, cada mensaje también se procesaría con este algoritmo de integridad. Cuando los datos se descifran, el hash se verifica antes de utilizar el texto sin formato.

Aquí hay una gran explicación de cómo suceden estas derivaciones para diferentes versiones de TLS.

¡Reúna todas estas piezas y tendrá un modo de comunicación seguro!

Puede enumerar todos los cifrados posibles que OpenSSL admite con openssl ciphers . Puede ir más allá e imprimir los detalles de cualquiera de estas suites de cifrado con el -V

Por ejemplo:

$ openssl ciphers -V ECDHE-RSA-AES256-GCM-SHA384
          0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
  • 0xC0,0x30 representa el identificador de dos bytes para el conjunto de cifrado
  • Kx=ECDH representa el algoritmo de intercambio de claves
  • Au=RSA representa el algoritmo de autenticación
  • Enc=AESGCM(256) representa el algoritmo de cifrado simétrico
  • Mac=AEAD representa el algoritmo de verificación de autenticación de mensajes utilizado
respondido por el RoraΖ 18.08.2014 - 14:16
fuente
3

Tienes razón en que se está utilizando ECDHE para el intercambio de claves y se está utilizando RSA para verificar la identidad del servidor. Sin embargo, ¿qué vas a hacer con la clave intercambiada? Deberá usar un cierto algoritmo para cifrar / descifrar la comunicación con el uso de esa clave intercambiada.

AES de 128 bits se utiliza en este caso, en modo GCM.

Normalmente, el algoritmo de hash, SHA256 en este caso, se usa para el código de autenticación de mensaje basado en hash (HMAC). Esto es para proporcionar cifrado autenticado. Sin embargo, como mencionó, AES-GCM ya proporciona cifrado autenticado, por lo que no se utiliza aquí.

Desde TLS1.2, el algoritmo de hashing mencionado al final de un conjunto de cifrado también se usa para la función pseudoaleatoria (PRF) en TLS.

    
respondido por el abaj 18.08.2014 - 09:45
fuente

Lea otras preguntas en las etiquetas