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

  1. On the first device you start an invitation. It is a link or QR code that works once and expires after 3 minutes.
  2. On the second device you open the link or scan the code.
  3. Both devices now show the same six digits. You check that they match, and confirm on both devices.
  4. 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

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

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.

What a relay learns about your traffic
InformationVisible to the relay?
IP addresses of the devices that connect to itYes
When a connection starts and ends, and how long it lastsYes
Roughly how much data moves, and how fastYes
That a relay is being used, and which two network addresses it connectsYes
Clipboard text and file contentsNo
File namesNo, they travel inside the encrypted session
Your devices' keys and identitiesNo
The secret of a pairing link and the six digitsNo
Altering data on the way without the receiver noticingNo, 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

Details are in the specification. To report a security problem, see the security policy.