I was thinking about building a simple end-to-end encrypted chat with group chat capabilities. Please keep in mind that 1) it's just an experiment to help me learn more about cryptography and 2) I'm not a security expert that knows all the cyphers out there and complex encryption schemes.

I consulted a lot of sources online on how to implement a basic E2EE using a hybrid approach with a shared key. Each time a user leaves the chat group, a new secret key should be generated and distributed so that this user doesn’t have access to the new messages anymore (“key rotation”). However, this generation (and distribution) of a new key should not be done at the server side, but a so-called “group admin” must do it (since we want end-to-end encryption).

Now comes my question: what is the difference between a regular user and a group admin (conceptually and in code)? Can I choose the group creator to be the admin? And does that person need to be always online in case a user leaves and connection with the admin is needed to create the new key?

Or is there maybe a better (but still easy) way to handle this situation (creating new key without the server knowing the key)?

Thanks in advance.

  • If a group admin have access to the keys, it's not end to end encryption anymore.
    – ThoriumBR
    Commented Apr 30 at 19:05
  • Can you please reference where you are seeing that key generation must be done by a 'group admin'?
    – mti2935
    Commented Apr 30 at 19:08
  • See for example medium.com/@asierr/… or security.stackexchange.com/a/153933/308238 Commented Apr 30 at 19:10
  • What you are trying to do sounds similar to Message Layer Security, where a symmetric key is derived for a group of participants, and the key changes whenever participant leaves the group, or a new participant joins the group. MLS accomplishes this without a 'group admin'. See messaginglayersecurity.rocks/mls-architecture/… for more info.
    – mti2935
    Commented Apr 30 at 19:25
  • 1
    This isn't looking like a security or an encryption question. Your question looks like a programming logic question, and hence a program design question.
    – schroeder
    Commented Apr 30 at 21:01


You must log in to answer this question.

Browse other questions tagged .