How it works
What easysync does, what it protects and, just as important, what it does not. Every statement here is taken from the project's specification, which you can read in the documentation and in the source repository.
No external security review yet. The design has not been reviewed by anyone outside the project, and easysync is pre-release software. Read this page as a description of what the software is built to do, not as a guarantee.
Pairing: two devices, one code to compare
- On the first device you start an invitation. It is a link or QR code that works once and expires after 3 minutes.
- On the second device you open the link or scan the code.
- Both devices now show the same six digits. You check that they match, and confirm on both devices.
- Only after both devices have confirmed do they trust each other and exchange their long-term secrets.
The six-digit comparison is what protects you against someone sitting between the two devices. The protocol is built so that such an attacker gets one guess per pairing attempt, with a chance of one in a million. If the digits differ, cancel and start over.
A pairing link is a secret until it expires. Do not post it. The link itself does not pair anything: the comparison of the digits does.
End-to-end encryption
Everything the devices exchange is encrypted between the two devices with the Noise protocol framework: the XX pattern for the first pairing and the IK pattern when paired devices reconnect, with X25519 keys, ChaCha20-Poly1305 and BLAKE2s. A relay in the middle forwards the encrypted bytes. It cannot read them, and it cannot change them without the receiving device noticing.
Your device's private key stays on the device, in the operating system's key store where there is one.
Direct first, relay as fallback
- Direct (QUIC over UDP). Used first when the devices can reach each other. On a local network, paired devices find each other automatically (mDNS). That discovery is best effort and does not work across every network, for example guest networks that isolate devices, separate VLANs or VPNs.
- Relay (WSS, which is WebSocket over TLS). The way through when no direct connection is possible; whether it works depends on the network. You can run your own relay.
- Browsers cannot open direct connections, so the web app always uses a relay.
Each connection, direct or through the relay, starts its own fresh encrypted session. The relay does not take part in it.
Transfers that resume
A file transfer is identified independently of the connection that carries it. The receiving device records how much of the file it has safely written to disk, and the sender continues from exactly that point. This works after a lost connection, after either app restarts, and when the devices switch between direct and relay. When the transfer is complete, the file is checked against a BLAKE3 hash.
By default the receiving device asks before it accepts a file, and nothing is written before it does. For each paired device you can also set a maximum file size and a quota for unfinished transfers.
Clipboard
- Receiving is off by default for each device. Sending and receiving are separate permissions for every paired device, and you are asked about them when you pair.
- Text that arrives is never applied silently: the app shows a notification when it changes your clipboard. The notification states the length of the text, never the text, and names the source device unless you turn that off.
- Text that the source application marks as concealed is not sent. easysync does not try to guess which text is a password.
- There is a size limit for clipboard text, and a master switch that turns clipboard sync off completely.
- Clipboard text is not queued for devices that are offline. An optional setting, off by default, delivers only the most recent text when a device reconnects within 60 seconds.
What the relay can and cannot see
The relay is a content-blind intermediary. It is not blind to metadata, and easysync does not claim otherwise.
| Information | Visible to the relay? |
|---|---|
| IP addresses of the devices that connect to it | Yes |
| When a connection starts and ends, and how long it lasts | Yes |
| Roughly how much data moves, and how fast | Yes |
| That a relay is being used, and which two network addresses it connects | Yes |
| Clipboard text and file contents | No |
| File names | No, they travel inside the encrypted session |
| Your devices' keys and identities | No |
| The secret of a pairing link and the six digits | No |
| Altering data on the way without the receiver noticing | No, it fails the receiver's check |
The relay is built not to write payload data to disk and not to log application traffic. Whoever runs the server, the network in front of it or the hosting provider may still log connections on their own, which is outside the relay program's control. Rotating identifiers keep the relay from linking sessions by identifier alone, but the same IP address can still link them.
Limits you should know
- Not anonymous, not a VPN. easysync is for moving data between your own devices. It does not hide who you are on the network.
- A paired device is trusted, not harmless. A device you paired can send you files and, if you allow it, clipboard text. If one of your devices is lost or compromised, remove it from the others.
- Removing a device works on the device where you do it. Nothing tells the other devices. Remove the lost device on every device it was paired with.
- The web app's code comes from the server that hosts it. If that server were compromised it could deliver bad code. If you cannot accept that, use a native app or host a pinned copy of the web app yourself.
- No external security review yet, and no release yet.
Details are in the specification. To report a security problem, see the security policy.