No tengo conocimiento de ninguna forma estándar de implementar lo que está solicitando. Sin embargo, puede tomar como modelo el tipo de sistema utilizado en EFS (y otra solución de software similar):
- Haz que alguien cree el chat grupal. El creador generará una clave única válida solo para este chat específico.
- Cada mensaje de chat se cifra mediante un algoritmo de cifrado simétrico con la clave de sesión única (sala de chat).
- Cada vez que un nuevo cliente se une, tendrá que pedirle a un miembro del chat existente la clave (cómo autenticar que el nuevo cliente está fuera del alcance). Esa clave de chat está siendo cifrada por el remitente mediante la clave pública del nuevo cliente.
El principal problema con esto es cómo buscar al nuevo cliente: obviamente, debe realizar esa validación de manera "sólida" porque una vez que alguien obtiene la clave de sesión, todos los mensajes, pasados y futuros, pueden usarse descifrado.
Si se supone que sus sesiones duren mucho tiempo, podría ser útil tener algún mecanismo para la renegociación de claves en algún momento.
Además, dado que en este sistema el cliente inicial decide la clave de cifrado, tendrá que tener mucho cuidado de cómo se elige esa clave para no debilitar toda la seguridad mediante el uso de una clave simple y debe implementar alguna forma para las otras partes en la conversación rechazan una clave "débil" (no forzando una renegociación, simplemente rechazando la conexión)