First of all thanks for the very detailed response. I have a few questions.
-
Like you said, why not use public key cryptography? Why is it not well supported for web-apps?
-
Why not use something like Diffie-Hellman algorithm to share the password? Signal protocol uses ECDHE so I am assuming that it's safe against mitm which the base Diffie-Hellman is vulnerable to (I might be wrong. I couldn't find if it waa vulnerable or not).