all is said in the title but I will go further.
First question :
I searched here and I found Tox to be the most powerful protocol. It uses Curve25519, XSalsa20 and Poly1305. They seem to be good algorithm but I think I will replace XSalsa20 for a ChaCha20-Poly1305 combination.
What are you think about that ?
Second question :
For the implementation this is my first thougth :
A ask for a secure communication to the Server which register the channel on his DataBase and cipher it with A's symmetric key. When B ask to connect on the channel, the server will send the request to A with his public key, A will cipher symmetric key of the channel (unknown by the server) and send to B back. The server will finally add B to the DataBase of the channel. If B want to send a message he need to cipher it with one of the symmetrical key and send the coded text to the server wich will decipher the DataBase with the key and send to every ip addresses. A will decode with the other symmetric key.
I know it's unclear, if you have any questions feel free to ask them, I want to know if you got better idea. The problem of my system is that the server will keep ip addresses of the channel's owner and the user (while he connect to the server) until all the users are connected. But I don't think it's possible to do it without that.