El protocolo HTTPS nació con el objetivo de hacer la navegación a través de Internet más privada y segura, la evolución del protocolo DNS ha ido en la misma dirección, tanto con DNS over TLS (DoT) como también DNS over HTTPS (DoH), ambos nos permiten realizar peticiones DNS de forma totalmente cifrada y privada, para que nadie en medio de la comunicación pueda espiarnos. Cuando hacemos intentamos entrar en una web, el dominio al que queremos llegar se envía en texto plano a través del SNI (Server Name Indication), sin embargo, ECH ha llegado para solucionar este problema y hacer la navegación más segura.
Cloudflare activó a principios de octubre de 2023 la extensión ECH (Encrypted Client Hello) en toda su red, haciendo que la navegación de los usuarios sea mucho más segura y privada, ya que nadie podrá saber a qué webs estamos entrando, algo que antes sí ocurría. Sin embargo, apenas dos semanas después el gigante de Internet ha decidido deshabilitar esta funcionalidad, al menos temporalmente, ya que se han encontrado con muchos problemas inesperados en la navegación de los usuarios. Básicamente los navegadores no podían entrar en todas las webs correctamente, algunas veces sí funcionaban pero otras veces no, y el culpable es la implementación de ECH que han realizado. Hoy en RedesZone os vamos a explicar en qué consiste ECH, cómo activarlo en los navegadores web y cómo comprobar si realmente está o no activado.
Qué es la extensión ECH
El protocolo TLS dispone de una extensión llamada SNI (Server Name Indication) que se manda siempre en texto claro para que el servidor web de destino sepa a qué web queremos llegar, ya que lo normal es que el mismo servidor aloje decenas de páginas simultáneamente. Esto supone un verdadero problema para la privacidad porque se puede capturar muy fácilmente, y de hecho, el bloqueo que realizan los operadores actualmente se basa justamente en comprobar el campo SNI del protocolo TLS. Ahora esto se ha solucionado con la extensión de TLS llamada ECH.
La extensión de TLS llamada Encrypted Client Hello (ECH) nos permite cifrar el primer «hola» que realizan los clientes al servidor web, de esta forma, información sensible como el nombre de la web que queremos visitar estará completamente protegido frente a la interceptación por parte de terceros, como los operadores de Internet o cualquier ciberdelincuente que nos esté haciendo un ataque Man in the Middle. El lanzamiento de ECH supone una verdadera revolución en el mundo de Internet, después de HTTPS y de los protocolos para proteger las peticiones y resoluciones de DNS que os hemos mencionado anteriormente.
Los principales navegadores de Internet como Mozilla y Google Chrome, algunos gigantes de CDN como Cloudflare, e incluso la organización de la IETF, han estado desarrollando durante varios años esta extensión de TLS para tener una conexión cifrada punto a punto desde el primer «hola». Hay que tener en cuenta que, el contenido de la navegación web, la autenticación en diferentes webs, cuando introducimos nuestras tarjetas en sitios web de compras, y mucho más, se encuentra totalmente cifrado punto a punto gracias al protocolo TLS. Sin embargo, ECH nos permitirá proteger la identidad de los sitios web que visitamos, haciendo que sea imposible saber a qué web queremos entrar, algo que sí ocurre si no usamos ECH y tenemos el popular SNI.
Cuando un navegador web se conecta a un sitio web, se transmite el sitio en el mensaje inicial y éste no está cifrado, el esquema de comunicación sería el siguiente:
La extensión ECH es capaz de usar una clave pública obtenida a través del sistema DNS para cifrar este primer mensaje entre el navegador web y el sitio web, protegiendo el nombre del sitio de destino para evitar bloqueos y mejorando la privacidad del usuario. En el siguiente esquema se puede ver que este mensaje se encuentra totalmente cifrado:
Si queréis saber más en detalle el funcionamiento de esta extensión de TLS, os recomendamos ver este completo diagrama de mensajes entre el cliente web y el servidor:
Activando esta extensión ECH en los navegadores web y también en los servidores web y CDN, tendremos una mayor privacidad de forma global, impidiendo que terceras personas puedan «espiar» nuestras conexiones.
Es muy importante que, no solamente los navegadores web soporten este protocolo, sino también los servidores web y CDN. Ahora mismo hay muy pocas webs con soporte a esta extensión de TLS, de hecho, el gigante Cloudflare lo activó hace un tiempo y lo tuvo que desactivar porque había muchos problemas de navegación por las diferentes webs que están en su CDN, y es que todavía no está del todo «afinado» para desplegarlo de manera masiva. De hecho, Cloudflare tenía la posibilidad de usar ECH de manera individual en las webs que se quisiera, y debido a estos problemas que han encontrado, han deshabilitado esta posibilidad y ni siquiera podemos habilitarlo manualmente.
La necesidad de esta extensión del protocolo TLS es clave, ya que busca mejorar la seguridad de las conexiones web. Y todo porque consigue ocultar un elemento que resulta clave: SNI o Server Name Indication. El inconveniente está en que el SNI no está cifrado en las conexiones TLS tradicionales, dando lugar a que, por mucho que el contenido esté protegido, los intermediarios sí que pueden conocer el dominio al que se accede.
¿Con ECH los operadores ya no podrán bloquearme webs?
Hace años los operadores bloqueaban las webs a través de los servidores DNS, haciendo que si algún cliente usaba sus servidores DNS no pudieran entrar en determinadas webs. Con la popularización de los servidores DNS de Google y Cloudflare, cada vez más usuarios evadían estas restricciones, a no ser que también los dos gigantes de Internet bloquearan el dominio, algo que no suele ser habitual si solamente se comparten archivos con copyright. Debido a esto, los operadores tuvieran que invertir grandes cantidades de dinero en sistemas para examinar todas las conexiones TLS que hicieran sus clientes, al estar completamente cifradas, solamente pueden ver el campo SNI que es el dominio al que el usuario quiere entrar, entonces lo bloquean directamente devolviendo un error en la conexión.
Ahora con la extensión ECH esto es imposible, ya que toda la conexión hasta el primer «hello» se encuentra totalmente cifrado punto a punto, y los operadores no podrán descifrar esta conexión sin «romper» la conexión TLS, poniendo un certificado digital en medio, lo que provocaría que ese operador estaría espiando todas las conexiones a sus clientes, ya que habrían «levantado» la conexión HTTPS.
También es muy importante usar unos DNS que nos garanticen la seguridad y privacidad, en este caso, tenemos que usar tanto DNS over HTTPS (DoH) que ya lo tenemos integrado en los principales navegadores como Chrome o Firefox, e incluso DNS over TLS que podemos configurar directamente en nuestro router para que los clientes de la red local puedan realizar las peticiones y recibir las resoluciones DNS de manera totalmente privada. Al usar DoH o DoT, los mensajes DNS no podrán ser interceptados ni tampoco modificados al vuelo.
Por supuesto, todos estos protocolos se pueden combinar con las VPN (red privada virtual) para añadir una capa más de privacidad y seguridad, sobre todo porque las VPN nos permiten enmascarar la dirección IP pública del usuario, y cifra todo el tráfico por completo. En estos casos también tiene sentido usar ECH, porque estaremos protegiendo las identidades de los sitios web que visitamos mientras estamos conectado al proveedor de la VPN.
Alternativa a ECH para evitar bloqueos
Pese a que es una alternativa muy simple y que posiblemente no siempre funcione, el utilizar los datos móviles para navegar con tu ordenador conectado a ellos es una opción que, en ocasiones, nos puede servir, sobre todo si la operadora es diferente a la red WiFi a la que estamos conectados.
La mayoría de estos bloqueos dependen de la compañía, y, por tanto, usar otra puede ser una solución efectiva en un momento puntual, la cual también nos sirve para cambiar de IP y evitar otro tipo de baneos.
¿Y qué ocurre con los controles parentales?
A nivel doméstico y también profesional, tenemos diferentes tipos de tecnologías para filtrar las webs que se pueden o no visitar a través de los diferentes equipos. Ahora mismo, navegadores como Chrome o Firefox usan DNS over HTTPS para cifrar las solicitudes DNS, por lo que, si tenemos un sistema de DNS en casa como PiHole o AdGuard Home para filtrar estas solicitudes, no podremos bloquear las solicitudes maliciosas o de publicidad. Lo mismo ocurre en el caso de activar ECH, es posible que las empresas no puedan bloquear ciertos dominios si lo usamos.
En estos casos, tanto Mozilla como Google permiten configurar la activación o desactivación de esta extensión de TLS en los navegadores, para permitir o no el uso de esta característica. En el caso de que queramos implementar opciones de exclusión a nivel de red, podemos hacerlo sin problemas.
Cómo activarlo en el navegador Mozilla Firefox
Lo primero que debemos comprobar es que tengamos la versión de Mozilla Firefox 118 o posterior, y tendremos que habilitar el DNS over HTTPS para que nos funcione, de lo contrario, no estará disponible, aunque sí esté activado. Ahora mismo Firefox solamente permite usarlo en el caso de que DoH esté habilitado.
Si entramos en el menú de configuración avanzado de firefox poniendo en la barra de direcciones «about:config» y buscamos la cadena «echconfig» podemos ver que está todo en «true», lo que significa que está habilitado. Además, tenemos el fallback deshabilitado para tener la máxima seguridad.
Para habilitar el DNS over HTTPS si es que no lo tienes ya habilitado, debes irte a la sección de «Herramientas / Ajustes» y en el menú de «Privacidad & Seguridad» podrás verlo abajo del todo. En este menú debes activar la protección predeterminada, aumentada o máxima, para poder usar DoH y que ECH esté disponible.
Una vez que hayamos activado el DNS over HTTPS, cuando entremos en alguna web que soporta esta funcionalidad lo usaremos. No obstante, hoy en día ECH todavía está algo «verde», así que podrías tener problemas de conectividad.
Activarlo en el navegador Chrome
Si usas el navegador de Google Chrome y quieres usar esta extensión de TLS para proteger tu privacidad, podrás usarla a partir de la versión 117 del navegador. Lo normal es que siempre tengas el navegador actualizado a la última versión, por lo que no deberías tener problemas, pero revisa la versión desde el menú de tres puntos verticales, «Ayuda / Información de Google Chrome» y os saldrá algo como esto:
Una vez que nos hayamos asegurado de la versión, en la barra de direcciones ponemos lo siguiente para que nos lleve directamente a la configuración: «chrome://flags/#encrypted-client-hello» y veremos el siguiente menú:
En la primera opción tendremos que pasar de «Default» a «Enable«, y pinchar en el botón de «Relaunch» para aplicar los cambios correctamente. La configuración quedaría de la siguiente forma:
En este caso también es obligatorio que tengamos habilitado y funcionando el DNS over HTTPS. Nos vamos a la sección de «Configuración / Privacidad y seguridad» o directamente entra en la siguiente URL desde el navegador: «chrome://settings/security«. Una vez dentro, debes habilitar el DNS seguro y seleccionar Cloudflare o cualquier otro proveedor de los incorporados en el navegador:
Una vez que lo hayamos hecho, ya tendremos funcionando tanto DoH como también ECH para la navegación web, aunque lógicamente solo funcionará en los servidores web que lo soporten.
Comprueba si tienes ECH activado
Una vez que hayamos activado ECH en los navegadores web, es fundamental comprobar que efectivamente está habilitado para no tener problemas de privacidad. Actualmente existen diferentes herramientas online para comprobarlo, nuestra favorita es la que ofrece Cloudflare de forma gratuita. Puedes acceder directamente a este enlace y hacer la prueba, tarda un par de segundos en comprobar si lo tenemos habilitado y funcionando:
Nos debería salir algo como esto, indicándonos que tenemos DNS seguro, DNSSEC, TLS 1.3 y también «Secure SNI» que es ECH:
Cloudflare también nos permite acceder a una herramienta online en modo texto, esto es perfecto para comprobarlo sin necesidad de meternos en una página web en concreto, e incluso para automatizar scripts.
Nos debería salir algo como esto:
En la sección de «SNI» pone «Encrypted» por lo que estamos usando esta extensión de TLS 1.3 sin problemas.
Finalmente, otra web que podemos usar es la siguiente:
En este caso, nos debería salir algo como esto:
La última opción de «SSL_ECH_STATUS» nos debería salir como «Sucess», esto nos indica que la extensión de TLS está funcionando correctamente y sin problemas.
Como podéis ver, es muy fácil habilitar esta funcionalidad tan importante para proteger nuestra privacidad, y es muy sencillo comprobar que funciona correctamente. Un aspecto muy importante, es que podría llegar el caso en el que una web no cargue correctamente por tener esta función habilitada, de hecho, Cloudflare ha decidido deshabilitarlo en todas las webs de forma predeterminada porque detectaron muchos problemas de navegación.
Ventajas y desventajas de activar ECH
Son varias las ventajas que se pueden destacar de activar ECH, entre las más destacadas se encuentran:
- Mayor privacidad: sin duda, el principal beneficio es que consigue ocultar el dominio al que se entra. De esta forma, se evita que los operadores y otras entidades puedan monitorizar o bloquear de una manera más sencilla el acceso a diferentes páginas web.
- Se dificulta el proceso de bloquear sitios web: como decíamos, los sistemas que dependen del SNI ya no servirán para bloquear página web, puesto que no tendrán la oportunidad de seguir utilizando este sitio y así evitar que los usuarios puedan seguir accediendo sin inconvenientes a diferentes webs.
- Es compatible con las tecnologías actuales: hay que tener en cuenta que ECH se integra con TLS. ¿Qué sucede? Pues básicamente que no es necesario realizar un rediseño de manera completa de la infraestructura de la seguridad actual. Aquellas aplicaciones o servers que usan TLS, solamente deben integrar esta extensión en particular para disfrutar de esta serie de ventajas sin que sea un gran problema su implementación.
Pese a que puede servir para evitar el bloqueo de páginas así como otros beneficios, también tiene puntos en contra que debemos conocer:
- Incompatibilidad y necesidad de actualizaciones: Muchos servidores y clientes actuales pueden no soportar ECH, lo que puede llevar a problemas de compatibilidad. De la misma manera, para que siga siendo funcional, en lo que podemos usarlo, se necesitan actualizaciones periódicas para ello, por lo que no será tan sencillo como habilitar y olvidarnos de ella.
- Carga de procesamiento y latencia:Usar esta extensión significa que tanto el cliente como el servidor tendrán que trabajar más, lo que puede ser un problema en sistemas que no tienen muchos recursos. Además, establecer una conexión segura puede ser un poco más lento cuando se usa ECH.
- Limitada: La adopción de ECH está aún en sus primeras etapas, y muchos servicios, bibliotecas y herramientas pueden no estar preparadas para soportar esta tecnología, lo que puede limitar su despliegue y efectividad a corto plazo.
Pueden existir otras desventajas, aunque las principales serían estas, por lo que si no te repercuten, adelante, configura la extensión sin miedo y disfruta de los beneficios. Y es que, como has podido comprobar, las ventajas que presenta esta extensión en particular son bastante llamativas. Por lo que te puede hasta interesar probar a activarla durante un tiempo.
Conclusiones
En los últimos años se ha avanzado mucho en la seguridad y privacidad mientras navegamos por Internet, por ejemplo, actualmente disponemos del protocolo TLS 1.3 que no solamente nos proporciona una gran seguridad, sino una muy buena velocidad en las conexiones que se establecen. Este protocolo TLS 1.3 en comparación con TLS 1.2 es mucho más rápido, perfecto para tener una navegación web más fluida. También se ha mejorado la velocidad de la navegación gracias al protocolo QUIC, un protocolo que ahora mismo es soportado por miles de webs, y nos permitirá tener una gran seguridad y es realmente rápido. Por supuesto, DNS over HTTPS y DNS over TLS también nos garantizan que las solicitudes y respuestas de DNS estén completamente cifradas, algo fundamental porque si no nuestras conexiones no serían totalmente cifradas.
El último «ingrediente» incorporado a todas las conexiones ha sido ECH, una extensión de TLS que nos permitirá no enviar en texto plano el SNI del dominio que queremos visitar. Esta era la última forma que tenían los operadores o ciberdelincuentes para saber qué webs estamos visitando, ahora lo tendrán aún más difícil poder hacerlo. No obstante, aún falta mucho para que veamos cómo todos los servidores web lo soportan, ya que pueden aparecer problemas inesperados al usarlo al ser una tecnología relativamente nueva.
Desde hace unos meses Cloudflare nos daba la posibilidad de habilitar ECH como opción, para realizar las pruebas pertinentes en nuestras webs, después decidió habilitarlo para todas las webs de forma predeterminada, con el objetivo de proteger la privacidad y seguridad de los clientes. Después de un par de semanas funcionando de manera errática, han decidido volver hacia atrás y no tenerlo de forma predeterminada, ni tampoco de manera opcional. Desconocemos qué ha encontrado Cloudflare para quitar de raíz el uso de ECH, aunque creemos que se debe a los problemas que han experimentado los usuarios mientras estaba activado en toda la infraestructura. Es posible que tardemos unos meses en volver a ver ECH activado, o al menos como opción, tal y como estaba antes de la activación de manera masiva.
Si quieres hacer pruebas con esta extensión de TLS, siempre vas a poder desplegarlo en un servidor web propio y comprobar si tienes problemas o todo funciona correctamente. Por lo que es una de las diferentes posibilidades que tenemos. No obstante, debemos recordar que esta extensión de TLS está disponible en los principales servidores web como Nginx o Apache2. Asín que en estos casos lo cierto es que podrás realizar pruebas en local sin ningún tipo de inconveniente. Nuestra recomendación es que no lo hagas directamente en producción, porque podría ocasionar una interrupción del servicio si hay probelmas en los clientes web.