I keep asking, what is the threat model for end-to-end encryption in JS? Like, is there an Alice, Bob, Carol, Eve story under which E2E in JS makes sense? The canonical example that doesn't make sense is when Alice and Bob want to communicate privately using Eve as a webmail/chat provider who wants to snoop in on the communications. Alice and Bob can't just trust Eve to provide a copy of E2Ejs in a tag on EveMail.com…
What we did was that we built out a generic datastore system which supports any storage provider backend.
https://getpolarized.io/2019/03/22/portable-datastores-and-p...
But the app is downloaded. It's not just a web app that could be changed on you.
If it's something that's open source and you download it you have less of an issue with people swapping out the JS on you.
The idea in this situation is when you store your docs it's encrypted before we even see the data.
This way you don't have to trust us. No trust required. We could even be a hostile actor and as long as your code is legit you're good to go.
I like this honestly as I don't have to rely on our customers trusting us. We literally CAN NOT see your data.
The main issue is getting keys between machines though. Firefox has an interesting strategy for that but I haven't had time to dive into it yet.