Para una aplicación web que almacena archivos cifrados, se utiliza una clave pública para cifrar claves / iv aleatorias, que se utilizan para cifrar los archivos almacenados. La clave privada, utilizada para el descifrado, está protegida por una contraseña que debe ser proporcionada por el usuario para acceder a los archivos (la naturaleza del sistema es tal que solo un usuario tiene / necesita la capacidad de acceder a los archivos sin cifrar).
Para evitar que el usuario tenga que escribir la contraseña de la clave privada en cada carga de página, debe almacenarse (por ejemplo, durante 10 minutos). La pregunta es, ¿dónde / cómo almacenarlo?
-
Ponerlo en una cookie es análogo al usuario que lo escribe en cada Solicitud, así que eso es una ventaja. Pero, entonces alguien con acceso a su computadora podría mirar los datos de su navegador y ver / recuperar la clave en texto plano. Además, depende del navegador el que caduque a tiempo (lo que podría elegir no hacerlo)
-
Por otro lado, podría almacenarse en los datos de sesión en el servidor. Esto da un mejor control sobre su vencimiento, y significa la clave no está volando por todo el internet con cada solicitud (obviamente, esto es todo https, pero aún así). Pero eso significa almacenar el la contraseña, la clave y los datos, todos en la misma máquina (aunque temporalmente), que tampoco parece tan bueno.
¿Es uno de estos objetivamente mejor? ¿Hay alguna alternativa mejor que cualquiera?