Estoy pensando en la forma más segura posible de almacenar datos seguros (por ejemplo, números de tarjeta de crédito) con el requisito de enviarlos en texto sin cifrar a la API de terceros (para que el hashing no entre en juego).
Llegué a una solución que parece ser más segura que la típica 'almacenarlos encriptados y descifrarlos cuando tenga que usarlos con la misma clave'.
La idea es cifrarlo y almacenarlo en el servidor de aplicaciones directamente después de obtenerlo del usuario con una clave pública.
La clave privada no se almacenaría en el servidor de aplicaciones en absoluto. En su lugar, el servidor de aplicaciones enviaría el mensaje a la API de terceros utilizando los valores cifrados.
La segunda parte de la solución sería un Proxy HTTP en un servidor separado que enrutaría los mensajes a la API de terceros y descifraría los valores cifrados. La clave privada se almacenaría solo en el proxy y no se almacenaría en el disco (solo en la RAM; cada reinicio requeriría ingresar la clave privada).
Parece que usar el proxy como una caja negra que no tendría que cambiar a pesar del desarrollo de la aplicación ayudaría a protegerlo mejor que el servidor de la aplicación (al que más personas tienen que tener acceso). Además, debido al requisito de no almacenar la clave privada en el disco, no sería un problema introducir la clave después de cada reinicio del servidor proxy, ya que no tendría que reiniciarse tan frecuentemente como una máquina servidor de aplicaciones. .
¿Alguna idea sobre las ventajas y desventajas de tal solución? ¿Hay alguna aplicación que pueda ayudarme a lograrlo (proxy con capacidad de usar código de transformación personalizado, método de almacenamiento seguro de valores en la RAM)?