El principio
Droplet Drop no tiene cuenta ni servidor de transferencia. Los archivos van directamente del dispositivo que envía al que recibe, por tu red local. Nunca vemos tus archivos, ni quién los envía a quién: no pasan por nosotros.
Ninguna criptografía casera: Droplet Drop se apoya en bibliotecas probadas: rustls (TLS 1.3), ring, rcgen (ECDSA P-256), SHA-256 y BLAKE3.
El cifrado
Cada conexión se cifra con TLS 1.3, y solo con TLS 1.3. La autenticación es mutua: los dos dispositivos demuestran cada uno su identidad.
La primera vez que se abre, cada dispositivo crea su propia clave (ECDSA P-256). Su identidad es la huella de esa clave; el código de seguridad que muestra la app es su comienzo, para comprobarla de un vistazo.
El dispositivo que se conecta fija la identidad esperada, conocida por el descubrimiento en la red o por el código QR. Cualquier otro dispositivo que se haga pasar por él es rechazado.
Nada llega sin tu permiso
Cada envío empieza como una propuesta: nombre del remitente, código de su dispositivo, número y tamaño de los archivos. Sin respuesta, caduca a los dos minutos.
Solo los dispositivos que hayas marcado «de confianza» pueden enviar sin confirmación, y puedes quitarlos cuando quieras.
Un archivo recibido nunca se ejecuta. Si un envío contiene un programa, la propuesta lo indica.
Verificado hasta el último byte
Antes del envío, cada archivo se divide en bloques de 4 MiB, y cada bloque recibe su huella BLAKE3, igual que el archivo entero. El destinatario comprueba cada bloque al llegar y vuelve a leer el archivo completo.
Un bloque dañado o falsificado se vuelve a pedir. Un archivo que no coincide con el original nunca se entrega: se queda en la carpeta oculta de reanudación hasta ser correcto, o se elimina.
Group Drop
Una invitación contiene la dirección del anfitrión en la red local, la identidad de su dispositivo (fijada), un identificador de sesión de 128 bits y un token de 256 bits imposible de adivinar. El anfitrión compara el token en tiempo constante.
La invitación caduca (a los 30 minutos, 2 horas u 8 horas). Compartir el enlace da derecho a unirse: compártelo solo con los participantes.
El enlace de invitación puede abrirse en drop.dropletmesh.app: la parte después de «#», que contiene la invitación, nunca se envía a nuestro servidor. Se queda en tu navegador.
Las protecciones, una a una
| Amenaza | Protección |
|---|---|
| Escucha de la red | TLS 1.3 en cada conexión |
| Suplantación de un dispositivo | Identidad fijada; el intercambio TLS demuestra la posesión de la clave |
| Envío no solicitado | Permiso explícito (o dispositivo de confianza); caduca a los 2 minutos |
| Intruso en una distribución | Token de 256 bits comparado en tiempo constante; invitación limitada en el tiempo |
| Archivo dañado o falsificado | Huella BLAKE3 de cada bloque y del archivo entero; nada se entrega antes de verificarse |
| Escritura fuera de la carpeta de recepción | Rutas limpiadas al recibir («..», raíces, nombres reservados, caracteres prohibidos) |
| Sobrescritura de un archivo | Nunca: se elige un nombre libre, «nombre (1).ext» |
| Disco lleno | Espacio libre comprobado antes de aceptar |
| Datos desmesurados | Mensajes acotados; un envío está limitado a 100 000 archivos y 4 TiB |
| Ataques repetidos | Tras 20 fallos en un minuto, una dirección se ignora; 128 conexiones en curso como máximo |
La clave de tu dispositivo
La clave privada del dispositivo nunca sale de él. Se guarda en la carpeta de datos de la app (legible solo por tu cuenta en Mac y Linux). Si esa carpeta se borra (al desinstalar la app de un móvil, por ejemplo), el dispositivo obtiene una nueva identidad y tus otros dispositivos tendrán que volver a confiar en él.
Informar de una vulnerabilidad
¿Crees haber encontrado una vulnerabilidad? Escribe a contact@dropletmesh.app con lo necesario para reproducirla. Danos tiempo para corregirla antes de hacerla pública; te responderemos y te mantendremos informado.