Reimaginando un sistema de nombres de dominio más seguro

que es dns

En octubre de 2016 un ataque tumbó durante horas una buena parte de los servicios online masivos que utilizamos en occidente. El ataque, conocido más adelante como Mirai, seguía una estructura de DDoS convencional, pero paradógicamente había conseguido tumbar varios de los elementos de la cadena críticos para el funcionamiento del Internet público, lo que a todas luces muchos podrían pensar que se trataba de la mayor Red Descentralizada creada por el humano.

La semana pasada conocíamos que durante dos horas buena parte del tráfico europeo fue redirigido «casualmente» a una única ISP china (EN), que en vez de avisar se encargó de suministrar ellos solos todas las peticiones y de paso explotar los datos de todos esos ciudadanos.

¿Cómo es esto posible?

Por una razón muy sencilla. La descentralización de Internet es cada vez más reducida. Pese a que cada vez hay más servicios online y cada vez más internautas.

De hecho, es un tema del que hemos hablado en más de una ocasión, y que viendo cómo ha evolucionado el ecosistema tecnológico estos últimos años, ya se está transformando en un problema muy serio.

Entendiendo el funcionamiento de la cadena de suministro de servicios digitales

En teoría cualquier persona puede conectar un dispositivo con almacenamiento a Internet y crearse ahí su página web o su servidor de correo.

No obstante, el primer problema que nos vamos a encontrar es que para acceder a ese servicio otro usuario debe conocer su dirección, y puesto que no hay suficientes IPs en el mundo para todos (por ello tuvimos que cambiar el protocolo IPv4 a IPv6), la mayoría de conexiones que tenemos por casas y oficinas son dinámicas. Nos asocian una IP distinta cada vez de todas las disponibles que tiene contratadas el ISP.

Así que aquí tenemos el segundo problema:

Para acceder a mi servicio tú tendrás que conocer mi IP, y puesto que mi IP puede cambiar cada cierto tiempo, debería tener que avisarte de ello cada vez.

¿Cómo solucionamos esto? Pues muy sencillo. Pidiendo al ISP que nos otorgue una IP estática.

A partir de ahora mi servicio online siempre tendrá de nombre esa IP (por ejemplo, 86.6.245.12). He conseguido por tanto tener una dirección de Internet fija… a cambio de limitar esa apertura descentralizada inicial absoluta a un proveedor de red en específico.

Y es que aquí viene el tercer problema:

La gente se queja de que no es capaz de recordar mi dirección IP. Que acordarse de cuatro grupos de números (y con IPv6, ¡de números en hexadecimal!) es demasiado. Ergo, la gente no visita mi servicio.

¿Qué puedo hacer? Pues contratar un nombre de dominio. De esta manera, en vez de tener que teclear 86.6.245.12 en el navegador para acceder a mi servicio, el usuario solo se tiene que acordar de PabloYglesias.com.

Pero claro, de nuevo he sacrificado descentralización a cambio de usabilidad. Ya que ese nombre de dominio me lo ha concedido un organismo estadounidense sin ánimo de lucro encargado de estas tareas (la Corporación de Internet para la Asignación de Nombres y Números o ICANN, por sus siglas en inglés). Y cuando el usuario teclea PabloYglesias.com en su navegador, es el ISP, o el servidor de DNS que tenga habilitado en su dispositivo quien se encarga de revisar en una inmensa base de datos a qué dirección IP debemos llamar.

Por tanto, donde antes solo estábamos tú (el usuario) y yo (el administrador del servicio), ahora estamos:

  • (el usuario),
  • yo (el administrador del servicio),
  • mi ISP (que es quien me suministra la IP estática necesaria para ofrecerte el servicio),
  • la ICANN (a quien le he contratado el dominio) más el intermediario (lo normal es que contratemos con un servicio que se encarga de reservar a nuestro nombre el dominio para la ICANN, y si la extensión es nacional, con otro intermediario extra que es el proveedor de esa extensión en el país),
  • y el proveedor de DNS que tú utilizas, que por defecto es el que quiera el ISP que te suministra el servicio o el que tú hayas configurado.

¿Esto es todo?

Pues no, porque a todo esto ahora hay que añadirle ese candadito que ves al lado del nombre de dominio. Un candado que pese a la traducción española, no asegura que esa página es segura, sino simplemente que es privada. Y según el sistema de certificación que usemos, puede (solo puede) que también es legítima :).

Para que yo, como administrador de este servicio online, pueda ofrecer el dichoso candadito, tengo que firmar mi página con una certificadora de SSL. Otra empresa más, que puede ser con o sin ánimo de lucro, que certifica que la conexión que haces desde que le das al botón de enviar hasta que entras en mi página se está realizando de forma cifrada.

Así que a todos los intermediarios anteriores ahora súmale el gestor de HTTPs.

Varios elementos de la cadena que están ahí precisamente para mejorar la usabilidad y la privacidad de las comunicaciones. Pero que en sí hacen que lo que antes era un sistema puramente descentralizado ahora ya sea algo más centralizado. La ICANN solo hay una en el mundo. Certificadoras de SSL las podemos contar con los dedos de las manos…

¿Ves por dónde voy?

¿Cómo asegurar la robustez de un Internet cada vez más centralizado?

La única respuesta que se me ocurre es abrazando sistemas que descentralicen esos controles que a día de hoy se han vuelto necesarios, y cuya gestión recae en estos momentos en muy pocas organizaciones.

Es así como llego al trabajo que están haciendo los chicos de Handshake (EN), un proyecto de software libre que se ofrece como una alternativa al sistema de nombres de dominio actuales.

Basado en blockchain (para variar), la idea es que el sistema de registro de bloques sea quien certifique que X servicio está en la IP Y, y no un organismo centralizado como la ICANN.

Además, tiene algunos puntos que sí me han gustado frente a otras alternativas del mercado, y es que:

  • Es compatible con el sistema actual: Handshake no pretende sustituir a la ICANN, sino ofrecer otra herramienta más para mejorar la seguridad y robustez de toda la cadena. De esta manera, si el día de mañana los servidores de DNS mundiales vuelven a fallar (o son envenenados para suministrar páginas distintas a las legítimas), habrá «otro» basado en la compartición descentralizada que se presenta a priori mucho más robusto. Y si estamos utilizando Handshake para navegar y en sus registros no tiene la dirección del servicio que buscamos, él mismo se encarga de redirigir a otro DNS tradicional.
  • Democratizaría el acceso a nuevas extensiones de dominio: Por si no lo sabes, aunque un servidor quisiera, no podría tener un dominio del tipo Pablo.Yglesias. Esto se debe nuevamente a que para que lo pudiera hacer, la ICANN debería sacar la extensión .Yglesias, y por supuesto dudo muchísimo que alguna vez lo haga. Con algo como Handshake esto es totalmente posible. Cada administrador interesado en crear un nuevo nombre de dominio tendrá que pujar por él como si de una subasta digital se tratase, y para evitar malos usos e incentivar la participación, el ganador siempre pagará el segundo mayor precio.

Sobra decir que no todo son luces. A fin de cuentas el éxito o fracaso de Handshake depende, como en todos los proyectos descentralizados, de que consigan tener una masa crítica de usuarios. Cuanto mayor número haya, más robusta es una red descentralizada. Cuanto menor haya, menos descentralizada es, y por tanto, más estará sujeta a las tergiversaciones de uso de una minoría.

Afortunadamente sí es cierto que han diseñado el sistema para que quien quiera pase a ser un elemento más de la cadena de blockchain, y quien solo quiera utilizar HandShake como una especie de DNS, pueda hacerlo sin tener que volverse nodo activo, con una sencilla extensión.

¿Llegará a algo?

Pues sinceramente lo dudo. Hablamos de proyectos que veo complicado que acaben saliendo adelante, más que nada porque el usuario base desconoce el problema, y los que tienen capacidad y conocimiento para apostar por ello seguramente tampoco estén interesados.

Aquí no se trata de estar a favor o en contra de la centralización. Cada paradigma tiene sus puntos fuertes y sus débiles.

Lo ideal, de hecho, sería que mantuviéramos un tenso equilibrio entre ambos, aprovechándonos de las ventajas de unos y otros, y minimizando precisamente sus desventajas.

Todo con la idea de evitar facilitarle la vida a aquellos gobiernos interesados en mantener una Sociedad de Control y una censura masiva y dirigida. Pero también con idea de mejorar esa Seguridad Nacional que precisamente tan en boca está de estos mismos dirigentes.

________

¿Quieres conocer cuáles son mis dispositivos de trabajo y juego preferidos?

Revisa mi setup de trabajo (ES).

Y si te gustaría ver más de estos análisis por aquí. Si el contenido que realizo te sirve en tu día a día, piénsate si merece la pena invitarme a lo que vale un café, aunque sea digitalmente.

hazme patrono pabloyglesias