Me pregunto si alguien podría dar una segunda opinión si lo siguiente es seguro o no.
Tengo un sistema que consiste en un dispositivo móvil, un servidor FTP y una PC. El dispositivo móvil debe cargar datos confidenciales en el servidor de FTP para que la PC los descargue ... Después de descargarlos, se eliminan los datos del servidor de FTP.
La PC está en una red segura y puede tener los datos confidenciales como texto sin formato. Los datos deben ser encriptados con AES-256. Dado que el intercambio de claves con claves simétricas es una molestia, me gustaría cifrar la clave simétrica con una clave asimétrica.
Protocolo que pensé usar:
1) La PC generaría un par de claves asimétricas (clave pública y privada, RSA-2048 o superior).
2) Use la clave privada para crear una firma de la clave pública.
3) Cargue la clave pública y su firma en el servidor FTP.
4) El dispositivo móvil descarga la clave pública y su firma.
5) El dispositivo móvil utiliza la clave pública para verificar la firma.
6) Si se verifica la firma, estamos seguros de que la clave pública pertenece a la clave privada en la PC (y no a un posible atacante).
7) El dispositivo móvil genera una clave AES-256 simétrica (secreta).
8) El dispositivo móvil encripta la clave simétrica y luego carga los datos encriptados al servidor FTP.
9) El dispositivo móvil cifra una clave simétrica con una clave pública y la carga al servidor FTP.
10) El dispositivo móvil genera MAC usando una clave simétrica cifrada como el mensaje y una clave pública como la clave MAC, luego carga la MAC en el servidor FTP. (¿Es esta parte necesaria?)
11) La PC descarga lo siguiente: datos cifrados, clave simétrica AES-256 cifrada, MAC de la clave simétrica cifrada. (La PC también elimina los datos en el servidor FTP después de la descarga)
12) La PC calcula la MAC de la clave simétrica cifrada descargada y la compara con la MAC descargada. Si ambas, las MAC descargadas y las generadas por PC coinciden, podemos concluir que la clave simétrica cifrada es auténtica.
13) La PC descifra la clave simétrica cifrada con la clave asimétrica privada.
14) La PC descifra los datos confidenciales con la clave simétrica AES-256.
15) ¡Hecho!
Las claves asimétricas deben cambiarse durante un período determinado, que no exceda de 2 años. Las claves simétricas se basan en "sesiones", es decir, se genera una nueva clave para cada conjunto de datos.