Co-firma con @Xander y @Michael Hampton.
Esos esquemas de cifrado de código fuente se basan en ... una clave privada. Así que eso no resuelve su problema, simplemente lo mueve a otra parte.
La obtención de la clave de un servidor separado [1] tiene el mismo problema: necesita autenticarse en ese otro servidor y las credenciales de autenticación deben almacenarse en algún lugar del host compartido. Así que de nuevo, todo lo que has hecho es mover el problema un poco.
Puede almacenar la clave en la propia base de datos o en la memoria, ninguno de los cuales debe ser leído por otros usuarios en su host compartido a menos que aprovechen alguna vulnerabilidad para aumentar los privilegios [2]. En el caso del almacenamiento en memoria, esto requerirá que se conecte a la aplicación cada vez que se reinicie y proporcione la clave de forma remota, lo que requeriría una conexión segura.
No tengo idea de cómo son las leyes en su país [e IANAL], pero desde un punto de vista puramente ético, nunca recibiría información personal de salud en un establecimiento de alojamiento compartido no acreditado . Usted podría ser capaz de llevarlo a cabo; Incluso podría cumplir con las leyes y regulaciones locales, pero nunca sería muy seguro.
También se ha topado con un problema mucho más grande en general: incluso el mejor cifrado es tan fuerte como la seguridad de las claves privadas involucradas. Incluso en un entorno de alojamiento dedicado, una vulnerabilidad en su aplicación puede permitir que un atacante recupere la clave, y usted también es vulnerable a cualquier persona que tenga acceso físico al servidor, como cualquiera de los empleados de su proveedor de alojamiento.
Incluso si la clave es perfectamente segura, aún debe pensar cómo su aplicación maneja los datos después de que se descifre. ¿Sus controles de acceso aseguran que los usuarios solo vean la información para la que están autorizados? ¿Sus controles de seguridad evitan o mitigan el riesgo de que un atacante secuestre una sesión autorizada y luego la use para fines no autorizados?
Las respuestas a estas preguntas dependen, en parte, de los requisitos legales en los que está operando.
- Presumiblemente, el otro servidor no está no en un host compartido, de lo contrario, ¿qué beneficio tiene esta separación? Pero si tiene acceso a un host no compartido, ¿por qué está alojando su aplicación en un host compartido en primer lugar?
- La escalada de privilegios parece fuera del alcance de la pregunta que está haciendo.