¿Cómo me conecto directamente a un contacto con un chat p2p?

Un chat del tipo par a par (peer to peer, P2P), es aquel que conecta directamente a las personas sin un servidor que actue de intermediario en la comunicación. Esta forma de conexión permite, entre otras muchas cosas, aumentar el anonimato y burlar la censura.

Apenas nos damos cuenta de que, cuando la gente se comunica por Internet, existen muchisímos puntos intermedios que registran y pueden llegar a amenazar lo que estamos haciendo (nuestra localización, el tipo de comunicación, el día la hora, el tamaño de información transferida, versión de la aplicación, modelo del dispositivo, etc.). Asi cuando conseguimos quitar un intermediario, disminuímos nuestros rastros y posibilidad de ser identificados por terceros. Si usas un modelo de comunicación que exige identificación previa, como un telefóno celular, para por ejemplo signal (a causa del registro del chip) hay existe la posibilidad de ser reconocido. Habría que hacer un apunte aquí: como me he conectado directamente con una amigx o compa, esa persona necesita saber quien soy para establecer una conexión. Una conexión directa se realiza cuando existe la certeza por ambas partes de quien es quien y se reconocen. Es deicr, el tipo de anonimato del que estoy hablando aquí se refiere a pasar de incognito para los intermediarios sin usar un servidor central. Por ello no seremos anónimos para la persona con quien hablamos.

Pero entonces, ¿cómo hacen las personas para conectarse?. Para responder con un ejemplo, voy a usar el protocolo Tox. Otros protocolos ciertametne funcionan de manera distinta pero voy a describir este para que nos hagamos una idea.

Primero de todo, cuando una persona cualquier se conecta a internet recibe una dirección IP nuevo. Esto pasa siempre. Si las direcciones fueran fijas, como están en nuestra casa, entonces no habría mosca ninguna: uno mismo, sabe dónde está la persona, iría allí y dejaría la carta, la sonrisa, la foto, sin necesidad de intermediarios como la oficina de correos y la empresa de correos. Pero no es así en internet. Cada vez que nos conectamos, obtenemos una nueva dirección del sistema, una IP diferente para cada conexión.

Ahora, si Tox es un chat que me conecta directamente con mis contactos, sin un servidor intermediario (como zap, correo electrónico, telegrama, facebook, señal, cable, etc. que tiene un servidor mediando todo lo que hacemos), ¿cómo sabe dónde? ¿Estamos (cuál es nuestra IP) para ponernos en contacto directo?

Aquí tenemos un “pepino” técnico importante. Alguien tiene que conocer las dos direcciones para ponerlas en contacto. ¿Quién está mediando desde el principio de nuestra conversación hasta el final?

Comenzaremos a entender un poco cómo funciona el protocolo Tox mirando lo que el cliente (qTox) me dijo cuando lo ejecuté a través del terminal de Linux. He seleccionado la parte que me interesa aquí:

[09:23:19.947 UTC] core/core.cpp:357 : Debug: Connecting to 144.217.86.39:33445 (velusip)
[09:23:19.949 UTC] core/core.cpp:357 : Debug: Connecting to 2001:1470:fbfe::109:33445 (fluke571)
[09:23:19.949 UTC] core/core.cpp:366 : Debug: Error bootstrapping from fluke571
[09:23:19.950 UTC] core/core.cpp:370 : Debug: Error adding TCP relay from fluke571
[09:23:24.448 UTC] core/core.cpp:357 : Debug: Connecting to d4rk4.ru:1813 (D4rk4)
[09:23:25.616 UTC] core/core.cpp:357 : Debug: Connecting to tmux.ru:33445 (nrn)
[09:23:28.499 UTC] core/core.cpp:326 : Debug: Connected to the DHT …

Me intrigó ver que el programa se estaba conectando con personas (IP) que no tenía idea de quiénes eran: velusip, fluke571, D4rk4, nrn. Estos no habían sido mis contactos. Cada vez que ejecutaba Tox, intentaba conectarse a IP que no conocía. Al observar los intentos de conexión cada vez que abría el programa, noté que estas IP se repetían. Hasta que decidí seguir la información en la última línea que pegué arriba: conectado al DHT.

Ahora algunos términos difíciles. Según la wikipedia DHT significa Distributed Hash Table, una Tabla de Hash Distribuída, lo que significa en resumidas cuentas un sistema distribuido y descentralizado para almacenar y buscar información (llave, valor). Nuestra (Ips) que se conectan en este sistema pueden recuperar rapidamente el valor asociado a cada llave

También encontre una explicación de como el protocolo TOX usa DHT para encontrar mis contactos:

El DHT es un modo de agrupar de manera auto-organizada a todos los usuarios de la red Tox. Esta sirve para encontrar la IP y permite acada persona establecer una ruta directa vía UDP Cada pessoa na DHT possui uma chave pública temporária que lhe serve de endereço. Esse endereço é efêmero e renovado a cada vez que o tox é fechado e reaberto. Cada persona con DHT posee una llave pública temporal que sirve de dirección. Esta dirección es temporal y se renueva cada que cerramos TOX y lo volvemos a iniciar.

¿Y todo esto que quiere decir? Bien cada vez que abro un cliente Tox (como qTox o anotox) me conecto me conecto a alguna dirección de IP fija y con alta disponibilidad llamda Bootstrap Nodes. Cuando conte eramos 24 nodos en esa lista (y de varios paises diferentes). Probablemetne esas son las Ips de personas de confianza en la red Tox. No encontre información sobre quien son esas personas y como habían sido escogidas para formar un bootstrap node.

Entonces primero me conecto a entre 3 o 6 nodos de bootstrap (según la instancia). Con cada uno de estos nodos, cambio claves temporales. Cuando mi contacto esta online, él hará lo mismo. Cuando los dos estemos conectados al mismo nodo, entonces, finalmente establecemos una conexión directa dejando de pasar por los nodos fijos de bootstrap. Solo a partir de este momento es que comenzamos a intercambiar mensajes y la conexión puede ser llamada “de parte a parte” (peer to peer).

Si no me he confundido en algún momento, de manera resumida es así como funciona el protocolo Tox y es como se consigue una conexión directa con un contacto.

Si tú sabes de otros protocolos peer to peer consiguen consiguen encontrar o poner contacto a las personas (por ejemplo Briar o Bittorrent) puede escribir un articular similar a este para ser publicado en la web de mariscotron.

Fuente: https://www.mariscotron.libertar.org/2019/12/05/como-me-conecto-diretamente-com-um-contato-num-chat-p2p/

Deja una respuesta

Tu dirección de correo electrónico no será publicada.