I'm about to release the new version of my open source project: Bloom (encrypted Notes, Calendar, Contacts, Files…) which will feature end-to-end encryption.

I've published the cryptographic details online and I am looking for feedback by the community before launching it:


Any feedback is welcome.

  • $\begingroup$ This question is better suited on CodeReviewSE. $\endgroup$ – AleksanderRas Apr 22 '20 at 13:45
  • $\begingroup$ hi @AleksanderRas thank you for the feedback! I'm not looking for a code review (I don't implement my crypto and use renowned libraries instead), but more to discuss about the cryptographic design. So no code, just ideas. $\endgroup$ – user79304 Apr 22 '20 at 13:56

One obvious note is that if someone (possibly someone posing as a server) overhears the client to server message (that is, the client's input to the crypto.verify.password_hash.argon2id function), then he knows enough to register as the client to a valid server. He might not know the password; however he wouldn't need to.

If that is a problem, it would sound like you need some sort of authenticated key exchange (perhaps Opaque), which addresses this. And, no, I don't happen to have an implementation of that handy...

  • $\begingroup$ Thank you for the feedback! As of today, I believe it's not an issue because: 1) We assume that TLS 1.3 is safe against most of attacker 2) event if the attacker obtains the auth_key he will just be able to receive encrypted content (as the wrap_key is derived from the password). Nonetheless I will investigate this! thank you again! $\endgroup$ – user79304 Apr 22 '20 at 15:56