Existe la clave encriptación y también la clave descifrado . Si está utilizando cifrado asimétrico , las dos claves pueden ser distintas (aunque estén vinculadas matemáticamente entre sí), al señala que la clave de cifrado se puede hacer pública .
En su situación, asumo que su servidor de alguna manera obtiene los datos claros de una fuente externa, y almacena solo una versión encriptada de los datos. Si su servidor es secuestrado (y las personas malintencionadas con acceso físico pueden secuestrar su servidor) el atacante solo espera el siguiente lote de datos y lo absorbe antes de que se encripte.
La solución es cambiar tu modelo:
- Haga que la fuente cifre los datos, no su servidor de almacenamiento.
- Use cifrado asimétrico, de modo que la fuente solo necesite conocer la clave pública, no la clave privada.
- Tampoco descifre en el servidor de almacenamiento; descifre en su computadora portátil, en la que descarga los archivos de copia de seguridad cifrados cuando sea necesario. La clave privada está en su computadora portátil.
- Ahora que el servidor de almacenamiento no es confiable para nada (nunca ve la clave de descifrado ni los datos de texto claro), reemplace el servidor con algún servicio basado en la nube, es más barato.
Almacenar secretos, cualquier tipo de secreto, en una máquina a la que los atacantes potenciales pueden acceder físicamente, es un absoluto no-go. Esto nunca será seguro. Puede haber alguna mitigación , pero es muy costosa, y no es tan completa como desearía (se trata más de auditoria masiva que defensa proactiva).