encryption at rest? #1001
|
hi, thanks for the awesome project! I'm wondering if this project has considered encryption-at-rest in some way. I guess it could be handled outside of the software itself? For example sync with folder, and have a different system that mounts / encrypts / decrypts that folder? (e.g. https://docs.syncthing.net/users/untrusted.html). Or if you can self-host in a trusted location, then a simple VPN also works. But it would definitely be simpler for users if (for example) the sync to Dropbox was encrypted (Enpass does the same). Thoughts? |
Replies: 6 comments 94 replies
|
Not built in today. The sync document is plain JSON and attachments are ordinary files, so what you get at rest is whatever the device, server, or provider gives you:
For today, your layering instinct is the supported answer: point File Sync at a folder on an encrypted filesystem or a gocryptfs/Cryptomator mount, so the app sees decrypted files while the disk stores ciphertext. Syncthing's untrusted-device mode also works for keeping an intermediate box ciphertext-only, with the caveats that trusted endpoints still hold plaintext and Syncthing itself labels the feature beta. On building client-side encryption in: it's a direction that fits Mindwtr's local-first model, and for the file-like backends (File Sync, WebDAV, Dropbox) it's architecturally workable — every client already downloads and merges the full document locally, and attachments would need the same treatment. The self-hosted cloud backend is harder, because its server currently merges concurrent writes itself; opaque ciphertext would mean moving that merge to clients or redesigning the stored format. And most of the real work is key management rather than the cipher: per-device passphrase setup, secure key storage on four platforms, migration of existing data, rotation, and honest behavior when the passphrase is lost. I wouldn't claim end-to-end encryption for anything here without an agreed design and an external review of it. So: not on the roadmap right now, and the encrypted-storage layering above is what I recommend and will document more explicitly. If someone wants to drive a design for an optional passphrase-encrypted format for the file-like backends, I'm open to that discussion — spec first, then implementation. |
|
On a related note, I was looking for a way to encrypt the Mindwtr sync files before they reach a public WebDAV server and thought of the following:
This should in theory work, except for the fact that documentation seems to recommend WebDAV over File Sync: WebDAV supports "per-item merge", File Sync only supports file-level sync? I'm confused as to how this differs, seeing as the complete That said, it would probably only be beneficial compared to Syncthing if this were to save battery drain compared to using e.g. BasicSync, which is unlikely considering the extra encryption operations. The issues I have with Syncthing that keeps me from using it is that it sometimes simply won't find the other device (via relay) and I need to restart it a few times and that there's a significant delay between Mindwtr's sync and Syncthing's. |
Encryption at restFront-end
Back-end
|
|
@Kidlike v1.2.5 is out now, which has encryption for sync. Since I'm pretty much the only one who has tested this "in the field" so far, could you maybe chime in? |
|
On Android, I found Mindwtr to be very heavy already when actively used (foreground), but now that WebDAV sync is set up (as opposed to file sync, which doesn't do anything in the background), I see it take up such a substantial chunk of the battery drain that I don't know if it's even worth using it. I know Android's battery usage stats are all relative and therefore not easy to read, but if a background sync I don't need (the method as it's for file sync would suffice for me) takes up anywhere between 2-20% at any given 24h time span, I'd rather not use it. I don't think I can safely set |
|
We still don’t have enough beta testers, which means issues are making their way into stable releases. I’m completely tied up right now fixing problems related to the new encryption feature and trying to keep the stable release reliable. |

Not built in today. The sync document is plain JSON and attachments are ordinary files, so what you get at rest is whatever the device, server, or provider gives you: