¿Cómo puedo evitar filtrar mi tráfico a los nodos?
Los nodos deben usarse solo para ayudar a los clientes a encontrarse entre sí. No para entregar datos.
Parece un MITM. No es mejor que Skype con servidores de Microsoft.
Estás equivocado. Los nodos de arranque DHT existen para facilitar la unión al DHT. Si desea una explicación más detallada, puede consultar este artículo: https://en.wikipedia.org/wiki/Distributed_hash_table. Alternativamente, puede unirse a nosotros en IRC, en el canal #tox en Freenode, e intentaremos explicar las cosas lo mejor que podamos.
Su tráfico puede pasar a través de nodos de arranque que actúan como relés TCP mientras que tox usa TCP para la conexión de amigos. Es similar a TURN . Su tráfico aún está encriptado de extremo a extremo, por lo que la confidencialidad y la autenticidad de sus mensajes nunca se ven comprometidas. Esta retransmisión de TCP es probablemente lo que vio en su análisis de tráfico. Se describe en detalle en la especificación del protocolo tox .
Es un tráfico de voz. Está encriptado y ahora los terceros no pueden descifrarlo, pero eso no significa que sea imposible en el futuro.
Tengo una dirección IPv4/IPv6 directa. ¿Por qué debo enviar mis datos a los nodos?
Usted dice: 'Existen nodos de arranque DHT para facilitar la unión al DHT', pero no es cierto. En la captura de pantalla adjunta, el tráfico pasa a través de nodos, no directamente a mí.
'Tox es un software fácil de usar que te conecta con amigos y familiares sin que nadie más escuche. ' - ¿Es mentira? Tráfico encriptado, ok. ¿Pero está usando nodos para entregar? No sé, quién mantuvo estos nodos. ¿Qué sucede si uno o más nodos son falsos?
Entiendo cómo este punto puede parecer incorrecto, por lo que presenté un problema de documentación para mejorar nuestra presentación de eso. Gracias por explicar tus pensamientos.
Para explicar rápidamente su preocupación específica, lo parafrasearé. Por favor, hágamelo saber si entendí mal:
P: _Me preocupa el hecho de que los paquetes de datos que provienen de mi computadora no se entregan directamente a la computadora de mi amigo, sino que a veces (o todo el tiempo, dependiendo de las condiciones de la red) se transmiten a través de computadoras de terceros._
R: Primero, considere un paquete que va directamente desde su computadora a la computadora de su amigo, asumiendo que está conectado a un wifi local:
traceroute $your_friend_ip
para ver a dónde va), cada uno de los cuales tiene libre acceso a la trama de Ethernet, el paquete IP y el paquete UDP, así como a su contenido. Muchos puntos de acceso, llamémoslo el 4to.Como puede ver, hay muchos puntos durante la transmisión "directa" de usted a su amigo donde el paquete puede ser inspeccionado por personas arbitrarias. El cifrado de extremo a extremo significa que en ningún momento entre usted y su amigo nadie puede leer el contenido real que pretendía transmitir. Siempre solo pueden ver los datos cifrados.
Ahora, agregar un relé TCP en el medio simplemente alargará la ruta (teóricamente podría acortarla, pero eso no es probable). Cualquiera que ejecute el repetidor puede leer el paquete, como cualquier otra persona entre usted y su amigo. El protocolo criptográfico Tox garantiza que su comunicación sea segura.
Ahora, también veo una segunda preocupación:
P: _¿Qué sucede si uno de los nodos que transmiten mis datos es malo?_
R: Tox selecciona una serie de relevos TCP que puede usar para comunicarse en caso de que las conexiones UDP directas no sean posibles (por ejemplo, debido a NAT o firewall). Los relevos malvados pueden hacer muy pocas cosas para hacer el mal:
Eso es básicamente todo. En ningún caso el relé malvado podrá leer tus datos. Solo puede optar por no retransmitir, y solo si todos los nodos de arranque son malos, no puede comunicarse. Esto sería bastante molesto y no estaríamos contentos por ello, pero la información de nadie se ve comprometida en ningún momento.
Espero que esto aclare algunas cosas. No he revisado esta respuesta, pero me aseguraré de que esté correctamente representada en el sitio web para referencia futura. Avíseme si tiene alguna otra inquietud. Gracias de nuevo por mencionar esto.
Acabo de leer tu mensaje nuevamente y descubrí que me perdí una preocupación más:
P: Aunque ahora los datos están cifrados, ¿qué garantiza que no se descifrarán en el futuro?
R: El protocolo Tox implementa el secreto directo perfecto mediante el uso de claves efímeras. Esto significa que si una de esas claves se ve comprometida, se pueden descifrar algunos mensajes, pero no todo su historial de comunicación. La parte de "algunos mensajes" de esta oración se reducirá a "un mensaje" en el futuro. Si su clave secreta a largo plazo se ve comprometida, no se puede descifrar ninguna comunicación pasada.
Si las primitivas criptográficas que usamos están rotas, perdemos. Depende de qué manera se rompan, estos son los peores escenarios posibles:
Es muy poco probable que estos escenarios se hagan realidad en un futuro cercano, o posiblemente para siempre. Según la comprensión actual en la comunidad de criptografía, solo la computación cuántica podría hacer que suceda el segundo escenario. El primer escenario se cree que es imposible.
Dicho todo esto, también noté que dijiste que tienes una dirección IPv4 directa. ¿Qué significa esto? Si tiene una dirección IPv4 pública asignada a su computadora y el puerto 33445 está abierto, Tox debería establecer conexiones directas muy rápidamente. Si no es así, es un error y deberíamos trabajar juntos para averiguar por qué elige usar TCP en su lugar.
Muchas gracias por esta explicación. Ahora entiendo un poco más.
No estoy seguro acerca de la dirección IPv4 directa... Uso WireGuard VPN. WireGuard instalado en un servidor virtual, que tiene direcciones IPv4 e IPv6 directas. Todo el tráfico está envuelto en el espacio de nombres.
Información de la red de portátiles: https://gist.github.com/DebugReport/1268e15c3bd1c99b56929d645d99392b
Si me equivoque, lo siento.
Tal vez IPv4 no sea directo, pero ¿qué pasa con IPv6? ¿Puedo usar conexiones directas si otro cliente también tiene IPv6?
Sí, si ambas partes tienen IPv6 y la configuración del firewall no bloquea el puerto 33445 (o algún otro puerto cercano, algo entre 33445 y 33545), debería funcionar. ¿Tu amigo está en la misma VPN?
No.
Hmm... Pregunta. ¿Necesitamos usar nodos siempre? ¿O solo si uno de nosotros no tiene IP directa (¿solo IPv4?)?
Para IPv6 (yo) <-> IPv6 (amigo) ¿son necesarios los nodos? ¿Si es así por qué?
(Manteniendo este problema abierto hasta que todas estas preguntas se respondan en la documentación)
Si uno de ustedes tiene una IP pública, entonces el otro puede arrancar utilizando la IP y el puerto del otro. Esto requiere atención al cliente. No creo que ningún cliente tenga actualmente:
tox_self_get_dht_id
) y su puerto ( tox_self_get_udp_port
).(key, ip, port)
.Después de esto, tiene una red Tox personal de 2 personas. Entonces, en teoría, no necesita ningún otro nodo. Sin embargo, facilitan las cosas.
Si uno de ustedes tiene una IP pública y un puerto abierto, conectarse a los nodos de arranque también debería permitirle establecer una conexión directa. Los nodos de arranque DHT tienen poco que ver con si puede conectarse o no. Una conexión directa debería ser posible incluso si solo uno de ustedes tiene una IP pública y un puerto abierto. El otro se conectaría a él, lo que crearía una ruta en el enrutador local y le daría al cliente un puerto público aleatorio temporal.
Solo una nota: noté el mismo comportamiento con C-Toxcore. Una de las partes está en un VPS con una dirección IP pública y sin firewall, la otra está detrás de NAT pero tiene el puerto Tox reenviado, por lo que deberían ser accesibles mutuamente. El tráfico aún se enrutaba a través de TCP.
No veo esto como un problema de seguridad, pero ciertamente es un problema de escalabilidad si una red P2P transmite todo su tráfico a través de retransmisiones.
Comentario más útil
Entiendo cómo este punto puede parecer incorrecto, por lo que presenté un problema de documentación para mejorar nuestra presentación de eso. Gracias por explicar tus pensamientos.
Para explicar rápidamente su preocupación específica, lo parafrasearé. Por favor, hágamelo saber si entendí mal:
P: _Me preocupa el hecho de que los paquetes de datos que provienen de mi computadora no se entregan directamente a la computadora de mi amigo, sino que a veces (o todo el tiempo, dependiendo de las condiciones de la red) se transmiten a través de computadoras de terceros._
R: Primero, considere un paquete que va directamente desde su computadora a la computadora de su amigo, asumiendo que está conectado a un wifi local:
traceroute $your_friend_ip
para ver a dónde va), cada uno de los cuales tiene libre acceso a la trama de Ethernet, el paquete IP y el paquete UDP, así como a su contenido. Muchos puntos de acceso, llamémoslo el 4to.Como puede ver, hay muchos puntos durante la transmisión "directa" de usted a su amigo donde el paquete puede ser inspeccionado por personas arbitrarias. El cifrado de extremo a extremo significa que en ningún momento entre usted y su amigo nadie puede leer el contenido real que pretendía transmitir. Siempre solo pueden ver los datos cifrados.
Ahora, agregar un relé TCP en el medio simplemente alargará la ruta (teóricamente podría acortarla, pero eso no es probable). Cualquiera que ejecute el repetidor puede leer el paquete, como cualquier otra persona entre usted y su amigo. El protocolo criptográfico Tox garantiza que su comunicación sea segura.
Ahora, también veo una segunda preocupación:
P: _¿Qué sucede si uno de los nodos que transmiten mis datos es malo?_
R: Tox selecciona una serie de relevos TCP que puede usar para comunicarse en caso de que las conexiones UDP directas no sean posibles (por ejemplo, debido a NAT o firewall). Los relevos malvados pueden hacer muy pocas cosas para hacer el mal:
Eso es básicamente todo. En ningún caso el relé malvado podrá leer tus datos. Solo puede optar por no retransmitir, y solo si todos los nodos de arranque son malos, no puede comunicarse. Esto sería bastante molesto y no estaríamos contentos por ello, pero la información de nadie se ve comprometida en ningún momento.
Espero que esto aclare algunas cosas. No he revisado esta respuesta, pero me aseguraré de que esté correctamente representada en el sitio web para referencia futura. Avíseme si tiene alguna otra inquietud. Gracias de nuevo por mencionar esto.