The principle
Droplet Drop has no account and no transfer server. Files go straight from the sending device to the receiving one, over your local network. We never see your files, nor who sends them to whom: they don’t go through us.
No home-made cryptography: Droplet Drop relies on proven libraries — rustls (TLS 1.3), ring, rcgen (ECDSA P-256), SHA-256 and BLAKE3.
Encryption
Every connection is encrypted with TLS 1.3, and TLS 1.3 only. Authentication is mutual: both devices each prove their identity.
The first time it opens, each device creates its own key (ECDSA P-256). Its identity is that key’s fingerprint; the security code shown in the app is its beginning, so you can check it at a glance.
The connecting device pins the expected identity, learned through network discovery or the QR code. Any other device pretending to be it is refused: “This isn’t the expected device.”
Nothing arrives without your consent
Every transfer starts as an offer: the sender’s name, their device code, the number and size of the files. With no answer, it expires after two minutes.
Only devices you have marked as “trusted” can send without confirmation, and you can remove them whenever you like.
A received file is never run. If a transfer contains a program, the offer says so.
Verified to the last byte
Before sending, each file is cut into 4 MiB blocks, and each block gets its BLAKE3 fingerprint, as does the whole file. The recipient checks each block as it arrives, then re-reads the whole file.
A damaged or tampered block is requested again. A file that doesn’t match the original is never delivered: it stays in the hidden resume folder until it is correct, or is deleted.
Group Drop
An invitation contains the host’s address on the local network, its device identity (pinned), a 128-bit session identifier and a 256-bit token that can’t be guessed. The host compares the token in constant time.
The invitation expires (after 30 minutes, 2 hours or 8 hours). Sharing the link grants the right to join: share it only with participants.
The invitation link can open on drop.dropletmesh.app: the part after “#”, which holds the invitation, is never sent to our server. It stays in your browser.
The protections, one by one
| Threat | Protection |
|---|---|
| Network eavesdropping | TLS 1.3 on every connection |
| Device impersonation | Pinned identity; the TLS handshake proves possession of the key |
| Unsolicited transfer | Explicit consent (or a trusted device); expires after 2 minutes |
| Intruder in a distribution | 256-bit token, compared in constant time; time-limited invitation |
| Damaged or tampered file | BLAKE3 fingerprint of every block and of the whole file; nothing is delivered before verification |
| Writing outside the receiving folder | Paths cleaned on arrival (“..”, roots, reserved names, forbidden characters) |
| Overwriting a file | Never: a free name is chosen, “name (1).ext” |
| Full disk | Free space checked before accepting |
| Oversized data | Bounded messages; a transfer is limited to 100,000 files and 4 TiB |
| Hammering | After 20 failures in one minute, an address is ignored; at most 128 connections in progress |
Your device’s key
The device’s private key never leaves it. It is stored in the app’s data folder (readable only by your account on Mac and Linux). If that folder is erased — by uninstalling the app from a phone, for example — the device gets a new identity, and your other devices will need to trust it again.
Report a vulnerability
Think you’ve found a vulnerability? Write to contact@dropletmesh.app, with what we need to reproduce it. Please give us time to fix it before making it public; we will reply and keep you informed.