Encriptación DNS’s

DNS (Domain Name Server) son las máquinas (servidores) encargados de traducir el nombre de una página web (https://burp.es) a la dirección Ip donde se encuentra alojada (172.21.180.155). Aquí más info al respecto.

Antes de entrar en el tema, vamos a valernos de la maravillosa Wikipedia para comentar como transita una conexión en internet desde que introducimos el nombre de la página web hasta donde ésta se encuentra alojada:

  1. Conexión NO segura HTTP
Imagen extraída de wikipedia

2. Conexión segura HTTPS

Imagen extraída de wikipedia

En estos dos casos, segurizamos (2) o no segurizamos (1) el tráfico entre nuestro navegador y el servidor donde se aloja la página web. Pero ¿qué pasa con la primera petición al servidor?. Pues que dicha petición no está encriptada. Dicho de otra forma, nuestro IPS (proveedor de acceso a internet) puede saber:

  1. A qué web nos conectamos.
  2. Qué páginas vemos dentro de dicha web.

Y aquí es donde entra en juego el DoH (Dns over HTTSP) -> DNS segurizado.

Para ello, necesitamos que tanto nuestro Router como el servidor DNS que utilicemos soporten dicha conexión. Esto no es inconveniente alguno dado que hoy en día hay muchas opciones donde elegir; nosotros utilizaremos los de Cloudflare: 1.1.1.1 y 1.0.0.1.

Pero el DoH no soluciona el problema inicial, esto es: al acceder al hosting donde se encuentra alojada la web que queremos visitar, se produce una petición cliente->servidor (ClientHello) donde se comunican el tipo de cifrado que soporta nuestro navegador, un número de cliente, el SNI, etcétera. Por lo tanto y dado que en dicha primera petición es donde se establecerá la segurización, ésta a su vez, no está encriptada.

De vueltas de todo esto, nuestro ISP puede saber a qué web nos conectamos pero no lo que hacemos dentro de ella: lo que se contempla en la imagen 2. Conexión segura HTTPS antes expuesta.

Y aquí es donde entra en acción la posibilidad de usar eSNI (Encrypted Server Name Indication). Con él activado, incluso esa primera petición donde se comunican cliente->servidor está segurizada

3. Conexión DoH + eSNI

Imagen extraída de wikipedia

Fin de la historia. Pues no.

El problema final que presenta eSNI es que SÓLO funciona si está implementado en todo el proceso cliente->servidor. Esto significa que tanto nuestro navegador como el hosting donde se encuentra alojada la web deben soportar eSNI.

A nivel de hosting, debería ser el propietario de la página quien lo indicara (Burp.es mantiene dicha compatibilidad),

A nivel de navegador, Firefox lo soporta; desconozco si algún otro. Aunque en Enero de éste mismo año, Mozilla anunció que Firefox cambiaría eSNI por la mejor y más completa ECH.