How Partage’s encryption works
What “end-to-end encrypted” means here, and what the server can still see.
Open PartageWhat is encrypted, and where the key lives
Every group has its own key: a random 256-bit AES-GCM key, generated on your device by the browser’s built-in cryptography. There is no account the key is attached to and no password it is derived from. The key itself is the membership.
Everything a group contains, such as expenses, transfers, members, categories, and every edit in the history, is encrypted on your device before it syncs. What leaves the device is ciphertext, and what the server stores and forwards is ciphertext.
The key travels only when you invite someone, and only inside the invite link, as described below. It never reaches the server.
What the relay can see, and what it cannot
The sync relay sees:
- encrypted records: their size, when they arrive, and the random group identifier they belong to;
- a random per-device identifier on each record — this is how your devices sync without accounts;
- the IP address of each connection, like every server on the internet;
- aggregate counts for these public pages: visitors per day, the top referring sites, and which page was served. There is no cookie, and no per-visitor identifier.
It can’t see amounts, titles, categories, currencies, member names, balances, or who owes whom. The relay never receives the key: a device proves its access with a hash of the key, and the server stores only a hash of that hash. A full copy of the server’s database reveals no expense to anyone.
The relay also keeps nothing forever: a group untouched by any member for twelve months is deleted from the server, while each member’s device keeps its own full copy.
Invitations: the key travels in the fragment
An invite link carries the group key after the #. Browsers never send that part of a URL to any server, so the link opens the join page without the relay ever learning the key. A QR code invitation is the same link.
One thing to keep in mind: anyone who has the link has the key. Share it responsibly, directly with the people you mean to let in. Prefer direct QR code scans, or end-to-end encrypted messaging groups.
The honest limits
- The cryptography has not been independently audited. The design uses standard primitives from the browser’s WebCrypto API, and the source is public, but nobody has been paid to break it.
- Partage is a web app, so the code that encrypts is delivered by the server. An operator serving malicious code could read your data. This is the tradeoff every encrypted web app makes. Open source and an installable app soften this but do not remove it.
- Encryption hides content, not shape. Sizes and timing of encrypted records are visible to the relay, as listed above.