Tengo una aplicación web con una gran cantidad de datos de base de datos almacenados, algunos de los cuales están cifrados. Los datos se cifran con una clave sustituta, que a su vez se cifra con un hash de una contraseña de usuario.
A solicitud del usuario, pueden solicitar una exportación de una gran cantidad de datos. Una solicitud se agrega a una cola que se procesa en orden secuencial con las solicitudes de otras personas. La información de la solicitud se almacena en la db. Cada solicitud es demasiado grande para hacer en una carrera, por lo que se dividen en muchas partes más pequeñas con el tiempo. Es posible que la solicitud de un usuario no se inicie durante una hora, dependiendo del tamaño de la cola, y puede tardar hasta 15 minutos en compilarse.
El problema es que necesito descifrar los campos cifrados e incluirlos en la salida ... Entonces, mientras pido al usuario la contraseña en el momento de la solicitud, ¿cómo puede el sistema conservar la contraseña o la clave sustituta de ¿Más tarde usarlo sin grabarlo en alguna parte? Parece totalmente inseguro almacenar la clave sustituta en la base de datos junto con la información de solicitud (aunque solo sea temporalmente) ... y almacenarla en una sesión no funcionará porque la sesión del usuario no es lo que ejecuta el script de compilación ...
¿Alguna idea brillante de cómo se puede lograr esto?