The short version
- Everything you sync is locked before it leaves your device. Clipboard text, file names and file contents are encrypted on your computer or phone, and unlocked only on your other devices.
- The keys never reach our server. Our server stores and passes along locked data. It has no key that opens it — so we can't read it, and neither could anyone who broke into our server.
- You decide which devices get your key. A new device is let in only after you approve it on a device you already use and check that both show the same code.
1. Where your keys live
Linkeja uses two kinds of keys:
- A device key for each of your devices. It's made on the device when you sign in and stays there, in your system's secure key storage (the Keychain on Mac and iPhone, the Android Keystore, Windows' protected storage, or the keyring on Linux). It is never sent anywhere.
- One account key shared by all your devices. This is the key that actually locks your clipboard and files. Your first device creates it. Your other devices get it only when you approve them, and they keep it only in memory while Linkeja runs — it's never written to disk.
To get the account key to a new device without our server seeing it, the device that approves it seals the account key so that only the new device's key can open it. Our server keeps these sealed copies (one per device) so your devices can unlock it each time they start — but a sealed copy is useless without the device it was sealed for.
2. Adding a new device
When you sign in on a new device, it can't read anything yet — it doesn't have the account key. Your devices hand it over in a short exchange that our server only relays:
- The new device signs in and introduces itself with its public key. Your other devices show “… wants to join”.
- You click Review on a device you already use. The two devices swap their public keys and a random number each, in an order that stops anyone in the middle from rigging the result.
- From those, both devices work out the same 8-digit code and show it. You check that the codes match.
- Only then does your device seal the account key for the new device and send it. The new device accepts it only from the device whose code you compared.
3. What happens when you copy
When you copy something (or click Send), your device locks it with the account key before it goes anywhere. The locked item is tied to who sent it and to its place in your history, so it can't be altered, swapped for another item or passed off as coming from a different device without your devices noticing.
Our server keeps your recent items — still locked — so your devices show the same history and a device that was offline catches up. Each device unlocks the items in memory to show them to you. When an item drops out of your history or you delete it, it's deleted from the server.
4. What happens when you send a file
Your device splits the file into pieces of up to 4 MB and locks each piece separately. The file's name and size are locked too. Each piece is also stamped with its position and whether it's the last one, so a piece that's missing, swapped or cut off is detected and rejected — you never end up with a silently damaged file.
Then the pieces take the quickest safe route:
- On the same network (for example your home Wi-Fi), the receiving device downloads the pieces straight from the sending device. They never leave your network.
- Otherwise, they pass through our server, still locked. The receiving device picks each piece up as soon as it arrives, and the server deletes each piece once it's delivered. Anything not delivered within 24 hours is deleted anyway.
Nothing is downloaded until the receiving device clicks Receive, and in Settings you can choose LAN only so files never touch our server at all.
5. Sending files to other people
Contacts have their own keys too. Your account has an identity key — its private half is locked with your account key, so all your devices can use it and our server can't. You connect with someone using a one-time invite code that you pass to them yourself, in a chat, on a call or in person.
The code has two parts. The first part is a short label our server uses to find the invite. The second part is a secret that our server never sees. Both your apps use that secret to check each other's identity key, so if someone at the server tried to swap in a different key, the check would fail and the contact wouldn't be made.
Each file you send to a contact gets its own fresh key, which is locked so that only that contact's account can open it — and only if it really came from you. Files between contacts always go through our server (a contact never learns your network address), locked the same way as your own files. If a contact's key ever changes (for example, they reset their account), Linkeja stops sending files between you until you compare a 20-digit safety code with them, or exchange a new invite.
6. What our server can and can't see
Encryption hides the contents. To deliver things, our server still needs some facts about them. Here's the complete picture:
Can't see
- Your clipboard text
- Your file names, types and contents
- Your contacts' cards and your identity key
- Your account key or any device's private key
- Your password (only a one-way hash is stored)
Can see
- Your email address and plan
- Your devices' names, types and when they're online
- That an item or file was sent, when, by which device, and its size
- Who your contacts are
- Activity counts (how many items and files per day)
How long we keep each of these is listed in our Privacy Policy.
7. Protecting your account
- Passwords are stored only as a slow, one-way hash (Argon2id), which makes guessing them from a stolen database very expensive. Sign-in attempts are rate-limited.
- Each device has its own sign-in. Its short-lived access pass lasts 15 minutes and is renewed with a longer-lived one that changes on every renewal. If an old one is ever reused — a sign that it was copied — that device is signed out immediately.
- Removing a device cuts it off at once, including any connection it has open.
- Resetting your password signs out every device. It doesn't give anyone your data: the server has no key to give.
8. If you lose all your devices
Because only your devices hold the account key, nobody can recover it for you — not even us. If every device that held it is gone, the next device you sign in on can start a new key. Your account keeps working, but older clipboard items can no longer be unlocked, and they're deleted. This is the honest cost of real end-to-end encryption: if we could recover your data, so could anyone who got into our systems.
9. What encryption can't do
We'd rather you know the limits than assume more than is true:
- Your devices are the weak point. If a device is infected with malware or someone unlocks it, they can see what Linkeja shows on it. Keep your devices locked and up to date, and remove any device you no longer use.
- The facts in “Can see” above — sizes, timing, devices, contacts — are visible to our server, because it needs them to deliver things.
- You trust the app you install. Get Linkeja only from linkeja.com, the Microsoft Store or Google Play. The web app is loaded from our server each time you open it, so it relies on that server not being tampered with; it's protected by a strict content policy that only allows our own code to run. For the strongest protection, use an installed app.
- Linkeja isn't open source, so you can't inspect the code yourself today. That's why this page describes exactly how it works, and why we welcome questions and security reports.
10. Technical details
For the technically curious, these are the building blocks:
- Device keys: X25519 key pairs, one per device, generated on the device.
- Account key: a random 256-bit key per key generation (“epoch”).
- Sealing the account key for a device: X25519 key agreement, HKDF-SHA256, then AES-256-GCM, bound to the account, key epoch and device.
- Pairing code: commit-then-reveal with 32-byte random numbers from both devices; the 8-digit code is derived with SHA-256 from both public keys and both numbers.
- Clipboard items and file details: AES-256-GCM with the account key; the associated data binds the account, epoch, sender device and item.
- File pieces: AES-256-GCM, up to 4 MiB each; the associated data binds the transfer, the piece's index and a last-piece flag.
- Contacts: an X25519 identity key per account; invite secrets of 50 bits stretched with Argon2id and checked with HMAC tags on both sides; files sealed with a fresh key per file, wrapped using both an ephemeral and the sender's identity key.
- Accounts: Argon2id password hashes; random 256-bit access and refresh tokens stored only as SHA-256 hashes; refresh-token rotation with reuse detection.
- Transport: HTTPS (TLS) for every connection.
Found a problem, or have a question we didn't answer? Email support@linkeja.com — see our Security Policy for reporting vulnerabilities.