Estoy buscando ideas hoy.
El problema: Los archivos confidenciales se envían a través de REST (a través de SSL, por supuesto) a un servidor de terceros. No puedo tocarlos programáticamente hasta que llegan al servidor. Esos archivos se almacenan allí hasta que los usuarios los descargan a través de SFTP y los eliminen del servidor. Cada archivo residirá durante aproximadamente una semana en este servidor.
El objetivo: Asegure los archivos en cada paso hasta que estén en las máquinas de los usuarios.
Mi plan: Como no puedo cifrar los archivos hasta que llegan al servidor de terceros, mi única esperanza de seguridad es una conexión SSL. Me gustaría asegurarme de que solo se guarden los archivos mis en el servidor, por lo que estoy pensando que debo enviar una contraseña junto con los archivos. ¿Qué es mejor que una contraseña estática? Me gustaría usar contraseñas únicas, pero no estoy seguro de por dónde empezar.
A medida que se descarga un archivo en el servidor, copiaré la secuencia en la memoria temporal y cifraré los datos con RSA. Puedo mantener la clave privada en las máquinas de los usuarios y almacenar solo la clave pública en el servidor. (Tenga en cuenta que el servidor no tiene cifrado de hardware). Cuando un usuario se conecta a través de SFTP, puede descargar el archivo cifrado y descifrarlo solo en su propia máquina una vez que esté fuera de línea. ¿Hay una mejor manera de mantener los archivos hasta que un usuario pueda acceder a ellos?
¡Cualquier otra sugerencia sería muy apreciada!
Actualizar Después de hacer pequeños retoques y reflexionar, he encontrado que esta solución es la más adecuada dado mi control limitado sobre el servidor de inicio: enlace
En resumen, envíe los archivos de A a B a través de SSL. Use el cifrado AES-256 con una clave generada aleatoriamente cuando el archivo llegue a B. Cifre esa clave aleatoria con RSA 2048 (la clave pública). Guarda todo en el servidor hasta que se pueda descargar. Una vez que los archivos están en la máquina de los usuarios, descifre la clave aleatoria con la clave privada de RSA (almacenada solo fuera de línea) y luego use esa clave para descifrar el cifrado AES en el archivo. El motivo del cifrado simétrico / asimétrico híbrido es que quiero el formato de clave pública-privada pero RSA limita el tamaño de los datos a 256 bits (para 2048; solo es de 128 bits para 1024). Así que ciframos los datos y la clave por separado y luego enviamos ambos. Sí, esto da como resultado claves 3 : una generada aleatoriamente cada vez, una clave pública y una clave privada (que nunca ve la luz de Internet).
Nihvel logró esto con más seguridad al cifrar el archivo antes de enviar y guardar la clave aleatoria cifrada en el Servidor A. Por lo tanto, los dos nunca estuvieron en el mismo servidor. ¡Gracias por toda tu ayuda!