Sto progettando un'applicazione simile a una chat. Ogni messaggio inviato deve essere crittografato. Più utenti devono essere in grado di decrittografarlo.
Nella fase iniziale, una chat conterrà solo due chatter. In questo modo posso implementarlo con una semplice crittografia asimmetrica. Ma più tardi un utente potrebbe unirsi a una chat.
Ad esempio, se Bob, Alice e John vogliono chattare insieme, quando Bob invia un messaggio, deve crittografarlo utilizzando una chiave pubblica conosciuta da tutti, quindi Alice e John devono essere in grado di decodificarlo, ciascuno con la propria chiave privata (non può essere la stessa cosa se le chiavi private non possono lasciare il dispositivo per motivi di sicurezza a meno che tu non abbia un modo per proteggere lo scambio di chiavi private).
Suppongo che non ci sia implementazione di tale crittografia asimmetrica, ma deve essere una soluzione per farlo funzionare.
EDIT: Dopo qualche ricerca in più ho scoperto che la crittografia di trasmissione sarebbe stata la cosa da usare. Ma non capisco come possa funzionare. Diciamo che le mie tre chatter hanno una chiave pubblica / privata. Quando Bob invia un messaggio, deve comunque inviarlo per crittografarlo una volta per ogni utente con la chiave corrispondente? Altrimenti, come possono le diverse chiavi private decodificare un messaggio crittografato con una sola chiave pubblica?
EDIT 2: per quello che ho capito ora, devo scegliere:
- Memorizza una stessa chiave simmetrica per la chat e la invia a tutti i chatter dopo averla crittografata con la chiave pubblica personale. Non è bello, penso ... Non dovrei memorizzare una chiave così importante, vero?
- Archivia una chiave pubblica per chatter e invia una versione crittografata di ciascun messaggio a ciascuno di essi (crittografata con la propria chiave pubblica personale)