Almacenamiento de la clave de cifrado de datos (lado del cliente)

1

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

    
pregunta Alex Leence 10.07.2017 - 16:05
fuente

1 respuesta

0

En primer lugar, no ever enrolle su propio criptografía para software comercial. Es muy, muy, muy fácil cometer un error.

Pero si solo estás haciendo esto para un proyecto de mascota personal, o quizás como un proyecto escolar, puedes hacer algo como esto:

  1. El cliente genera una clave de cifrado simétrica aleatoria
  2. El cliente cifra el mensaje usando una clave simétrica
  3. El cliente cifra la clave simétrica usando la clave pública de su servidor
  4. El cliente envía tanto el mensaje cifrado como la clave cifrada al servidor
  5. El servidor puede descifrar la clave simétrica usando su clave privada, luego usar la clave simétrica para descifrar el mensaje.

Este esquema es vulnerable de varias maneras, pero resuelve el problema específico que está planteando en su pregunta.

    
respondido por el John Wu 10.07.2017 - 21:49
fuente

Lea otras preguntas en las etiquetas