¿Qué tan seguro es este protocolo de seguridad? [cerrado]

0

Estoy desarrollando una aplicación que cifrará un montón de archivos que el cliente tiene en su máquina y luego los enviará a un servidor, para respaldarlos. Necesito cifrar los archivos para que otros clientes / terceros no puedan acceder a ellos. El problema es que me gustaría tener una clave codificada, para reducir la complejidad de mi programa, pero no puedo permitir que todos los clientes compartan la misma clave o que terceros descompile el archivo binario para obtener la clave (yo sepa que las claves codificadas son una mala idea ). Tenga en cuenta que no es viable utilizar el cifrado de clave asimétrica simple, ya que el rendimiento no sería lo suficientemente bueno.

La solución que se me ocurrió consiste en codificar la clave pública de un par de claves públicas y privadas que pertenece al servidor, que utilizaría para cifrar una clave simétrica y luego generar un número aleatorio (utilizado como una clave simétrica), cifre los archivos necesarios con ella y luego cifre la clave simétrica con la clave pública y envíela a una base de datos en el servidor, a través de una red. El punto t de usar el cifrado de clave asimétrica es para que la transmisión de la clave sea segura.

¿Qué tan seguro es este protocolo? ¿Será suficiente usar un PRNG? ¿Hay un protocolo mejor existente?

    
pregunta someonewithpc 07.09.2015 - 09:50
fuente

1 respuesta

3

Lo que has pensado por tu cuenta es la forma estándar de realizar el cifrado para el tráfico de red:

  1. Genera una clave simétrica aleatoria,
  2. Cifre el "mensaje" completo usando una clave simétrica (más IV, nonce, etc.),
  3. Cifre la clave simétrica usando la clave pública de target (en este caso, su servidor central)
  4. Destruye la clave simétrica 'texto sin formato',
  5. Envíe los productos cifrados a los destinos.

Su preocupación con respecto a PRNG es correcta. Como es probable que esté utilizando un paquete de cifrado de algún tipo (generalmente una biblioteca en su lenguaje de programación), es probable que haya un generador de números aleatorios criptográficamente seguro en ese paquete. NO confíe en los PRNG estándar (rand (), rnd (), etc.). Además, asegúrese de que los bytes encriptados se conviertan a un formato utilizable para la transmisión, ya que los protocolos de transmisión más comunes tienden a ahogarse con el binario en bruto. Base64 "armadura ASCII" es el estándar.

    
respondido por el Jim Huddle 07.09.2015 - 14:48
fuente

Lea otras preguntas en las etiquetas