Tengo un conocimiento moderado de la programación, y actualmente estoy escribiendo una aplicación de mensajería cliente-servidor para Windows. Mi proyecto se escribe desde cero utilizando sockets, y todo lo que hace es la transmisión de datos de un cliente al servidor y luego el servidor al resto de los clientes en una sala (he implementado salas de chat). En este momento, mis datos se transmiten como una serie de bytes de fila (utilizando .encode ('utf-8') si está familiarizado con python). Pero obviamente, necesito crear un algoritmo de cifrado adecuado para ello. Estoy planeando crear el mío, de modo que estoy seguro de la falta de vulnerabilidades (sé que puede ser lo contrario, pero confío en mí mismo). Sin embargo, no estoy seguro de cómo se supone que debo almacenar la clave de cifrado. Si guardo la clave en el cliente de forma brusca, ¿se considera segura? Porque generar una clave aleatoria y enviarla al destinatario no es seguro, ya que incluso un niño pequeño con MITM podrá verla. Entonces qué hago ? Cómo generar y enviar / almacenar claves para que pueda estar seguro de que es al menos algo seguro