ESNI: así mejorará nuestra privacidad en la red al usar conexiones TLS

Escrito por Javier Jiménez

Esta mañana os hablábamos de algunas novedades importantes de Cloudflare con las que pretenden mejorar Internet. Pues ya podemos hablar más de la primera de estas novedades que acaba de ser presentada. Se trata de ESNI, un cifrado que funciona a través del protocolo TLS. Su función es dificultar la localización de navegación por parte de los usuarios. Un usuario indica a qué nombre de host pretende conectarse cuando se inicia una comunicación. Esto permite que un servidor presente múltiples certificados en la misma dirección IP y número de puerto TCP. De esta manera permite que múltiples sitios web sean atendidos por la misma dirección IP sin requerir que todos esos ellos utilicen el mismo certificado.

ESNI, la mejora de privacidad que introduce Cloudflare

Básicamente logra que un servidor presente diferentes certificados TLS que validan y aseguran la conexión a sitios web detrás de una misma dirección IP. Ahora desde Cloudflare han anunciado la compatibilidad con esto que hemos explicado. La privacidad de sus usuarios aumentará. Esto provoca que los proveedores de Internet, intrusos en una red Wi-Fi puedan interceptar este indicador de LTS y averiguar qué sitios visitan.

Antes, en los casos que hemos mencionado como los proveedores de Internet, podrían interceptar mensajes en texto plano enviado a través de ClientHello donde se recogen los sitios que los usuarios visitan. Algo que, lógicamente, podría perjudicar la privacidad de los mismos.

Ahora con el cifrado de SNI (o ESNI), el cliente evita que se envíe el texto plano la información sobre los sitios a los que intenta acceder.

La manera en la que se logra esto es algo compleja. Hay que tener en cuenta que el cliente y el servidor no han entrado en contacto en este proceso. Entonces lo que hace el servidor es publicar una clave pública en un registro DNS conocido. El cliente lo busca antes de conectarse y reemplaza la extensión SNI en ClientHello por ESNI, es decir, SNI cifrado. Utiliza para ello la clave pública del servidor.

El servidor, que posee la clave privada y puede derivar también la clave de cifrado simétrica, puede descifrar la extensión. Gracias a ello logra finalizar la conexión. Como solo el cliente y el servidor al que se conecta pueden derivar la clave de cifrado, el SNI cifrado no puede ser descifrado. Así se evita que terceros puedan acceder a él.

Birthday Week Cloudflare

Solamente funciona con TLS 1.3 o superior

Hay que mencionar que esto únicamente funciona a partir de TLS 1.3 y superiores. No podríamos usarla en versiones anteriores.

Posteriormente hacen uso del algoritmo de intercambio de claves Diffie-Hellman. Esto permite al cliente y al servidor generar una clave de cifrado compartida sobre un canal que no es de confianza. Esa clave ESNI se calcula en el lado del cliente a través de la clave pública del servidor, así como la parte privada de una acción efímera de Diffie-Hellman generada por el cliente mismo.

Todo este proceso asegura que la clave de cifrado está unida de manera cifrada a la sesión de TLS específica para la que se generó. No puede reutilizarse en múltiples conexiones. De  esta manera aseguran que un posible intruso pudiera leer la extensión cifrada enviada.

Un posible intruso podría averiguar a qué sitio web se está conectando el cliente simplemente observando de texto platno DNS enviado por el cliente, ya sea que se haya utilizado o no el SNI cifrado. Sin embargo con la introducción de DNS over TLS o de DNS over HTTPS podría quedar todo cifrado.

La nota negativa es la dirección IP. Desde Cloudflare aseguran que trabajan para mejorarlo en un futuro. Sin embargo en la actualidad un atacante podría ver la dirección IP de destino.

Fuente > Cloudflare