39 votes Vote

clientside encryption

Enable etherpad to encrypt the pad and user to user traffic.
There already has been an offer by someone to implement it with openssl.

This has been discussed here
(including a research on opengpg with js )

kardan , 08.08.2013, 18:15
Response from the site administrator
johnyma22, 30.05.2020
We'd love to have client to client encryption but you lose some important things:

1. Auditing. If your organization goes through a legal discovery process and you can't provide copies of documents you may be found in contempt of court.

2. Life cycle of document: IE ability to migrate; transfer; provide "take aways", repair and/or re-key on key loss. While these are edge cases they happen and when they do happen they are critical to an organizations operation.

3. Performance: Other implementations similar to Etherpad have a 5x overhead and can only handle a few users per pad at Etherpad's WPM before introducing latency that breaks the UX. This is due to asking the client to provide lots of heavy crypto tasks. We work on 10k operations per second per pad in some instances, imagine the additional CPU load if each of those were doing crypto tasks? Now imagine that on a crappy CPU in IE10? Before you know if your initial page load is 200 items @ 10Mb for what is basically a glorified text editor.. Dat bloat.

4. Debugging: Changesets and OTs are complex, they mutate and require lots of pretty deep debugging. If the server can't catch errors or stats on errors it is hard to know how much something is broken let alone what is broken exactly. An example of this is if the server has the wrong charset for it's database storage, with current logs you can see what goes in / comes out but with encrypted content in / out you get no clues..

5. Effort: You will notice Owncloud considered this from 2015 to 2018 with various effort and afaik one of those efforts span off into "CryptPad" which is an alternative to Etherpad you should check out if E2E encryption is key to you.

6. Server side generation of exports: Things like pdf/odf/.txt that are generated server side are no longer possible so you have to post all of that logic to the client.

We believe in E2E encryption, but we're of the opinion that pad content is not transient, it is persistent. And with that in mind we don't believe having true E2E is paramount but clientserverclient is encrypted.

So right now the gains of not having clientside encryption outweigh the costs, and for the near future, that's the situation. If Etherpad became more transient and less persistent than I expect more effort would be put into E2E.

We would welcome effort in this area but until the average CPU can handle our intense pad workload it's unlikely it would be a default feature or something in core so we would invite people to work on plugins to make this happen :)
Idea status: under consideration


Leave a comment