Privacidad en el DNS

En el sistema de nombres de dominio (DNS) la información de preguntas y respuestas siempre ha viajado “en plano” por la red. Es decir, sin cifrar. Todo lo que se consulta vía DNS puede ser leído por quienes se encuentren en el camino entre un cliente y su “servidor DNS recursivo”, por ejemplo los proveedores de Internet (ISPs) y gente que pueda analizar los paquetes de la red.

Desde hace un tiempo que esto se ha visto con preocupación. Siempre se ha dicho que “los datos del DNS son públicos”, lo que es cierto, pero lo que alguien esté consultando debiera ser privado. El sitio de alcohólicos anónimos es público, pero debiera ser privado quiénes están consultando por el. Esa es la diferencia.

Se ha trabajado desde distintos lados las mejoras de privacidad, en especial desde IETF, el organismo que estandariza los protocolos en Internet. Hay avances en TLS (también conocido como SSL) y por supuesto también en DNS, donde hay varias técnicas en camino.

Una de estas técnicas se llama “DNS over TLS”, que aprovecha la encriptación y autenticación que ofrece TLS para mezclarlo con el soporte de transporte TCP en DNS.

Con los mayores riesgos de invasión a la privacidad de los usuarios, se hace necesario comenzar a preocuparse y cuidarse de este abuso.

DNS sobre TLS

Se trata del clásico protocolo DNS pero esta vez utilizando exclusivamente TCP (recuerden que el DNS clásico utiliza UDP en su gran mayoría, pero TCP siempre ha estado disponible), a lo que se suma el cifrado de TLS (que es el mismo cifrado que hace HTTPS del protocolo en plano HTTP). Utiliza un puerto especial (853) y requiere que los clientes que lo utilizan autentiquen el certificado del servidor por medio de “pinning” o bien utilizando las clásicas autoridades de certificados x509.

DNS-over-TLS utiliza técnicas de optimización como el reuso del canal TCP y la mantención de la conexión abierta, para lograr tiempos de respuesta similares al DNS clásico sobre UDP. De todas formas esta técnica viene penalizada por el costo extra de establecer la conexión TCP la primera vez, además del intercambio durante el cifrado TLS, pero se espera que en un uso normal de un stub resolver cada consulta sucesiva sea solo resuelta en 1 paquete de ida y vuelta, quedando similar a UDP. Además el tener una sesión abierta en TCP permitirá otras técnicas futuras, como pipelining y “server-push”.

dnsotls.lab.nic.cl

NIC Chile dispone de un servidor de prueba puesto a disposición de los desarrolladores y primeros usuarios en adoptar y probar esta tecnología. Este servidor es completamente funcional, y se invita a la comunidad de .CL a utilizarlo consiguiendo tiempos de respuesta nacionales, sin necesidad de utilizar servicios en el extranjero. Este servicio se entrega en forma gratuita pero en modo experimental, sin promesas de uptime ni su continuidad en el futuro. Existe registro de las queries con fines de investigación y control de abuso.

Para utilizarlo, los datos son:

 IPv4: 200.1.123.46  IPv6: 2001:1398:1:0:200:1:123:46  Port: 853  Hostname: dnsotls.lab.nic.cl (sin embargo no dispone de "strict name TLS authentication")  SPKI: sG6kj+XJToXwt1M6+9BeCz1SOj/1/mdZn56OZvCyZZc=

Se agradecen los reportes de fallas y feedback técnico a través del correo dnsotls@lab.nic.cl.

Para alternativas de software en el lado del cliente se recomienda stubby.

Más información en el sitio de DNS Privacy Project (en inglés).

(Este artículo se publicó originalmente en el Blog de NIC Chile).


Next post: ¿Cómo probar conectividad IPv6 en Chile?

Previous post: Uso de BGP para analizar cortes en conectividad