Uso de Dns over Https (DoH)
Hasta hace unos años la comunicación en la red no funcionaba de manera encriptada. Los ISPs podían leer y recabar toda la información que circulase a través de ellos. Al igual que los hackers que husmeaban en las redes locales, y que podían robar y modificar paquetes al vuelo.
Actualmente ya se ha implantado la encriptación en la navegación hasta tal punto que los navegadores te alertan si no navegas en una página web que tenga certificado con el que comunicarte de manera segura.
Pero… ¿Ya estamos seguros? ¿Está todo cifrado?
Cada vez que accedemos a una página web, nuestro equipo le pide a un servidor DNS la dirección IP del servidor al que nos queremos conectar. Y ahí reside el problema: esa comunicación no va encriptada.
¿Quién se puede aprovechar de eso?
=> De nuevo los hackers en nuestra red local / WiFi que puedan redireccionar nuestras peticiones a webs malignas.
=> Las compañías telefónicas están aprovechando esto para bloquear contenidos con derechos de autor (páginas como epublibre, dontorrent, thepiratebay…)
Para conseguir arreglar el problema, ha empezado a surgir el uso de Dns con TLS (DoT) y Dns por Https (DoT); que son muy parecidas; pues una funciona por UDP usando el protocolo TLS, y la otra funciona por el puerto 443 como cualquier comunicación por https usando también el protocolo TLS.
Cuando digo ha empezado a surgir, me refiero exactamente a que ha empezado a surgir, ya que no es una tecnología que esté implantada de manera nativa en todos los sistemas operativos ni navegadores.
En Windows 10 por ejemplo, si queremos usarlo para todo el sistema, solo podremos activarlo si tenemos una versión superior a la 19628.
Podéis seguir un manual sencillo aquí.
Ese mismo manual tiene pasos tanto para Windows 10 como para los navegadores Edge, Firefox y Chrome.
Fin… ¿Fin?
Pues no. Resulta que quedan cosas sin encriptar: Cada vez que hacemos una petición de un nombre de dominio, éste puede responder con la misma IP a diferentes nombres de domino. Por ejemplo, esta misma web está en un hosting que sólo Dios (y tal vez los dueños del hosting) sabe cuantas personas estarán compartiendo su misma IP, a la que responde para muchísimos nombres de dominio diferentes. Y aunque solo fuese mía, también responde a diferentes nombres de dominio míos.
Y aquí reside el problema, que cada dominio alojado en esa IP tiene un certificado diferente y el saludo de cifrado entre cliente y servidor sucede antes de que el cliente indique a qué web se está conectando.
Y aquí llega la solución: ESNI, una extensión del protocolo TLS que mejora ese «saludo» de cifrado.
Actualmente estamos en una especie de «punto muerto» pero con alternativas.
En resumen: Mozilla introdujo el ESNI, pero actualmente solo le da soporte en la versión de soporte extendido (Firefox ESR 78) , porque quiere introducir ECH (una mejora del ESNI que solventa algunos problemas) pero mientras tanto deja sin soporte a ENSI ni a ECH al resto de versiones hasta que consiga terminar de implantarla.
Para chequear si hemos configurado bien el DoH+ESNI en Firefox ESR, o el DoH en otro navegador podemos visitar esta web: https://www.cloudflare.com/en-gb/ssl/encrypted-sni/
=> Mi consejo: Bajarse el Firefox ESR 78 portable y utilizarlo como navegador secundario activando DoH+ESNI.
Si de normal usamos firefox, para poder ejecutar ese al mismo tiempo hemos de abrirlo con el argumento «-new-instance» y así conseguimos abrir dos instancias diferentes de firefox.