Il mio modello è uno in cui ho diversi clienti che desiderano parlare con alcuni (ma non tutti) degli altri client.
Tutti i messaggi verranno inviati attraverso un server.
Solo i due client che comunicano tra loro dovrebbero essere in grado di conoscere il messaggio. Quindi il server E gli altri client non dovrebbero essere in grado di capire quale messaggio è stato inviato.
La comunicazione tra due client può iniziare e terminare più volte al giorno.
I messaggi saranno in testo con lunghezza potenzialmente illimitata, ma probabilmente saranno molto meno, pensate ai messaggi in stile SMS.
Date queste circostanze, come dovrei crittografare i messaggi? Non mi interessa scrivere codice aggiuntivo se porta a una maggiore velocità o efficienza.
Conosco le basi di base su come funzionano RSA e AES, ma non riesco a capire cosa sia meglio.
Quando generi una coppia di chiavi pubblica / privata per RSA, c'è qualche situazione in cui dovresti generare una nuova coppia? Oppure un client può avere una chiave pubblica e dare la stessa chiave a chiunque voglia parlare con lui e solo a lui essere in grado di (mai) leggere i messaggi, ma memorizzano la chiave pubblica per tutti i messaggi futuri?
O dovrei avere una chiave AES simmetrica separata per una coppia di client e condividerla semplicemente quando il contatto viene avviato per la prima volta e usato per sempre. Ancora, c'è qualche circostanza in cui questo dovrebbe essere generato di nuovo?
Come conserverei la (e) chiave (e) in modo che persistano se il client si blocca / spegne / si riavvia?