Distribución de claves para una aplicación de mensajería de Python

4

Estoy desarrollando una aplicación de mensajería, más como un chat, en python solo para enseñarme a mí mismo cómo funcionan los sockets y para aprender más sobre la criptografía en general usando PyCrypto.

Acerca de mi aplicación:

El objetivo principal de esta aplicación, de forma criptográfica, es proteger los mensajes enviados a través de Internet mediante un cifrado asimétrico. Ya que estoy haciendo esto para aumentar mi conocimiento sobre criptografía, quiero que esté lo más seguro posible. En esta aplicación, un cliente se conecta a un servidor y se agrega a una lista con todos los usuarios conectados actualmente. El cliente ahora puede enviar un mensaje al servidor, que hace eco del mensaje a todos los demás usuarios conectados.

Mi pregunta:

Como un pequeño descargo de responsabilidad: soy bastante nuevo en el cifrado en general y hay un par de cosas que no puedo entender. No puedo entender cómo debo distribuir las claves públicas para que se pueda usar un cifrado asimétrico para proteger los mensajes enviados al servidor. Por lo que he leído, se supone que debe haber algún tipo de servidor del que puedo recuperar las claves generadas, pero parece que no puedo encontrar ese servicio.

Además, si pudiera recuperar una clave pública de un servidor de claves, ¿cómo debería generar una clave privada para poder descifrarla?

¡Toda la ayuda, sugerencias y correcciones son muy apreciadas!

-Tommy

    
pregunta Tommy Riska 13.03.2017 - 00:42
fuente

1 respuesta

2

Una solución simple sería que cada cliente cifre los mensajes enviados al servidor utilizando la clave pública del servidor, que generalmente se envía al cliente como parte de la negociación de la conexión. Luego, el servidor puede descifrar el mensaje del cliente utilizando su clave privada y, a continuación, volver a cifrarlo utilizando la clave privada para distribuir el mensaje entre los demás clientes, quienes pueden leer el mensaje utilizando la clave pública del servidor para descifrarlo.

Las soluciones 'mejores' implicarían la distribución de cada una de las claves públicas de todos los clientes conectados como parte del protocolo inicial. El cliente necesitaría algún medio para saber cómo asociar una clave pública con el remitente del mensaje, lo que significa que hay una fuga de información fuera del texto cifrado. Esto es mejor porque ahora el servidor puede verse comprometido y la información que se transmite sigue siendo segura, pero tiene el costo de velocidades de conexión más lentas y complejidad adicional.

    
respondido por el Cameron Miller 13.03.2017 - 01:31
fuente

Lea otras preguntas en las etiquetas