En última instancia, si la máquina puede usar la contraseña guardada sin intervención humana específica, entonces ... puede usarla. Esto significa que un atacante que obtiene el control total de la máquina (ya sea un secuestro de software hostil con privilegios de administrador / raíz, o toma la computadora portátil y se ejecuta para ella) podrá recuperar la contraseña. Sobre una base teórica, si desea resistirse a un atacante de este tipo, necesita la contraseña para no llegar nunca a la RAM de la máquina; Necesita algún componente resistente a la manipulación que realice todo el procesamiento. Este es el modelo de tarjetas inteligentes y terminales de pago, que cuentan con protección física y destruyen activamente los datos confidenciales en caso de incumplimiento físico; y tampoco tienen una noción de "usuario root" accesible para el usuario humano real.
En el mejor de los casos, puedes esperar ralentizar al atacante. Sin embargo, todavía hay métodos de gestión que son mejores que otros. Por ejemplo, cuando almacena algún valor secreto confidencial, debe evitar dejar que se filtre a las copias de seguridad, o al menos con alguna protección específica. De manera similar, el usuario puede querer integrar dicho almacenamiento dentro de una solución de administración secreta más grande, por ejemplo. una "contraseña segura" con una contraseña maestra, o cosas así. Entonces, lo mejor es confiar en los servicios provistos por el sistema operativo para el almacenamiento de datos confidenciales. En los sistemas Windows, esto apunta a DPAPI . En Mac OS X, use Keychain . Como de costumbre, el software que es más fácil de diseñar, implementar e implementar es un software que ya ha sido diseñado, implementado y desplegado por otra persona. Por lo tanto, no trates de hacer cosas más o menos inteligentes de tu lado; solo deja que el sistema operativo haga su trabajo.