Cryptpad: Zero Knowledge, Collaborative Real Time Editing
beta.cryptpad.fr
beta.cryptpad.fr
Zero knowledge has a very specific meaning inside cryptography. Encrypting something does not make it "zero knowledge".
https://spideroak.com/features/zero-knowledge
It's true that it doesn't match the technical meaning of zero knowledge from cryptography (although maybe arguably the meaning of the technical term could be extended to this situation in a trivial way: rather than a proof or protocol involving Bob from which Bob doesn't learn certain information, this is a protocol not involving Bob from which Bob also doesn't learn certain information).
Summary: zero-knowledge applies to authentication protocols, not encryption protocols.
We already have one or more of:
- Confidential
- End-to-end encrypted (contrasted with, but often in addition to,
transport-layer encryption)
- Privacy-preserving
- Least authority (with respect to the service operator)
- Peer-to-peer privacy
I'm one degree of separation from several SpiderOak engineers and think highly of them overall. However, this choice of marketing copy is one point we vehemently disagree on.I have a hard time even accepting this definition of "zero knowledge' on its own, separate from the existing cryptographic one. Wouldn't the host at least know things like the size of the encrypted data? Time it was sent? Etc.
> we know nothing about the encrypted data you store on our servers
misleading, since they do know some things about the encrypted data.
Note that in the domain of privacy-enhancing technologies the term "zero-knowledge" does not refer to "semantically secure encryption". Instead it is used to mean that a service provider does not have access to user data, and that this claim can be proven cryptographically. The use of the term zero-knowledge to promote privacy-respecting services dates back to at least 1997 with the founding of the Canadian company Zero-Knowledge Systems [1], which provided anonymous communication services [2].
[1] https://en.wikipedia.org/wiki/Zero_Knowledge_Systems [2] http://edition.cnn.com/TECH/computing/9902/11/browsanon.idg/
Having said that, I agree with the point that nowadays this usage may be unhelpful in promoting privacy-respecting services because zero-knowledge proofs have come a long way and there are now services like Zerocash that actually make use of them. So using the term to promote a different privacy-respecting feature may be confusing or misleading.
[1]: https://github.com/xwiki-labs/cryptpad/graphs/contributors [2]: http://martinfowler.com/bliki/TwoHardThings.html
Okay, I'd really like to hear the argument about why muddying the waters about an already-hard-to-understand subject is totally fine.
> and it's probably time I made a post about it.
Please do.
A blog post that I linked elsewhere in this thread makes the case for why it's harmful.
DISCLAIMER: I've spent way too much time on synchronized CodeMirror editing...
You scored an F on SSL Labs.
https://www.ssllabs.com/ssltest/analyze.html?d=beta.cryptpad...
I like the idea though! :)
I think it's kind of odd to draw such a strong comparison to the Bitcoin blockchain. As the technical description [1] points out, the "chainpad" system discards most of the features and properties that make Bitcoin secure against malicious participants. That seems like a totally reasonable design decision for this application, but then describing it as a blockchain just adds confusion.
In fact, the design seems to bear a much closer resemblance to the Bayou optimistic concurrency algorithm [2], with operational transformation as the underlying data model, and some extra crypto on top.
[1]: https://github.com/xwiki-contrib/chainpad
[2]: http://www.cs.utexas.edu/users/lorenzo/corsi/cs380d/papers/p...
Seem to me the point is to use a secure channel to share the URL with your collaborators, and after that you can use a blockchain to host your collaborative edits instead of having to run a server.
This is where the value-added of Cryptpad lies: Yes, you need to already be able to exchange encrypted messages with your partner, but this will allow you to work on a document together in a secure[1] fashion.
For me, this is quite an achievement and not nothing.
[1]: "Secure" with all the caveats pointed out in the other comments below, e.g. if you do not self-host but use the cryptpad.fr server you need to trust them not to send malicious JavaScript to your browser.
Proof of work is probably an acceptable solution for proof of concept but anonymous consensus isn't needed for for collaborative document editing.
I'm still thinking if this use cases needs timestamping or atomic broadcast.If timestamping is sufficient, Google's new roughtime protocol would do the job well. Otherwise you need a proper atomic broadcast algorithim like RAFT, Tendermint, Honeybadger etc.
Great work.
How can I safely share the URL to someone without already using an established encrypted communication method?
Is the encryption key stored in my browser history?
you can't.
and yes.
[1] https://www.nccgroup.trust/us/about-us/newsroom-and-events/b...
There is no meaningful distinction between Javascript being served from the server and an App being served from the App Store.
https://www.gnu.org/proprietary/proprietary-back-doors.en.ht...
http://secretdiary.org/#IDENTIFIER-AUTOGENPASSWORD
The autogenerated password was optional (and random) and you could instead require a password. This way it was not GET-cached anywhere unless you wanted it to so you could share the actual URL anywhere with no fear of it leaking the secrets, or you could just share the whole thing similarly to cryptpad.fr
However it was one of my first projects so it didn't even had https.
So the only attack vector would be a MIT attack, intercepting the requests to the Bower registry.