Mi modelo es uno donde tengo varios clientes que desean hablar con algunos (pero no todos) de los otros clientes.
Todos los mensajes se enviarán a través de un servidor.
Solo los dos clientes que se comunican entre sí deben poder conocer el mensaje. Por lo tanto, el servidor Y los otros clientes no deberían poder averiguar qué mensaje se envió.
La comunicación entre dos clientes puede comenzar y finalizar varias veces al día.
Los mensajes serán de texto simple con una longitud potencialmente ilimitada, pero probablemente serán mucho menos, piense en los mensajes de estilo SMS.
En estas circunstancias, ¿cómo debo cifrar los mensajes? No me importa escribir código adicional si mejora la velocidad o la eficiencia.
Sé lo básico de cómo funcionan RSA y AES, pero no puedo entender qué es lo mejor.
Cuando genera un par de claves públicas / privadas para RSA, ¿hay alguna situación en la que necesite generar un nuevo par? ¿O puede un cliente tener una clave pública y darle la misma clave a cualquiera que quiera hablar con él y solo él podrá leer los mensajes (siempre), pero almacenan la clave pública para todos los mensajes futuros?
O debería tener una clave AES simétrica separada para un par de clientes y simplemente compartirla cuando el contacto se inicia por primera vez y usarla para siempre. De nuevo, ¿existe alguna circunstancia en la que esto deba generarse nuevamente?
¿Cómo almacenaría la (s) clave (s) para que persistan si el cliente se bloquea / shutsdown / reinicia?