Cómo funciona tosstome

Última revisión

tosstome es un pequeño servicio en Cloudflare Workers más una página web. El servidor presenta los dispositivos entre sí y, solo cuando es necesario, retransmite datos. Nunca almacena archivos.

1. Encontrarse

Al abrir la página, el navegador se conecta al servidor mediante un WebSocket. Los dispositivos cuyas conexiones proceden de la misma dirección IP pública, que normalmente significa la misma red doméstica o de oficina, se colocan en el mismo grupo y aparecen en la lista “En esta red” de los demás. La dirección se convierte en hash antes de usarse. Para dispositivos en redes distintas, un código de 6 dígitos los coloca en un grupo temporal propio.

2. Conectar directamente

Cuando tocas un dispositivo, los dos lados intercambian los datos de conexión WebRTC a través del servidor e intentan abrir un canal de datos directo, usando el servicio STUN de Cloudflare para descubrir cómo alcanzarse a través de los routers domésticos. Un canal WebRTC directo está cifrado de extremo a extremo por los navegadores (DTLS).

3. Recurrir a un relé

Algunas redes bloquean las conexiones directas: firewalls corporativos, Wi-Fi de invitados, operadores móviles con NAT de operador. Si el canal directo no se establece en pocos segundos, ambos lados se conectan en su lugar a un relé en Cloudflare. El relé reenvía cada fragmento a medida que llega y no guarda nada. El tráfico desde y hacia el relé va cifrado con TLS, pero el relé todavía no tiene cifrado de extremo a extremo; está en la hoja de ruta.

4. Mover los datos

El mismo protocolo de transferencia funciona en el navegador y en la herramienta de línea de comandos: pequeños mensajes de control JSON más fragmentos binarios, con confirmaciones del receptor para que quien envía nunca sature una conexión lenta. Se comporta igual por un canal directo y por el relé.

5. Buzones

La herramienta de línea de comandos mantiene un buzón siempre activo. Crea dos claves secretas: una clave de agente que se queda en la computadora y una clave de envío que va en el enlace del buzón después del #. Los navegadores no envían esa parte del enlace al servidor, y la clave se pasa dentro del WebSocket. El servidor guarda solo los hashes SHA-256 de ambas claves. Cuando un teléfono abre el enlace y envía, el servidor pasa los datos de conexión WebRTC entre el teléfono y la computadora, igual que entre dos navegadores, así que en la misma red los archivos van directamente a la carpeta del buzón sin salir de ella. Si no se establece un canal directo, ambos lados usan una sesión de relé. La herramienta de línea de comandos se conecta directamente del mismo modo cuando envía a un navegador con un código de 6 dígitos, o cuando un navegador le envía desde la lista “En esta red”.

Lo que aún no está hecho

Lee la página de privacidad para saber qué ve el servicio.

Preguntas

¿tosstome tiene cifrado de extremo a extremo?

Las transferencias directas por WebRTC sí, mediante el DTLS del navegador. Las que pasan por el relé se cifran con TLS entre cada dispositivo y Cloudflare, pero todavía no de extremo a extremo.

¿Qué es WebRTC?

Un estándar de los navegadores para conexiones punto a punto en tiempo real, usado por las aplicaciones de videollamadas. tosstome usa sus canales de datos para enviar archivos directamente entre navegadores.

¿Mis archivos se suben o se guardan en algún sitio?

No. Los archivos van directamente de un dispositivo al otro por WebRTC cuando las redes lo permiten. Cuando no es posible, el archivo pasa por un relé en Cloudflare que reenvía los bytes a medida que llegan y no guarda nada. Si el receptor está desconectado, no se envía nada.

¿Por qué necesita internet si es punto a punto?

Los navegadores necesitan un servidor para encontrarse e intercambiar los datos de conexión. Una vez conectados directamente, los datos del archivo van entre los dispositivos.

Relacionado

Pruébalo ahora

Abre toss2.me en dos dispositivos. Sin app, sin cuenta y sin guardar nada.

Enviar un archivo ahora