Non sono a conoscenza di alcun modo standard per implementare ciò che stai richiedendo. Tuttavia, puoi prendere come modello il tipo di sistema utilizzato in EFS (e altre soluzioni software simili):
- chiedi a qualcuno di creare la chat di gruppo. Il creatore genererà una chiave univoca valida solo per questa specifica chat.
- Ogni messaggio chat viene crittografato utilizzando un algoritmo di crittografia simmetrico utilizzando la chiave di sessione (chat room) univoca.
- Ogni volta che un nuovo cliente si unisce, dovrà chiedere a un membro della chat esistente la chiave (come si autentica che il nuovo client non rientra nell'ambito). Quella chiave di chat viene crittografata dal mittente utilizzando la chiave pubblica del nuovo client.
Il problema principale con questo è come controllare il nuovo client: ovviamente, è necessario eseguire tale convalida in un modo "strong" perché una volta che qualcuno ottiene la chiave di sessione, tutti i messaggi - passati e futuri usando quella chiave possono essere decifrati.
Se le tue sessioni dovrebbero durare a lungo, potrebbe essere utile avere un meccanismo per rinegoziare le chiavi ad un certo punto.
Inoltre, poiché in questo sistema il client iniziale decide sulla chiave di crittografia, dovrai essere molto attento a come viene scelta tale chiave in modo da non indebolire l'intera sicurezza usando una semplice chiave e dovresti implementare un modo per le altre parti nella conversazione rifiutano una chiave "debole" (non forzando una rinegoziazione, semplicemente rifiutando la connessione)