Una llamada a las armas (I): DNS
En Constructive Direct Action Against Censorship, la Electronic Frontier Foundation (EFF) nos propone 4 proyectos de lucha contra la censura en Internet. No son manifiestos, no son ataques de denegación de servicio distribuidos (DDoS), ni tampoco son pérdidas de tiempo como llamar a acciones "en el mundo real". Las propuestas son:
- The Dot-P2P Project: un sistema DNS libre, descentralizado y abierto
- The Tahoe Least-Authority File System: un sistema de ficheros seguro y tolerante a fallos a través de Internet
- The Tor Project: una red que funciona como capa de anonimato
- BitCoin: una moneda virtual descentralizada
The Dot-P2P Project: a raiz del borrado del dominio Wikileaks.org se puso de manifiesto uno de los grandes cuellos de botella de la Internet actual: la gestión de nombres de dominio está centralizada en una organización, la ICANN, que supuestamente debería conducirse de forma neutral, pero que ha demostrado todo lo contrario cediendo a las presiones de un gobierno concreto. Pero aun hay más: nuevas leyes promulgadas en EE.UU. están resultando en embargo de nombres de dominio a páginas acusadas de "piratería", como es este caso, con el agravante de que las acusaciones vienen de un país diferente.
Se podrían poner más ejemplos, pero ya habéis captado la esencia del problema: InterNIC (que es como históricamente se ha llamado a los servidores raiz ahora gestionados por la ICANN) ya no es fiable. La primera solución obvia que se le ocurre a cualquiera es precisamente cambiar la autoridad de los servidores raiz. Al fin y al cabo, nadie ha escrito en piedra que los root-servers de Internet (aquellos de los que al final depende la resolución de los nombres de dominio) tengan que ser los 13 de InterNIC. Y por eso, desde hace tiempo existen algunas raices DNS alternativas. Por desgracia, estas alternativas son escasamente populares y no parece que amenacen la hegemonía de InterNIC/ICANN, aunque yo por si acaso ya estoy usando los servidores raiz de OpenNIC (si no eres de OpenNIC, ese enlace no te funcionará, puedes consultar más sobre ellos aquí o en Wikipedia), la más popular de las poco populares alternativas.
Otra de las pegas de OpenNIC y otras raices alternativas es que realmente sólo gestionan dominios de alto nivel alternativos (como .free, .geek, .indy, .oss, etc), mientras que para los "7 grandes" (ahora son más) dominios de alto nivel, más los dominios nacionales se limitan a copiar los registros de InterNIC. Es decir, que los típicos .com, .org, .net, y compañía, siguen resolviéndose como hasta ahora, y lo único que se gana son los nuevos dominios de alto nivel gestionados por OpenNIC. Estos dominios son gratuitos (no son el gran negocio de los dominios que se ha montado la ICANN), sin embargo, sigue siendo una entidad centralizada quien los gestiona. Particularmente, me molesta además que, por ejemplo, haya que dar datos personales (como una dirección o un teléfono) para registrar un dominio (por eso no he registrado ninguno).
Volvamos al proyecto dotP2P. En este estado de cosas, y con la censura del dominio de Wikileaks y la posterior reacción popular creando subdominios apuntando a sus direcciones IP, uno de los cofundadores de The Pirate Bay lanza una propuesta de crear un sistema DNS libre alternativo al de ICANN. Entre otras cosas se quiere que sea un sistema distribuido, para que no pueda sufrir ataques de denegación de servicio como los que estaba sufriendo el DNS de Wikileaks, y para ello se propone usar protocolos P2P. Todo esto se canaliza —se esta canalizando, puesto que está en plena fase de formación— en lo que bautiza como Dot-P2P. En la web podéis ver un wiki con las líneas en las que se están trabajando.
He de decir que mi primera reacción fue de escepticismo. Escepticismo porque el DNS es ya un sistema distribuido de por sí. Sin embargo, es cierto que tiene algunos cuellos de botella atacables. El primero y obvio es el de la gestión: es centralizada, y por lo tanto dependiente del "buen comportamiento" de la organización que la realiza. El segundo, menos obvio, es cada propio nodo de la estructura de DNS empezando por los propios root-servers, que si bien pueden ser replicados y reforzados, no es algo que se haga automática y dinámicamente, y por lo tanto no es algo que se defienda bien de ataques DDoS (la mejor defensa contra un ataque distribuido es una defensa distribuida).
Así que una vez pasado mi escepticismo inicial, reconozco que un sistema de resolución de nombres descentralizado y P2P no es una mala idea. Lo que ya no me parece tan buena idea son algunas de las decisiones que se están tomando ahora mismo dentro de dotP2P:
- Se ha escogido mantener la gestión de dominios centralizada (al parecer, pese a las protestas de un sector)
- Se ha escogido seguir dependiendo de unos root-servers estáticos, en este caso de los de OpenNIC, que delegarían la zona .p2p a los servidores de esta red (no está muy claro cómo ni a cuáles)
- Por un lado, una gestión descentralizada de los nombres de dominio
- Por otro, un sistema de resolución de nombres a IPs distribuido y probablemente dinámico.
En cuanto al segundo problema, lo que debemos plantearnos para empezar es si queremos mantener el viejo sistema del DNS. El DNS es una estructura jerárquica, y plasmarla mediante una estructura horizontal va a llevar a ciertos problemas de "impedancia" entre modelos. Por otro lado, se pueden plantear enfoques mucho más radicales:
- los nombres para identificar máquinas (al menos a primer nivel) no son jerárquicos. Esto significa que, por poner un ejemplo, mi nombre de máquina (o mejor, dominio) no sería "jcantero.org" o "jcantero.com" o "jcantero.algo"; sería "jcantero". No hay necesidad de fragmentar en grandes grupos tipo "org" o "com", que son cuellos de botella y que además no reflejan ninguna subdivisión real. Podría pensarse en una subdivisión geográfica "jcantero.es", pero entonces tenemos el problema de que es una división arbitraria, no balanceable y que aporta datos privados que igual no queremos dar. Tendría mucho más sentido subdividir, por ejemplo, por comunidades virtuales ("jcantero.ecol").
- El resolutor de nombres P2P no tiene por qué pasar por el sistema DNS. Puede usar su propio sistema P2P para resolver el nombre, sin consultar servidores raiz ni bajar por los nodos. Si estás en una red que no controlas, el que las peticiones pasen por el sistema DNS tiene la ventaja —no en todos los casos— que los firewalls y demás filtros permiten esas conexiones y puede que tengas permitido resolver peticiones DNS aunque no puedas abrir otro tipo de conexiones. Pero tiene la desventaja que se puede manipular (incluyendo filtrar) en el camino los paquetes de DNS. Si el resolutor es un cliente P2P, mientras puedas abrir algún tipo de conexión con la red P2P podrás resolver nombres, y si fuera necesario las comunicaciones podrían ir cifradas para garantizar su integridad.
- Si por las razones que fueran se decide que el sistema debe responder al protocolo DNS (es decir, ser un backend DNS en su conjunto), si se quiere que participen masivamente servidores para que la red sea robusta ante ataques, debe permitirse la participación de servidores residentes en IPs dinámicas, incluso detrás de NATs. Ello plantea una serie de desafíos, puesto que tanto el protocolo DNS en sí como los servidores DNS tal y como estan programados hoy en día, estan pensados para un universo de IPs estáticas que cambian muy poco en el tiempo.
- Si ni siquiera se cumple la condición anterior, entonces simplemente estamos hablando de la delegación del top level domain .p2p a una serie de servidores con IP estática bien conocidos, cuya única ¿ventaja? es que intercambian los ficheros de zona vía P2P, entonces estamos hablando de una solución no muy, y también un poco "más de lo mismo" respecto a lo que ya hay. No significa que no pueda ser interesante, pero no va mucho más allá de lo que OpenNIC puede ofrecer, por ejemplo.



