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?