I need to make end-to-end encrypted messaging between 2 and more parties without trusting a server. Each party has it's secret and private keys. The obvious solution is to make ECDH between all of them, but it may require N-1 key exchange rounds. Is there another way to generate shared secret among N participants with less rounds required than ECDH?
Well There are many options to do so. One of them and the most easy to implement and naive one is to do one of the following:
Each participant sends its own temporary symmetric secret key to others via pairwize secure channels. Every time each participant receives a message is reiceived from him/her/it uses this key to decrypt it. (I think WhatApp does this using Signal's Sender Keys)
The rooms initator owner (The one who wants to talk) sets up pairwize key generation with the one who participates and sends the common room/chat key.
An another Option (and the most efficient one) is to use a Group Key Agreement protocol like ART or the (n+1)sec uses.
The only Difference is when you use Diffie Hellman in each protocol modify it to use the variety of Diffie hellman that uses Eliptic Curves or even Deniable Group Agreemens Such as 3XDH like signal does.
Since in my problem we don't need to revoke keys or add/delete members I choose pairwise DH approach. Every message is encrypted for every single participant separately.
It's simple and satisfies our requirements.