En estos momentos, la Unión Europea está elaborando su segunda directiva sobre seguridad de las redes y de la información (NIS2) y me preocupa el lenguaje utilizado para describir el sistema de nombres de dominio (DNS, por sus siglas en inglés) y los efectos negativos que la legislación tendrá sobre la seguridad y la resistencia del DNS.
En la actualidad, hay tres borradores diferentes del NIS2 en circulación. El Parlamento Europeo acaba de aprobar un borrador que luego será comparado con los borradores elaborados por el Consejo Europeo (Estados miembros de la Unión Europea) y la Comisión Europea (rama ejecutiva de la UE en Bruselas) para ser negociado hasta que las partes se pongan de acuerdo en un texto único.
Ya hemos escrito antes sobre el NIS2. Ahora me gustaría profundizar en el borrador del Consejo Europeo y en un aspecto concreto del DNS, indicando hasta qué punto la realidad técnica se aleja de la intención normativa.
La intención del NIS2 es garantizar que la infraestructura de la que depende Europa para su actividad económica sea segura y digna de confianza. Es un objetivo loable. De hecho, Internet Society cree que cualquier infraestructura de Internet en la que las personas tengan que confiar para su actividad social y económica debe ser segura y digna de confianza, independientemente de dónde vivan.
Para alcanzar este objetivo de seguridad, NIS2 quiere regular el sistema de nombres de dominio (DNS). El considerando 15 del borrador del Consejo Europeo del proyecto de NIS2 dice ahora:
“Por lo tanto, la presente Directiva debe aplicarse a todos los proveedores de servicios de DNS a lo largo de la cadena de suministro y resolución del DNS que sean de importancia para el mercado interior, las entidades que prestan servicios de registro de nombres de dominio, incluidos los operadores de servidores de nombres raíz con una huella significativa en la UE, los servidores de registros de nombres de dominio de primer nivel (TLD), las entidades que prestan servicios de registro de nombres de dominio, los operadores de servidores de nombres autorizados para nombres de dominio y los operadores de resolvedores recursivos”
(Esto procede del documento 12019/2/21 Rev2 con fecha del 25 de octubre de 2021, no disponible para el público, por lo que los tachados y la negrita indican cambios recientes en el texto del proyecto).
El anexo de la versión del Consejo dice ahora “proveedores de servicios DNS, incluidos los operadores de servidores de nombres raíz con una huella significativa en la UE (más de 10 sitios en la UE)”.
Si miramos este lenguaje a través de la lente de los pilares de la seguridad a la infraestructura del servidor DNS, el lenguaje del Consejo no añade ninguna seguridad o confianza. A continuación, examinamos primero la integridad y la autenticidad y, posteriormente, la disponibilidad[1].
Integridad y autenticidad
Cuando se trata de la seguridad y la fiabilidad, debemos considerar en primer lugar la cuestión de la integridad de la información que proporciona el DNS. ¿La información sobre un dominio que el usuario recibe de un resolvedor de DNS es la información correcta y exacta que el operador del dominio introdujo en el DNS? La integridad está garantizada por las extensiones de seguridad del DNS (DNSSEC, por sus siglas en inglés). Con DNSSEC, la información proporcionada ha sido firmada criptográficamente por el editor de la información. No importa cómo se reciba esa información, los usuarios pueden verificar criptográficamente que las respuestas son exactamente las mismas que las publicadas por el propietario del dominio. No importa dónde se encuentre el servidor de nombres, ni siquiera lo seguro que sea: la información está firmada y, por tanto, no puede ser modificada, por lo que tenemos integridad. Debido a las propiedades criptográficas de las firmas, sabemos qué entidad publicó una información DNS concreta, por lo que también tenemos autenticidad.
Independientemente del tamaño de la “huella”, tener más o menos servidores de nombres no afecta a la autenticidad e integridad de la información DNS. Tener DNSSEC sí lo hace. Y, afortunadamente, el estado de la adopción de DNSSEC a nivel nacional en la UE es bastante avanzado (mira aquí nuestros mapas de adopción).
En cuanto a la integridad y autenticidad del DNS, las disposiciones de NIS2 sobre los servidores de nombres no van a suponer ninguna diferencia. Pueden afectar a la provisión de la información del DNS en sí (a través de los registradores y registros), pero no a la forma en que esa información se pone a disposición en Internet.
Disponibilidad
Dado que la autenticidad y la integridad no se ven afectadas por las disposiciones del servidor de nombres de NIS2, seguramente NIS2 mejorará al menos la disponibilidad y, por lo tanto, la fiabilidad y la seguridad, ¿verdad?
Para entender esto, veamos la disponibilidad desde la perspectiva del usuario. Cuando el usuario introduce un nombre de dominio en un navegador web, por ejemplo, ese nombre de dominio se envía a un resolvedor recursivo DNS local para buscar una dirección IP. A continuación, el resolvedor recursivo consulta a los servidores de nombres autorizados, como los servidores raíz, para obtener una respuesta en nombre del usuario.
En este proceso, el resolvedor recursivo creará una lista interna de todas las direcciones IP de los servidores de nombres autorizados en los que está disponible la información sobre un determinado nombre de dominio.
El resolvedor recursivo elegirá entonces al azar una de las direcciones IP del servidor de nombres autorizados para buscar una respuesta. Al resolvedor recursivo no le importa dónde se encuentra ese servidor autorizado. Al menos una implementación popular de resolvedores recursivos no se preocupa de en qué continente o región económica se encuentra la IP, sino que elegirá al azar de todo el mundo[2].
(Por otra parte, la razón por la que hace esto es para prevenir el llamado ataque Kaminsky al que el DNS es vulnerable en ausencia de DNSSEC, véase https://www.nlnetlabs.nl/documentation/unbound/patch-announce102/ y https://www.nlnetlabs.nl/documentation/unbound/info-timeout/).
Para mejorar la resistencia, la disponibilidad y el rendimiento del sistema DNS, los operadores de servicios DNS han utilizado ampliamente una técnica llamada “anycast”. La idea es que copias exactas de un servidor DNS, incluyendo su dirección IP, se despliegan en muchos lugares de la infraestructura de red. Esos servidores se llaman “instancias” (no sitios, como en el anexo) y si hay varias instancias en Internet, cada una atraerá el tráfico que esté cerca de ella en términos de topología de red. Son imanes de tráfico.
Al crear más instancias de un servidor de nombres se consiguen dos cosas. En primer lugar, si la selección aleatoria elige la IP del servidor de nombres, tener una instancia cercana en la topología de la red te permitirá obtener una respuesta más rápida. Segundo, una instancia atraerá todo el tráfico local. Así que si la IP de un servidor de nombres está bajo un ataque de denegación de servicio (DOS, por sus siglas en inglés) de gran volumen, estas atraerán el tráfico de ataque local, permitiendo a los operadores de red identificar y responder mejor a los atacantes. Más instancias significa más capacidad para hacer frente a los ataques de DOS, lo que a su vez significa que habrá menos resultados debilitantes. Y cuantas más instancias, menos ciudadanos de la UE se verán afectados durante los ataques DOS de gran volumen.
Por lo tanto, cuantas más instancias de servidores de nombres haya en la red, más segura será. Lo ideal sería que todos los operadores desplegaran varias instancias de servidores de nombres en territorio europeo. De este modo, se puede estar seguro de que el algoritmo aleatorio siempre responderá con prontitud. Simplemente se obtiene más resistencia y mejor rendimiento.
Pero ¿incentivará NIS2 la creación de más servidores de nombres? ¿En particular, servidores raíz?
No creo que lo haga. De hecho, puede hacer que los operadores de servidores de nombres se planteen reducir la cantidad de servidores de nombres a menos de 10 para quedar fuera del ámbito de la normativa. Por lo tanto, tal y como está la directiva, incentiva la reducción de la resistencia y la disponibilidad.
Responsabilidad
De forma más general, si se observa la última frase del considerando 15.
“las entidades que prestan servicios de registro de nombres de dominio, los operadores de servidores de nombres autorizados para nombres de dominio y los operadores de resolvedores recursivos”.
Los operadores de resolvedores recursivos forman parte de la cadena de suministro de las empresas y los proveedores de servicios de Internet (ISP, por sus siglas en inglés) que deciden utilizarlos. Del mismo modo, los servidores de nombres autorizados forman parte de una cadena de suministro de la que, en última instancia, es responsable el titular del dominio. La entidad que pone a disposición sus servicios a través de, por ejemplo, un dominio de la UE, garantizaría la disponibilidad de su servicio mediante acuerdos de nivel de servicio en la cadena de suministro. En última instancia, quienes ponen a disposición un servicio que depende de un nombre de dominio son responsables de la disponibilidad de ese servicio. Esta responsabilidad se transmite a través de los contratos y, de este modo, se crea una cultura de la seguridad. La responsabilidad se garantiza de abajo arriba, en lugar de arriba abajo.
Si el Consejo Europeo y la Comisión Europea quieren evitar los riesgos de un enfoque descendente de la regulación del DNS que podría fragmentar gravemente Internet y reducir la seguridad en línea, debería seguir el ejemplo de la versión del Parlamento Europeo del texto NIS2, que ha excluido a los servidores de nombres raíz del ámbito de aplicación. De hecho, debería ir un paso más allá y excluir el sistema de servidores raíz en su conjunto, tanto por los argumentos técnicos mencionados anteriormente como porque ya se rige por las buenas prácticas en un proceso abierto de múltiples partes interesadas.
[1] Los pilares de la seguridad son la confidencialidad, la integridad, la autenticidad y la disponibilidad. No hablamos de la confidencialidad, ya que, aunque es un componente importante para hacer que el DNS sea más seguro y digno de confianza, no desempeña ningún papel en el texto del borrador.
[2] Describo el comportamiento del servidor de nombres recursivo Unbound, uno que ayudé a diseñar. Ese servidor trata todos los servidores que están a menos de 400 ms de tiempo de ida y vuelta (en cualquier parte del mundo) como similares.