1- # Risk Matrix — what cloud sync protects (and what it doesn't)
1+ # Risk Mapper — what cloud sync protects (and what it doesn't)
22
3- Risk Matrix can save your matrices to a server and let you share them via a
3+ Risk Mapper can save your matrices to a server and let you share them via a
44link. This page is for users deciding whether the feature fits their needs.
55It's plain-English on purpose; for the cryptographic implementation details,
66see the code under ` lib/e2ee/ ` and ` app/api/matrix/ ` .
77
8-
98## How it works, in one paragraph
109
1110When you choose to save a matrix to the cloud, the matrix is encrypted on
@@ -14,20 +13,26 @@ encryption key lives in the part of the URL after `#`, which browsers don't
1413send to servers. Anyone you give the URL to can read and edit the matrix
1514the same way you can.
1615
17-
1816## What's protected
1917
2018** The server can't read your matrices.** Whoever runs the server can't see
2119your risks, your mitigations, or even the matrix title. They see opaque
22- encrypted blobs, calendar dates, and a counter — that's it.
20+ encrypted blobs, coarse calendar dates, sequence numbers, and per-writer
21+ labels attached to updates — but not the plaintext inside the blobs.
2322
2423** The server can't tamper without you noticing.** If the server modifies
2524the blob, swaps blobs between matrices, or changes their version numbers,
2625your client's decryption fails loudly. You won't silently see the wrong
2726content.
2827
29- ** The server can't roll you back.** If it tries to serve you an older
30- version of a matrix you've already seen, the client refuses.
28+ ** Rollbacks and lost history are not the same as decrypt failures.** The
29+ client does not cryptographically verify that every sync is strictly newer
30+ than every version you've ever seen. If a host restores an older database
31+ snapshot or drops some updates, your app may merge older Yjs data into
32+ your document instead of showing a dedicated "rollback detected" error.
33+ Tampering that breaks the authenticated encryption still fails at decrypt
34+ time; ** missing or replayed ciphertext** is handled by CRDT merge rules, not
35+ by a hard refusal.
3136
3237** Network observers can't read your matrices.** Anyone watching the
3338connection sees only encrypted blobs. The encryption key in the URL
@@ -37,12 +42,20 @@ fragment never travels over the wire.
3742someone's share URL, the matrix appears in a sandboxed preview. Nothing is
3843saved locally until you click "Save on this device."
3944
40-
4145## What's not protected
4246
43- ** Anyone with the link can read and edit.** That's the entire sharing
44- model. Treat the URL like a password — share it through a private channel
45- only.
47+ ** Anyone with the link can read, edit, or delete the cloud copy.** The URL
48+ is a full capability: same read/write as you, and anyone who has it can
49+ remove the matrix from the server (or use Stop sharing from their session).
50+ There is ** no view-only** share link. Treat the URL like a password — share
51+ it through a private channel only.
52+
53+ ** Subpoenas and lawful requests can still obtain metadata.** Whoever hosts
54+ the database or HTTP infrastructure can usually be compelled to produce
55+ ciphertext, record ids, coarse dates, access logs (timestamps, IPs, paths),
56+ and similar material. That does ** not** let them decrypt matrix ** contents**
57+ without the secret in the URL fragment — but it is ** not** the case that
58+ there is "nothing" responsive to a subpoena.
4659
4760** The link itself can leak.** Browser history, browser sync, screenshots,
4861screen-sharing, smart clipboards, pasting into a chat client — any of
@@ -75,11 +88,11 @@ the server. Stopping sharing deletes it.
7588server's logs can see when a matrix is being edited and roughly how big
7689it is. They can't see what changed.
7790
78-
7991## In plain words
8092
8193This is "encrypted Pastebin / Cryptpad-style sharing." The server can't
82- read your matrices. The link is the password. If your device, your
94+ read your matrix contents; the link is the password. Operators and hosts
95+ can still see correlation metadata and ciphertext. If your device, your
8396browser, or our own hosting is compromised, the encryption doesn't help —
8497but no browser-based encryption tool can protect against that.
8598
0 commit comments