El almacenamiento de una contraseña en la memoria de una aplicación es arriesgado. El sistema operativo puede escribir una parte de la memoria en el disco como un archivo de intercambio. Los procesos pueden acceder a la memoria de los demás, aunque no deberían. (Más)
Estoy desarrollando un generador de contraseñas determinista con Java y me pregunto cuál es la mejor manera de manejar la clave maestra en la memoria. Habrá períodos de tiempo en los que la aplicación necesita "recordar" la clave maestra, antes de que pueda sobrescribirla en la memoria. Pensé en cifrar la clave maestra en la memoria y escribir la clave de descifrado generada aleatoriamente en el disco. Cuando la clave maestra ya no sea necesaria, la aplicación intentará sobrescribir tanto el archivo en el disco como la clave maestra cifrada. Este enfoque al menos brindaría cierta seguridad contra alguien que luego descubrirá un archivo de intercambio antiguo. ¿Tiene sentido? ¿Debo hacer otra cosa?
¿Cuáles son las buenas prácticas para reducir la vida útil de las contraseñas y las claves criptográficas en la memoria?