Las redes P2P o Peer-to-Peer son un tipo de redes descentralizadas. Redes que están formadas por cientos e incluso millones de ordenadores ubicados en todo el mundo. Todas ellas funcionando bajo un mismo protocolo de comunicaciones, con el objetivo de crear una enorme red para compartir información de cualquier índole. Si hoy podemos comprar bitcoins es gracias a este tipo de red.
Una red P2P, o peer-to-peer, es una red donde un grupo de personas o máquinas participan de forma completamente descentralizada. Es decir, es una red donde no hay un punto central de conexión o control, y donde las partes actúan de forma autónoma respondiendo a un protocolo de comunicaciones y consenso común. De esta forma, los integrantes de la red pueden intercambiar información de forma directa y sin intermediarios.
Gracia a esto, los protocolos P2P, han sido ampliamente utilizados desde su creación para distintos usos. Algunos legales, otros un tanto grises, pero pese a ello, hay una cosa muy clara, los protocolos P2P son muy potentes y permiten la creación de estructuras descentralizadas, difícilmente censurables y de uso libre. Por esa razón, criptomonedas como Bitcoin fueron construidas sobre la base de protocolos P2P.
Dicho esto, conozcamos un poco más sobre estos protocolos y su evolución.
✠ CARACTERISTICAS
Seis características deseables de las redes P2P:
1.- Escalabilidad. Las redes P2P tienen un alcance mundial con cientos de millones de usuarios potenciales. En general, lo deseable es que cuantos más nodos estén conectados a una red P2P, mejor será su funcionamiento. Así, cuando los nodos llegan y comparten sus propios recursos, los recursos totales del sistema aumentan. Esto es diferente en una arquitectura del modo servidor-cliente con un sistema fijo de servidores, en los cuales la adición de clientes podría significar una transferencia de datos más lenta para todos los usuarios. Algunos autores advierten que, si proliferan mucho este tipo de redes, cliente-servidor, podrían llegar a su fin, ya que a cada una de estas redes se conectarán muy pocos usuarios.
2.- Robustez. La naturaleza distribuida de las redes peer-to-peer también incrementa la robustez en caso de haber fallos en la réplica excesiva de los datos hacia múltiples destinos, y —-en sistemas P2P puros—- permitiendo a los peers encontrar la información sin hacer peticiones a ningún servidor centralizado de indexado. En el último caso, no hay ningún punto singular de falla en el sistema.
3.- Descentralización. Estas redes por definición son descentralizadas y todos los nodos son iguales. No existen nodos con funciones especiales, y por tanto ningún nodo es imprescindible para el funcionamiento de la red. En realidad, algunas redes comúnmente llamadas P2P no cumplen esta característica, como Napster, eDonkey o BitTorrent.
4.- Distribución de costes entre los usuarios. Se comparten o donan recursos a cambio de recursos. Según la aplicación de la red, los recursos pueden ser archivos, ancho de banda, ciclos de proceso o almacenamiento de disco.
5.- Anonimato. Es deseable que en estas redes quede anónimo el autor de un contenido, el editor, el lector, el servidor que lo alberga y la petición para encontrarlo, siempre que así lo necesiten los usuarios. Muchas veces el derecho al anonimato y los derechos de autor son incompatibles entre sí, y la industria propone mecanismos como el DRM para limitar ambos.
6.- Seguridad. Es una de las características deseables de las redes P2P menos implementada. Los objetivos de un P2P seguro serían identificar y evitar los nodos maliciosos, evitar el contenido infectado, evitar el espionaje de las comunicaciones entre nodos, creación de grupos seguros de nodos dentro de la red, protección de los recursos de la red... La mayor parte de los nodos aún están bajo investigación, pero los mecanismos más prometedores son: cifrado multiclave, cajas de arena, gestión de derechos de autor (la industria define qué puede hacer el usuario; por ejemplo, la segunda vez que se oye la canción se apaga), reputación (permitir acceso sólo a los conocidos), comunicaciones seguras, comentarios sobre los ficheros, etc.
✠ ORIGEN E HISTORIA DEL P2P
El origen de la primera red P2P, la podemos rastrear hasta la creación del protocolo UUCP o Unix to Unix Copy Protocol, en el año 1980. Este sencillo protocolo dio origen a la muy conocida red USENET y, a los BBS, redes que hoy en día aún se encuentran activas y funcionando. Un buen ejemplo de esto es, la BBS EfectoLinux, la cual aún está activa para los nostálgicos de este sistema de comunicación.
El principio de funcionamiento de estos sistemas es sencillo: la máquina realizaba una llamada de conexión (conexión por marcación) usando un modem, se comunicaba con la maquina destino, y podían compartir información punto-a-punto sin intermediarios. Al terminar la llamada de conexión, el usuario podía dar inicio a otra conexión con otra máquina comenzando el proceso nuevamente. Vale destacar que, todo esto era posible sin una estructura como la del Internet que conocemos hoy, una red y tecnología que para ese entonces aún estaba en desarrollo.
En su momento, USENET y el protocolo UUCP fueron la cumbre de las comunicaciones. De hecho, el movimiento cypherpunk inició con el uso de este protocolo. Personajes como Saint Jude, Eric Hughes, Timothy C. May, David Chaum, hacían uso de estos sistemas para compartir información en los tablones BBS de la comunidad Cypherpunks. Eran los primeros años de la computación, y en ese momento, ya se vislumbraba mucho de las posibilidades futuras de este tipo de protocolos y de computadores mucho más potentes y capaces.
Más tarde, en 1983, llegó al mundo el protocolo TCP/IP. Básicamente, este nuevo protocolo buscaba flexibilizar la creación de grandes redes globales, de hecho, es la base de construcción de lo que hoy conocemos como Internet. Esto último, se hizo realmente posible cuando se estableció el sistema o modelo OSI (definiendo las siete capas de abstracción que contamos actualmente en Internet) en 1989 y, finalmente, con la llegada del protocolo WWW (World Wide Web) en 1990.
✠ TIPOS DE REDES P2P
Entre los tipos de redes P2P existentes podemos especificar los siguientes:
- Red descentralizada y estructurada. Este tipo de redes son conocidas como redes P2P híbridas. En este tipo de redes no existe un directorio en un servidor central, sino que en su lugar existen una serie de nodos o peers, que tienen la capacidad de recibir peticiones de información y responder a las mismas para facilitar el acceso a los recursos. Para evitar la centralización de esta funcionalidad, los nodos o peer especiales pueden ser instalados y configurados por cualquier persona, buscando con ello que la misma comunidad de usuarios extienda la funcionalidad de la red y permita su correcto funcionamiento. Un buen ejemplo de este tipo de redes son las redes federadas como Diaspora o Mastodon.
- Red descentralizada y no estructurada. En este tipo de redes P2P no existen ordenadores o nodos que funcionen como controladores centrales de peticiones. Por el contrario, cada nodo dentro de la red tiene las mismas funciones que el resto de nodos, por lo que cada nuevo nodo ejerce la misma autoridad que el resto. En este punto, redes como Bitcoin cumplen con esta características, puesto que cada nodo conectado tiene las mismas capacidades que el resto.
✠ CÓMO FUNCIONA UNA RED P2P
El funcionamiento de una red P2P es relativamente sencillo. Básicamente lo que se hace es construir un protocolo (lenguaje) de comunicaciones que permita a las personas que usan dicho software comunicarse de forma directa y sin intermediarios con otros computadores. Sin embargo, el mayor problema frente a la construcción de estos sistemas es; ¿Cómo diseñar un sistema que no necesite un directorio centralizado para comunicarse con otros computadores que ejecuten el mismo software?
Un problema complejo, pero la situación se puede solventar de una forma bastante efectiva con dos medidas bien definidas:
En primer lugar, hacer que el software sea capaz de compartir información de conexión sobre quienes ejecutan el mismo. Así, cada computador que ejecuta el software es capaz de tener un directorio de computadores conectados y servirse de ellos para conectarse al nodo que desea.
Incentivar la mayor descentralización posible de la red. Es decir, hacer que muchas personas ejecuten el software creando sus propios nodos, y por tanto aumentando el tamaño de la red. De esta manera, se mejora su alcance y las posibilidades de la misma.
Es decir, mientras más pares o peers (computadores ejecutando el software P2P) tenga la red, más posibilidades hay de que la red no pueda ser censurada, su funcionamiento será más resistente y, mejores capacidades tendrá la misma. En los primeros sistemas P2P, como USENET o IRC, los sistemas y sus conexiones se hacían conocer por medios escritos, llamadas, o el mismo sistema que tenía un tablero de pares a los cuales poder conectarse. Así, cada nuevo integrante en la red, tenía acceso a la lista de peers y se auto añadía para que otros pudieran establecer comunicación con ellos en caso de requerirlo. No solo eso, ese nuevo peer podía ser la puerta de entrada a la información de peers que pudieran bloquearse.
Pero la creación de redes más grandes como el IRC, DCC, DC++, Napster, Gnutella, BitTorrent e incluso Bitcoin cambió drásticamente esto. Ahora cada nodo se conectaba a un punto, obtienen una lista de peer iniciales (o nodos semillas). Y a partir de allí, cada nodo es capaz de recrear una lista propia de nodos que pertenecen a la red. Como resultado se obtiene una mejor resistencia a la censura y la red puede crecer más rápidamente.
Por supuesto, el funcionamiento de cada protocolo es distinto. IRC por ejemplo, es un sistema distribuido (casi centralizado) de servidores que pueden darte la capacidad de conectarte punto a punto con una persona. Pero DC+ y Gnutella, son completamente descentralizados, sus redes están pensadas para que de forma automática, la red se ajuste con la entrada y salida de nuevos nodos a la red.
Lo mismo pasa en Bitcoin, donde la red comenzó con una sola semilla, la iniciada por Satoshi Nakamoto, y desde entonces, la red ha ido creciendo paulatinamente para convertirse en una red con un tamaño superior a los 10 mil nodos en activos. Por supuesto, el objetivo de Bitcoin es distinto al de una red como Gnutella, pero los principios del protocolo se mantienen: comunicar a dos partes sin intermediarios.
+ VENTAJAS
- Una red P2P es resistente a la censura. Una red P2P altamente descentralizada es prácticamente imposible de censurar.
- Ofrecen un resiliencia inigualable. Si un nodo cae, otro nodo puede tomar su lugar. Por eso dicen que las redes P2P pueden sobrevivir a una catástrofe nuclear, porque estas pueden destruir muchos nodos, pero si solo uno sobrevive, la red puede reconstruirse por completo.
- Las redes P2P pueden llevar a soluciones de escalabilidad potentes para presentar servicios únicos con alcance global.
- Al no depender de entidades centrales, las P2P generan más confianza en sus usuarios.
- Ofrecen un alto nivel de ancho de banda. Esto gracias a que aprovechan el ancho de banda de cada participantes, para transformarlo en propio de la red.
- Sirven para transmitir información digital de cualquier tipo. Desde tu canción favorita a cientos de millones de dólares, en segundos.
+ DESVENTAJAS
- Una red P2P es resistente a la censura, pero no te hace anónimo a menos que esté diseñada para ello, incluso, si esa red usa cifrado. El mejor ejemplo es BitTorrent, donde los ISP pueden detectar el uso del protocolo, y con ello advertir a las autoridades de la descarga ilegal por parte de un usuario.
- El diseño de las redes P2P generan que a mayor tamaño aumente la latencia. Es decir, para que una información llegue a todas las partes que forma la red, se tomará más tiempo en una red P2P de gran tamaño que en una de menor tamaño. De allí que se busquen nuevos algoritmos y protocolos que ayuden a superar este problema.
- Los protocolos P2P tienen una serie de problemas estructurales conocidos. Casos como los ataques MITM para tomar el control de nodos, debido a que estos deben estar conectados todo el tiempo de forma pública son uno de estos fallos. También los protocolos son susceptibles a ataques de enrutamiento o cosas tan sigilosas como un ataque Eclipse o un ataque Erebus.
✠ BITCOIN, UNA RED P2P PARA MANEJAR VALOR
Bitcoin es una de las redes P2P más grandes que existen en la actualidad, con sus más de 10 mil nodos activos, Bitcoin es una red global que permite a sus usuarios manejar valor sin intermediarios. Lo único que debe hacerse es descargar un software que permita interactuar con esta red, y ya podrás hacer uso de la misma.
La construcción de Bitcoin como una red P2P responde a la necesidad de descentralizar sus capacidades. De nada vale crear una moneda con criptografía, si esta luego es manejada por una entidad central. Eso sería simplemente crear un nuevo banco central. En su lugar, Satoshi Nakamoto deseaba una red global, incensurable, segura y privada que permitiera manejar valor. Así que para ello, Nakamoto diseño Bitcoin sobre la base de una red P2P usando un protocolo propio diseñado bajo los principios del protocolo Kademlia y protocolo Gossip.
El resultado, es que Bitcoin es una red P2P que, prácticamente, no se puede detener. Incluso con sus fallas estructurales, el protocolo P2P fue la mejor decisión que Nakamoto pudo tomar en el diseño de Bitcoin. Con ello se aseguró de crear un dinero digital que sirviera a los intereses del mundo y de sus usuarios.
✠ P2P PARA RESOLVER LOS PROBLEMAS DEL DINERO DIGITAL
Lo mejor de todo, es que Bitcoin con su sistema P2P ha logrado crear un sistema de contabilidad distribuido en el que problemas como el doble gasto son cosas del pasado. El doble gasto, era uno de los problemas principales del dinero digital. La posibilidad de duplicar el dinero y falsificarlo, era algo que no había tenido solución hasta que Satoshi Nakamoto diseño la blockchain y su protocolo P2P para Bitcoin.
Desde entonces somos capaces de usar criptomonedas con total seguridad sabiendo que nuestro dinero no solo está en un protocolo abierto, transparente y libre, sino que también jamás podrá ser falsificado. Y todo ello porque cada nodo tiene un historial de transacciones de la red, siendo testigo de cada operación en la misma. Esta enorme red de testigos, permanece como un registro inmodificable de todo lo que sucede y nos da la seguridad de que el sistema no es manipulable.
Algo realmente útil y que permite transformar a Bitcoin en un dinero digital seguro, el más seguro y transparente de todos.
✠ OTROS EVENTOS IMPORTANTES EN EL ORIGEN DE P2P
+ EL NACIMIENTO DEL IRC
En 1988, un joven llamado Jarkko Oikarinen diseñó el protocolo IRC, con el fin de reemplazar un programa llamado MUT (MultiUser Talk) en un BBS llamado OuluBox en la Universidad de Oulu en Finlandia, donde trabajaba en el Departamento de Ciencia de Procesamiento de Información.
Su intención era extender el software BBS que administraba, para permitir noticias al estilo de USENET, discusiones en tiempo real y características similares al BBS. La primera parte que implementó fue la parte del chat, que hizo con partes prestadas escritas por sus amigos Jyrki Kuoppala y Jukka Pihl. La primera red IRC se estaba ejecutando en un único servidor llamado tolsun.oulu.fi.
El hecho de que el protocolo fuera diseñado para usar TCP/IP le dio una enorme flexibilidad a futuro. De hecho, para 1990 se fundaba la primera red IRC de gran tamaño, la EFNet. El papel de EFNet fue vital para las comunicaciones globales durante el conflicto del Golfo Pérsico. De hecho, fue la red preferida para conocer en tiempo real lo que pasaba en el campo de batalla. Mostraba así que el potencial de IRC frente al correo era superior, al menos en inmediatez e interactividad de comunicaciones. Lo mismo ocurrió con la Caída de la Unión Soviética, donde el IRC también fue vital en el papel de comunicar lo que pasaba al mundo en tiempo real.
Desde entonces, el protocolo IRC sufrió una enorme expansión y aceptación naciendo redes como UnderNet, DALnet, Freenode (muy usada para proyectos de software libre), Rizon e Immortal-Anime (ahora Xertion). La ampliación en su aceptación trajo más desarrollo al protocolo, y de allí nació uno de los primeros sistemas P2P sobre Internet, el IRC-DCC, o IRC Direct Client-to-Client. El sistema permitía comunicaciones directas entre las partes sin intermediarios, compartir archivos, comunicación cifrada punto a punto (OTR) y más.
+ NACIMIENTO DE HOTLINE CONNECT
Para 1996, vendría otra creación en el mundo del P2P, creada Adam Hinkley. HotLine Connect era una red P2P para compartir archivos que utiliza un sistema de trackers para permitir que dos usuarios pudieran intercambiar información. Muy usado hasta finales de 2000, cayó en desuso gracias a la aparición de otros protocolos más flexibles y el importante ascenso del IRC-DCC.
+ GNUTELLA
Gnutella es un desarrollo de red P2P para compartir archivos desarrollado en el año 2000 por Justin Frankel y Tom Pepper. Frankel y Pepper eran trabajadores de Nullsoft, la empresa creadora del reproductor Winamp y el servicio de streaming de audio Shoutcast.
Desde ese entonces y hasta ahora, Gnutella es la mayor red P2P que existe en el mundo. De hecho, está red cuenta con más de 12 millones de nodos en funcionamiento en todo el mundo.
+ EL NACIMIENTO DE NAPSTER
Napster fue un software desarrollado por Shawn Fanning en 1998 y permitía la descarga de música de forma gratuita. Si bien Napster no era una red P2P pura (como el caso también de IRC), permitía que dos personas pudieran intercambiar música sin intermediarios externos a los que existían en la red y sus servidores. Pero Napster tocó los bolsillos de la industria musical y tras un largo juicio fue cerrado en julio de 2001.
Sin embargo, lo que Napster había hecho llamó al mundo a desarrollar sistemas más descentralizados.
✠ CONCLUSIONES
Las criptomonedas han protagonizado una de las mayores revoluciones tecnológicas de los últimos años. La pionera y más famosa de ellas es el Bitcoin, aunque existen cientos de ellas. Cada una con distintas características, diferentes objetivos y diversas tecnologías detrás que las hacen funcionar. Una de las más importantes son las redes peer-to-peer.
El lector puede pensar que el dinero electrónico ya existía mucho antes que las criptomonedas, y tiene razón. Las transferencias bancarias y las tarjetas de crédito ya hacían uso de cadenas de bits para intercambiar dinero sin la necesidad de mover divisas físicamente. La verdadera revolución es eliminar la necesidad de un agente certificado, como un banco, un gobierno u otra institución.
La mayoría de ellas están basadas en la blockchain, una cadena de bloques unidos entre sí gracias a métodos criptográficos. Este concepto está en auge por su aplicación, no solo en criptomonedas, sino en innumerables campos, gracias a que garantiza que los datos en los bloques no han sido modificados. Si un atacante quiere modificar un solo bit, deberá también generar todos los bloques que le siguen.
A todo esto se le suma el uso de una red descentralizada o peer-to-peer. Para hacer más fácil la explicación, nos centraremos en el Bitcoin. Cada nodo posee una copia del blockchain, que se va sincronizando con los bloques que van apareciendo (block mining) y que son validados y transmitidos por los nodos conectados.
Cada nodo posee su propia blockchain (unos 223 GB si se almacena completa). Todos los nodos están al mismo nivel en la red, y la blockchain que acepta la red como “válida” es la utilizada por el mayor número de nodos (one-cpu-one-vote system). Si un atacante quisiera manipular una transacción del blockchain, tendría que controlar más del 50% del poder computacional de la red, algo altamente improbable en este caso (el “ataque del 51%”).
De todas formas, cada nodo solo se conecta a unos pocos nodos simultáneamente; el valor por defecto es 8 en Bitcoin Core, el software oficial de Bitcoin. La primera operación que realiza un nodo nuevo en la red es buscar estos peers. Si conoce algún peer de antemano, le preguntará por nuevas direcciones que este conozca. En cambio, si es totalmente nuevo en la red, hará uso de los DNS seed nodes, mantenidos por la comunidad, cuya única función es almacenar e informar sobre nodos actualmente activos en la red para que otros puedan conectarse a ellos.
El carácter económico del Bitcoin y su gran popularidad en los últimos años han generado un gran negocio detrás de esta red P2P. Esto ha permitido un gran desarrollo y expansión de la red, pero también ha llamado la atención de posibles atacantes. Los nodos conectados son muy distintos, y pueden ir desde el ordenador personal de un entusiasta de las criptomonedas, a grandes granjas o pools donde miles de ordenadores trabajan sin descanso, minando bloques.
Servicios online como https://bitnodes.earn.com/, analizan constantemente la red para obtener distintas métricas (número total de nodos, localización geográfica de cada uno, principales pools, o bloques descubiertos…). La red Bitcoin es mantenida entre 9.500 o 10.000 nodos activos. La mayoría de ellos están situados en Estados Unidos, Alemania y Francia.
Vale la pena explicar que estos 9.500 nodos no representan el total de usuarios de Bitcoin. Este número se refiere a nodos que mantienen y permiten que la red siga funcionando. Cualquiera puede formar parte de esta red, aunque no es necesario para transferir y recibir Bitcoins.
Sin embargo, no es tan fácil realizar un análisis completo de la red. El propio protocolo de red del Bitcoin implementa algoritmos para evitar la inferencia de su topología. Conocer con precisión las conexiones entre nodos puede facilitar los ataques a la red. Grandes usuarios como las “pools” intentan esconder sus puntos de acceso para evitar los ataques, o incluso algunos nodos utilizan la conocida red TOR para ser lo más anónimos posible.
No hay comentarios:
Publicar un comentario