I am a currently analyzing the available Cloud services allowing End-To-End Encryption for file sharing. It looks like, for each solution I found, if Alice wants to send an encrypted file to Bob, she will have to trust the server when she will ask for Bob's public key, in order to send him the "file key" securely.
My question is : how is the key authenticated ?
If the key is not "authenticated" and the server is corrupted, then nothing prevent Man In The Middle : the server sends his own public key, get the file key, re-encrypt the file key with Bob's public key and send it to Bob.